APE Price: $1.12 (+7.33%)

Contract

0xe9c65D927512C7ffe8A4F17D241A40ae08054887

Overview

APE Balance

Apechain LogoApechain LogoApechain Logo0 APE

APE Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xCb0A9765...e0Dd4Bd59
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ApeDeposit

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at apescan.io on 2025-01-12
*/

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// File: Contracts/poop.sol


pragma solidity ^0.8.0;


interface IERC20 {
    function transfer(address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

interface IERC721 {
    function transferFrom(address from, address to, uint256 tokenId) external;
    function ownerOf(uint256 tokenId) external view returns (address);
}

interface IPyth {
    function getRandomNumber() external view returns (uint256);
}

contract ApeDeposit is ReentrancyGuard {
    address public admin;
    IERC20 public apeToken = IERC20(0x7f9FBf9bDd3F4105C478b996B648FE6e828a1e98); // $APE token contract address
    IERC20 public mpooToken = IERC20(0xAf9DB8640FAFC11c5eF50497b76bD3Fe11541003);
    IERC721 public goldenBananaNFT = IERC721(0x825F5E41FfCbe875D19F51895c814F088Bd45169); // Golden Banana NFT contract address
    IPyth public pyth; // Pyth Entropy for randomness

    uint256 public constant APE_DEPOSIT = 1 * 10**18; // 1 $APE token
    uint256 public constant MPOO_REWARD = 5000 * 10**18; // 5,000 $MPOO tokens
    uint256 public constant CHANCE = 10; // 10% chance to receive NFT
    uint256 public constant SECONDS_IN_A_DAY = 86400; // 24 hours in seconds
    uint256 public constant MAX_DEPOSITS_PER_DAY = 3; // 3 deposits allowed per day

    address public beneficiary = 0x4D09C5DfD949470c684E6D537E24C399c075AD40; // Address to receive 90% of the $APE deposit

    mapping(address => uint256) public lastDeposit; // Timestamp of the last deposit for each user
    mapping(address => uint256) public depositCount; // Number of deposits made by each user in the current day
    uint256[] public nftTokens; // Array of Golden Banana NFTs held by the contract
    uint256 public nftIndex; // Index for the next NFT to be distributed
    address public constant funder = 0x4D09C5DfD949470c684E6D537E24C399c075AD40;  // Set your address for unlimited deposits

    event Deposit(address indexed user, bool receivedNFT, uint256 rewardAmount);

        constructor(address _pyth) {
        admin = msg.sender;
        pyth = IPyth(_pyth);
    }

    modifier onlyAdmin() {
        require(msg.sender == admin, "Not admin");
        _;
    }

    modifier canDeposit() {
        // If the caller is the funder (your address), allow unlimited deposits
        if (msg.sender != funder) {
            // Reset deposit count after 24 hours (i.e., a new day)
            if (block.timestamp - lastDeposit[msg.sender] >= SECONDS_IN_A_DAY) {
                depositCount[msg.sender] = 0; // Reset the count
            }

            // Ensure the user has not exceeded the deposit limit of 3 per day
            require(depositCount[msg.sender] < MAX_DEPOSITS_PER_DAY, "You can only deposit 3 times a day");
        }
        _;
    }

    function deposit() external nonReentrant canDeposit {
    // Ensure the user sends exactly 1 $APE
    require(apeToken.transfer(msg.sender, APE_DEPOSIT), "Deposit failed"); 


        // Calculate 90% of the deposit to send to the beneficiary
        uint256 ninetyPercentApe = (APE_DEPOSIT * 90) / 100;

        // Send 90% to the beneficiary address
        require(apeToken.transfer(beneficiary, ninetyPercentApe), "Transfer to beneficiary failed");

        // Get randomness from Pyth
        uint256 randomNumber = pyth.getRandomNumber();
        
        bool receivedNFT = false;
        if (randomNumber % 100 < CHANCE && nftIndex < nftTokens.length) {
            // 10% chance to receive a Golden Banana NFT
            uint256 tokenId = nftTokens[nftIndex];
            goldenBananaNFT.transferFrom(address(this), msg.sender, tokenId);
            nftIndex++; // Move to the next NFT in the array
            receivedNFT = true;
            emit Deposit(msg.sender, true, tokenId);
        } else {
            // 90% chance to receive 5,000 $MPOO
            require(mpooToken.transfer(msg.sender, MPOO_REWARD), "MPOO transfer failed");
            emit Deposit(msg.sender, false, MPOO_REWARD);
        }

        // Update the last deposit timestamp and increment the deposit count
        lastDeposit[msg.sender] = block.timestamp;
        depositCount[msg.sender] += 1;
    }

    // Admin functions
    function withdrawTokens(address token, uint256 amount) external onlyAdmin {
        IERC20(token).transfer(admin, amount);
    }

    function setPythAddress(address _pyth) external onlyAdmin {
        pyth = IPyth(_pyth);
    }

    // Function to add NFTs to the contract (only by the admin)
    function addNFTs(uint256[] calldata tokenIds) external onlyAdmin {
        for (uint256 i = 0; i < tokenIds.length; i++) {
            nftTokens.push(tokenIds[i]);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_pyth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"receivedNFT","type":"bool"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"Deposit","type":"event"},{"inputs":[],"name":"APE_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CHANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DEPOSITS_PER_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MPOO_REWARD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECONDS_IN_A_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"addNFTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"funder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenBananaNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpooToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nftTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pyth","outputs":[{"internalType":"contract IPyth","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pyth","type":"address"}],"name":"setPythAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c80638a6c3e7a116100ab578063ee227daa1161006f578063ee227daa146102fa578063f4443d9a14610318578063f851a44014610348578063f98d06f014610366578063f9cfa06f146103845761012a565b80638a6c3e7a146102665780639fec43b414610284578063d0e30db0146102a2578063e0d38f90146102ac578063e68b0944146102ca5761012a565b806329d16ee8116100f257806329d16ee8146101be578063328149d5146101ee57806338af3eed1461020c5780636857a96c1461022a57806389de38c4146102485761012a565b8063041ae8801461012e578063050f06b51461014c57806306b091f91461016a5780631a4f0e57146101865780631dc381cb146101a2575b5f80fd5b6101366103a2565b6040516101439190610fba565b60405180910390f35b6101546103ba565b604051610161919061102e565b60405180910390f35b610184600480360381019061017f91906110ac565b6103df565b005b6101a0600480360381019061019b919061114b565b61050f565b005b6101bc60048036038101906101b79190611196565b6105fc565b005b6101d860048036038101906101d39190611196565b6106ce565b6040516101e591906111d0565b60405180910390f35b6101f66106e3565b6040516102039190611209565b60405180910390f35b610214610708565b6040516102219190610fba565b60405180910390f35b61023261072d565b60405161023f91906111d0565b60405180910390f35b610250610732565b60405161025d91906111d0565b60405180910390f35b61026e610738565b60405161027b91906111d0565b60405180910390f35b61028c610746565b60405161029991906111d0565b60405180910390f35b6102aa61074b565b005b6102b4610e6e565b6040516102c191906111d0565b60405180910390f35b6102e460048036038101906102df9190611222565b610e7a565b6040516102f191906111d0565b60405180910390f35b610302610e9a565b60405161030f919061102e565b60405180910390f35b610332600480360381019061032d9190611196565b610ebf565b60405161033f91906111d0565b60405180910390f35b610350610ed4565b60405161035d9190610fba565b60405180910390f35b61036e610ef9565b60405161037b919061126d565b60405180910390f35b61038c610f1e565b60405161039991906111d0565b60405180910390f35b734d09c5dfd949470c684e6d537e24c399c075ad4081565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461046e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610465906112e0565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016104ca9291906112fe565b6020604051808303815f875af11580156104e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050a919061135a565b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610595906112e0565b60405180910390fd5b5f5b828290508110156105f75760098383838181106105c0576105bf611385565b5b90506020020135908060018154018082558091505060019003905f5260205f20015f909190919091505580806001019150506105a0565b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461068b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610682906112e0565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6007602052805f5260405f205f915090505481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b600a5481565b69010f0cf064dd5920000081565b600381565b610753610f25565b734d09c5dfd949470c684e6d537e24c399c075ad4073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b0576201518060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054426107e791906113df565b1061082f575f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600360085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690611482565b60405180910390fd5b5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33670de0b6b3a76400006040518363ffffffff1660e01b81526004016109149291906112fe565b6020604051808303815f875af1158015610930573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610954919061135a565b610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a906114ea565b60405180910390fd5b5f6064605a670de0b6b3a76400006109ab9190611508565b6109b59190611576565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610a349291906112fe565b6020604051808303815f875af1158015610a50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a74919061135a565b610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa906115f0565b60405180910390fd5b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbdff2c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b429190611622565b90505f600a606483610b54919061164d565b108015610b675750600980549050600a54105b15610c8b575f6009600a5481548110610b8357610b82611385565b5b905f5260205f200154905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610bec9392919061167d565b5f604051808303815f87803b158015610c03575f80fd5b505af1158015610c15573d5f803e3d5ffd5b50505050600a5f815480929190610c2b906116b2565b9190505550600191503373ffffffffffffffffffffffffffffffffffffffff167f74a132f462598ad738fcdf934a3f668aac78953afdb0c9fb953e16e07cca511c600183604051610c7d929190611708565b60405180910390a250610dcb565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3369010f0cf064dd592000006040518363ffffffff1660e01b8152600401610cf19291906112fe565b6020604051808303815f875af1158015610d0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d31919061135a565b610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790611779565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f74a132f462598ad738fcdf934a3f668aac78953afdb0c9fb953e16e07cca511c5f69010f0cf064dd59200000604051610dc2929190611708565b60405180910390a25b4260075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e5a9190611797565b92505081905550505050610e6c610f72565b565b670de0b6b3a764000081565b60098181548110610e89575f80fd5b905f5260205f20015f915090505481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008602052805f5260405f205f915090505481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6201518081565b60025f5403610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090611814565b60405180910390fd5b60025f81905550565b60015f81905550565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fa482610f7b565b9050919050565b610fb481610f9a565b82525050565b5f602082019050610fcd5f830184610fab565b92915050565b5f819050919050565b5f610ff6610ff1610fec84610f7b565b610fd3565b610f7b565b9050919050565b5f61100782610fdc565b9050919050565b5f61101882610ffd565b9050919050565b6110288161100e565b82525050565b5f6020820190506110415f83018461101f565b92915050565b5f80fd5b5f80fd5b61105881610f9a565b8114611062575f80fd5b50565b5f813590506110738161104f565b92915050565b5f819050919050565b61108b81611079565b8114611095575f80fd5b50565b5f813590506110a681611082565b92915050565b5f80604083850312156110c2576110c1611047565b5b5f6110cf85828601611065565b92505060206110e085828601611098565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261110b5761110a6110ea565b5b8235905067ffffffffffffffff811115611128576111276110ee565b5b602083019150836020820283011115611144576111436110f2565b5b9250929050565b5f806020838503121561116157611160611047565b5b5f83013567ffffffffffffffff81111561117e5761117d61104b565b5b61118a858286016110f6565b92509250509250929050565b5f602082840312156111ab576111aa611047565b5b5f6111b884828501611065565b91505092915050565b6111ca81611079565b82525050565b5f6020820190506111e35f8301846111c1565b92915050565b5f6111f382610ffd565b9050919050565b611203816111e9565b82525050565b5f60208201905061121c5f8301846111fa565b92915050565b5f6020828403121561123757611236611047565b5b5f61124484828501611098565b91505092915050565b5f61125782610ffd565b9050919050565b6112678161124d565b82525050565b5f6020820190506112805f83018461125e565b92915050565b5f82825260208201905092915050565b7f4e6f742061646d696e00000000000000000000000000000000000000000000005f82015250565b5f6112ca600983611286565b91506112d582611296565b602082019050919050565b5f6020820190508181035f8301526112f7816112be565b9050919050565b5f6040820190506113115f830185610fab565b61131e60208301846111c1565b9392505050565b5f8115159050919050565b61133981611325565b8114611343575f80fd5b50565b5f8151905061135481611330565b92915050565b5f6020828403121561136f5761136e611047565b5b5f61137c84828501611346565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113e982611079565b91506113f483611079565b925082820390508181111561140c5761140b6113b2565b5b92915050565b7f596f752063616e206f6e6c79206465706f73697420332074696d6573206120645f8201527f6179000000000000000000000000000000000000000000000000000000000000602082015250565b5f61146c602283611286565b915061147782611412565b604082019050919050565b5f6020820190508181035f83015261149981611460565b9050919050565b7f4465706f736974206661696c65640000000000000000000000000000000000005f82015250565b5f6114d4600e83611286565b91506114df826114a0565b602082019050919050565b5f6020820190508181035f830152611501816114c8565b9050919050565b5f61151282611079565b915061151d83611079565b925082820261152b81611079565b91508282048414831517611542576115416113b2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61158082611079565b915061158b83611079565b92508261159b5761159a611549565b5b828204905092915050565b7f5472616e7366657220746f2062656e6566696369617279206661696c656400005f82015250565b5f6115da601e83611286565b91506115e5826115a6565b602082019050919050565b5f6020820190508181035f830152611607816115ce565b9050919050565b5f8151905061161c81611082565b92915050565b5f6020828403121561163757611636611047565b5b5f6116448482850161160e565b91505092915050565b5f61165782611079565b915061166283611079565b92508261167257611671611549565b5b828206905092915050565b5f6060820190506116905f830186610fab565b61169d6020830185610fab565b6116aa60408301846111c1565b949350505050565b5f6116bc82611079565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116ee576116ed6113b2565b5b600182019050919050565b61170281611325565b82525050565b5f60408201905061171b5f8301856116f9565b61172860208301846111c1565b9392505050565b7f4d504f4f207472616e73666572206661696c65640000000000000000000000005f82015250565b5f611763601483611286565b915061176e8261172f565b602082019050919050565b5f6020820190508181035f83015261179081611757565b9050919050565b5f6117a182611079565b91506117ac83611079565b92508282019050808211156117c4576117c36113b2565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6117fe601f83611286565b9150611809826117ca565b602082019050919050565b5f6020820190508181035f83015261182b816117f2565b905091905056fea26469706673582212209a900f46c435c0681f200f0ceffb703edc18de106d964c045b187ec300b7066d64736f6c634300081a0033

Deployed Bytecode Sourcemap

3782:4308:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5122:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3855;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7597:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7904:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7735:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4750:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4051:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4624:71;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4388:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5048:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4308:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4537:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6143:1422;;;:::i;:::-;;4237:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4963:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3968:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4850:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3828:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4180:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4459:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:75;5155:42;5122:75;:::o;3855:::-;;;;;;;;;;;;;:::o;7597:130::-;5494:5;;;;;;;;;;;5480:19;;:10;:19;;;5472:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7689:5:::1;7682:22;;;7705:5;;;;;;;;;;;7712:6;7682:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7597:130:::0;;:::o;7904:183::-;5494:5;;;;;;;;;;;5480:19;;:10;:19;;;5472:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7985:9:::1;7980:100;8004:8;;:15;;8000:1;:19;7980:100;;;8041:9;8056:8;;8065:1;8056:11;;;;;;;:::i;:::-;;;;;;;;8041:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8021:3;;;;;;;7980:100;;;;7904:183:::0;;:::o;7735:96::-;5494:5;;;;;;;;;;;5480:19;;:10;:19;;;5472:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7817:5:::1;7804:4;;:19;;;;;;;;;;;;;;;;;;7735:96:::0;:::o;4750:46::-;;;;;;;;;;;;;;;;;:::o;4051:84::-;;;;;;;;;;;;;:::o;4624:71::-;;;;;;;;;;;;;:::o;4388:35::-;4421:2;4388:35;:::o;5048:23::-;;;;:::o;4308:51::-;4346:13;4308:51;:::o;4537:48::-;4584:1;4537:48;:::o;6143:1422::-;2376:21;:19;:21::i;:::-;5155:42:::1;5659:20;;:10;:20;;;5655:461;;4502:5;5787:11;:23;5799:10;5787:23;;;;;;;;;;;;;;;;5769:15;:41;;;;:::i;:::-;:61;5765:149;;5878:1;5851:12;:24;5864:10;5851:24;;;;;;;;;;;;;;;:28;;;;5765:149;4584:1;6018:12;:24;6031:10;6018:24;;;;;;;;;;;;;;;;:47;6010:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;5655:461;6255:8:::2;;;;;;;;;;;:17;;;6273:10;4275;6255:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6247:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;6400:24;6448:3;6442:2;4275:10;6428:16;;;;:::i;:::-;6427:24;;;;:::i;:::-;6400:51;;6520:8;;;;;;;;;;;:17;;;6538:11;;;;;;;;;;;6551:16;6520:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6512:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;6653:20;6676:4;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6653:45;;6719:16;4421:2;6773:3;6758:12;:18;;;;:::i;:::-;:27;:58;;;;;6800:9;:16;;;;6789:8;;:27;6758:58;6754:632;;;6891:15;6909:9;6919:8;;6909:19;;;;;;;;:::i;:::-;;;;;;;;;;6891:37;;6943:15;;;;;;;;;;;:28;;;6980:4;6987:10;6999:7;6943:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7022:8;;:10;;;;;;;;;:::i;:::-;;;;;;7098:4;7084:18;;7130:10;7122:34;;;7142:4;7148:7;7122:34;;;;;;;:::i;:::-;;;;;;;;6818:350;6754:632;;;7247:9;;;;;;;;;;;:18;;;7266:10;4346:13;7247:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7239:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7343:10;7335:39;;;7355:5;4346:13;7335:39;;;;;;;:::i;:::-;;;;;;;;6754:632;7502:15;7476:11;:23;7488:10;7476:23;;;;;;;;;;;;;;;:41;;;;7556:1;7528:12;:24;7541:10;7528:24;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;6195:1370;;;2420:20:::0;:18;:20::i;:::-;6143:1422::o;4237:48::-;4275:10;4237:48;:::o;4963:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3968:76::-;;;;;;;;;;;;;:::o;4850:47::-;;;;;;;;;;;;;;;;;:::o;3828:20::-;;;;;;;;;;;;;:::o;4180:17::-;;;;;;;;;;;;;:::o;4459:48::-;4502:5;4459:48;:::o;2456:293::-;1858:1;2590:7;;:19;2582:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1858:1;2723:7;:18;;;;2456:293::o;2757:213::-;1814:1;2940:7;:22;;;;2757:213::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:60::-;621:3;642:5;635:12;;593:60;;;:::o;659:142::-;709:9;742:53;760:34;769:24;787:5;769:24;:::i;:::-;760:34;:::i;:::-;742:53;:::i;:::-;729:66;;659:142;;;:::o;807:126::-;857:9;890:37;921:5;890:37;:::i;:::-;877:50;;807:126;;;:::o;939:139::-;1002:9;1035:37;1066:5;1035:37;:::i;:::-;1022:50;;939:139;;;:::o;1084:157::-;1184:50;1228:5;1184:50;:::i;:::-;1179:3;1172:63;1084:157;;:::o;1247:248::-;1353:4;1391:2;1380:9;1376:18;1368:26;;1404:84;1485:1;1474:9;1470:17;1461:6;1404:84;:::i;:::-;1247:248;;;;:::o;1582:117::-;1691:1;1688;1681:12;1705:117;1814:1;1811;1804:12;1828:122;1901:24;1919:5;1901:24;:::i;:::-;1894:5;1891:35;1881:63;;1940:1;1937;1930:12;1881:63;1828:122;:::o;1956:139::-;2002:5;2040:6;2027:20;2018:29;;2056:33;2083:5;2056:33;:::i;:::-;1956:139;;;;:::o;2101:77::-;2138:7;2167:5;2156:16;;2101:77;;;:::o;2184:122::-;2257:24;2275:5;2257:24;:::i;:::-;2250:5;2247:35;2237:63;;2296:1;2293;2286:12;2237:63;2184:122;:::o;2312:139::-;2358:5;2396:6;2383:20;2374:29;;2412:33;2439:5;2412:33;:::i;:::-;2312:139;;;;:::o;2457:474::-;2525:6;2533;2582:2;2570:9;2561:7;2557:23;2553:32;2550:119;;;2588:79;;:::i;:::-;2550:119;2708:1;2733:53;2778:7;2769:6;2758:9;2754:22;2733:53;:::i;:::-;2723:63;;2679:117;2835:2;2861:53;2906:7;2897:6;2886:9;2882:22;2861:53;:::i;:::-;2851:63;;2806:118;2457:474;;;;;:::o;2937:117::-;3046:1;3043;3036:12;3060:117;3169:1;3166;3159:12;3183:117;3292:1;3289;3282:12;3323:568;3396:8;3406:6;3456:3;3449:4;3441:6;3437:17;3433:27;3423:122;;3464:79;;:::i;:::-;3423:122;3577:6;3564:20;3554:30;;3607:18;3599:6;3596:30;3593:117;;;3629:79;;:::i;:::-;3593:117;3743:4;3735:6;3731:17;3719:29;;3797:3;3789:4;3781:6;3777:17;3767:8;3763:32;3760:41;3757:128;;;3804:79;;:::i;:::-;3757:128;3323:568;;;;;:::o;3897:559::-;3983:6;3991;4040:2;4028:9;4019:7;4015:23;4011:32;4008:119;;;4046:79;;:::i;:::-;4008:119;4194:1;4183:9;4179:17;4166:31;4224:18;4216:6;4213:30;4210:117;;;4246:79;;:::i;:::-;4210:117;4359:80;4431:7;4422:6;4411:9;4407:22;4359:80;:::i;:::-;4341:98;;;;4137:312;3897:559;;;;;:::o;4462:329::-;4521:6;4570:2;4558:9;4549:7;4545:23;4541:32;4538:119;;;4576:79;;:::i;:::-;4538:119;4696:1;4721:53;4766:7;4757:6;4746:9;4742:22;4721:53;:::i;:::-;4711:63;;4667:117;4462:329;;;;:::o;4797:118::-;4884:24;4902:5;4884:24;:::i;:::-;4879:3;4872:37;4797:118;;:::o;4921:222::-;5014:4;5052:2;5041:9;5037:18;5029:26;;5065:71;5133:1;5122:9;5118:17;5109:6;5065:71;:::i;:::-;4921:222;;;;:::o;5149:140::-;5213:9;5246:37;5277:5;5246:37;:::i;:::-;5233:50;;5149:140;;;:::o;5295:159::-;5396:51;5441:5;5396:51;:::i;:::-;5391:3;5384:64;5295:159;;:::o;5460:250::-;5567:4;5605:2;5594:9;5590:18;5582:26;;5618:85;5700:1;5689:9;5685:17;5676:6;5618:85;:::i;:::-;5460:250;;;;:::o;5716:329::-;5775:6;5824:2;5812:9;5803:7;5799:23;5795:32;5792:119;;;5830:79;;:::i;:::-;5792:119;5950:1;5975:53;6020:7;6011:6;6000:9;5996:22;5975:53;:::i;:::-;5965:63;;5921:117;5716:329;;;;:::o;6051:139::-;6114:9;6147:37;6178:5;6147:37;:::i;:::-;6134:50;;6051:139;;;:::o;6196:157::-;6296:50;6340:5;6296:50;:::i;:::-;6291:3;6284:63;6196:157;;:::o;6359:248::-;6465:4;6503:2;6492:9;6488:18;6480:26;;6516:84;6597:1;6586:9;6582:17;6573:6;6516:84;:::i;:::-;6359:248;;;;:::o;6613:169::-;6697:11;6731:6;6726:3;6719:19;6771:4;6766:3;6762:14;6747:29;;6613:169;;;;:::o;6788:159::-;6928:11;6924:1;6916:6;6912:14;6905:35;6788:159;:::o;6953:365::-;7095:3;7116:66;7180:1;7175:3;7116:66;:::i;:::-;7109:73;;7191:93;7280:3;7191:93;:::i;:::-;7309:2;7304:3;7300:12;7293:19;;6953:365;;;:::o;7324:419::-;7490:4;7528:2;7517:9;7513:18;7505:26;;7577:9;7571:4;7567:20;7563:1;7552:9;7548:17;7541:47;7605:131;7731:4;7605:131;:::i;:::-;7597:139;;7324:419;;;:::o;7749:332::-;7870:4;7908:2;7897:9;7893:18;7885:26;;7921:71;7989:1;7978:9;7974:17;7965:6;7921:71;:::i;:::-;8002:72;8070:2;8059:9;8055:18;8046:6;8002:72;:::i;:::-;7749:332;;;;;:::o;8087:90::-;8121:7;8164:5;8157:13;8150:21;8139:32;;8087:90;;;:::o;8183:116::-;8253:21;8268:5;8253:21;:::i;:::-;8246:5;8243:32;8233:60;;8289:1;8286;8279:12;8233:60;8183:116;:::o;8305:137::-;8359:5;8390:6;8384:13;8375:22;;8406:30;8430:5;8406:30;:::i;:::-;8305:137;;;;:::o;8448:345::-;8515:6;8564:2;8552:9;8543:7;8539:23;8535:32;8532:119;;;8570:79;;:::i;:::-;8532:119;8690:1;8715:61;8768:7;8759:6;8748:9;8744:22;8715:61;:::i;:::-;8705:71;;8661:125;8448:345;;;;:::o;8799:180::-;8847:77;8844:1;8837:88;8944:4;8941:1;8934:15;8968:4;8965:1;8958:15;8985:180;9033:77;9030:1;9023:88;9130:4;9127:1;9120:15;9154:4;9151:1;9144:15;9171:194;9211:4;9231:20;9249:1;9231:20;:::i;:::-;9226:25;;9265:20;9283:1;9265:20;:::i;:::-;9260:25;;9309:1;9306;9302:9;9294:17;;9333:1;9327:4;9324:11;9321:37;;;9338:18;;:::i;:::-;9321:37;9171:194;;;;:::o;9371:221::-;9511:34;9507:1;9499:6;9495:14;9488:58;9580:4;9575:2;9567:6;9563:15;9556:29;9371:221;:::o;9598:366::-;9740:3;9761:67;9825:2;9820:3;9761:67;:::i;:::-;9754:74;;9837:93;9926:3;9837:93;:::i;:::-;9955:2;9950:3;9946:12;9939:19;;9598:366;;;:::o;9970:419::-;10136:4;10174:2;10163:9;10159:18;10151:26;;10223:9;10217:4;10213:20;10209:1;10198:9;10194:17;10187:47;10251:131;10377:4;10251:131;:::i;:::-;10243:139;;9970:419;;;:::o;10395:164::-;10535:16;10531:1;10523:6;10519:14;10512:40;10395:164;:::o;10565:366::-;10707:3;10728:67;10792:2;10787:3;10728:67;:::i;:::-;10721:74;;10804:93;10893:3;10804:93;:::i;:::-;10922:2;10917:3;10913:12;10906:19;;10565:366;;;:::o;10937:419::-;11103:4;11141:2;11130:9;11126:18;11118:26;;11190:9;11184:4;11180:20;11176:1;11165:9;11161:17;11154:47;11218:131;11344:4;11218:131;:::i;:::-;11210:139;;10937:419;;;:::o;11362:410::-;11402:7;11425:20;11443:1;11425:20;:::i;:::-;11420:25;;11459:20;11477:1;11459:20;:::i;:::-;11454:25;;11514:1;11511;11507:9;11536:30;11554:11;11536:30;:::i;:::-;11525:41;;11715:1;11706:7;11702:15;11699:1;11696:22;11676:1;11669:9;11649:83;11626:139;;11745:18;;:::i;:::-;11626:139;11410:362;11362:410;;;;:::o;11778:180::-;11826:77;11823:1;11816:88;11923:4;11920:1;11913:15;11947:4;11944:1;11937:15;11964:185;12004:1;12021:20;12039:1;12021:20;:::i;:::-;12016:25;;12055:20;12073:1;12055:20;:::i;:::-;12050:25;;12094:1;12084:35;;12099:18;;:::i;:::-;12084:35;12141:1;12138;12134:9;12129:14;;11964:185;;;;:::o;12155:180::-;12295:32;12291:1;12283:6;12279:14;12272:56;12155:180;:::o;12341:366::-;12483:3;12504:67;12568:2;12563:3;12504:67;:::i;:::-;12497:74;;12580:93;12669:3;12580:93;:::i;:::-;12698:2;12693:3;12689:12;12682:19;;12341:366;;;:::o;12713:419::-;12879:4;12917:2;12906:9;12902:18;12894:26;;12966:9;12960:4;12956:20;12952:1;12941:9;12937:17;12930:47;12994:131;13120:4;12994:131;:::i;:::-;12986:139;;12713:419;;;:::o;13138:143::-;13195:5;13226:6;13220:13;13211:22;;13242:33;13269:5;13242:33;:::i;:::-;13138:143;;;;:::o;13287:351::-;13357:6;13406:2;13394:9;13385:7;13381:23;13377:32;13374:119;;;13412:79;;:::i;:::-;13374:119;13532:1;13557:64;13613:7;13604:6;13593:9;13589:22;13557:64;:::i;:::-;13547:74;;13503:128;13287:351;;;;:::o;13644:176::-;13676:1;13693:20;13711:1;13693:20;:::i;:::-;13688:25;;13727:20;13745:1;13727:20;:::i;:::-;13722:25;;13766:1;13756:35;;13771:18;;:::i;:::-;13756:35;13812:1;13809;13805:9;13800:14;;13644:176;;;;:::o;13826:442::-;13975:4;14013:2;14002:9;13998:18;13990:26;;14026:71;14094:1;14083:9;14079:17;14070:6;14026:71;:::i;:::-;14107:72;14175:2;14164:9;14160:18;14151:6;14107:72;:::i;:::-;14189;14257:2;14246:9;14242:18;14233:6;14189:72;:::i;:::-;13826:442;;;;;;:::o;14274:233::-;14313:3;14336:24;14354:5;14336:24;:::i;:::-;14327:33;;14382:66;14375:5;14372:77;14369:103;;14452:18;;:::i;:::-;14369:103;14499:1;14492:5;14488:13;14481:20;;14274:233;;;:::o;14513:109::-;14594:21;14609:5;14594:21;:::i;:::-;14589:3;14582:34;14513:109;;:::o;14628:320::-;14743:4;14781:2;14770:9;14766:18;14758:26;;14794:65;14856:1;14845:9;14841:17;14832:6;14794:65;:::i;:::-;14869:72;14937:2;14926:9;14922:18;14913:6;14869:72;:::i;:::-;14628:320;;;;;:::o;14954:170::-;15094:22;15090:1;15082:6;15078:14;15071:46;14954:170;:::o;15130:366::-;15272:3;15293:67;15357:2;15352:3;15293:67;:::i;:::-;15286:74;;15369:93;15458:3;15369:93;:::i;:::-;15487:2;15482:3;15478:12;15471:19;;15130:366;;;:::o;15502:419::-;15668:4;15706:2;15695:9;15691:18;15683:26;;15755:9;15749:4;15745:20;15741:1;15730:9;15726:17;15719:47;15783:131;15909:4;15783:131;:::i;:::-;15775:139;;15502:419;;;:::o;15927:191::-;15967:3;15986:20;16004:1;15986:20;:::i;:::-;15981:25;;16020:20;16038:1;16020:20;:::i;:::-;16015:25;;16063:1;16060;16056:9;16049:16;;16084:3;16081:1;16078:10;16075:36;;;16091:18;;:::i;:::-;16075:36;15927:191;;;;:::o;16124:181::-;16264:33;16260:1;16252:6;16248:14;16241:57;16124:181;:::o;16311:366::-;16453:3;16474:67;16538:2;16533:3;16474:67;:::i;:::-;16467:74;;16550:93;16639:3;16550:93;:::i;:::-;16668:2;16663:3;16659:12;16652:19;;16311:366;;;:::o;16683:419::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16936:9;16930:4;16926:20;16922:1;16911:9;16907:17;16900:47;16964:131;17090:4;16964:131;:::i;:::-;16956:139;;16683:419;;;:::o

Swarm Source

ipfs://9a900f46c435c0681f200f0ceffb703edc18de106d964c045b187ec300b7066d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.