Contract 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe 7

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xb7598ceefc8ee1be176ad877744c8f7eff9dc70ec5b02588c7bd8784f671b978Transfer288541652022-05-28 1:17:442 mins ago0xbadde5b9d0b9d9a5bbb2fa7586a90a357ddaa43f IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.000815099854 30.354144963
0xa614f5064a5cc542a8700af220b80b3bca1de80b9e9d2ca9dd7d5765b2df52e2Approve288540992022-05-28 1:15:284 mins ago0xbeee55ed9904bbcbbf9b81c25905af120389e32c IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00138894 30.000000015
0x0e38488a4187f72d9f3626a7237666a8ee25407610a4a20399569b206f89de5eTransfer288540572022-05-28 1:14:005 mins ago0x41c8a1558b6becd350b846d1cd562a3ae625b82b IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00140071547 40.670000017
0x50f9eee725d58c8016b0a0975e6a026758febed5ec0027d5df38891d5926503bApprove288540202022-05-28 1:12:467 mins ago0x94e29c2d030cc52e0bac8949666f5ae3edd12c21 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00139002 30.000000016
0x2aecdcf6bff941d52b739512a19fda3f9f4b633d6e42eb7d36ecf9466ae368f2Transfer288540162022-05-28 1:12:387 mins ago0xb37158feacc96aaddfcd3d7b70ab67a4969e4ab9 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00103359004330.000001252
0xdbfbe3cbe1e6cb237814fe84bb3eb5a0d0a908f43ea4195c3200bb82b18105f0Transfer288539952022-05-28 1:11:527 mins ago0x151814ceabe4f8f7123244a8826bd961020cdcfd IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00106804331
0xbe79230cd1074b8277e34d23421255b18171f43d420393bd08d0dd42097e27ddTransfer288539742022-05-28 1:11:108 mins ago0x5ef3f0f5893d7f3a1dfb5efbaa8b6af4f34bd6ad IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001037484174 30.134019997
0x6dd0a147e66daf2b8187973ff47b2b70ce2af03956076c5ef3529d522699d05aApprove288539422022-05-28 1:10:029 mins ago0xde0f0ae3f47b4637624349eb539fd513e1ad12c0 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.0034939575
0x4bce7d751f78c9af6ca541cbe5822a2a6fdf3fcb6b3799ff9bbd0379b9d36a78Transfer288538342022-05-28 1:06:2213 mins ago0xcb285adb41906c9bb32db99aa650fab8a304fb1f IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00112450553932.650200036
0x0c46cf6b423874428c666a1e1abee68e2a72dea86ab926a6db11425daee161a7Transfer288537512022-05-28 1:03:2816 mins ago0x2680042dc506af6604bd2b5a24fd53112679368c IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00154659 30.000000018
0xeec6dc461fa4e6f88bd1ff83d3f53511d21a2655c788d954ba548cd2145f4298Transfer288537202022-05-28 1:02:2617 mins ago0x76d222e14e16817e925f4f7074692d44d056a185 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00088959 30.000000018
0xae214f27ae4969c29dd827b6c83d600c5b5884ba03d5fcdc2c6f442cdc234327Approve288537132022-05-28 1:02:1217 mins ago0x34f76bd0bd28aae0a8ceed11c815c09c428c5cc9 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001531655866 33.082549281
0xbfe3e90dfd74fbf6c54de24e3317d526998e4f9718272c131f94c3c4ae892ae7Transfer288536162022-05-28 0:58:5020 mins ago0x6736b8e6020ca7b7de7d09f6731c2fb24dc7510e IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00154623006430.00000125
0xf4b0795d6bd0ccb49415d17f668e93ba04ba5c7c1bd9b55729f58579f403fff2Transfer288535362022-05-28 0:56:0023 mins ago0xcaf363d4d623287352381525e9953cadfec61001 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001056114308 30.664449589
0x61640f2e61ef8224807f45fd820fa36bd031d092fd9a61453a3c02c6f8589951Transfer288535182022-05-28 0:55:2424 mins ago0x36a5e0acf8ecf66e2eaf6bb37fde76a0910ffbde IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00110284053 32.010000016
0x3715b80bd932ea7cac2cb0874dcc6b355ebaf278f53d2fb9f5ae624707a72a34Transfer288534622022-05-28 0:53:2826 mins ago0x7129c236ef1f48ac5100c71add2d117a8225d19f IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00106804331
0xe7e09c9c85010ddec59f6bc72d870cf5776159879b058845ae38e778e7cd63aaApprove288533532022-05-28 0:49:4230 mins ago0xa221566d3d8b68b0b4b7e6e7e412ca18787898ce IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00139326338 30.070000007
0x5e82bdfb9f1768d0dd5598b1231fb0c0b3ef77d1af1fc1d77a6819144cb0b9beTransfer288532072022-05-28 0:44:4235 mins ago0x9da35b0161a35d2f8fc60bd03880ec00d118f35f IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.0017220550
0x49b98f2ff48271ad3191166d99542c20529b9bfe5c4230015e00020e84dbed1fTransfer288531902022-05-28 0:44:0835 mins ago0x57d164b14e160a8728871bafe2ec6fb6e54e3034 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001139601882 33.077000046
0x7873702cea82d135098fe82c777e1e223fe7ff29ad06a98d0841c65dbc912e61Transfer288531132022-05-28 0:41:2638 mins ago0x71279249d96799d23f512ebc2348bf57ca1f0683 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001033230001 30.00000003
0xec2c7fe0330f3e32dec5a4b51aac9a024ae233f18deb70912b82d5ce83289dfdTransfer288530442022-05-28 0:39:0440 mins ago0xaf17ce99440e5119c6f2268cb547f2f88e0f1a28 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001129055754 32.770898164
0x289ec1a4947babcb2dd77db76a86750e545e0408241eb486be91e16f393aa087Transfer288530372022-05-28 0:38:5040 mins ago0xeb48164d6838b68310edd1918d883d62a0a8c644 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001152097708 33.439692009
0x9b68ab151ff1014cce74a932f4cf4e4956c726ad53ce49383da751103f7e177fTransfer288528832022-05-28 0:33:3446 mins ago0x0ce72adff6d7e9485e3c7d9d492514489dbf062a IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.0017220550
0x30cb08f3ed6b84c7c477c9b7b9b882d8ce667e4a7e4750de95f4ec340cc45dffApprove288528462022-05-28 0:32:1647 mins ago0xffc6515bb45030230e8edd3ff6a7473fb00b7061 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.001438207373 31.040000281
0x1490546e1df4b5e081731e0015c6c8a6a24e21bba351f512c40240e3fcbe4b48Approve288527792022-05-28 0:29:5849 mins ago0x2467ac3c8742b5d29a28b5f6cb495f7e7e330b76 IN  0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe0 MATIC0.00143486631
[ Download CSV Export 
Latest 6 internal transactions
Parent Txn Hash Block From To Value
0x499704f0fbe3d09a40e360ad3069f1e71c80ebe760bddd135d8e30af2123d07f250810992022-02-18 12:23:2398 days 12 hrs ago 0x2334bc478c60bee7674529580659cd6c115cbcbc 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe1 MATIC
0x3871b2fde071b45716d74db104804dc32074cb4d18f9842203d021ff5fef29d1250808882022-02-18 12:15:4998 days 13 hrs ago 0x2334bc478c60bee7674529580659cd6c115cbcbc 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe1 MATIC
0x7177effc4401836372f1c1a0e18a8b89541ee19a9c83af8e40668c3d7c1c2c29250808582022-02-18 12:14:4998 days 13 hrs ago 0x2334bc478c60bee7674529580659cd6c115cbcbc 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe1 MATIC
0x660bf9b71b8c9c38bc54717ec482b516f60050e6089e640cb9aa3339d715e7f8250807632022-02-18 12:11:3198 days 13 hrs ago 0x2334bc478c60bee7674529580659cd6c115cbcbc 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe1 MATIC
0xb49f66fb350bd92c6c9218026eb35c8a0fc0d0d1b1c3c0b3bdb36dcc32ff173f250800672022-02-18 11:43:2298 days 13 hrs ago 0x2334bc478c60bee7674529580659cd6c115cbcbc 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe1 MATIC
0x3c13dc3f502928718988736f5bcde62f5b6cd46cda4c0725d0dfaf659fcdea38250800072022-02-18 11:40:2698 days 13 hrs ago 0x2334bc478c60bee7674529580659cd6c115cbcbc 0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe1 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PIXT

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 8 : PIXT.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol";

contract PIXT is ERC20Burnable, EIP712("PlanetIX", "1") {
    bytes32 private constant PERMIT_FOR_BID_HASH =
        keccak256(
            "PermitForBid(address owner,address spender,uint256 amount,address nftToken,uint256 tokenId,uint256 nonce)"
        );

    mapping(address => uint256) public nonces;

    constructor() ERC20("PlanetIX", "IXT") {
        // initial supply : 153,258,228
        _mint(msg.sender, 153258228 * 1e18);
    }

    function permitForBid(
        address owner,
        address spender,
        uint256 amount,
        address nftToken,
        uint256 tokenId,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        uint256 nonce = nonces[owner]++;
        bytes32 structHash = keccak256(
            abi.encode(PERMIT_FOR_BID_HASH, owner, spender, amount, nftToken, tokenId, nonce)
        );
        bytes32 hash = _hashTypedDataV4(structHash);
        address signer = ECDSA.recover(hash, v, r, s);
        require(signer == owner, "PIXT: INVALID_SIGNATURE");

        _approve(owner, spender, amount);
    }
}

File 2 of 8 : ERC20Burnable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}

File 3 of 8 : draft-EIP712.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./ECDSA.sol";

/**
 * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.
 *
 * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,
 * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding
 * they need in their contracts using a combination of `abi.encode` and `keccak256`.
 *
 * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding
 * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA
 * ({_hashTypedDataV4}).
 *
 * The implementation of the domain separator was designed to be as efficient as possible while still properly updating
 * the chain id to protect against replay attacks on an eventual fork of the chain.
 *
 * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method
 * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].
 *
 * _Available since v3.4._
 */
abstract contract EIP712 {
    /* solhint-disable var-name-mixedcase */
    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to
    // invalidate the cached domain separator if the chain id changes.
    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
    uint256 private immutable _CACHED_CHAIN_ID;

    bytes32 private immutable _HASHED_NAME;
    bytes32 private immutable _HASHED_VERSION;
    bytes32 private immutable _TYPE_HASH;

    /* solhint-enable var-name-mixedcase */

    /**
     * @dev Initializes the domain separator and parameter caches.
     *
     * The meaning of `name` and `version` is specified in
     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:
     *
     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.
     * - `version`: the current major version of the signing domain.
     *
     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart
     * contract upgrade].
     */
    constructor(string memory name, string memory version) {
        bytes32 hashedName = keccak256(bytes(name));
        bytes32 hashedVersion = keccak256(bytes(version));
        bytes32 typeHash = keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
        );
        _HASHED_NAME = hashedName;
        _HASHED_VERSION = hashedVersion;
        _CACHED_CHAIN_ID = block.chainid;
        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);
        _TYPE_HASH = typeHash;
    }

    /**
     * @dev Returns the domain separator for the current chain.
     */
    function _domainSeparatorV4() internal view returns (bytes32) {
        if (block.chainid == _CACHED_CHAIN_ID) {
            return _CACHED_DOMAIN_SEPARATOR;
        } else {
            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);
        }
    }

    function _buildDomainSeparator(
        bytes32 typeHash,
        bytes32 nameHash,
        bytes32 versionHash
    ) private view returns (bytes32) {
        return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));
    }

    /**
     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this
     * function returns the hash of the fully encoded EIP712 message for this domain.
     *
     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:
     *
     * ```solidity
     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(
     *     keccak256("Mail(address to,string contents)"),
     *     mailTo,
     *     keccak256(bytes(mailContents))
     * )));
     * address signer = ECDSA.recover(digest, signature);
     * ```
     */
    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);
    }
}

File 4 of 8 : ERC20.sol
// SPDX-License-Identifier: MIT

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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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 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 8 : Context.sol
// SPDX-License-Identifier: MIT

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 6 of 8 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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);
}

File 7 of 8 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT

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);
}

File 8 of 8 : ECDSA.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature` or error string. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     *
     * _Available since v4.3._
     */
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s;
        uint8 v;
        assembly {
            s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
            v := add(shr(255, vs), 27)
        }
        return tryRecover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
     *
     * _Available since v4.2._
     */
    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"nftToken","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permitForBid","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6101206040523480156200001257600080fd5b50604051806040016040528060088152602001670a0d8c2dccae892b60c31b815250604051806040016040528060018152602001603160f81b815250604051806040016040528060088152602001670a0d8c2dccae892b60c31b8152506040518060400160405280600381526020016212561560ea1b8152508160039080519060200190620000a39291906200024a565b508051620000b99060049060208401906200024a565b5050825160209384012082519284019290922060c083815260e08290524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818a0181905281830198909852606081019590955260808086019390935230858301528051808603909201825293909201909252805194019390932090925261010052506200015c336a7ec5b12ffc5370ab50000062000162565b62000352565b6001600160a01b038216620001bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001d19190620002f0565b90915550506001600160a01b0382166000908152602081905260408120805483929062000200908490620002f0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620002589062000315565b90600052602060002090601f0160209004810192826200027c5760008555620002c7565b82601f106200029757805160ff1916838001178555620002c7565b82800160010185558215620002c7579182015b82811115620002c7578251825591602001919060010190620002aa565b50620002d5929150620002d9565b5090565b5b80821115620002d55760008155600101620002da565b600082198211156200031057634e487b7160e01b81526011600452602481fd5b500190565b600181811c908216806200032a57607f821691505b602082108114156200034c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610100516111b3620003976000396000610b9801526000610be701526000610bc201526000610b4601526000610b6f01526111b36000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101fb578063a9059cbb1461020e578063cdbd546314610221578063dd62ed3e1461023457600080fd5b806370a082311461019757806379cc6790146101c05780637ecebe00146101d357806395d89b41146101f357600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806342966c681461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261026d565b60405161010f919061108f565b60405180910390f35b61012b61012636600461104e565b6102ff565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610f92565b610315565b6040516012815260200161010f565b61012b61017d36600461104e565b6103c4565b610195610190366004611077565b610400565b005b61013f6101a5366004610f3f565b6001600160a01b031660009081526020819052604090205490565b6101956101ce36600461104e565b61040d565b61013f6101e1366004610f3f565b60056020526000908152604090205481565b610102610493565b61012b61020936600461104e565b6104a2565b61012b61021c36600461104e565b61053b565b61019561022f366004610fcd565b610548565b61013f610242366004610f60565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461027c90611111565b80601f01602080910402602001604051908101604052809291908181526020018280546102a890611111565b80156102f55780601f106102ca576101008083540402835291602001916102f5565b820191906000526020600020905b8154815290600101906020018083116102d857829003601f168201915b5050505050905090565b600061030c338484610685565b50600192915050565b60006103228484846107a9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103ac5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103b98533858403610685565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161030c9185906103fb9086906110e2565b610685565b61040a3382610978565b50565b60006104198333610242565b9050818110156104775760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016103a3565b6104848333848403610685565b61048e8383610978565b505050565b60606004805461027c90611111565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156105245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103a3565b6105313385858403610685565b5060019392505050565b600061030c3384846107a9565b6001600160a01b03881660009081526005602052604081208054908261056d8361114c565b90915550604080517fff874e51819bee5f64ed624b1e6d883cea512187b29af1dfef5db6c92c83c0616020808301919091526001600160a01b038d8116838501528c81166060840152608083018c90528a1660a083015260c0820189905260e080830185905283518084039091018152610100909201909252805191012090915060006105f982610ac6565b9050600061060982888888610b1a565b90508b6001600160a01b0316816001600160a01b03161461066c5760405162461bcd60e51b815260206004820152601760248201527f504958543a20494e56414c49445f5349474e415455524500000000000000000060448201526064016103a3565b6106778c8c8c610685565b505050505050505050505050565b6001600160a01b0383166106e75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103a3565b6001600160a01b0382166107485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103a3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661080d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103a3565b6001600160a01b03821661086f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103a3565b6001600160a01b038316600090815260208190526040902054818110156108e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103a3565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061091e9084906110e2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161096a91815260200190565b60405180910390a350505050565b6001600160a01b0382166109d85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103a3565b6001600160a01b03821660009081526020819052604090205481811015610a4c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103a3565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610a7b9084906110fa565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000610b14610ad3610b42565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b6000806000610b2b87878787610c35565b91509150610b3881610d22565b5095945050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610b9157507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610c6c5750600090506003610d19565b8460ff16601b14158015610c8457508460ff16601c14155b15610c955750600090506004610d19565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ce9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d1257600060019250925050610d19565b9150600090505b94509492505050565b6000816004811115610d4457634e487b7160e01b600052602160045260246000fd5b1415610d4d5750565b6001816004811115610d6f57634e487b7160e01b600052602160045260246000fd5b1415610dbd5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103a3565b6002816004811115610ddf57634e487b7160e01b600052602160045260246000fd5b1415610e2d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103a3565b6003816004811115610e4f57634e487b7160e01b600052602160045260246000fd5b1415610ea85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103a3565b6004816004811115610eca57634e487b7160e01b600052602160045260246000fd5b141561040a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016103a3565b80356001600160a01b0381168114610f3a57600080fd5b919050565b600060208284031215610f50578081fd5b610f5982610f23565b9392505050565b60008060408385031215610f72578081fd5b610f7b83610f23565b9150610f8960208401610f23565b90509250929050565b600080600060608486031215610fa6578081fd5b610faf84610f23565b9250610fbd60208501610f23565b9150604084013590509250925092565b600080600080600080600080610100898b031215610fe9578384fd5b610ff289610f23565b975061100060208a01610f23565b96506040890135955061101560608a01610f23565b94506080890135935060a089013560ff81168114611031578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60008060408385031215611060578182fd5b61106983610f23565b946020939093013593505050565b600060208284031215611088578081fd5b5035919050565b6000602080835283518082850152825b818110156110bb5785810183015185820160400152820161109f565b818111156110cc5783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156110f5576110f5611167565b500190565b60008282101561110c5761110c611167565b500390565b600181811c9082168061112557607f821691505b6020821081141561114657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561116057611160611167565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212200cdf115d795b78f12003ed4fd2a6cf10dead8ca18b2a1625a922f37ad7d0f26264736f6c63430008040033

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