Contract 0xa0fa51F54dbab68C068a2E2c62AA72Fe334D9b09

 
Txn Hash
Method
Block
From
To
Value
0x57d7ff0b4cc5933f399ec38e4d55fcc0c6e2b5c04b3ba6f27369fd9b4b6368cfSet Approval For...153408832022-08-14 16:40:538 hrs 19 mins agoENS Name siguenxa.eth IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00109236 23.‍72223638
0x41c5c9502c4dd27c5e4030a6509f4ab8cbd76cb604e5a0febc7203ae8587eda2Set Approval For...153288972022-08-12 19:36:562 days 5 hrs ago0x57c4639aaa06a0cea15f8859f64f993ab8c96c81 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍0011643 25.‍23848616
0x1aa63337c4e463c88c34a615cdf37670254fc8e3f765b3eae03694e0ecf8aaf6Set Approval For...153285792022-08-12 18:30:332 days 6 hrs ago0xa2170b87193731aef287104c50c06333b9f343ad IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00061123 13.‍27390718
0xe826f15fc13a268df1b1ce67f2672b6b10ab198d3011a56fca3f4be9f8c384b1Set Approval For...153254652022-08-12 6:35:172 days 18 hrs ago0xd06790e35b6e722f30082ea2c23417db3b2244dc IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00040908 8.‍88397081
0x55e89e7af3b8e132a3e08ec2c5e4ba49e46188dc1973ee61860528c0a627c644Set Approval For...153252502022-08-12 5:48:202 days 19 hrs ago0x2055bdf8736882c7e6d85867bdd7906d4cd742ec IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00045251 9.‍8092129
0x3124335585693de0d19805af3bc31875091e7aa8aff94420901a76473fec1cd6Set Approval For...153240312022-08-12 1:04:052 days 23 hrs ago0x824ca4773eed2357bb508632be29257b38f8497f IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00227098 49.‍22806021
0x192a6c1c12c0110eaba53fa569ca9457492f6f6ba789194e4947216e61f17f3aSafe Transfer Fr...153110512022-08-10 0:00:235 days 59 mins ago0x1a359fe260aa71977d06023a61ec610a3c077fc8 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00041118 7.‍1768632
0xa350bd0fa68d6d9b5b69f8b8165a15b89171b1be0679847b2503a35026a047deSafe Transfer Fr...153109942022-08-09 23:47:455 days 1 hr ago0x1a359fe260aa71977d06023a61ec610a3c077fc8 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00109443 17.‍62579924
0xd35f9380b988f6f523427e2b22a1569c475cf6d4e7b0a067e91585a557562ac2Transfer From153091972022-08-09 17:07:065 days 7 hrs agoENS Name jpopp.eth IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00256024 43.‍09523777
0x640a7170c5080331f51faab8d4c717a48e04d82daac04f9e417ac8c3fad7be57Set Approval For...153069552022-08-09 8:33:575 days 16 hrs ago0x4f26baef70e4ba3fab6e1153eb8f25276cfc3019 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00055941 12.‍14851595
0x057be13e160258087d28b6c845c6d89d13536de4dcc8977d66a70d853f20e846Transfer From153045632022-08-08 23:32:556 days 1 hr ago0x3bb03279cfab67b20ecb5bc25d722c15208e589b IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00095329 16.‍04299413
0x418c1f1cfbf0d5c4f7fcfc54ed8954e0568285551cbf5171fd607a8edb305094Set Approval For...153041322022-08-08 21:59:166 days 3 hrs ago0x3bb03279cfab67b20ecb5bc25d722c15208e589b IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00093813 20.‍37287717
0xdaf6ff8b8f45d89385875609912966fa0152d6a69752f9aea87b03860e9e3bbfSafe Transfer Fr...153002872022-08-08 7:42:356 days 17 hrs ago0xdc070542279243d16835492080504261b259f2ea IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00046314 8.‍08385027
0x7bcc47e8e270a1f6a6bd2aaecef75599bcb25921fdf1bdd896ec0cd98f174381Set Approval For...153002382022-08-08 7:34:086 days 17 hrs ago0xdc070542279243d16835492080504261b259f2ea IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00059973 13.‍02404139
0x228782747d0567e7b591f9b2a1f30cd6a633857a71d1d5b94c897f7536c85776Set Approval For...152894932022-08-06 15:21:578 days 9 hrs ago0x9e6ac6e0242bb44f30c46d76ff4e1b2c53b34bc5 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00049552 10.‍74136848
0x87f267894006e864aed1fe61380b58a9e4421f6578a75b0248d316a937103cdfSet Approval For...152880852022-08-06 10:08:028 days 14 hrs ago0x3a6d29d4abd80e97b8215b3236da68048e9749a4 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00039362 8.‍54805774
0x53c9fd8a3b76b0ccce25378000dfd2d8d7b38f1ada1bd11aa8dba8827df4e94bSet Approval For...152841392022-08-05 19:11:169 days 5 hrs ago0xb4077a10b1aa5f53642b1672b6f4945208d6e9d7 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00101368 22.‍01362247
0x86e84506cd616da9c0a594af3deffb1188da40b50a0f65ecbb3b57ec6b8e7f2aMigrate152840972022-08-05 19:02:279 days 5 hrs ago0xb4077a10b1aa5f53642b1672b6f4945208d6e9d7 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍0043011 22.‍54154026
0x1a5cc2e97db75e39967cbacfbeee92510a580b3dbaf0bdc50ba6a6babe123b67Set Approval For...152798002022-08-05 3:06:379 days 21 hrs agoENS Name createnature.eth IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00059963 12.‍99829857
0x1ecda1cd18e95a66032ac8a2f2a691a9642c260358f05a935fc68bcb415a0d44Set Approval For...152747042022-08-04 8:01:5610 days 16 hrs ago0x4cb1ce868ff0df5600d9d656add65c671ca73d5d IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00084309 18.‍30902111
0xb6581e609256f2b527cabc3baedd025bf9fbfae16d785be6283e4598e1924ceaSet Approval For...152706422022-08-03 16:55:5611 days 8 hrs ago0x5e52908bef527f8ebcbbd388cb5f8b37bb0d5e03 IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00048865 10.‍59252194
0x2fb5dad0dee693abc4013676c33cfd1961bfd32c2cdb53478bbc796daad304c2Set Approval For...152696972022-08-03 13:19:3211 days 11 hrs agoENS Name roadlzrd.eth IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00060859 13.‍21642639
0x4a4f4427c4768d8e0d8bf05e58786a37f4b73f5d54136c64d03354b9c5f9043fSet Approval For...152581022022-08-01 17:49:0113 days 7 hrs ago0x0cf38404f8aee86efab9f6393309c40291b6a7ce IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00076138 16.‍53468289
0xea4b0ed1963bba8383a6b3af873252b4c3bfc276f7d10d5bfea1096eb55d05d1Transfer From152538512022-08-01 2:07:2313 days 22 hrs agoENS Name cannabourne.eth IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00055067 10.‍08387749
0x21a9af3e6e83929d733ed51fd5e0fbde2774a91e7011dc7f28dee3bd5b0aa793Set Approval For...152523242022-07-31 20:12:0214 days 4 hrs agoENS Name onehungryson.eth IN  0xa0fa51f54dbab68c068a2e2c62aa72fe334d9b090 Ether0.‍00057358 12.‍45624502
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FoodzPartyV2

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 2 of 6 : 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 3 of 6 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

File 4 of 6 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

File 5 of 6 : ERC721.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*//////////////////////////////////////////////////////////////
                         METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner];
    }

    /*//////////////////////////////////////////////////////////////
                         ERC721 APPROVAL STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*//////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL SAFE MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

File 6 of 6 : FoodzPartyV2.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;

import {ERC721} from "@solmate/tokens/ERC721.sol";
import {Ownable} from "@openzeppelin/access/Ownable.sol";
import {MerkleProof} from "@openzeppelin/utils/cryptography/MerkleProof.sol";
import {Strings} from "@openzeppelin/utils/Strings.sol";

interface IGoldenPass {
    function burn(address from, uint256 amount) external;
}

interface IFoodzPartyLegacy {
    function transferFrom(
        address from,
        address to,
        uint256 id
    ) external;
}

interface IOddworxStaking {
    function buyItem(
        uint256 itemSKU,
        uint256 amount,
        address nftContract,
        uint256[] calldata nftIds,
        address user
    ) external;
}

contract FoodzPartyV2 is ERC721, Ownable {
    using Strings for uint256;

    /// @dev 0xb36c1284
    error MaxSupply();
    /// @dev 0xa99edc71
    error MigrationOff();
    /// @dev 0xb9968551
    error PassSaleOff();
    /// @dev 0x3afc8ce9
    error SaleOff();
    /// @dev 0xb52aa4c0
    error QueryForNonExistentToken();
    /// @dev 0xe6c4247b
    error InvalidAddress();
    /// @dev 0x2c5211c6
    error InvalidAmount();
    /// @dev 0xab143c06
    error Reentrancy();

    // Immutable

    uint256 internal constant MIGRATION_START_INDEX = 0;
    uint256 internal constant MIGRATION_END_INDEX = 1160;
    uint256 internal constant MIGRATION_EXTRAS_START_INDEX = 1161;
    uint256 internal constant MIGRATION_EXTRAS_END_INDEX = 2321;
    uint256 internal constant REGULAR_START_INDEX = 2322;
    uint256 internal constant REGULAR_END_INDEX = 2975;
    uint256 internal constant GOLDEN_PASS_START_INDEX = 2976;
    uint256 internal constant GOLDEN_PASS_END_INDEX = 3475;
    uint256 internal constant HANDMADE_START_INDEX = 3476;
    uint256 internal constant HANDMADE_END_INDEX = 3499;

    /// @notice address of the oddx staking contract
    IOddworxStaking internal immutable staking;
    /// @notice address of the golden pass contract
    IGoldenPass internal immutable goldenPass;
    /// @notice address of the legacy foodz party contract
    IFoodzPartyLegacy internal immutable foodzLegacy;
    /// @notice address of the genzee contract
    address internal immutable genzee;

    // Mutable

    /// @notice amount of regular mints
    /// @dev starts at 1 cuz constructor mints #0
    uint256 public migrationSupply = 1;
    uint256 public migrationExtrasSupply;
    uint256 public regularSupply;
    uint256 public goldenPassSupply;
    uint256 public handmadeSupply;
    string public baseURI;
    uint256 public mintPriceOddx = 200 ether;
    /// @notice if users can migrate their tokens from the legacy contract
    /// @dev 1 = not active; 2 = active;
    uint256 private _isMigrationActive = 1;
    /// @notice if users can redeem their golden passes
    /// @dev 1 = not active; 2 = active;
    uint256 private _isPassSaleActive = 1;
    /// @notice if users can redeem their golden passes
    /// @dev 1 = not active; 2 = active;
    uint256 private _isSaleActive = 1;

    /// @dev reentrancy lock
    uint256 private _locked = 1;

    // Constructor

    constructor(
        IOddworxStaking staking_,
        IGoldenPass goldenPass_,
        IFoodzPartyLegacy foodzLegacy_,
        address genzee_,
        string memory baseURI_
    ) ERC721("Foodz Party", "FP") {
        staking = staking_;
        goldenPass = goldenPass_;
        foodzLegacy = foodzLegacy_;
        genzee = genzee_;
        baseURI = baseURI_;
        _safeMint(0x067423C244442ca0Eb6d6fd6B747c2BD21414107, 0);
    }

    // Owner Only

    function setBaseURI(string calldata newBaseURI) external onlyOwner {
        baseURI = newBaseURI;
    }

    function setIsPassSaleActive(bool newIsPassSaleActive) external onlyOwner {
        _isPassSaleActive = newIsPassSaleActive ? 2 : 1;
    }

    function setIsSaleActive(bool newIsSaleActive) external onlyOwner {
        _isSaleActive = newIsSaleActive ? 2 : 1;
    }

    function setIsMigrationActive(bool newIsMigrationActive)
        external
        onlyOwner
    {
        _isMigrationActive = newIsMigrationActive ? 2 : 1;
    }

    function setMintPriceOddx(uint256 newMintPriceOddx) external onlyOwner {
        mintPriceOddx = newMintPriceOddx;
    }

    function handmadeMint(address to) external onlyOwner {
        unchecked {
            uint256 tokenId = HANDMADE_START_INDEX + handmadeSupply;
            if (tokenId > HANDMADE_END_INDEX) revert MaxSupply();
            // slither-disable-next-line events-maths
            ++handmadeSupply;
            _safeMint(to, tokenId);
        }
    }

    // User

    /// @notice Migrate a token from legacy Foodz contract to this contract.
    ///         It "burns" the token on the other contract so it requires the tokens to be approved first.
    function migrate(uint256[] calldata ids) external {
        if (_isMigrationActive != 2) revert MigrationOff();
        if (msg.sender == address(0)) revert InvalidAddress();
        if (_locked == 2) revert Reentrancy();
        _locked = 2;

        uint256 length = ids.length;
        uint256 i = 0;

        unchecked {
            migrationSupply += length;
        }

        for (i = 0; i < length; ) {
            foodzLegacy.transferFrom(
                msg.sender,
                address(0x000000000000000000000000000000000000dEaD),
                ids[i]
            );
            unchecked {
                ++i;
            }
        }

        unchecked {
            uint256 extraMingStartIndex = MIGRATION_EXTRAS_START_INDEX +
                migrationExtrasSupply;
            migrationExtrasSupply += length;
            for (i = 0; i < length; i++) {
                _safeMint(msg.sender, ids[i]);
                _safeMint(msg.sender, extraMingStartIndex + i);
            }
        }

        _locked = 1;
    }

    function mint(uint256 amount, uint256[] calldata nftIds) external {
        if (amount == 0) revert InvalidAmount();
        if (_isSaleActive != 2) revert SaleOff();
        uint256 startIndex;
        unchecked {
            startIndex = REGULAR_START_INDEX + regularSupply;
            if (startIndex + amount - 1 > REGULAR_END_INDEX) revert MaxSupply();
        }

        staking.buyItem(
            0x0105,
            amount * mintPriceOddx,
            genzee,
            nftIds,
            msg.sender
        );

        unchecked {
            // slither-disable-next-line events-maths
            regularSupply += amount;
            for (uint256 i = 0; i < amount; i++) {
                _safeMint(msg.sender, startIndex + i);
            }
        }
    }

    function passmint(uint256 amount) external {
        if (_isPassSaleActive != 2) revert PassSaleOff();
        uint256 startIndex;
        unchecked {
            startIndex = GOLDEN_PASS_START_INDEX + goldenPassSupply;
            if (startIndex + amount - 1 > GOLDEN_PASS_END_INDEX)
                revert MaxSupply();
        }

        goldenPass.burn(msg.sender, amount);

        unchecked {
            // slither-disable-next-line events-maths
            goldenPassSupply += amount;
            for (uint256 i = 0; i < amount; i++) {
                _safeMint(msg.sender, startIndex + i);
            }
        }
    }

    // View

    function currentSupply() external view returns (uint256) {
        unchecked {
            return
                migrationSupply +
                migrationExtrasSupply +
                regularSupply +
                goldenPassSupply +
                handmadeSupply;
        }
    }

    function isMigrationActive() external view returns (bool) {
        return _isMigrationActive == 2 ? true : false;
    }

    function isPassSaleActive() external view returns (bool) {
        return _isPassSaleActive == 2 ? true : false;
    }

    function isSaleActive() external view returns (bool) {
        return _isSaleActive == 2 ? true : false;
    }

    // Overrides

    function tokenURI(uint256 id) public view override returns (string memory) {
        if (_ownerOf[id] == address(0)) revert QueryForNonExistentToken();
        return string(abi.encodePacked(baseURI, id.toString()));
    }
}

Settings
{
  "remappings": [
    "$/=src/",
    "@ds-test/=lib/ds-test/src/",
    "@forge-std/=lib/forge-std/src/",
    "@oddworx/=lib/contracts-flatten/contracts/",
    "@openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "@solmate/=lib/solmate/src/",
    "contracts-flatten/=lib/contracts-flatten/contracts/",
    "ds-test/=lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/",
    "src/=src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london"
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IOddworxStaking","name":"staking_","type":"address"},{"internalType":"contract IGoldenPass","name":"goldenPass_","type":"address"},{"internalType":"contract IFoodzPartyLegacy","name":"foodzLegacy_","type":"address"},{"internalType":"address","name":"genzee_","type":"address"},{"internalType":"string","name":"baseURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"MaxSupply","type":"error"},{"inputs":[],"name":"MigrationOff","type":"error"},{"inputs":[],"name":"PassSaleOff","type":"error"},{"inputs":[],"name":"QueryForNonExistentToken","type":"error"},{"inputs":[],"name":"Reentrancy","type":"error"},{"inputs":[],"name":"SaleOff","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenPassSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"handmadeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"handmadeSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMigrationActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPassSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrationExtrasSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrationSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPriceOddx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"passmint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"regularSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsMigrationActive","type":"bool"}],"name":"setIsMigrationActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsPassSaleActive","type":"bool"}],"name":"setIsPassSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsSaleActive","type":"bool"}],"name":"setIsSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPriceOddx","type":"uint256"}],"name":"setMintPriceOddx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101006040526001600755680ad78ebc5ac6200000600d556001600e556001600f55600160105560016011553480156200003857600080fd5b5060405162002334380380620023348339810160408190526200005b9162000475565b604080518082018252600b81526a466f6f647a20506172747960a81b602080830191825283518085019094526002845261046560f41b908401528151919291620000a891600091620003a0565b508051620000be906001906020840190620003a0565b505050620000db620000d56200013c60201b60201c565b62000140565b6001600160a01b0380861660805284811660a05283811660c052821660e05280516200010f90600c906020840190620003a0565b506200013173067423c244442ca0eb6d6fd6b747c2bd21414107600062000192565b50505050506200061b565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200019e828262000291565b6001600160a01b0382163b1580620002485750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af115801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c9190620005ab565b6001600160e01b031916145b6200028d5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064015b60405180910390fd5b5050565b6001600160a01b038216620002dd5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640162000284565b6000818152600260205260409020546001600160a01b031615620003355760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640162000284565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620003ae90620005de565b90600052602060002090601f016020900481019282620003d257600085556200041d565b82601f10620003ed57805160ff19168380011785556200041d565b828001600101855582156200041d579182015b828111156200041d57825182559160200191906001019062000400565b506200042b9291506200042f565b5090565b5b808211156200042b576000815560010162000430565b6001600160a01b03811681146200045c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200048e57600080fd5b85516200049b8162000446565b80955050602080870151620004b08162000446565b6040880151909550620004c38162000446565b6060880151909450620004d68162000446565b60808801519093506001600160401b0380821115620004f457600080fd5b818901915089601f8301126200050957600080fd5b8151818111156200051e576200051e6200045f565b604051601f8201601f19908116603f011681019083821181831017156200054957620005496200045f565b816040528281528c868487010111156200056257600080fd5b600093505b8284101562000586578484018601518185018701529285019262000567565b82841115620005985760008684830101525b8096505050505050509295509295909350565b600060208284031215620005be57600080fd5b81516001600160e01b031981168114620005d757600080fd5b9392505050565b600181811c90821680620005f357607f821691505b602082108114156200061557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051611cdf6200065560003960006109930152600061100601526000610d05015260006109530152611cdf6000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806360c06a6611610125578063a22cb465116100ad578063d2dedb5d1161007c578063d2dedb5d14610453578063d93bf4fe1461045b578063e985e9c51461046e578063f2fde38b1461049c578063f8647e22146104af57600080fd5b8063a22cb46514610407578063b88d4fde1461041a578063c87b56dd1461042d578063d2d65ff51461044057600080fd5b8063715018a6116100f4578063715018a6146103bb578063732fc1f3146103c3578063771282f6146103d65780638da5cb5b146103ee57806395d89b41146103ff57600080fd5b806360c06a66146103845780636352211e1461038d5780636c0360eb146103a057806370a08231146103a857600080fd5b80632b975545116101a85780634e4a66d2116101775780634e4a66d21461034e57806355f804b314610357578063564566a81461036a5780635a318343146103725780635bff73e91461037b57600080fd5b80632b9755451461030c5780632d69044f14610315578063314130ed1461032857806342842e0e1461033b57600080fd5b8063081812fc116101ef578063081812fc14610286578063095ea7b3146102c75780630b6b5fcb146102da5780630e913a6c146102f157806323b872dd146102f957600080fd5b806301ffc9a714610221578063020fb4e31461024957806302ff77221461025e57806306fdde0314610271575b600080fd5b61023461022f366004611607565b6104c2565b60405190151581526020015b60405180910390f35b61025c61025736600461162b565b610514565b005b61025c61026c366004611654565b61054c565b61027961058e565b604051610240919061169f565b6102af61029436600461162b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610240565b61025c6102d53660046116e9565b61061c565b6102e360075481565b604051908152602001610240565b6102346106fe565b61025c610307366004611713565b610716565b6102e3600a5481565b61025c61032336600461179b565b6108dd565b61025c610336366004611654565b610a37565b61025c610349366004611713565b610a79565b6102e360085481565b61025c610365366004611829565b610b4e565b610234610b84565b6102e3600d5481565b6102e360095481565b6102e3600b5481565b6102af61039b36600461162b565b610b96565b610279610bed565b6102e36103b636600461186b565b610bfa565b61025c610c5d565b61025c6103d136600461162b565b610c93565b600b54600a54600954600854600754010101016102e3565b6006546001600160a01b03166102af565b610279610d91565b61025c610415366004611886565b610d9e565b61025c6104283660046118b9565b610e0a565b61027961043b36600461162b565b610ec8565b61025c61044e366004611654565b610f32565b610234610f74565b61025c610469366004611928565b610f86565b61023461047c36600461195e565b600560209081526000928352604080842090915290825290205460ff1681565b61025c6104aa36600461186b565b611123565b61025c6104bd36600461186b565b6111be565b60006301ffc9a760e01b6001600160e01b0319831614806104f357506380ac58cd60e01b6001600160e01b03198316145b8061050e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6006546001600160a01b031633146105475760405162461bcd60e51b815260040161053e90611988565b60405180910390fd5b600d55565b6006546001600160a01b031633146105765760405162461bcd60e51b815260040161053e90611988565b80610582576001610585565b60025b60ff16600f5550565b6000805461059b906119bd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c7906119bd565b80156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061066557506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6106a25760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161053e565b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000600e546002146107105750600090565b50600190565b6000818152600260205260409020546001600160a01b0384811691161461076c5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161053e565b6001600160a01b0382166107b65760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161053e565b336001600160a01b03841614806107f057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061081157506000818152600460205260409020546001600160a01b031633145b61084e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161053e565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b826108fb5760405163162908e360e11b815260040160405180910390fd5b60105460021461091e57604051633afc8ce960e01b815260040160405180910390fd5b6000600954610912019050610b9f600185830103111561095157604051632cdb04a160e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166349db4ced610105600d54876109919190611a0e565b7f00000000000000000000000000000000000000000000000000000000000000008787336040518763ffffffff1660e01b81526004016109d696959493929190611a2d565b600060405180830381600087803b1580156109f057600080fd5b505af1158015610a04573d6000803e3d6000fd5b5050600980548701905550600090505b84811015610a3057610a2833828401611229565b600101610a14565b5050505050565b6006546001600160a01b03163314610a615760405162461bcd60e51b815260040161053e90611988565b80610a6d576001610a70565b60025b60ff16600e5550565b610a84838383610716565b6001600160a01b0382163b1580610b2d5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190611a97565b6001600160e01b031916145b610b495760405162461bcd60e51b815260040161053e90611ab4565b505050565b6006546001600160a01b03163314610b785760405162461bcd60e51b815260040161053e90611988565b610b49600c8383611558565b60006010546002146107105750600090565b6000818152600260205260409020546001600160a01b031680610be85760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161053e565b919050565b600c805461059b906119bd565b60006001600160a01b038216610c415760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161053e565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610c875760405162461bcd60e51b815260040161053e90611988565b610c9160006112f5565b565b600f54600214610cb65760405163b996855160e01b815260040160405180910390fd5b6000600a54610ba0019050610d936001838301031115610ce957604051632cdb04a160e21b815260040160405180910390fd5b604051632770a7eb60e21b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639dc29fac90604401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b5050600a80548501905550600090505b82811015610b4957610d8933828401611229565b600101610d75565b6001805461059b906119bd565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610e15858585610716565b6001600160a01b0384163b1580610eac5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610e5d9033908a90899089908990600401611ade565b6020604051808303816000875af1158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190611a97565b6001600160e01b031916145b610a305760405162461bcd60e51b815260040161053e90611ab4565b6000818152600260205260409020546060906001600160a01b0316610f00576040516302d4aa9360e61b815260040160405180910390fd5b600c610f0b83611347565b604051602001610f1c929190611b4e565b6040516020818303038152906040529050919050565b6006546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161053e90611988565b80610f68576001610f6b565b60025b60ff1660105550565b6000600f546002146107105750600090565b600e54600214610fa95760405163a99edc7160e01b815260040160405180910390fd5b33610fc75760405163e6c4247b60e01b815260040160405180910390fd5b60115460021415610feb5760405163558a1e0360e11b815260040160405180910390fd5b600260115560078054820190558060005b818110156110c3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd3361dead87878681811061104957611049611bf5565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b50505050806001019050610ffc565b5060088054828101909155600090610489015b8282101561111757611100338686858181106110f4576110f4611bf5565b90506020020135611229565b61110c33838301611229565b6001909101906110d6565b50506001601155505050565b6006546001600160a01b0316331461114d5760405162461bcd60e51b815260040161053e90611988565b6001600160a01b0381166111b25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161053e565b6111bb816112f5565b50565b6006546001600160a01b031633146111e85760405162461bcd60e51b815260040161053e90611988565b600b54610d9401610dab81111561121257604051632cdb04a160e21b815260040160405180910390fd5b600b805460010190556112258282611229565b5050565b611233828261144d565b6001600160a01b0382163b15806112d95750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190611a97565b6001600160e01b031916145b6112255760405162461bcd60e51b815260040161053e90611ab4565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608161136b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611395578061137f81611c0b565b915061138e9050600a83611c3c565b915061136f565b60008167ffffffffffffffff8111156113b0576113b0611c50565b6040519080825280601f01601f1916602001820160405280156113da576020820181803683370190505b5090505b8415611445576113ef600183611c66565b91506113fc600a86611c7d565b611407906030611c91565b60f81b81838151811061141c5761141c611bf5565b60200101906001600160f81b031916908160001a90535061143e600a86611c3c565b94506113de565b949350505050565b6001600160a01b0382166114975760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161053e565b6000818152600260205260409020546001600160a01b0316156114ed5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161053e565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611564906119bd565b90600052602060002090601f01602090048101928261158657600085556115cc565b82601f1061159f5782800160ff198235161785556115cc565b828001600101855582156115cc579182015b828111156115cc5782358255916020019190600101906115b1565b506115d89291506115dc565b5090565b5b808211156115d857600081556001016115dd565b6001600160e01b0319811681146111bb57600080fd5b60006020828403121561161957600080fd5b8135611624816115f1565b9392505050565b60006020828403121561163d57600080fd5b5035919050565b80358015158114610be857600080fd5b60006020828403121561166657600080fd5b61162482611644565b60005b8381101561168a578181015183820152602001611672565b83811115611699576000848401525b50505050565b60208152600082518060208401526116be81604085016020870161166f565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610be857600080fd5b600080604083850312156116fc57600080fd5b611705836116d2565b946020939093013593505050565b60008060006060848603121561172857600080fd5b611731846116d2565b925061173f602085016116d2565b9150604084013590509250925092565b60008083601f84011261176157600080fd5b50813567ffffffffffffffff81111561177957600080fd5b6020830191508360208260051b850101111561179457600080fd5b9250929050565b6000806000604084860312156117b057600080fd5b83359250602084013567ffffffffffffffff8111156117ce57600080fd5b6117da8682870161174f565b9497909650939450505050565b60008083601f8401126117f957600080fd5b50813567ffffffffffffffff81111561181157600080fd5b60208301915083602082850101111561179457600080fd5b6000806020838503121561183c57600080fd5b823567ffffffffffffffff81111561185357600080fd5b61185f858286016117e7565b90969095509350505050565b60006020828403121561187d57600080fd5b611624826116d2565b6000806040838503121561189957600080fd5b6118a2836116d2565b91506118b060208401611644565b90509250929050565b6000806000806000608086880312156118d157600080fd5b6118da866116d2565b94506118e8602087016116d2565b935060408601359250606086013567ffffffffffffffff81111561190b57600080fd5b611917888289016117e7565b969995985093965092949392505050565b6000806020838503121561193b57600080fd5b823567ffffffffffffffff81111561195257600080fd5b61185f8582860161174f565b6000806040838503121561197157600080fd5b61197a836116d2565b91506118b0602084016116d2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806119d157607f821691505b602082108114156119f257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a2857611a286119f8565b500290565b868152602081018690526001600160a01b03858116604083015260a06060830181905282018490526000906001600160fb1b03851115611a6c57600080fd5b8460051b808760c0860137600090840160c00190815293166080909201919091525095945050505050565b600060208284031215611aa957600080fd5b8151611624816115f1565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60008151611b4481856020860161166f565b9290920192915050565b600080845481600182811c915080831680611b6a57607f831692505b6020808410821415611b8a57634e487b7160e01b86526022600452602486fd5b818015611b9e5760018114611baf57611bdc565b60ff19861689528489019650611bdc565b60008b81526020902060005b86811015611bd45781548b820152908501908301611bbb565b505084890196505b505050505050611bec8185611b32565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c1f57611c1f6119f8565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611c4b57611c4b611c26565b500490565b634e487b7160e01b600052604160045260246000fd5b600082821015611c7857611c786119f8565b500390565b600082611c8c57611c8c611c26565b500690565b60008219821115611ca457611ca46119f8565b50019056fea2646970667358221220d6f46419479a8b058263d3c0ad128ca4147e4aabb9b66d89f86f5066484af89864736f6c634300080a0033000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b700000000000000000000000001b956a0149808806a81148ad93cf71d1a05e302000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f743779637271317a79332e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f000000

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

000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b700000000000000000000000001b956a0149808806a81148ad93cf71d1a05e302000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f743779637271317a79332e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f000000

-----Decoded View---------------
Arg [0] : staking_ (address): 0x428b6a13277116c62d751bebbc6f47011a0cdc11
Arg [1] : goldenPass_ (address): 0xfb26c3ac142ea208272c582a84d266dd6771f7b7
Arg [2] : foodzLegacy_ (address): 0x01b956a0149808806a81148ad93cf71d1a05e302
Arg [3] : genzee_ (address): 0x201675fbfaaac3a51371e4c31ff73ac14cee2a5a
Arg [4] : baseURI_ (string): https://t7ycrq1zy3.execute-api.us-east-1.amazonaws.com/token/

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11
Arg [1] : 000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b7
Arg [2] : 00000000000000000000000001b956a0149808806a81148ad93cf71d1a05e302
Arg [3] : 000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a
Arg [4] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [5] : 000000000000000000000000000000000000000000000000000000000000003d
Arg [6] : 68747470733a2f2f743779637271317a79332e657865637574652d6170692e75
Arg [7] : 732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f000000


Block Transaction Difficulty Gas Used Reward
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.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.