Contract 0x9a74b169798be874ef1c23b4092e5689969ef45e 12

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xdc14e3078d3ac450acc0497d3cbf58590d9eb38e6e348e5d12c93aa83c4300cfCreate DODO Mine...1941482002024-03-25 18:50:363 days 2 hrs ago0x937793ab079ba9a6019e6239db1593c0c4c2461d IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00001246 0.01
0x787539216fd95e1c34015ef1f5267ad565f6570dfb7bc647f9de2d7694a18476Create DODO Mine...1883223722024-03-08 12:06:5220 days 9 hrs ago0x937793ab079ba9a6019e6239db1593c0c4c2461d IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.0003113 0.1
0xb0e1c472db86ac3973cf2fad4d60f1fbd574decd5a3b3d4925a245946fe6aae4Create DODO Mine...1775478602024-02-05 2:55:5552 days 18 hrs ago0x937793ab079ba9a6019e6239db1593c0c4c2461d IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00014747 0.1
0x447358c0b1e50594f3efa41b560fca31b7431b25cf4d478253df1872a3cc9826Create DODO Mine...1574710772023-12-06 15:19:05113 days 5 hrs ago0x563ff3bde9abf873079fcca6e4762308878a0746 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00032454 0.1
0x6d3dad482e6a52434685ce80ee7195eafca4d8d6098bfe5acdf12c8b1cf59b53Create DODO Mine...1499004272023-11-13 5:14:55136 days 15 hrs ago0x841ff2ed6aee1394fc5a322a4df8b8cd054ed138 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00020635 0.1
0xd1c23b8aab412bd1b05a44f8731c9a512aa831cd0fef73cec07155571c0d4a98Create DODO Mine...1486802592023-11-09 11:45:57140 days 9 hrs ago0x841ff2ed6aee1394fc5a322a4df8b8cd054ed138 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00018417 0.1
0x0b2de7bd07389a4b8f237b817c3120b9b77b0c18a654ff302300f1e5f8ea9b1cCreate DODO Mine...1383756802023-10-07 10:08:35173 days 11 hrs ago0x687f947631685b11d4e5c3552ba0d5dab9bb3910 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00012934 0.1
0x4c1f82ec205c1067d98cae14cc042f1435d20244c87d55fab1a3e950467806e6Create DODO Mine...1383481522023-10-07 8:12:42173 days 12 hrs ago0x6f0b95e02bf2d0ad87b0bb20bbd5ca6f3194a3f5 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00013388 0.1
0xa809e8b933977e0fb1b2c665b1a123fe9c4a4b8ce983f550191ec910ed478a47Create DODO Mine...1379960502023-10-06 6:22:35174 days 14 hrs ago0x0910e6ead39e1c52d8b7032b9d341fc0402b70f8 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00012667 0.1
0x14894350387831799eee325a893d8a32606cfa4d05d288d1bc8c9f6834ebbe57Create DODO Mine...1288109962023-09-07 7:42:40203 days 13 hrs ago0xf60de76791c2f09995df52aa1c6e2e7dcf1e75d7 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000144270.1
0xbf82277786c2694e076df1bfc9142b8ef95714ab9cc955d4f212aa64a881e885Create DODO Mine...1078361682023-07-04 15:38:55268 days 5 hrs ago0x53475b4934108bdf2ba8b358dece03b5c7b7f1cf IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00018227 0.1
0x72c1e4bd671fda8832b91e608e28ba1773477657f3105212343bee5be90fd219Create DODO Mine...1065302612023-06-30 17:48:06272 days 3 hrs ago0xd9a6545923d49d681c0e77863e7cb3091b935048 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00022901 0.1
0x73fef50b2af053f66ae170c5f420baffdb749d76b1124be87c2ac4d6ecf3fb92Create DODO Mine...879738632023-05-06 18:01:57327 days 3 hrs ago0x0d22e9736a70bdccb309b38caeb9521c6098a8c6 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.0006236 0.1
0x81817bc9761789e4d9c4111c23adb67031b6c645fd7d54e12fd1d1e4cfdd32d7Create DODO Mine...854077082023-04-29 5:50:19334 days 15 hrs ago0xc72ed51dbb7acf64871ab3eb2770870093d66b5f IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000227980.1
0xc1e8206df18d7d7d4ffcb2a66f2f87e4a59fcef38629783fac72376219171918Create DODO Mine...853902172023-04-29 4:35:48334 days 16 hrs ago0xc72ed51dbb7acf64871ab3eb2770870093d66b5f IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000212070.1
0x491d47309ae257a038d1e064e7dae9a115c969b67e62a23344e77dbb12a7e1b6Create DODO Mine...853781232023-04-29 3:44:06334 days 17 hrs ago0xc72ed51dbb7acf64871ab3eb2770870093d66b5f IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00021430.1
0xf38ed7220b44b4d5ce1b41e2a19e1200f9479c9d7074691af46146b78980c98aCreate DODO Mine...853778802023-04-29 3:43:01334 days 17 hrs ago0xc72ed51dbb7acf64871ab3eb2770870093d66b5f IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000216340.1
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0Create DODO Mine...569100952023-01-31 15:06:04422 days 6 hrs ago0x4cb780fd3286f2d10199b61423d1c804bd2a5d2b IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000207 0.1
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9Create DODO Mine...461718992022-12-14 19:45:23470 days 1 hr ago0x0d415e200403ab303fbc353496a2c4f21b7c77d3 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.00019989 0.1
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942aCreate DODO Mine...147656902022-06-16 4:49:15651 days 16 hrs ago0x2150207862877984b13e6aa805e5e6691a866d1c IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.001067675039 ETH0.665714164
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc1Create DODO Mine...60739282022-02-15 1:29:31772 days 19 hrs ago0xc5acd4551a406819f96d96da0bc676086bf329dc IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000964627788 ETH0.58081312
0x46243dbaaf7436dd47a08ba38cf53ebe30f360eb67b4d1e71a37df0cffe5995dCreate DODO Mine...60734152022-02-15 1:16:38772 days 19 hrs ago0xc5acd4551a406819f96d96da0bc676086bf329dc IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.000969925536 ETH0.583566549
0xa69691601de6143a9d19e11af4ab510d9f14a9ccbb45f61b152d19854eea0543Create DODO Mine...54338942022-02-04 22:57:14782 days 22 hrs ago0x3544fa4f39a5d6586de28ef029f885551e9884b4 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.001968098487 ETH1.182017706
0xa907ccf04a0ef4278027068c8dd171d5bda2b5b04902980a9da01a11d28e4e9cCreate DODO Mine...20630252021-10-10 0:02:27900 days 21 hrs ago0xdadc6f71986643d9e9cb368f08eb6f1333f6d8f9 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.004048397259 ETH0.917747319
0x9d4ddd133fd99597eda595b32aa636dfbfbf4a3d21f274c3ec07e062809b6385Create DODO Mine...20492322021-10-09 15:20:45901 days 5 hrs ago0xdadc6f71986643d9e9cb368f08eb6f1333f6d8f9 IN  0x9a74b169798be874ef1c23b4092e5689969ef45e0 ETH0.004591642413 ETH0.986836869
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0569100952023-01-31 15:06:04422 days 6 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2b40bc6c9c12c18787436aa1e2b761f684f429990 ETH
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0569100952023-01-31 15:06:04422 days 6 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e0xf1a72d1cfd6880bbdaa7738b2df020145680fb030 ETH
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0569100952023-01-31 15:06:04422 days 6 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e0xf1a72d1cfd6880bbdaa7738b2df020145680fb030 ETH
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0569100952023-01-31 15:06:04422 days 6 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e DODO: Approve Proxy V20 ETH
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0569100952023-01-31 15:06:04422 days 6 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e0xf1a72d1cfd6880bbdaa7738b2df020145680fb030 ETH
0x2d54189eb03537257a1a1babb3ca27301d136a5e783a5e26eb4d09661a82b4a0569100952023-01-31 15:06:04422 days 6 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x1ddd02f6d31c1ef04cfa0a1aa811406b5b2884e70 ETH
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9461718992022-12-14 19:45:23470 days 1 hr ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2b40bc6c9c12c18787436aa1e2b761f684f429990 ETH
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9461718992022-12-14 19:45:23470 days 1 hr ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0xa4bd08d63eb9c5809551d7848a04e34f94356e170 ETH
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9461718992022-12-14 19:45:23470 days 1 hr ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0xa4bd08d63eb9c5809551d7848a04e34f94356e170 ETH
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9461718992022-12-14 19:45:23470 days 1 hr ago 0x9a74b169798be874ef1c23b4092e5689969ef45e DODO: Approve Proxy V20 ETH
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9461718992022-12-14 19:45:23470 days 1 hr ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0xa4bd08d63eb9c5809551d7848a04e34f94356e170 ETH
0x1fcea117bdf2deb8ae8286af1582b954108b30765181e9e86177be6b19dbaea9461718992022-12-14 19:45:23470 days 1 hr ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x1ddd02f6d31c1ef04cfa0a1aa811406b5b2884e70 ETH
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942a147656902022-06-16 4:49:15651 days 16 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2b40bc6c9c12c18787436aa1e2b761f684f429990 ETH
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942a147656902022-06-16 4:49:15651 days 16 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2ede6cb298c1988913a3e2749bda1f54a68b545e0 ETH
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942a147656902022-06-16 4:49:15651 days 16 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2ede6cb298c1988913a3e2749bda1f54a68b545e0 ETH
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942a147656902022-06-16 4:49:15651 days 16 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e DODO: Approve Proxy V20 ETH
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942a147656902022-06-16 4:49:15651 days 16 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2ede6cb298c1988913a3e2749bda1f54a68b545e0 ETH
0xfe7e5ff5ae529a8aa590395f013200b510cc6f8e6349e20383f946bf5d22942a147656902022-06-16 4:49:15651 days 16 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x1ddd02f6d31c1ef04cfa0a1aa811406b5b2884e70 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x973cab76c35bb1da47e044a63546c69a8ac1143c0 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x973cab76c35bb1da47e044a63546c69a8ac1143c0 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x973cab76c35bb1da47e044a63546c69a8ac1143c0 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0x2b40bc6c9c12c18787436aa1e2b761f684f429990 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0xaa6a8cf49eac2c674302e695a994d517309706f20 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e 0xaa6a8cf49eac2c674302e695a994d517309706f20 ETH
0xa0fce9b0c5454642e4ec3e643d9b3fbb57e6724a07fa890e39c04c35b25bfbc160739282022-02-15 1:29:31772 days 19 hrs ago 0x9a74b169798be874ef1c23b4092e5689969ef45e DODO: Approve Proxy V20 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DODOMineV3Proxy

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2021-08-30
*/

// File: contracts/lib/InitializableOwnable.sol

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract InitializableOwnable {
    address public _OWNER_;
    address public _NEW_OWNER_;
    bool internal _INITIALIZED_;

    // ============ Events ============

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

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

    // ============ Modifiers ============

    modifier notInitialized() {
        require(!_INITIALIZED_, "DODO_INITIALIZED");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    function initOwner(address newOwner) public notInitialized {
        _INITIALIZED_ = true;
        _OWNER_ = newOwner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

// File: contracts/intf/IDODOApprove.sol


interface IDODOApprove {
    function claimTokens(address token,address who,address dest,uint256 amount) external;
    function getDODOProxy() external view returns (address);
}

// File: contracts/SmartRoute/DODOApproveProxy.sol




interface IDODOApproveProxy {
    function isAllowedProxy(address _proxy) external view returns (bool);
    function claimTokens(address token,address who,address dest,uint256 amount) external;
}

/**
 * @title DODOApproveProxy
 * @author DODO Breeder
 *
 * @notice Allow different version dodoproxy to claim from DODOApprove
 */
contract DODOApproveProxy is InitializableOwnable {
    
    // ============ Storage ============
    uint256 private constant _TIMELOCK_DURATION_ = 3 days;
    mapping (address => bool) public _IS_ALLOWED_PROXY_;
    uint256 public _TIMELOCK_;
    address public _PENDING_ADD_DODO_PROXY_;
    address public immutable _DODO_APPROVE_;

    // ============ Modifiers ============
    modifier notLocked() {
        require(
            _TIMELOCK_ <= block.timestamp,
            "SetProxy is timelocked"
        );
        _;
    }

    constructor(address dodoApporve) public {
        _DODO_APPROVE_ = dodoApporve;
    }

    function init(address owner, address[] memory proxies) external {
        initOwner(owner);
        for(uint i = 0; i < proxies.length; i++) 
            _IS_ALLOWED_PROXY_[proxies[i]] = true;
    }

    function unlockAddProxy(address newDodoProxy) public onlyOwner {
        _TIMELOCK_ = block.timestamp + _TIMELOCK_DURATION_;
        _PENDING_ADD_DODO_PROXY_ = newDodoProxy;
    }

    function lockAddProxy() public onlyOwner {
       _PENDING_ADD_DODO_PROXY_ = address(0);
       _TIMELOCK_ = 0;
    }


    function addDODOProxy() external onlyOwner notLocked() {
        _IS_ALLOWED_PROXY_[_PENDING_ADD_DODO_PROXY_] = true;
        lockAddProxy();
    }

    function removeDODOProxy (address oldDodoProxy) public onlyOwner {
        _IS_ALLOWED_PROXY_[oldDodoProxy] = false;
    }
    
    function claimTokens(
        address token,
        address who,
        address dest,
        uint256 amount
    ) external {
        require(_IS_ALLOWED_PROXY_[msg.sender], "DODOApproveProxy:Access restricted");
        IDODOApprove(_DODO_APPROVE_).claimTokens(
            token,
            who,
            dest,
            amount
        );
    }

    function isAllowedProxy(address _proxy) external view returns (bool) {
        return _IS_ALLOWED_PROXY_[_proxy];
    }
}

// File: contracts/lib/Ownable.sol


/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract Ownable {
    address public _OWNER_;
    address public _NEW_OWNER_;

    // ============ Events ============

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

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

    // ============ Modifiers ============

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    constructor() internal {
        _OWNER_ = msg.sender;
        emit OwnershipTransferred(address(0), _OWNER_);
    }

    function transferOwnership(address newOwner) external virtual onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() external {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

// File: contracts/intf/IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

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

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

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

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

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

// File: contracts/lib/SafeMath.sol


/**
 * @title SafeMath
 * @author DODO Breeder
 *
 * @notice Math operations with safety checks that revert on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = x / 2 + 1;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

// File: contracts/lib/SafeERC20.sol



/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: contracts/DODOToken/DODOMineV3/RewardVault.sol




interface IRewardVault {
    function reward(address to, uint256 amount) external;
    function withdrawLeftOver(address to, uint256 amount) external; 
    function syncValue() external;
    function _TOTAL_REWARD_() external view returns(uint256);
}

contract RewardVault is Ownable {
    using SafeERC20 for IERC20;
    using SafeMath for uint256;

    uint256 public _REWARD_RESERVE_;
    uint256 public _TOTAL_REWARD_;
    address public _REWARD_TOKEN_;

    // ============ Event =============
    event DepositReward(uint256 totalReward, uint256 inputReward, uint256 rewardReserve);

    constructor(address _rewardToken) public {
        _REWARD_TOKEN_ = _rewardToken;
    }

    function reward(address to, uint256 amount) external onlyOwner {
        require(_REWARD_RESERVE_ >= amount, "VAULT_NOT_ENOUGH");
        _REWARD_RESERVE_ = _REWARD_RESERVE_.sub(amount);
        IERC20(_REWARD_TOKEN_).safeTransfer(to, amount);
    }

    function withdrawLeftOver(address to,uint256 amount) external onlyOwner {
        require(_REWARD_RESERVE_ >= amount, "VAULT_NOT_ENOUGH");
        _REWARD_RESERVE_ = _REWARD_RESERVE_.sub(amount);
        IERC20(_REWARD_TOKEN_).safeTransfer(to, amount);
    }

    function syncValue() external {
        uint256 rewardBalance = IERC20(_REWARD_TOKEN_).balanceOf(address(this));
        uint256 rewardInput = rewardBalance.sub(_REWARD_RESERVE_);

        _TOTAL_REWARD_ = _TOTAL_REWARD_.add(rewardInput);
        _REWARD_RESERVE_ = rewardBalance;

        emit DepositReward(_TOTAL_REWARD_, rewardInput, _REWARD_RESERVE_);
    }
}

// File: contracts/Factory/Registries/DODOMineV3Registry.sol


interface IDODOMineV3Registry {
    function addMineV3(
        address mine,
        bool isLpToken,
        address stakeToken
    ) external;
}

/**
 * @title DODOMineV3 Registry
 * @author DODO Breeder
 *
 * @notice Register DODOMineV3 Pools 
 */
contract DODOMineV3Registry is InitializableOwnable, IDODOMineV3Registry {

    mapping (address => bool) public isAdminListed;
    
    // ============ Registry ============
    // minePool -> stakeToken
    mapping(address => address) public _MINE_REGISTRY_;
    // lpToken -> minePool
    mapping(address => address[]) public _LP_REGISTRY_;
    // singleToken -> minePool
    mapping(address => address[]) public _SINGLE_REGISTRY_;


    // ============ Events ============
    event NewMineV3(address mine, address stakeToken, bool isLpToken);
    event RemoveMineV3(address mine, address stakeToken);
    event addAdmin(address admin);
    event removeAdmin(address admin);


    function addMineV3(
        address mine,
        bool isLpToken,
        address stakeToken
    ) override external {
        require(isAdminListed[msg.sender], "ACCESS_DENIED");
        _MINE_REGISTRY_[mine] = stakeToken;
        if(isLpToken) {
            _LP_REGISTRY_[stakeToken].push(mine);
        }else {
            _SINGLE_REGISTRY_[stakeToken].push(mine);
        }

        emit NewMineV3(mine, stakeToken, isLpToken);
    }

    // ============ Admin Operation Functions ============

    function removeMineV3(
        address mine,
        bool isLpToken,
        address stakeToken
    ) external onlyOwner {
        _MINE_REGISTRY_[mine] = address(0);
        if(isLpToken) {
            uint256 len = _LP_REGISTRY_[stakeToken].length;
            for (uint256 i = 0; i < len; i++) {
                if (mine == _LP_REGISTRY_[stakeToken][i]) {
                    if(i != len - 1) {
                        _LP_REGISTRY_[stakeToken][i] = _LP_REGISTRY_[stakeToken][len - 1];
                    }
                    _LP_REGISTRY_[stakeToken].pop();
                    break;
                }
            }
        }else {
            uint256 len = _SINGLE_REGISTRY_[stakeToken].length;
            for (uint256 i = 0; i < len; i++) {
                if (mine == _SINGLE_REGISTRY_[stakeToken][i]) {
                    if(i != len - 1) {
                        _SINGLE_REGISTRY_[stakeToken][i] = _SINGLE_REGISTRY_[stakeToken][len - 1];
                    }
                    _SINGLE_REGISTRY_[stakeToken].pop();
                    break;
                }
            }
        }

        emit RemoveMineV3(mine, stakeToken);
    }

    function addAdminList (address contractAddr) external onlyOwner {
        isAdminListed[contractAddr] = true;
        emit addAdmin(contractAddr);
    }

    function removeAdminList (address contractAddr) external onlyOwner {
        isAdminListed[contractAddr] = false;
        emit removeAdmin(contractAddr);
    }
}

// File: contracts/lib/CloneFactory.sol


interface ICloneFactory {
    function clone(address prototype) external returns (address proxy);
}

// introduction of proxy mode design: https://docs.openzeppelin.com/upgrades/2.8/
// minimum implementation of transparent proxy: https://eips.ethereum.org/EIPS/eip-1167

contract CloneFactory is ICloneFactory {
    function clone(address prototype) external override returns (address proxy) {
        bytes20 targetBytes = bytes20(prototype);
        assembly {
            let clone := mload(0x40)
            mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(clone, 0x14), targetBytes)
            mstore(
                add(clone, 0x28),
                0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000
            )
            proxy := create(0, clone, 0x37)
        }
        return proxy;
    }
}

// File: contracts/SmartRoute/proxies/DODOMineV3Proxy.sol



interface IMineV3 {
    function init(address owner, address token) external;

    function addRewardToken(
        address rewardToken,
        uint256 rewardPerBlock,
        uint256 startBlock,
        uint256 endBlock
    ) external;

    function directTransferOwnership(address newOwner) external;

    function getVaultByRewardToken(address rewardToken) external view returns(address);
}

/**
 * @title DODOMineV3 Proxy
 * @author DODO Breeder
 *
 * @notice Create And Register DODOMineV3 Contracts 
 */
contract DODOMineV3Proxy is InitializableOwnable {
    using SafeMath for uint256;
    // ============ Templates ============

    address public immutable _CLONE_FACTORY_;
    address public immutable _DODO_APPROVE_PROXY_;
    address public immutable _DODO_MINEV3_REGISTRY_;
    address public _MINEV3_TEMPLATE_;


    // ============ Events ============
    event DepositRewardToVault(address mine, address rewardToken, uint256 amount);
    event DepositRewardToMine(address mine, address rewardToken, uint256 amount);
    event CreateMineV3(address account, address mineV3);
    event ChangeMineV3Template(address mineV3);

    constructor(
        address cloneFactory,
        address mineTemplate,
        address dodoApproveProxy,
        address dodoMineV3Registry
    ) public {
        _CLONE_FACTORY_ = cloneFactory;
        _MINEV3_TEMPLATE_ = mineTemplate;
        _DODO_APPROVE_PROXY_ = dodoApproveProxy;
        _DODO_MINEV3_REGISTRY_ = dodoMineV3Registry;
    }

    // ============ Functions ============

    function createDODOMineV3(
        address stakeToken,
        bool isLpToken,
        address[] memory rewardTokens,
        uint256[] memory rewardPerBlock,
        uint256[] memory startBlock,
        uint256[] memory endBlock
    ) external returns (address newMineV3) {
        require(rewardTokens.length > 0, "REWARD_EMPTY");
        require(rewardTokens.length == rewardPerBlock.length, "REWARD_PARAM_NOT_MATCH");
        require(startBlock.length == rewardPerBlock.length, "REWARD_PARAM_NOT_MATCH");
        require(endBlock.length == rewardPerBlock.length, "REWARD_PARAM_NOT_MATCH");

        newMineV3 = ICloneFactory(_CLONE_FACTORY_).clone(_MINEV3_TEMPLATE_);

        IMineV3(newMineV3).init(address(this), stakeToken);

        for(uint i = 0; i<rewardTokens.length; i++) {
            uint256 rewardAmount = rewardPerBlock[i].mul(endBlock[i].sub(startBlock[i]));
            IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(rewardTokens[i], msg.sender, newMineV3, rewardAmount);
            IMineV3(newMineV3).addRewardToken(
                rewardTokens[i],
                rewardPerBlock[i],
                startBlock[i],
                endBlock[i]
            );
        }

        IMineV3(newMineV3).directTransferOwnership(msg.sender);

        IDODOMineV3Registry(_DODO_MINEV3_REGISTRY_).addMineV3(newMineV3, isLpToken, stakeToken);

        emit CreateMineV3(msg.sender, newMineV3);
    }

    function depositRewardToVault(
        address mineV3,
        address rewardToken,
        uint256 amount
    ) external {    
        address rewardVault = IMineV3(mineV3).getVaultByRewardToken(rewardToken);
        IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(rewardToken, msg.sender, rewardVault, amount);
        IRewardVault(rewardVault).syncValue();

        emit DepositRewardToVault(mineV3,rewardToken,amount);
    }

    function depositRewardToMine(
        address mineV3,
        address rewardToken,
        uint256 amount
    ) external {
        require(mineV3 != address(0), "MINE_EMPTY");
        IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(rewardToken, msg.sender, mineV3, amount);

        emit DepositRewardToMine(mineV3,rewardToken,amount);
    }

    // ============ Admin Operation Functions ============
    
    function updateMineV3Template(address _newMineV3Template) external onlyOwner {
        _MINEV3_TEMPLATE_ = _newMineV3Template;
        emit ChangeMineV3Template(_newMineV3Template);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"cloneFactory","type":"address"},{"internalType":"address","name":"mineTemplate","type":"address"},{"internalType":"address","name":"dodoApproveProxy","type":"address"},{"internalType":"address","name":"dodoMineV3Registry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mineV3","type":"address"}],"name":"ChangeMineV3Template","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"mineV3","type":"address"}],"name":"CreateMineV3","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mine","type":"address"},{"indexed":false,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositRewardToMine","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mine","type":"address"},{"indexed":false,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositRewardToVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","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"},{"inputs":[],"name":"_CLONE_FACTORY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DODO_APPROVE_PROXY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DODO_MINEV3_REGISTRY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MINEV3_TEMPLATE_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakeToken","type":"address"},{"internalType":"bool","name":"isLpToken","type":"bool"},{"internalType":"address[]","name":"rewardTokens","type":"address[]"},{"internalType":"uint256[]","name":"rewardPerBlock","type":"uint256[]"},{"internalType":"uint256[]","name":"startBlock","type":"uint256[]"},{"internalType":"uint256[]","name":"endBlock","type":"uint256[]"}],"name":"createDODOMineV3","outputs":[{"internalType":"address","name":"newMineV3","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mineV3","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositRewardToMine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mineV3","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositRewardToVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMineV3Template","type":"address"}],"name":"updateMineV3Template","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405234801561001057600080fd5b506040516200118e3803806200118e83398101604081905261003191610097565b606093841b6001600160601b0319908116608052600280546001600160a01b0319166001600160a01b03959095169490941790935590831b821660a05290911b1660c0526100ee565b80516001600160a01b038116811461009157600080fd5b92915050565b600080600080608085870312156100ac578384fd5b6100b6868661007a565b93506100c5866020870161007a565b92506100d4866040870161007a565b91506100e3866060870161007a565b905092959194509250565b60805160601c60a05160601c60c05160601c6110516200013d6000398061021052806108bc5250806103f752806106f652806109a95280610a7c5250806105975280610a5852506110516000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638456db151161008c578063e17ff36111610066578063e17ff36114610160578063eb774d0514610173578063eb99be121461017b578063f2fde38b14610183576100cf565b80638456db15146101325780639cb297cd1461013a578063b9b1135c1461014d576100cf565b80630d009297146100d457806316048bc4146100e95780633eab5388146101075780634e71e0c81461010f57806359e1100b14610117578063675050831461012a575b600080fd5b6100e76100e2366004610c81565b610196565b005b6100f16101ff565b6040516100fe9190610dc3565b60405180910390f35b6100f161020e565b6100e7610232565b6100e7610125366004610c81565b6102c0565b6100f1610340565b6100f161034f565b6100e7610148366004610cb9565b61035e565b6100f161015b366004610cf9565b6104f8565b6100e761016e366004610cb9565b61096c565b6100f1610a56565b6100f1610a7a565b6100e7610191366004610c81565b610a9e565b600154600160a01b900460ff16156101c95760405162461bcd60e51b81526004016101c090610ed2565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b0316331461025c5760405162461bcd60e51b81526004016101c090610e88565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146102ea5760405162461bcd60e51b81526004016101c090610f52565b600280546001600160a01b0319166001600160a01b0383161790556040517f96dd01a7d9a55f807382e4595daefc9b059147fc9960188979c714c093f2e21890610335908390610dc3565b60405180910390a150565b6002546001600160a01b031681565b6001546001600160a01b031681565b60405163e513eb1560e01b81526000906001600160a01b0385169063e513eb159061038d908690600401610dc3565b60206040518083038186803b1580156103a557600080fd5b505afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190610c9d565b60405163052f523360e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea46690610432908690339086908890600401610df1565b600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b50505050806001600160a01b031663ca1896ab6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561049f57600080fd5b505af11580156104b3573d6000803e3d6000fd5b505050507ff222562df009371dbc94492bddff6e9f6ff435cfb999d5ce9684439db9cbb9368484846040516104ea93929190610e1b565b60405180910390a150505050565b60008085511161051a5760405162461bcd60e51b81526004016101c090610efc565b835185511461053b5760405162461bcd60e51b81526004016101c090610f22565b835183511461055c5760405162461bcd60e51b81526004016101c090610f22565b835182511461057d5760405162461bcd60e51b81526004016101c090610f22565b6002546040516340925bc760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692638124b78e926105d0929190911690600401610dc3565b602060405180830381600087803b1580156105ea57600080fd5b505af11580156105fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106229190610c9d565b60405163784d200b60e11b81529091506001600160a01b0382169063f09a4016906106539030908b90600401610dd7565b600060405180830381600087803b15801561066d57600080fd5b505af1158015610681573d6000803e3d6000fd5b506000925050505b85518110156108485760006106f26106d08684815181106106a657fe5b60200260200101518685815181106106ba57fe5b6020026020010151610b2390919063ffffffff16565b8784815181106106dc57fe5b6020026020010151610b5090919063ffffffff16565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630a5ea46688848151811061072f57fe5b60200260200101513386856040518563ffffffff1660e01b81526004016107599493929190610df1565b600060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b50505050826001600160a01b031663a7c3e4e58884815181106107a657fe5b60200260200101518885815181106107ba57fe5b60200260200101518886815181106107ce57fe5b60200260200101518887815181106107e257fe5b60200260200101516040518563ffffffff1660e01b81526004016108099493929190610e62565b600060405180830381600087803b15801561082357600080fd5b505af1158015610837573d6000803e3d6000fd5b505060019093019250610689915050565b50604051635ee9bee360e11b81526001600160a01b0382169063bdd37dc690610875903390600401610dc3565b600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050604051630a31026960e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063146204d291506108f79084908a908c90600401610e3f565b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b505050507ffc795fb7ea3731f56c3ef03f7a51e847fe2d51efd971158498cd281a9ee612d9338260405161095a929190610dd7565b60405180910390a19695505050505050565b6001600160a01b0383166109925760405162461bcd60e51b81526004016101c090610f75565b60405163052f523360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea466906109e4908590339088908790600401610df1565b600060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b505050507f7a506082d4953902efacb789163082daef78c65e6691afe805dd3985b181f645838383604051610a4993929190610e1b565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610ac85760405162461bcd60e51b81526004016101c090610f52565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115610b455760405162461bcd60e51b81526004016101c090610eaf565b508082035b92915050565b600082610b5f57506000610b4a565b82820282848281610b6c57fe5b0414610b8a5760405162461bcd60e51b81526004016101c090610f99565b9392505050565b8035610b4a81611003565b600082601f830112610bac578081fd5b8135610bbf610bba82610fe3565b610fbc565b818152915060208083019084810181840286018201871015610be057600080fd5b60005b84811015610c08578135610bf681611003565b84529282019290820190600101610be3565b505050505092915050565b600082601f830112610c23578081fd5b8135610c31610bba82610fe3565b818152915060208083019084810181840286018201871015610c5257600080fd5b60005b84811015610c0857813584529282019290820190600101610c55565b80358015158114610b4a57600080fd5b600060208284031215610c92578081fd5b8135610b8a81611003565b600060208284031215610cae578081fd5b8151610b8a81611003565b600080600060608486031215610ccd578182fd5b8335610cd881611003565b92506020840135610ce881611003565b929592945050506040919091013590565b60008060008060008060c08789031215610d11578182fd5b610d1b8888610b91565b9550610d2a8860208901610c71565b9450604087013567ffffffffffffffff80821115610d46578384fd5b610d528a838b01610b9c565b95506060890135915080821115610d67578384fd5b610d738a838b01610c13565b94506080890135915080821115610d88578384fd5b610d948a838b01610c13565b935060a0890135915080821115610da9578283fd5b50610db689828a01610c13565b9150509295509295509295565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0393841681529115156020830152909116604082015260600190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600c908201526b5245574152445f454d50545960a01b604082015260600190565b6020808252601690820152750a48aae82a488bea082a4829abe9c9ea8be9a82a886960531b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b6020808252600a90820152694d494e455f454d50545960b01b604082015260600190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b60405181810167ffffffffffffffff81118282101715610fdb57600080fd5b604052919050565b600067ffffffffffffffff821115610ff9578081fd5b5060209081020190565b6001600160a01b038116811461101857600080fd5b5056fea264697066735822122030f2d5513efa27929cc8d4838d113d7a7286d4190afd25db339cd005fb390e1764736f6c634300060900330000000000000000000000001ddd02f6d31c1ef04cfa0a1aa811406b5b2884e7000000000000000000000000973cab76c35bb1da47e044a63546c69a8ac1143c000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f00000000000000000000000002b40bc6c9c12c18787436aa1e2b761f684f42999

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638456db151161008c578063e17ff36111610066578063e17ff36114610160578063eb774d0514610173578063eb99be121461017b578063f2fde38b14610183576100cf565b80638456db15146101325780639cb297cd1461013a578063b9b1135c1461014d576100cf565b80630d009297146100d457806316048bc4146100e95780633eab5388146101075780634e71e0c81461010f57806359e1100b14610117578063675050831461012a575b600080fd5b6100e76100e2366004610c81565b610196565b005b6100f16101ff565b6040516100fe9190610dc3565b60405180910390f35b6100f161020e565b6100e7610232565b6100e7610125366004610c81565b6102c0565b6100f1610340565b6100f161034f565b6100e7610148366004610cb9565b61035e565b6100f161015b366004610cf9565b6104f8565b6100e761016e366004610cb9565b61096c565b6100f1610a56565b6100f1610a7a565b6100e7610191366004610c81565b610a9e565b600154600160a01b900460ff16156101c95760405162461bcd60e51b81526004016101c090610ed2565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b7f0000000000000000000000002b40bc6c9c12c18787436aa1e2b761f684f4299981565b6001546001600160a01b0316331461025c5760405162461bcd60e51b81526004016101c090610e88565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146102ea5760405162461bcd60e51b81526004016101c090610f52565b600280546001600160a01b0319166001600160a01b0383161790556040517f96dd01a7d9a55f807382e4595daefc9b059147fc9960188979c714c093f2e21890610335908390610dc3565b60405180910390a150565b6002546001600160a01b031681565b6001546001600160a01b031681565b60405163e513eb1560e01b81526000906001600160a01b0385169063e513eb159061038d908690600401610dc3565b60206040518083038186803b1580156103a557600080fd5b505afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190610c9d565b60405163052f523360e11b81529091506001600160a01b037f000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f01690630a5ea46690610432908690339086908890600401610df1565b600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b50505050806001600160a01b031663ca1896ab6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561049f57600080fd5b505af11580156104b3573d6000803e3d6000fd5b505050507ff222562df009371dbc94492bddff6e9f6ff435cfb999d5ce9684439db9cbb9368484846040516104ea93929190610e1b565b60405180910390a150505050565b60008085511161051a5760405162461bcd60e51b81526004016101c090610efc565b835185511461053b5760405162461bcd60e51b81526004016101c090610f22565b835183511461055c5760405162461bcd60e51b81526004016101c090610f22565b835182511461057d5760405162461bcd60e51b81526004016101c090610f22565b6002546040516340925bc760e11b81526001600160a01b037f0000000000000000000000001ddd02f6d31c1ef04cfa0a1aa811406b5b2884e7811692638124b78e926105d0929190911690600401610dc3565b602060405180830381600087803b1580156105ea57600080fd5b505af11580156105fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106229190610c9d565b60405163784d200b60e11b81529091506001600160a01b0382169063f09a4016906106539030908b90600401610dd7565b600060405180830381600087803b15801561066d57600080fd5b505af1158015610681573d6000803e3d6000fd5b506000925050505b85518110156108485760006106f26106d08684815181106106a657fe5b60200260200101518685815181106106ba57fe5b6020026020010151610b2390919063ffffffff16565b8784815181106106dc57fe5b6020026020010151610b5090919063ffffffff16565b90507f000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f06001600160a01b0316630a5ea46688848151811061072f57fe5b60200260200101513386856040518563ffffffff1660e01b81526004016107599493929190610df1565b600060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b50505050826001600160a01b031663a7c3e4e58884815181106107a657fe5b60200260200101518885815181106107ba57fe5b60200260200101518886815181106107ce57fe5b60200260200101518887815181106107e257fe5b60200260200101516040518563ffffffff1660e01b81526004016108099493929190610e62565b600060405180830381600087803b15801561082357600080fd5b505af1158015610837573d6000803e3d6000fd5b505060019093019250610689915050565b50604051635ee9bee360e11b81526001600160a01b0382169063bdd37dc690610875903390600401610dc3565b600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050604051630a31026960e11b81526001600160a01b037f0000000000000000000000002b40bc6c9c12c18787436aa1e2b761f684f4299916925063146204d291506108f79084908a908c90600401610e3f565b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b505050507ffc795fb7ea3731f56c3ef03f7a51e847fe2d51efd971158498cd281a9ee612d9338260405161095a929190610dd7565b60405180910390a19695505050505050565b6001600160a01b0383166109925760405162461bcd60e51b81526004016101c090610f75565b60405163052f523360e11b81526001600160a01b037f000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f01690630a5ea466906109e4908590339088908790600401610df1565b600060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b505050507f7a506082d4953902efacb789163082daef78c65e6691afe805dd3985b181f645838383604051610a4993929190610e1b565b60405180910390a1505050565b7f0000000000000000000000001ddd02f6d31c1ef04cfa0a1aa811406b5b2884e781565b7f000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f081565b6000546001600160a01b03163314610ac85760405162461bcd60e51b81526004016101c090610f52565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115610b455760405162461bcd60e51b81526004016101c090610eaf565b508082035b92915050565b600082610b5f57506000610b4a565b82820282848281610b6c57fe5b0414610b8a5760405162461bcd60e51b81526004016101c090610f99565b9392505050565b8035610b4a81611003565b600082601f830112610bac578081fd5b8135610bbf610bba82610fe3565b610fbc565b818152915060208083019084810181840286018201871015610be057600080fd5b60005b84811015610c08578135610bf681611003565b84529282019290820190600101610be3565b505050505092915050565b600082601f830112610c23578081fd5b8135610c31610bba82610fe3565b818152915060208083019084810181840286018201871015610c5257600080fd5b60005b84811015610c0857813584529282019290820190600101610c55565b80358015158114610b4a57600080fd5b600060208284031215610c92578081fd5b8135610b8a81611003565b600060208284031215610cae578081fd5b8151610b8a81611003565b600080600060608486031215610ccd578182fd5b8335610cd881611003565b92506020840135610ce881611003565b929592945050506040919091013590565b60008060008060008060c08789031215610d11578182fd5b610d1b8888610b91565b9550610d2a8860208901610c71565b9450604087013567ffffffffffffffff80821115610d46578384fd5b610d528a838b01610b9c565b95506060890135915080821115610d67578384fd5b610d738a838b01610c13565b94506080890135915080821115610d88578384fd5b610d948a838b01610c13565b935060a0890135915080821115610da9578283fd5b50610db689828a01610c13565b9150509295509295509295565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0393841681529115156020830152909116604082015260600190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600c908201526b5245574152445f454d50545960a01b604082015260600190565b6020808252601690820152750a48aae82a488bea082a4829abe9c9ea8be9a82a886960531b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b6020808252600a90820152694d494e455f454d50545960b01b604082015260600190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b60405181810167ffffffffffffffff81118282101715610fdb57600080fd5b604052919050565b600067ffffffffffffffff821115610ff9578081fd5b5060209081020190565b6001600160a01b038116811461101857600080fd5b5056fea264697066735822122030f2d5513efa27929cc8d4838d113d7a7286d4190afd25db339cd005fb390e1764736f6c63430006090033

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

0000000000000000000000001ddd02f6d31c1ef04cfa0a1aa811406b5b2884e7000000000000000000000000973cab76c35bb1da47e044a63546c69a8ac1143c000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f00000000000000000000000002b40bc6c9c12c18787436aa1e2b761f684f42999

-----Decoded View---------------
Arg [0] : cloneFactory (address): 0x1ddD02f6d31C1eF04cFA0a1AA811406B5B2884E7
Arg [1] : mineTemplate (address): 0x973CAB76C35BB1da47e044A63546c69A8Ac1143c
Arg [2] : dodoApproveProxy (address): 0x311E670c3305a0BD55184c1C6580eBeA1FA611F0
Arg [3] : dodoMineV3Registry (address): 0x2B40bC6c9C12c18787436aa1E2B761f684F42999

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ddd02f6d31c1ef04cfa0a1aa811406b5b2884e7
Arg [1] : 000000000000000000000000973cab76c35bb1da47e044a63546c69a8ac1143c
Arg [2] : 000000000000000000000000311e670c3305a0bd55184c1c6580ebea1fa611f0
Arg [3] : 0000000000000000000000002b40bc6c9c12c18787436aa1e2b761f684f42999


Deployed ByteCode Sourcemap

18690:3585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:127;;;;;;;;;:::i;:::-;;332:22;;;:::i;:::-;;;;;;;;;;;;;;;;18924:47;;;:::i;1271:228::-;;;:::i;22082:190::-;;;;;;;;;:::i;18978:32::-;;;:::i;361:26::-;;;:::i;21204:442::-;;;;;;;;;:::i;19748:1448::-;;;;;;;;;:::i;21654:354::-;;;;;;;;;:::i;18825:40::-;;;:::i;18872:45::-;;;:::i;1100:163::-;;;;;;;;;:::i;965:127::-;754:13;;-1:-1:-1;;;754:13:0;;;;753:14;745:43;;;;-1:-1:-1;;;745:43:0;;;;;;;;;;;;;;;;;1051:4:::1;1035:20:::0;;-1:-1:-1;;;;1035:20:0::1;-1:-1:-1::0;;;1035:20:0::1;::::0;;;1066:18;;-1:-1:-1;;;;;1066:18:0;;::::1;-1:-1:-1::0;;;;;;1066:18:0;;::::1;::::0;;;::::1;::::0;;965:127::o;332:22::-;;;-1:-1:-1;;;;;332:22:0;;:::o;18924:47::-;;;:::o;1271:228::-;1337:11;;-1:-1:-1;;;;;1337:11:0;1323:10;:25;1315:51;;;;-1:-1:-1;;;1315:51:0;;;;;;;;;1412:11;;;1403:7;;1382:42;;-1:-1:-1;;;;;1412:11:0;;;;1403:7;;;;1382:42;;;1445:11;;;;1435:21;;-1:-1:-1;;;;;;1435:21:0;;;-1:-1:-1;;;;;1445:11:0;;1435:21;;;;1467:24;;;1271:228::o;22082:190::-;870:7;;-1:-1:-1;;;;;870:7:0;856:10;:21;848:43;;;;-1:-1:-1;;;848:43:0;;;;;;;;;22170:17:::1;:38:::0;;-1:-1:-1;;;;;;22170:38:0::1;-1:-1:-1::0;;;;;22170:38:0;::::1;;::::0;;22224:40:::1;::::0;::::1;::::0;::::1;::::0;22170:38;;22224:40:::1;;;;;;;;;;22082:190:::0;:::o;18978:32::-;;;-1:-1:-1;;;;;18978:32:0;;:::o;361:26::-;;;-1:-1:-1;;;;;361:26:0;;:::o;21204:442::-;21367:50;;-1:-1:-1;;;21367:50:0;;21345:19;;-1:-1:-1;;;;;21367:37:0;;;;;:50;;21405:11;;21367:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21428:97;;-1:-1:-1;;;21428:97:0;;21345:72;;-1:-1:-1;;;;;;21446:20:0;21428:51;;;;:97;;21480:11;;21493:10;;21345:72;;21518:6;;21428:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21549:11;-1:-1:-1;;;;;21536:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21591:47;21612:6;21619:11;21631:6;21591:47;;;;;;;;;;;;;;;;;21204:442;;;;:::o;19748:1448::-;20009:17;20069:1;20047:12;:19;:23;20039:48;;;;-1:-1:-1;;;20039:48:0;;;;;;;;;20129:14;:21;20106:12;:19;:44;20098:79;;;;-1:-1:-1;;;20098:79:0;;;;;;;;;20217:14;:21;20196:10;:17;:42;20188:77;;;;-1:-1:-1;;;20188:77:0;;;;;;;;;20303:14;:21;20284:8;:15;:40;20276:75;;;;-1:-1:-1;;;20276:75:0;;;;;;;;;20413:17;;20376:55;;-1:-1:-1;;;20376:55:0;;-1:-1:-1;;;;;20390:15:0;20376:36;;;;;:55;;20413:17;;;;;20376:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20444:50;;-1:-1:-1;;;20444:50:0;;20364:67;;-1:-1:-1;;;;;;20444:23:0;;;;;:50;;20476:4;;20483:10;;20444:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20511:6:0;;-1:-1:-1;;;20507:462:0;20525:12;:19;20523:1;:21;20507:462;;;20566:20;20589:53;20611:30;20627:10;20638:1;20627:13;;;;;;;;;;;;;;20611:8;20620:1;20611:11;;;;;;;;;;;;;;:15;;:30;;;;:::i;:::-;20589:14;20604:1;20589:17;;;;;;;;;;;;;;:21;;:53;;;;:::i;:::-;20566:76;;20675:20;-1:-1:-1;;;;;20657:51:0;;20709:12;20722:1;20709:15;;;;;;;;;;;;;;20726:10;20738:9;20749:12;20657:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20785:9;-1:-1:-1;;;;;20777:33:0;;20829:12;20842:1;20829:15;;;;;;;;;;;;;;20863:14;20878:1;20863:17;;;;;;;;;;;;;;20899:10;20910:1;20899:13;;;;;;;;;;;;;;20931:8;20940:1;20931:11;;;;;;;;;;;;;;20777:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20546:3:0;;;;;-1:-1:-1;20507:462:0;;-1:-1:-1;;20507:462:0;;-1:-1:-1;20981:54:0;;-1:-1:-1;;;20981:54:0;;-1:-1:-1;;;;;20981:42:0;;;;;:54;;21024:10;;20981:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21048:87:0;;-1:-1:-1;;;21048:87:0;;-1:-1:-1;;;;;21068:22:0;21048:53;;-1:-1:-1;21048:53:0;;-1:-1:-1;21048:87:0;;21102:9;;21113;;21124:10;;21048:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21153:35;21166:10;21178:9;21153:35;;;;;;;;;;;;;;;;19748:1448;;;;;;;;:::o;21654:354::-;-1:-1:-1;;;;;21798:20:0;;21790:43;;;;-1:-1:-1;;;21790:43:0;;;;;;;;;21844:92;;-1:-1:-1;;;21844:92:0;;-1:-1:-1;;;;;21862:20:0;21844:51;;;;:92;;21896:11;;21909:10;;21921:6;;21929;;21844:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21954:46;21974:6;21981:11;21993:6;21954:46;;;;;;;;;;;;;;;;;21654:354;;;:::o;18825:40::-;;;:::o;18872:45::-;;;:::o;1100:163::-;870:7;;-1:-1:-1;;;;;870:7:0;856:10;:21;848:43;;;;-1:-1:-1;;;848:43:0;;;;;;;;;1204:7:::1;::::0;;1178:44:::1;::::0;-1:-1:-1;;;;;1178:44:0;;::::1;::::0;1204:7;::::1;::::0;1178:44:::1;::::0;::::1;1233:11;:22:::0;;-1:-1:-1;;;;;;1233:22:0::1;-1:-1:-1::0;;;;;1233:22:0;;;::::1;::::0;;;::::1;::::0;;1100:163::o;8659:137::-;8717:7;8750:1;8745;:6;;8737:28;;;;-1:-1:-1;;;8737:28:0;;;;;;;;;-1:-1:-1;8783:5:0;;;8659:137;;;;;:::o;7980:226::-;8038:7;8062:6;8058:47;;-1:-1:-1;8092:1:0;8085:8;;8058:47;8129:5;;;8133:1;8129;:5;:1;8153:5;;;;;:10;8145:32;;;;-1:-1:-1;;;8145:32:0;;;;;;;;;8197:1;7980:226;-1:-1:-1;;;7980:226:0:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;301:707;;418:3;411:4;403:6;399:17;395:27;385:2;;-1:-1;;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;;;495:80;;;603:21;;;486:89;-1:-1;647:4;660:14;;;;635:17;;;749;;;740:27;;;;737:36;-1:-1;734:2;;;786:1;;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;85:6;72:20;97:33;124:5;97:33;;;889:50;;953:14;;;;981;;;;843:1;836:9;796:206;;;800:14;;;;;378:630;;;;;1034:707;;1151:3;1144:4;1136:6;1132:17;1128:27;1118:2;;-1:-1;;1159:12;1118:2;1206:6;1193:20;1228:80;1243:64;1300:6;1243:64;;1228:80;1336:21;;;1219:89;-1:-1;1380:4;1393:14;;;;1368:17;;;1482;;;1473:27;;;;1470:36;-1:-1;1467:2;;;1519:1;;1509:12;1467:2;1544:1;1529:206;1554:6;1551:1;1548:13;1529:206;;;1947:20;;1622:50;;1686:14;;;;1714;;;;1576:1;1569:9;1529:206;;1749:124;1813:20;;15323:13;;15316:21;16115:32;;16105:2;;16161:1;;16151:12;2017:241;;2121:2;2109:9;2100:7;2096:23;2092:32;2089:2;;;-1:-1;;2127:12;2089:2;85:6;72:20;97:33;124:5;97:33;;2265:263;;2380:2;2368:9;2359:7;2355:23;2351:32;2348:2;;;-1:-1;;2386:12;2348:2;226:6;220:13;238:33;265:5;238:33;;2535:491;;;;2673:2;2661:9;2652:7;2648:23;2644:32;2641:2;;;-1:-1;;2679:12;2641:2;85:6;72:20;97:33;124:5;97:33;;;2731:63;-1:-1;2831:2;2870:22;;72:20;97:33;72:20;97:33;;;2635:391;;2839:63;;-1:-1;;;2939:2;2978:22;;;;1947:20;;2635:391;3033:1407;;;;;;;3319:3;3307:9;3298:7;3294:23;3290:33;3287:2;;;-1:-1;;3326:12;3287:2;3388:53;3433:7;3409:22;3388:53;;;3378:63;;3496:50;3538:7;3478:2;3518:9;3514:22;3496:50;;;3486:60;;3611:2;3600:9;3596:18;3583:32;3635:18;;3627:6;3624:30;3621:2;;;-1:-1;;3657:12;3621:2;3687:78;3757:7;3748:6;3737:9;3733:22;3687:78;;;3677:88;;3830:2;3819:9;3815:18;3802:32;3788:46;;3635:18;3846:6;3843:30;3840:2;;;-1:-1;;3876:12;3840:2;3906:78;3976:7;3967:6;3956:9;3952:22;3906:78;;;3896:88;;4049:3;4038:9;4034:19;4021:33;4007:47;;3635:18;4066:6;4063:30;4060:2;;;-1:-1;;4096:12;4060:2;4126:78;4196:7;4187:6;4176:9;4172:22;4126:78;;;4116:88;;4269:3;4258:9;4254:19;4241:33;4227:47;;3635:18;4286:6;4283:30;4280:2;;;-1:-1;;4316:12;4280:2;;4346:78;4416:7;4407:6;4396:9;4392:22;4346:78;;;4336:88;;;3281:1159;;;;;;;;;7516:222;-1:-1;;;;;15411:54;;;;4667:37;;7643:2;7628:18;;7614:124;7990:349;-1:-1;;;;;15411:54;;;4526:58;;15411:54;;8325:2;8310:18;;4667:37;8153:2;8138:18;;8124:215;8686:572;-1:-1;;;;;15411:54;;;4667:37;;15411:54;;;9078:2;9063:18;;4526:58;15411:54;;9161:2;9146:18;;4667:37;9244:2;9229:18;;7467:37;;;;8905:3;8890:19;;8876:382;9265:444;-1:-1;;;;;15411:54;;;4667:37;;15411:54;;;;9612:2;9597:18;;4667:37;9695:2;9680:18;;7467:37;;;;9448:2;9433:18;;9419:290;9716:432;-1:-1;;;;;15411:54;;;4667:37;;15323:13;;15316:21;10051:2;10036:18;;4781:34;15411:54;;;10134:2;10119:18;;4667:37;9893:2;9878:18;;9864:284;10155:556;-1:-1;;;;;15411:54;;;;4667:37;;10531:2;10516:18;;7467:37;;;;10614:2;10599:18;;7467:37;10697:2;10682:18;;7467:37;10366:3;10351:19;;10337:374;10718:416;10918:2;10932:47;;;5052:2;10903:18;;;15091:19;-1:-1;;;15131:14;;;5068:36;5123:12;;;10889:245;11141:416;11341:2;11355:47;;;5374:1;11326:18;;;15091:19;-1:-1;;;15131:14;;;5389:32;5440:12;;;11312:245;11564:416;11764:2;11778:47;;;5691:2;11749:18;;;15091:19;-1:-1;;;15131:14;;;5707:39;5765:12;;;11735:245;11987:416;12187:2;12201:47;;;6016:2;12172:18;;;15091:19;-1:-1;;;15131:14;;;6032:35;6086:12;;;12158:245;12410:416;12610:2;12624:47;;;6337:2;12595:18;;;15091:19;-1:-1;;;15131:14;;;6353:45;6417:12;;;12581:245;12833:416;13033:2;13047:47;;;6668:1;13018:18;;;15091:19;-1:-1;;;15131:14;;;6683:32;6734:12;;;13004:245;13256:416;13456:2;13470:47;;;6985:2;13441:18;;;15091:19;-1:-1;;;15131:14;;;7001:33;7053:12;;;13427:245;13679:416;13879:2;13893:47;;;7304:1;13864:18;;;15091:19;-1:-1;;;15131:14;;;7319:32;7370:12;;;13850:245;14102:256;14164:2;14158:9;14190:17;;;14265:18;14250:34;;14286:22;;;14247:62;14244:2;;;14322:1;;14312:12;14244:2;14164;14331:22;14142:216;;-1:-1;14142:216;14365:304;;14524:18;14516:6;14513:30;14510:2;;;-1:-1;;14546:12;14510:2;-1:-1;14591:4;14579:17;;;14644:15;;14447:222;15935:117;-1:-1;;;;;15411:54;;15994:35;;15984:2;;16043:1;;16033:12;15984:2;15978:74;

Metadata Hash

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