ETH Price: $3,286.02 (+0.63%)
Gas: 18 Gwei

Contract

0xdAfD03dA72cC53aFaCb7d766B608dcd1Ee76FDc4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Yield Rate P...159367572022-11-10 2:52:11625 days ago1668048731IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.000563823.64558471
Set Yield End Ti...159367562022-11-10 2:51:59625 days ago1668048719IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.000696624.29554637
Claim159328562022-11-09 13:45:59626 days ago1668001559IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0017962924.32350977
Claim159322032022-11-09 11:34:11626 days ago1667993651IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0019448230.72732133
Claim159311122022-11-09 7:53:47626 days ago1667980427IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0017829816.21282689
Claim159282172022-11-08 22:12:11626 days ago1667945531IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0026585142.00329843
Claim159262752022-11-08 15:40:59627 days ago1667922059IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0028853829.02302978
Claim159235162022-11-08 6:27:23627 days ago1667888843IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0011341915.35805434
Claim159220102022-11-08 1:25:11627 days ago1667870711IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0018266711.81705126
Claim159215742022-11-07 23:57:11627 days ago1667865431IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0013617316.13274767
Claim159207362022-11-07 21:08:47628 days ago1667855327IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.001403519.00485928
Claim159206432022-11-07 20:49:59628 days ago1667854199IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0024806121.36985603
Claim159193212022-11-07 16:24:23628 days ago1667838263IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0017156823.23198686
Claim159179122022-11-07 11:41:23628 days ago1667821283IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0010992412.08783106
Claim159178872022-11-07 11:36:23628 days ago1667820983IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0007608512.02340475
Claim159172982022-11-07 9:38:11628 days ago1667813891IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0014769711.62987134
Transfer Ownersh...159166412022-11-07 7:25:59628 days ago1667805959IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0003040911.24321517
Claim159165252022-11-07 7:02:35628 days ago1667804555IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0018296813.33641051
Claim159164582022-11-07 6:49:11628 days ago1667803751IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0011734411.80328357
Claim159161742022-11-07 5:51:59628 days ago1667800319IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0008254613.04201929
Claim159160422022-11-07 5:25:35628 days ago1667798735IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0013298110.47112816
Claim159159202022-11-07 5:01:11628 days ago1667797271IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0011625514.46093107
Claim159159172022-11-07 5:00:35628 days ago1667797235IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0008889314.09550539
Claim159157932022-11-07 4:35:47628 days ago1667795747IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.0007566511.95483282
Claim159157522022-11-07 4:27:23628 days ago1667795243IN
0xdAfD03dA...1Ee76FDc4
0 ETH0.000569639
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZenYield

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-05-17
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

///////////////////////////////////////
//   ____       __  ___     __   __  //
//  /_  / ___ __\ \/ (_)__ / /__/ /  //
//   / /_/ -_) _ \  / / -_) / _  /   //
//  /___/\__/_//_/_/_/\__/_/\_,_/    //
//               by 0xInuarashi.eth  //
///////////////////////////////////////

abstract contract Ownable {
    address public owner; 
    constructor() { owner = msg.sender; }
    modifier onlyOwner { require(owner == msg.sender, "Not Owner!"); _; }
    function transferOwnership(address new_) external onlyOwner { owner = new_; }
}

interface iZen {
    function mintAsController(address to_, uint256 amount_) external;
}

interface iZenApe {
    function totalSupply() external view returns (uint256);
    function balanceOf(address address_) external view returns (uint256);
    function ownerOf(uint256 tokenId_) external view returns (address);
}

contract ZenYield is Ownable {

    // Interfaces
    iZen public Zen = iZen(0x884345a7B7E7fFd7F4298aD6115f5d5afb2F7660); 
    function setZen(address address_) external onlyOwner { 
        Zen = iZen(address_); 
    }

    iZenApe public ZenApe = iZenApe(0x838804a3dd7c717396a68F94E736eAf76b911632);
    function setZenApe(address address_) external onlyOwner {
        ZenApe = iZenApe(address_);
    }

    // Times
    uint256 public yieldStartTime = 1651327200; // Apr 30 2022 14:00:00 GMT+0000
    uint256 public yieldEndTime = 1682863200; // Apr 30 2023 14:00:00 GMT+0000
    function setYieldEndTime(uint256 yieldEndTime_) external onlyOwner { 
        yieldEndTime = yieldEndTime_; }

    // Yield Info
    uint256 public yieldRatePerToken = 5 ether; // 5 Zen per Day
    function setYieldRatePerToken(uint256 yieldRatePerToken_) external onlyOwner {
        yieldRatePerToken = yieldRatePerToken_;
    }

    // Yield Database
    mapping(uint256 => uint256) public tokenToLastClaimedTimestamp;

    // Events
    event Claim(address to_, uint256[] tokenIds_, uint256 totalClaimed_);

    // Internal Calculators
    function _getTimeCurrentOrEnded() internal view returns (uint256) {
        // Return block.timestamp if it's lower than yieldEndTime, otherwise
        // return yieldEndTime instead.
        return block.timestamp < yieldEndTime ? 
            block.timestamp : yieldEndTime;
    }
    function _getTimestampOfToken(uint256 tokenId_) internal view returns (uint256) {
        // Here, since we have intrinsic token yield, we need to take that into account.
        // We return the yieldStartTime if SSTORE of tokenToLastClaimedTimestamp is 0
        return tokenToLastClaimedTimestamp[tokenId_] == 0 ? 
            yieldStartTime : tokenToLastClaimedTimestamp[tokenId_];
    }

    // Yield Accountants
    function getPendingTokens(uint256 tokenId_) public view 
    returns (uint256) {
        
        // First, grab the timestamp of the token
        uint256 _lastClaimedTimestamp = _getTimestampOfToken(tokenId_);

        // Then, we grab the timestamp to compare it with
        uint256 _timeCurrentOrEnded = _getTimeCurrentOrEnded();

        // Lastly, we calculate the time-units in seconds of elapsed time 
        uint256 _timeElapsed = _timeCurrentOrEnded - _lastClaimedTimestamp;

        // Now, calculate the pending yield
        return (_timeElapsed * yieldRatePerToken) / 1 days;
    }
    function getPendingTokensMany(uint256[] memory tokenIds_) public
    view returns (uint256) {
        uint256 _pendingTokens;
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            _pendingTokens += getPendingTokens(tokenIds_[i]);
        }
        return _pendingTokens;
    }

    // Internal Timekeepers    
    function _updateTimestampOfTokens(uint256[] memory tokenIds_) internal { 
        uint256 _timeCurrentOrEnded = _getTimeCurrentOrEnded();
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            // Prevents duplicate setting of the same token in the same block
            require(tokenToLastClaimedTimestamp[tokenIds_[i]] != _timeCurrentOrEnded,
                "Unable to set timestamp duplication in the same block");

            tokenToLastClaimedTimestamp[tokenIds_[i]] = _timeCurrentOrEnded;
        }
    }

    // Public Claim
    function claim(uint256[] calldata tokenIds_) external {
        // Make sure the sender owns all the tokens
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            require(msg.sender == ZenApe.ownerOf(tokenIds_[i]),
                "You are not the owner!");
        }

        // Calculate the total Pending Tokens to be claimed
        uint256 _pendingTokens = getPendingTokensMany(tokenIds_);
        
        // Set on all the tokens the new timestamp (which sets pending to 0)
        _updateTimestampOfTokens(tokenIds_);
        
        // Mint the total tokens for the msg.sender
        Zen.mintAsController(msg.sender, _pendingTokens);

        // Emit claim of total tokens
        emit Claim(msg.sender, tokenIds_, _pendingTokens);
    }

    // Public View Functions for Helpers
    function walletOfOwner(address address_) public view returns (uint256[] memory) {
        uint256 _balance = ZenApe.balanceOf(address_);
        uint256[] memory _tokens = new uint256[] (_balance);
        uint256 _index;
        uint256 _loopThrough = ZenApe.totalSupply();
        for (uint256 i = 0; i < _loopThrough; i++) {
            address _ownerOf = ZenApe.ownerOf(i);
            if (_ownerOf == address(0) && _tokens[_balance - 1] == 0) {
                _loopThrough++;
            }
            if (_ownerOf == address_) {
                _tokens[_index++] = i;
            }
        }
        return _tokens;
    }
    function getPendingTokensOfAddress(address address_) public view returns (uint256) {
        uint256[] memory _walletOfAddress = walletOfOwner(address_);
        return getPendingTokensMany(_walletOfAddress);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"totalClaimed_","type":"uint256"}],"name":"Claim","type":"event"},{"inputs":[],"name":"Zen","outputs":[{"internalType":"contract iZen","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZenApe","outputs":[{"internalType":"contract iZenApe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getPendingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"getPendingTokensMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getPendingTokensOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"yieldEndTime_","type":"uint256"}],"name":"setYieldEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"yieldRatePerToken_","type":"uint256"}],"name":"setYieldRatePerToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setZen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setZenApe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenToLastClaimedTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"new_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldRatePerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600180546001600160a01b031990811673884345a7b7e7ffd7f4298ad6115f5d5afb2f7660179091556002805490911673838804a3dd7c717396a68f94e736eaf76b91163217905563626d40e060035563644e7460600455674563918244f4000060055534801561007457600080fd5b50600080546001600160a01b03191633179055610e0d806100966000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063438b6300116100a25780637c073ede116100715780637c073ede146102275780638da5cb5b14610230578063968e72f814610243578063aa4cbff114610256578063f2fde38b1461026957600080fd5b8063438b6300146101ce57806356f6df58146101ee57806358d78c8c146102015780636ba4c1381461021457600080fd5b8063314ca039116100de578063314ca03914610171578063359d63241461017a5780633ee3a83f146101a55780633f694358146101ae57600080fd5b806308cf8f06146101105780630cf33bc7146101365780631394818e1461014b578063198679771461015e575b600080fd5b61012361011e366004610c01565b61027c565b6040519081526020015b60405180910390f35b610149610144366004610a8d565b6102c9565b005b610149610159366004610c01565b61031e565b61014961016c366004610a8d565b61034d565b61012360045481565b60015461018d906001600160a01b031681565b6040516001600160a01b03909116815260200161012d565b61012360055481565b6101236101bc366004610c01565b60066020526000908152604090205481565b6101e16101dc366004610a8d565b610399565b60405161012d9190610c8a565b60025461018d906001600160a01b031681565b61012361020f366004610b3c565b610629565b610149610222366004610ac7565b61067f565b61012360035481565b60005461018d906001600160a01b031681565b610123610251366004610a8d565b6108b0565b610149610264366004610c01565b6108ce565b610149610277366004610a8d565b6108fd565b60008061028883610949565b9050600061029461097b565b905060006102a28383610d4b565b905062015180600554826102b69190610d2c565b6102c09190610d0a565b95945050505050565b6000546001600160a01b031633146102fc5760405162461bcd60e51b81526004016102f390610cce565b60405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146103485760405162461bcd60e51b81526004016102f390610cce565b600455565b6000546001600160a01b031633146103775760405162461bcd60e51b81526004016102f390610cce565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b1580156103e357600080fd5b505afa1580156103f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041b9190610c1a565b905060008167ffffffffffffffff81111561043857610438610da9565b604051908082528060200260200182016040528015610461578160200160208202803683370190505b509050600080600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b557600080fd5b505afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed9190610c1a565b905060005b8181101561061e576002546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b15801561053f57600080fd5b505afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105779190610aaa565b90506001600160a01b0381161580156105b3575084610597600188610d4b565b815181106105a7576105a7610d93565b60200260200101516000145b156105c657826105c281610d62565b9350505b876001600160a01b0316816001600160a01b0316141561060b578185856105ec81610d62565b9650815181106105fe576105fe610d93565b6020026020010181815250505b508061061681610d62565b9150506104f2565b509195945050505050565b60008060005b83518110156106785761065a84828151811061064d5761064d610d93565b602002602001015161027c565b6106649083610cf2565b91508061067081610d62565b91505061062f565b5092915050565b60005b8181101561078d576002546001600160a01b0316636352211e8484848181106106ad576106ad610d93565b905060200201356040518263ffffffff1660e01b81526004016106d291815260200190565b60206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107229190610aaa565b6001600160a01b0316336001600160a01b03161461077b5760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f7420746865206f776e65722160501b60448201526064016102f3565b8061078581610d62565b915050610682565b5060006107cc83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061062992505050565b905061080a83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061099292505050565b600154604051630a9edcc560e11b8152336004820152602481018390526001600160a01b039091169063153db98a90604401600060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050507fbb39cc58932f85e3e9d3d6b8b315e628b6ea052a07d36a8d550d9ff478cbf4df338484846040516108a39493929190610c33565b60405180910390a1505050565b6000806108bc83610399565b90506108c781610629565b9392505050565b6000546001600160a01b031633146108f85760405162461bcd60e51b81526004016102f390610cce565b600555565b6000546001600160a01b031633146109275760405162461bcd60e51b81526004016102f390610cce565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600660205260408120541561097157600082815260066020526040902054610975565b6003545b92915050565b6000600454421061098d575060045490565b504290565b600061099c61097b565b905060005b8251811015610a885781600660008584815181106109c1576109c1610d93565b60200260200101518152602001908152602001600020541415610a445760405162461bcd60e51b815260206004820152603560248201527f556e61626c6520746f207365742074696d657374616d70206475706c69636174604482015274696f6e20696e207468652073616d6520626c6f636b60581b60648201526084016102f3565b8160066000858481518110610a5b57610a5b610d93565b60200260200101518152602001908152602001600020819055508080610a8090610d62565b9150506109a1565b505050565b600060208284031215610a9f57600080fd5b81356108c781610dbf565b600060208284031215610abc57600080fd5b81516108c781610dbf565b60008060208385031215610ada57600080fd5b823567ffffffffffffffff80821115610af257600080fd5b818501915085601f830112610b0657600080fd5b813581811115610b1557600080fd5b8660208260051b8501011115610b2a57600080fd5b60209290920196919550909350505050565b60006020808385031215610b4f57600080fd5b823567ffffffffffffffff80821115610b6757600080fd5b818501915085601f830112610b7b57600080fd5b813581811115610b8d57610b8d610da9565b8060051b604051601f19603f83011681018181108582111715610bb257610bb2610da9565b604052828152858101935084860182860187018a1015610bd157600080fd5b600095505b83861015610bf4578035855260019590950194938601938601610bd6565b5098975050505050505050565b600060208284031215610c1357600080fd5b5035919050565b600060208284031215610c2c57600080fd5b5051919050565b6001600160a01b0385168152606060208201819052810183905260006001600160fb1b03841115610c6357600080fd5b8360051b808660808501376000908301608001908152604090920192909252949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610cc257835183529284019291840191600101610ca6565b50909695505050505050565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b60008219821115610d0557610d05610d7d565b500190565b600082610d2757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610d4657610d46610d7d565b500290565b600082821015610d5d57610d5d610d7d565b500390565b6000600019821415610d7657610d76610d7d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd457600080fd5b5056fea26469706673582212200db46f789ec73f0bb12a67ff6d566e27a8c1915edc6c1f2360e5f541f1548d5c64736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063438b6300116100a25780637c073ede116100715780637c073ede146102275780638da5cb5b14610230578063968e72f814610243578063aa4cbff114610256578063f2fde38b1461026957600080fd5b8063438b6300146101ce57806356f6df58146101ee57806358d78c8c146102015780636ba4c1381461021457600080fd5b8063314ca039116100de578063314ca03914610171578063359d63241461017a5780633ee3a83f146101a55780633f694358146101ae57600080fd5b806308cf8f06146101105780630cf33bc7146101365780631394818e1461014b578063198679771461015e575b600080fd5b61012361011e366004610c01565b61027c565b6040519081526020015b60405180910390f35b610149610144366004610a8d565b6102c9565b005b610149610159366004610c01565b61031e565b61014961016c366004610a8d565b61034d565b61012360045481565b60015461018d906001600160a01b031681565b6040516001600160a01b03909116815260200161012d565b61012360055481565b6101236101bc366004610c01565b60066020526000908152604090205481565b6101e16101dc366004610a8d565b610399565b60405161012d9190610c8a565b60025461018d906001600160a01b031681565b61012361020f366004610b3c565b610629565b610149610222366004610ac7565b61067f565b61012360035481565b60005461018d906001600160a01b031681565b610123610251366004610a8d565b6108b0565b610149610264366004610c01565b6108ce565b610149610277366004610a8d565b6108fd565b60008061028883610949565b9050600061029461097b565b905060006102a28383610d4b565b905062015180600554826102b69190610d2c565b6102c09190610d0a565b95945050505050565b6000546001600160a01b031633146102fc5760405162461bcd60e51b81526004016102f390610cce565b60405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146103485760405162461bcd60e51b81526004016102f390610cce565b600455565b6000546001600160a01b031633146103775760405162461bcd60e51b81526004016102f390610cce565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b1580156103e357600080fd5b505afa1580156103f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041b9190610c1a565b905060008167ffffffffffffffff81111561043857610438610da9565b604051908082528060200260200182016040528015610461578160200160208202803683370190505b509050600080600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b557600080fd5b505afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed9190610c1a565b905060005b8181101561061e576002546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b15801561053f57600080fd5b505afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105779190610aaa565b90506001600160a01b0381161580156105b3575084610597600188610d4b565b815181106105a7576105a7610d93565b60200260200101516000145b156105c657826105c281610d62565b9350505b876001600160a01b0316816001600160a01b0316141561060b578185856105ec81610d62565b9650815181106105fe576105fe610d93565b6020026020010181815250505b508061061681610d62565b9150506104f2565b509195945050505050565b60008060005b83518110156106785761065a84828151811061064d5761064d610d93565b602002602001015161027c565b6106649083610cf2565b91508061067081610d62565b91505061062f565b5092915050565b60005b8181101561078d576002546001600160a01b0316636352211e8484848181106106ad576106ad610d93565b905060200201356040518263ffffffff1660e01b81526004016106d291815260200190565b60206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107229190610aaa565b6001600160a01b0316336001600160a01b03161461077b5760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f7420746865206f776e65722160501b60448201526064016102f3565b8061078581610d62565b915050610682565b5060006107cc83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061062992505050565b905061080a83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061099292505050565b600154604051630a9edcc560e11b8152336004820152602481018390526001600160a01b039091169063153db98a90604401600060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050507fbb39cc58932f85e3e9d3d6b8b315e628b6ea052a07d36a8d550d9ff478cbf4df338484846040516108a39493929190610c33565b60405180910390a1505050565b6000806108bc83610399565b90506108c781610629565b9392505050565b6000546001600160a01b031633146108f85760405162461bcd60e51b81526004016102f390610cce565b600555565b6000546001600160a01b031633146109275760405162461bcd60e51b81526004016102f390610cce565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600660205260408120541561097157600082815260066020526040902054610975565b6003545b92915050565b6000600454421061098d575060045490565b504290565b600061099c61097b565b905060005b8251811015610a885781600660008584815181106109c1576109c1610d93565b60200260200101518152602001908152602001600020541415610a445760405162461bcd60e51b815260206004820152603560248201527f556e61626c6520746f207365742074696d657374616d70206475706c69636174604482015274696f6e20696e207468652073616d6520626c6f636b60581b60648201526084016102f3565b8160066000858481518110610a5b57610a5b610d93565b60200260200101518152602001908152602001600020819055508080610a8090610d62565b9150506109a1565b505050565b600060208284031215610a9f57600080fd5b81356108c781610dbf565b600060208284031215610abc57600080fd5b81516108c781610dbf565b60008060208385031215610ada57600080fd5b823567ffffffffffffffff80821115610af257600080fd5b818501915085601f830112610b0657600080fd5b813581811115610b1557600080fd5b8660208260051b8501011115610b2a57600080fd5b60209290920196919550909350505050565b60006020808385031215610b4f57600080fd5b823567ffffffffffffffff80821115610b6757600080fd5b818501915085601f830112610b7b57600080fd5b813581811115610b8d57610b8d610da9565b8060051b604051601f19603f83011681018181108582111715610bb257610bb2610da9565b604052828152858101935084860182860187018a1015610bd157600080fd5b600095505b83861015610bf4578035855260019590950194938601938601610bd6565b5098975050505050505050565b600060208284031215610c1357600080fd5b5035919050565b600060208284031215610c2c57600080fd5b5051919050565b6001600160a01b0385168152606060208201819052810183905260006001600160fb1b03841115610c6357600080fd5b8360051b808660808501376000908301608001908152604090920192909252949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610cc257835183529284019291840191600101610ca6565b50909695505050505050565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b60008219821115610d0557610d05610d7d565b500190565b600082610d2757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610d4657610d46610d7d565b500290565b600082821015610d5d57610d5d610d7d565b500390565b6000600019821415610d7657610d76610d7d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd457600080fd5b5056fea26469706673582212200db46f789ec73f0bb12a67ff6d566e27a8c1915edc6c1f2360e5f541f1548d5c64736f6c63430008070033

Deployed Bytecode Sourcemap

941:5103:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2825:611;;;;;;:::i;:::-;;:::i;:::-;;;6131:25:1;;;6119:2;6104:18;2825:611:0;;;;;;;;1256:101;;;;;;:::i;:::-;;:::i;:::-;;1541:110;;;;;;:::i;:::-;;:::i;1072:94::-;;;;;;:::i;:::-;;:::i;1461:40::-;;;;;;998:66;;;;;-1:-1:-1;;;;;998:66:0;;;;;;-1:-1:-1;;;;;2811:32:1;;;2793:51;;2781:2;2766:18;998:66:0;2647:203:1;1678:42:0;;;;;;1909:62;;;;;;:::i;:::-;;;;;;;;;;;;;;5175:643;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1174:75::-;;;;;-1:-1:-1;;;;;1174:75:0;;;3442:298;;;;;;:::i;:::-;;:::i;4345:780::-;;;;;;:::i;:::-;;:::i;1379:42::-;;;;;;382:20;;;;;-1:-1:-1;;;;;382:20:0;;;5824:217;;;;;;:::i;:::-;;:::i;1744:134::-;;;;;;:::i;:::-;;:::i;528:77::-;;;;;;:::i;:::-;;:::i;2825:611::-;2896:7;2977:29;3009:30;3030:8;3009:20;:30::i;:::-;2977:62;;3111:27;3141:24;:22;:24::i;:::-;3111:54;-1:-1:-1;3254:20:0;3277:43;3299:21;3111:54;3277:43;:::i;:::-;3254:66;;3422:6;3401:17;;3386:12;:32;;;;:::i;:::-;3385:43;;;;:::i;:::-;3378:50;2825:611;-1:-1:-1;;;;;2825:611:0:o;1256:101::-;482:5;;-1:-1:-1;;;;;482:5:0;491:10;482:19;474:42;;;;-1:-1:-1;;;474:42:0;;;;;;;:::i;:::-;;;;;;;;;1323:6:::1;:26:::0;;-1:-1:-1;;;;;;1323:26:0::1;-1:-1:-1::0;;;;;1323:26:0;;;::::1;::::0;;;::::1;::::0;;1256:101::o;1541:110::-;482:5;;-1:-1:-1;;;;;482:5:0;491:10;482:19;474:42;;;;-1:-1:-1;;;474:42:0;;;;;;;:::i;:::-;1620:12:::1;:28:::0;1541:110::o;1072:94::-;482:5;;-1:-1:-1;;;;;482:5:0;491:10;482:19;474:42;;;;-1:-1:-1;;;474:42:0;;;;;;;:::i;:::-;1137:3:::1;:20:::0;;-1:-1:-1;;;;;;1137:20:0::1;-1:-1:-1::0;;;;;1137:20:0;;;::::1;::::0;;;::::1;::::0;;1072:94::o;5175:643::-;5285:6;;:26;;-1:-1:-1;;;5285:26:0;;-1:-1:-1;;;;;2811:32:1;;;5285:26:0;;;2793:51:1;5237:16:0;;5266;;5285:6;;;:16;;2766:18:1;;5285:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5266:45;;5322:24;5364:8;5349:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5349:24:0;;5322:51;;5384:14;5409:20;5432:6;;;;;;;;;-1:-1:-1;;;;;5432:6:0;-1:-1:-1;;;;;5432:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5409:43;;5468:9;5463:323;5487:12;5483:1;:16;5463:323;;;5540:6;;:17;;-1:-1:-1;;;5540:17:0;;;;;6131:25:1;;;5521:16:0;;-1:-1:-1;;;;;5540:6:0;;:14;;6104:18:1;;5540:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5521:36;-1:-1:-1;;;;;;5576:22:0;;;:52;;;;-1:-1:-1;5602:7:0;5610:12;5621:1;5610:8;:12;:::i;:::-;5602:21;;;;;;;;:::i;:::-;;;;;;;5627:1;5602:26;5576:52;5572:107;;;5649:14;;;;:::i;:::-;;;;5572:107;5709:8;-1:-1:-1;;;;;5697:20:0;:8;-1:-1:-1;;;;;5697:20:0;;5693:82;;;5758:1;5738:7;5746:8;;;;:::i;:::-;;;5738:17;;;;;;;;:::i;:::-;;;;;;:21;;;;;5693:82;-1:-1:-1;5501:3:0;;;;:::i;:::-;;;;5463:323;;;-1:-1:-1;5803:7:0;;5175:643;-1:-1:-1;;;;;5175:643:0:o;3442:298::-;3526:7;3546:22;3584:9;3579:122;3603:9;:16;3599:1;:20;3579:122;;;3659:30;3676:9;3686:1;3676:12;;;;;;;;:::i;:::-;;;;;;;3659:16;:30::i;:::-;3641:48;;;;:::i;:::-;;-1:-1:-1;3621:3:0;;;;:::i;:::-;;;;3579:122;;;-1:-1:-1;3718:14:0;3442:298;-1:-1:-1;;3442:298:0:o;4345:780::-;4468:9;4463:168;4483:20;;;4463:168;;;4547:6;;-1:-1:-1;;;;;4547:6:0;:14;4562:9;;4572:1;4562:12;;;;;;;:::i;:::-;;;;;;;4547:28;;;;;;;;;;;;;6131:25:1;;6119:2;6104:18;;5985:177;4547:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4533:42:0;:10;-1:-1:-1;;;;;4533:42:0;;4525:94;;;;-1:-1:-1;;;4525:94:0;;5414:2:1;4525:94:0;;;5396:21:1;5453:2;5433:18;;;5426:30;-1:-1:-1;;;5472:18:1;;;5465:52;5534:18;;4525:94:0;5212:346:1;4525:94:0;4505:3;;;;:::i;:::-;;;;4463:168;;;;4704:22;4729:31;4750:9;;4729:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4729:20:0;;-1:-1:-1;;;4729:31:0:i;:::-;4704:56;;4859:35;4884:9;;4859:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4859:24:0;;-1:-1:-1;;;4859:35:0:i;:::-;4968:3;;:48;;-1:-1:-1;;;4968:48:0;;4989:10;4968:48;;;3690:51:1;3757:18;;;3750:34;;;-1:-1:-1;;;;;4968:3:0;;;;:20;;3663:18:1;;4968:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5073:44;5079:10;5091:9;;5102:14;5073:44;;;;;;;;;:::i;:::-;;;;;;;;4399:726;4345:780;;:::o;5824:217::-;5898:7;5918:33;5954:23;5968:8;5954:13;:23::i;:::-;5918:59;;5995:38;6016:16;5995:20;:38::i;:::-;5988:45;5824:217;-1:-1:-1;;;5824:217:0:o;1744:134::-;482:5;;-1:-1:-1;;;;;482:5:0;491:10;482:19;474:42;;;;-1:-1:-1;;;474:42:0;;;;;;;:::i;:::-;1832:17:::1;:38:::0;1744:134::o;528:77::-;482:5;;-1:-1:-1;;;;;482:5:0;491:10;482:19;474:42;;;;-1:-1:-1;;;474:42:0;;;;;;;:::i;:::-;590:5:::1;:12:::0;;-1:-1:-1;;;;;;590:12:0::1;-1:-1:-1::0;;;;;590:12:0;;;::::1;::::0;;;::::1;::::0;;528:77::o;2395:396::-;2466:7;2670:37;;;:27;:37;;;;;;:42;:113;;2746:37;;;;:27;:37;;;;;;2670:113;;;2729:14;;2670:113;2663:120;2395:396;-1:-1:-1;;2395:396:0:o;2101:288::-;2158:7;2322:12;;2304:15;:30;:77;;-1:-1:-1;2369:12:0;;;2101:288::o;2304:77::-;-1:-1:-1;2351:15:0;;2101:288::o;3781:535::-;3864:27;3894:24;:22;:24::i;:::-;3864:54;;3934:9;3929:380;3953:9;:16;3949:1;:20;3929:380;;;4123:19;4078:27;:41;4106:9;4116:1;4106:12;;;;;;;;:::i;:::-;;;;;;;4078:41;;;;;;;;;;;;:64;;4070:147;;;;-1:-1:-1;;;4070:147:0;;5765:2:1;4070:147:0;;;5747:21:1;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;-1:-1:-1;;;5894:18:1;;;5887:51;5955:19;;4070:147:0;5563:417:1;4070:147:0;4278:19;4234:27;:41;4262:9;4272:1;4262:12;;;;;;;;:::i;:::-;;;;;;;4234:41;;;;;;;;;;;:63;;;;3971:3;;;;;:::i;:::-;;;;3929:380;;;;3852:464;3781:535;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:615::-;608:6;616;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;725:9;712:23;754:18;795:2;787:6;784:14;781:34;;;811:1;808;801:12;781:34;849:6;838:9;834:22;824:32;;894:7;887:4;883:2;879:13;875:27;865:55;;916:1;913;906:12;865:55;956:2;943:16;982:2;974:6;971:14;968:34;;;998:1;995;988:12;968:34;1051:7;1046:2;1036:6;1033:1;1029:14;1025:2;1021:23;1017:32;1014:45;1011:65;;;1072:1;1069;1062:12;1011:65;1103:2;1095:11;;;;;1125:6;;-1:-1:-1;522:615:1;;-1:-1:-1;;;;522:615:1:o;1142:1126::-;1226:6;1257:2;1300;1288:9;1279:7;1275:23;1271:32;1268:52;;;1316:1;1313;1306:12;1268:52;1356:9;1343:23;1385:18;1426:2;1418:6;1415:14;1412:34;;;1442:1;1439;1432:12;1412:34;1480:6;1469:9;1465:22;1455:32;;1525:7;1518:4;1514:2;1510:13;1506:27;1496:55;;1547:1;1544;1537:12;1496:55;1583:2;1570:16;1605:2;1601;1598:10;1595:36;;;1611:18;;:::i;:::-;1657:2;1654:1;1650:10;1689:2;1683:9;1752:2;1748:7;1743:2;1739;1735:11;1731:25;1723:6;1719:38;1807:6;1795:10;1792:22;1787:2;1775:10;1772:18;1769:46;1766:72;;;1818:18;;:::i;:::-;1854:2;1847:22;1904:18;;;1938:15;;;;-1:-1:-1;1973:11:1;;;2003;;;1999:20;;1996:33;-1:-1:-1;1993:53:1;;;2042:1;2039;2032:12;1993:53;2064:1;2055:10;;2074:163;2088:2;2085:1;2082:9;2074:163;;;2145:17;;2133:30;;2106:1;2099:9;;;;;2183:12;;;;2215;;2074:163;;;-1:-1:-1;2256:6:1;1142:1126;-1:-1:-1;;;;;;;;1142:1126:1:o;2273:180::-;2332:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:52;;;2401:1;2398;2391:12;2353:52;-1:-1:-1;2424:23:1;;2273:180;-1:-1:-1;2273:180:1:o;2458:184::-;2528:6;2581:2;2569:9;2560:7;2556:23;2552:32;2549:52;;;2597:1;2594;2587:12;2549:52;-1:-1:-1;2620:16:1;;2458:184;-1:-1:-1;2458:184:1:o;2855:656::-;-1:-1:-1;;;;;3100:32:1;;3082:51;;3169:2;3164;3149:18;;3142:30;;;3188:18;;3181:34;;;-1:-1:-1;;;;;;3227:31:1;;3224:51;;;3271:1;3268;3261:12;3224:51;3305:6;3302:1;3298:14;3363:6;3355;3349:3;3338:9;3334:19;3321:49;3441:1;3393:22;;;3417:3;3389:32;3430:13;;;3493:2;3478:18;;;3471:34;;;;3389:32;2855:656;-1:-1:-1;;;;2855:656:1:o;3795:632::-;3966:2;4018:21;;;4088:13;;3991:18;;;4110:22;;;3937:4;;3966:2;4189:15;;;;4163:2;4148:18;;;3937:4;4232:169;4246:6;4243:1;4240:13;4232:169;;;4307:13;;4295:26;;4376:15;;;;4341:12;;;;4268:1;4261:9;4232:169;;;-1:-1:-1;4418:3:1;;3795:632;-1:-1:-1;;;;;;3795:632:1:o;4873:334::-;5075:2;5057:21;;;5114:2;5094:18;;;5087:30;-1:-1:-1;;;5148:2:1;5133:18;;5126:40;5198:2;5183:18;;4873:334::o;6167:128::-;6207:3;6238:1;6234:6;6231:1;6228:13;6225:39;;;6244:18;;:::i;:::-;-1:-1:-1;6280:9:1;;6167:128::o;6300:217::-;6340:1;6366;6356:132;;6410:10;6405:3;6401:20;6398:1;6391:31;6445:4;6442:1;6435:15;6473:4;6470:1;6463:15;6356:132;-1:-1:-1;6502:9:1;;6300:217::o;6522:168::-;6562:7;6628:1;6624;6620:6;6616:14;6613:1;6610:21;6605:1;6598:9;6591:17;6587:45;6584:71;;;6635:18;;:::i;:::-;-1:-1:-1;6675:9:1;;6522:168::o;6695:125::-;6735:4;6763:1;6760;6757:8;6754:34;;;6768:18;;:::i;:::-;-1:-1:-1;6805:9:1;;6695:125::o;6825:135::-;6864:3;-1:-1:-1;;6885:17:1;;6882:43;;;6905:18;;:::i;:::-;-1:-1:-1;6952:1:1;6941:13;;6825:135::o;6965:127::-;7026:10;7021:3;7017:20;7014:1;7007:31;7057:4;7054:1;7047:15;7081:4;7078:1;7071:15;7097:127;7158:10;7153:3;7149:20;7146:1;7139:31;7189:4;7186:1;7179:15;7213:4;7210:1;7203:15;7229:127;7290:10;7285:3;7281:20;7278:1;7271:31;7321:4;7318:1;7311:15;7345:4;7342:1;7335:15;7361:131;-1:-1:-1;;;;;7436:31:1;;7426:42;;7416:70;;7482:1;7479;7472:12;7416:70;7361:131;:::o

Swarm Source

ipfs://0db46f789ec73f0bb12a67ff6d566e27a8c1915edc6c1f2360e5f541f1548d5c

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
Loading...
Loading
[ Download: CSV Export  ]

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.