Contract 0x0224010BA2d567ffa014222eD960D1fa43B8C8E1 2

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1034551b22483f929587c06e23189b1ab8e9fd573251286ed59acf840b50cac3Transfer67938092023-02-03 14:38:3946 secs ago0x42b8474a29ccce3adb0741490b3dcd6aeb0134cd IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.14860
0x89b154d33229c830f2eff9d8faf10146229b073b3124cd1b48d7501b13fc5c36Transfer67937572023-02-03 14:33:445 mins ago0x6d65db23f6e19edc792ab5b3569f890854307767 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.4819532069830
0xec49b648509ed731515ce5d2d623b5e0eb46a846768cfc037d6ef308f02ee0d2Approve67933082023-02-03 13:51:3147 mins ago0xd31bd7927c3f39a95ab8a7051fd544d7faffa956 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2357954099860
0xc2751d7fa29c5b4725e43a2d7f396fee45dd1f2e8dac6eae47282683757378e7Transfer67932982023-02-03 13:50:3548 mins agoCrypto.com: CDC Withdrawal IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.8750
0x850222091729ac67528e0911cd0c897a2c08542f4f3dc67182f9972c9b95f368Transfer67931972023-02-03 13:41:0358 mins ago0xf3fccafcc4b048221ea64ebc7ba769d5e505e548 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.148540
0x342abed28503e2fd3296eb41506716771983d5828c2f1a25f58b9f6552f14a1fTransfer67930822023-02-03 13:30:141 hr 9 mins ago0x3601f5943dc8db77e53754a2e15409547f83787c IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.4819563254910
0xe38dff738fe06dc29ab048c31ae4c1c305cd04f211e446efec481b28ac5c8e65Approve67930052023-02-03 13:22:581 hr 16 mins ago0xf9d10a217753f2235f2f953cbc61eaef81e72d3d IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2329750
0x5eb7722ebf2cb6dad67e6994f16bbe0beecb23ec9424d947ba154aca39e1e4f8Approve67919612023-02-03 11:44:352 hrs 54 mins ago0x332e88b0be48c9520f8341ffd20930426ded4f83 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.235798466360
0x9b7420a53de4597d68863d6cb31266b8517b3a1185c68e486794c7fae0e69253Approve67918802023-02-03 11:36:573 hrs 2 mins ago0xc84e9dc5facfe96d66c14b7c9a08de9d04fae3d0 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245701462530
0x1e81bc890c5b8d5d29a8c553a0ca336cd991d944a186d74d28545ec967324026Transfer67915942023-02-03 11:10:023 hrs 29 mins agoCrypto.com: CDC Withdrawal IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.8750
0x87f59ba94740e4ed3443b50b74002ca6bedd96b6957a89d97fa59a846a0e3625Approve67915472023-02-03 11:05:373 hrs 33 mins ago0x536553de0407e5f15171863e0df2343aa31f3084 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245708724150
0x42f088cd87489c607e94395a71d4f35a39ac16a41429d318e022c6cb3754ea39Approve67910372023-02-03 10:17:394 hrs 21 mins ago0x26aafce5e167052cb766f16a9a0980a551dbdf94 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245719925710
0xd5f3bb8c8b24368995b6ec258378eefa3836a4353f5a20ed6cde3320bfef74a4Approve67908992023-02-03 10:04:384 hrs 34 mins ago0x8ed63db7986aedfef780caca8bb5603b627f63f6 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245722699290
0xe335584397d15f4bd85868e25376a0a9e70bccae2c473690f76a04ed7ad5d615Transfer67908542023-02-03 10:00:244 hrs 39 mins agoCrypto.com: CDC Withdrawal IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.8750
0x4fb2bbf5b2286cfc6c0322af66c8eaa7075c16a72e233e776912aa08480aa038Approve67904382023-02-03 9:21:145 hrs 18 mins ago0x4e2f02ee229f3e71f2c2f4436c5f923ae3748876 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245732797940
0x8d593551487942011f931a516754100e5d00a09ca982ecca7f44dd1235eec9ffApprove67901632023-02-03 8:55:225 hrs 44 mins ago0xd7bbf3be5535749f66cac5ea48f7794988d4654b IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245738739370
0x197d6489d91f65cce70640b433cb0a9567c7d2f342f65408fc2d7aae3c5daf98Transfer67899012023-02-03 8:30:466 hrs 8 mins ago0xe7820437b657027eb0e53bdb570e4e21103043ff IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.4819711269590
0x40497a8a86a0a1d36c2b38d213e5886ccb06c746b7004dadce997354aa5a7f32Transfer67897772023-02-03 8:19:066 hrs 20 mins ago0xdeee95b4e753944d0c3cf86932c7af63f3df5d2b IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.14860
0xaf75031fa904682f3eadd653fa44e5f50921cdb81fcbf147b6b0ac83cf50a3bbTransfer67897272023-02-03 8:14:246 hrs 25 mins ago0xd8837dc18a8e7aead5c664f7e5fe7c4671b1ac69 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.4819719434610
0xd92f8b7bab1c29be232c39de5601af923618ca9e17fd156470d3635ead986ffaTransfer67879752023-02-03 5:29:289 hrs 9 mins agoCrypto.com: CDC Withdrawal IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.8750
0x0042adeb4b5ca4e348244d73b2cbe9052d10053ae9774aef0d75b197f27b4ec1Transfer67879192023-02-03 5:24:129 hrs 15 mins ago0x172272c61121445ae967a354c4f5252d01f717bd IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.14860
0x22783b1ddd1c2b4ba906538c61c83f4a9903c221928138713272b3189f67aaafApprove67878252023-02-03 5:15:209 hrs 24 mins ago0xd15b115b883ae2f9f7e7e8c82a00cfa870b5ba91 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2358079016650
0xf41c51dddf39d690c67c52dd502a0f1e36cdc6425c1223707858bea6c8d10eedTransfer67878222023-02-03 5:15:039 hrs 24 mins ago0x4ca4d1e1090a50f4ae576478913cfc0eb9ef0d12 IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.4819808142890
0x531634588d3e8dbc85e3c5bfea75bbd48c91423f00226bac2477e22248cd11bcApprove67874292023-02-03 4:38:0410 hrs 1 min ago0x764d9572cbe5c4cd05e57929c96a47f4a898ffea IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245798084230
0x4fc365de940d04d8bfb4df862f111bd398323db30fec045b87f366b2a1b28542Approve67873222023-02-03 4:27:5910 hrs 11 mins ago0x8f347b41b8453c8efcafe2dc6758ff39e1e8945a IN  0x0224010ba2d567ffa014222ed960d1fa43b8c8e10 CRO0.2245800405970
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MintedToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : MintedToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./interfaces/IMintedToken.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

/**
 * @title MINTED Token
 */
contract MintedToken is ERC20, Ownable, IMintedToken {
    uint256 public immutable _SUPPLY_CAP; //1000000000000000000000000000  1 billion

    /**
     * @notice Constructor
     * @param addresses addresses to receive premint tokens
     * @param amounts tokens quantity to distribute to addresses
     */
    constructor(
        address[] memory addresses,
        uint256[] memory amounts,
        uint256 _preMintAmount,
        uint256 _supply_cap
    ) ERC20("Minted Token", "MTD") {
        require(_preMintAmount <= _supply_cap, "Minted: premint amount exceeds supply cap");
        require(addresses.length == amounts.length, "Minted: length mismatch");
        _SUPPLY_CAP = _supply_cap;
        for (uint256 i = 0; i < amounts.length; i++) {
            require(addresses[i] != address(0), "Invalid address");
            _mint(addresses[i], amounts[i]);
        }
        require(totalSupply() == _preMintAmount, "Minted: pre-mint amount mismatch with amounts");
    }

    /**
     * @notice Mint MINTED tokens
     * @param account address to receive tokens
     * @param amount amount to mint
     * @return status true if mint is successful, false if not
     */
    function mint(address account, uint256 amount) external override onlyOwner returns (bool status) {
        if (totalSupply() + amount <= _SUPPLY_CAP) {
            _mint(account, amount);
            return true;
        }
        return false;
    }

    /**
     * @notice View supply cap
     */
    function SUPPLY_CAP() external view override returns (uint256) {
        return _SUPPLY_CAP;
    }
}

File 2 of 7 : IMintedToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IMintedToken is IERC20 {
    function SUPPLY_CAP() external view returns (uint256);

    function mint(address account, uint256 amount) external returns (bool);
}

File 3 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 5 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 6 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 7 of 7 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"_preMintAmount","type":"uint256"},{"internalType":"uint256","name":"_supply_cap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SUPPLY_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_SUPPLY_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b506040516200135a3803806200135a833981016040819052620000349162000556565b6040518060400160405280600c81526020016b26b4b73a32b2102a37b5b2b760a11b8152506040518060400160405280600381526020016213551160ea1b81525081600390805190602001906200008d92919062000439565b508051620000a390600490602084019062000439565b505050620000c0620000ba620002fe60201b60201c565b62000302565b80821115620001285760405162461bcd60e51b815260206004820152602960248201527f4d696e7465643a207072656d696e7420616d6f756e742065786365656473207360448201526807570706c79206361760bc1b60648201526084015b60405180910390fd5b82518451146200017b5760405162461bcd60e51b815260206004820152601760248201527f4d696e7465643a206c656e677468206d69736d6174636800000000000000000060448201526064016200011f565b608081905260005b8351811015620002835760006001600160a01b0316858281518110620001b957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016200011f565b6200026e8582815181106200023157634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106200025a57634e487b7160e01b600052603260045260246000fd5b60200260200101516200035460201b60201c565b806200027a81620006f4565b91505062000183565b50816200028f60025490565b14620002f45760405162461bcd60e51b815260206004820152602d60248201527f4d696e7465643a207072652d6d696e7420616d6f756e74206d69736d6174636860448201526c207769746820616d6f756e747360981b60648201526084016200011f565b505050506200073e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003ac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200011f565b8060026000828254620003c091906200069c565b90915550506001600160a01b03821660009081526020819052604081208054839290620003ef9084906200069c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200044790620006b7565b90600052602060002090601f0160209004810192826200046b5760008555620004b6565b82601f106200048657805160ff1916838001178555620004b6565b82800160010185558215620004b6579182015b82811115620004b657825182559160200191906001019062000499565b50620004c4929150620004c8565b5090565b5b80821115620004c45760008155600101620004c9565b600082601f830112620004f0578081fd5b8151602062000509620005038362000676565b62000643565b80838252828201915082860187848660051b890101111562000529578586fd5b855b8581101562000549578151845292840192908401906001016200052b565b5090979650505050505050565b600080600080608085870312156200056c578384fd5b84516001600160401b038082111562000583578586fd5b818701915087601f83011262000597578586fd5b81516020620005aa620005038362000676565b8083825282820191508286018c848660051b8901011115620005ca578a8bfd5b8a96505b84871015620006035780516001600160a01b0381168114620005ee578b8cfd5b835260019690960195918301918301620005ce565b50918a01519198509093505050808211156200061d578485fd5b506200062c87828801620004df565b604087015160609097015195989097509350505050565b604051601f8201601f191681016001600160401b03811182821017156200066e576200066e62000728565b604052919050565b60006001600160401b0382111562000692576200069262000728565b5060051b60200190565b60008219821115620006b257620006b262000712565b500190565b600181811c90821680620006cc57607f821691505b60208210811415620006ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200070b576200070b62000712565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b608051610bf262000768600039600081816101530152818161023f01526103980152610bf26000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610227578063a67c495d1461023a578063a9059cbb14610261578063dd62ed3e14610274578063f2fde38b1461028757600080fd5b806370a08231146101d1578063715018a6146101fa5780638da5cb5b1461020457806395d89b411461021f57600080fd5b806323b872dd116100de57806323b872dd14610189578063313ce5671461019c57806339509351146101ab57806340c10f19146101be57600080fd5b806306fdde0314610110578063095ea7b31461012e5780630cfccc831461015157806318160ddd14610181575b600080fd5b61011861029a565b6040516101259190610b0a565b60405180910390f35b61014161013c366004610ae1565b61032c565b6040519015158152602001610125565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610125565b600254610173565b610141610197366004610aa6565b610346565b60405160128152602001610125565b6101416101b9366004610ae1565b61036a565b6101416101cc366004610ae1565b61038c565b6101736101df366004610a53565b6001600160a01b031660009081526020819052604090205490565b6102026103eb565b005b6005546040516001600160a01b039091168152602001610125565b6101186103ff565b610141610235366004610ae1565b61040e565b6101737f000000000000000000000000000000000000000000000000000000000000000081565b61014161026f366004610ae1565b61048e565b610173610282366004610a74565b61049c565b610202610295366004610a53565b6104c7565b6060600380546102a990610b81565b80601f01602080910402602001604051908101604052809291908181526020018280546102d590610b81565b80156103225780601f106102f757610100808354040283529160200191610322565b820191906000526020600020905b81548152906001019060200180831161030557829003601f168201915b5050505050905090565b60003361033a818585610540565b60019150505b92915050565b600033610354858285610664565b61035f8585856106de565b506001949350505050565b60003361033a81858561037d838361049c565b6103879190610b5d565b610540565b60006103966108ac565b7f0000000000000000000000000000000000000000000000000000000000000000826103c160025490565b6103cb9190610b5d565b116103e2576103da8383610906565b506001610340565b50600092915050565b6103f36108ac565b6103fd60006109e5565b565b6060600480546102a990610b81565b6000338161041c828661049c565b9050838110156104815760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61035f8286868403610540565b60003361033a8185856106de565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104cf6108ac565b6001600160a01b0381166105345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610478565b61053d816109e5565b50565b6001600160a01b0383166105a25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610478565b6001600160a01b0382166106035760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610478565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610670848461049c565b905060001981146106d857818110156106cb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610478565b6106d88484848403610540565b50505050565b6001600160a01b0383166107425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610478565b6001600160a01b0382166107a45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610478565b6001600160a01b0383166000908152602081905260409020548181101561081c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610478565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610853908490610b5d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161089f91815260200190565b60405180910390a36106d8565b6005546001600160a01b031633146103fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610478565b6001600160a01b03821661095c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610478565b806002600082825461096e9190610b5d565b90915550506001600160a01b0382166000908152602081905260408120805483929061099b908490610b5d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80356001600160a01b0381168114610a4e57600080fd5b919050565b600060208284031215610a64578081fd5b610a6d82610a37565b9392505050565b60008060408385031215610a86578081fd5b610a8f83610a37565b9150610a9d60208401610a37565b90509250929050565b600080600060608486031215610aba578081fd5b610ac384610a37565b9250610ad160208501610a37565b9150604084013590509250925092565b60008060408385031215610af3578182fd5b610afc83610a37565b946020939093013593505050565b6000602080835283518082850152825b81811015610b3657858101830151858201604001528201610b1a565b81811115610b475783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610b7c57634e487b7160e01b81526011600452602481fd5b500190565b600181811c90821680610b9557607f821691505b60208210811415610bb657634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212204a6938838cec2085fcdc4c0dcdea5c24da1b0f551569fee04ced6cd45495567664736f6c63430008040033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000002db3a48061ba48ff40000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a16226396d79dc7b3bc70de0daca4eef11742a9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002db3a48061ba48ff4000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000002db3a48061ba48ff40000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a16226396d79dc7b3bc70de0daca4eef11742a9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002db3a48061ba48ff4000000

-----Decoded View---------------
Arg [0] : addresses (address[]): 0xa16226396d79dc7b3bc70de0daca4eef11742a9e
Arg [1] : amounts (uint256[]): 884000000000000000000000000
Arg [2] : _preMintAmount (uint256): 884000000000000000000000000
Arg [3] : _supply_cap (uint256): 1000000000000000000000000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 000000000000000000000000000000000000000002db3a48061ba48ff4000000
Arg [3] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 000000000000000000000000a16226396d79dc7b3bc70de0daca4eef11742a9e
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 000000000000000000000000000000000000000002db3a48061ba48ff4000000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.