false
true
0

Contract Address Details

0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619

Contract Name
DODOApproveProxy
Creator
0x16cc37–396a2b at 0x4a4483–a63916
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
1 Transactions
Transfers
0 Transfers
Gas Used
108,284
Last Balance Update
26318707
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
DODOApproveProxy




Optimization enabled
true
Compiler version
v0.6.9+commit.3e3065ac




Optimization runs
200
EVM Version
istanbul




Verified at
2026-04-18T21:34:11.393031Z

Constructor Arguments

000000000000000000000000cb859ea579b28e02b87a1fde08d087ab9dbe5149

Arg [0] (address) : 0xcb859ea579b28e02b87a1fde08d087ab9dbe5149

              

DODOApproveProxy.sol

// File: contracts/intf/IDODOApprove.sol

/*

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

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

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

// File: contracts/lib/InitializableOwnable.sol


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

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"DODOApproveProxy.sol":"DODOApproveProxy"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"dodoApporve","internalType":"address"}]},{"type":"event","name":"OwnershipTransferPrepared","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_DODO_APPROVE_","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"_IS_ALLOWED_PROXY_","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_NEW_OWNER_","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_OWNER_","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_PENDING_ADD_DODO_PROXY_","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_TIMELOCK_","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"addDODOProxy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimTokens","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"who","internalType":"address"},{"type":"address","name":"dest","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"init","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address[]","name":"proxies","internalType":"address[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initOwner","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isAllowedProxy","inputs":[{"type":"address","name":"_proxy","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"lockAddProxy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"removeDODOProxy","inputs":[{"type":"address","name":"oldDodoProxy","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unlockAddProxy","inputs":[{"type":"address","name":"newDodoProxy","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x60a060405234801561001057600080fd5b50604051610a34380380610a3483398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6109a06100946000398061025e52806104d852506109a06000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806346e74298116100975780638456db15116100665780638456db15146101d7578063b75dbf68146101df578063cc646ed4146101f4578063f2fde38b146101fc57610100565b806346e74298146101ac57806348a4f993146101b45780634e71e0c8146101c7578063556d65a8146101cf57610100565b8063374445b2116100d3578063374445b21461015e5780633b2f27bb146101715780633c5a3cea146101915780633e688589146101a457610100565b80630a5ea466146101055780630d0092971461011a57806316048bc41461012d5780632c419f2f1461014b575b600080fd5b6101186101133660046106cf565b61020f565b005b6101186101283660046106ad565b6102d1565b610135610331565b60405161014291906107d3565b60405180910390f35b6101186101593660046106ad565b610340565b61011861016c3660046106ad565b61038b565b61018461017f3660046106ad565b6103e0565b6040516101429190610811565b61011861019f36600461071f565b6103f5565b61011861045b565b6101356104d6565b6101846101c23660046106ad565b6104fa565b610118610518565b6101186105a6565b6101356105e7565b6101e76105f6565b6040516101429190610902565b6101356105fc565b61011861020a3660046106ad565b61060b565b3360009081526002602052604090205460ff166102475760405162461bcd60e51b815260040161023e9061089d565b60405180910390fd5b60405163052f523360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea466906102999087908790879087906004016107e7565b600060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b5050505050505050565b600154600160a01b900460ff16156102fb5760405162461bcd60e51b815260040161023e90610873565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b6000546001600160a01b0316331461036a5760405162461bcd60e51b815260040161023e906108df565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b031633146103b55760405162461bcd60e51b815260040161023e906108df565b6203f4804201600355600480546001600160a01b0319166001600160a01b0392909216919091179055565b60026020526000908152604090205460ff1681565b6103fe826102d1565b60005b81518110156104565760016002600084848151811061041c57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610401565b505050565b6000546001600160a01b031633146104855760405162461bcd60e51b815260040161023e906108df565b4260035411156104a75760405162461bcd60e51b815260040161023e90610843565b6004546001600160a01b03166000908152600260205260409020805460ff191660011790556104d46105a6565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b031660009081526002602052604090205460ff1690565b6001546001600160a01b031633146105425760405162461bcd60e51b815260040161023e9061081c565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146105d05760405162461bcd60e51b815260040161023e906108df565b600480546001600160a01b03191690556000600355565b6001546001600160a01b031681565b60035481565b6004546001600160a01b031681565b6000546001600160a01b031633146106355760405162461bcd60e51b815260040161023e906108df565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b03811681146106a757600080fd5b92915050565b6000602082840312156106be578081fd5b6106c88383610690565b9392505050565b600080600080608085870312156106e4578283fd5b84356106ef81610952565b935060208501356106ff81610952565b9250604085013561070f81610952565b9396929550929360600135925050565b60008060408385031215610731578182fd5b61073b8484610690565b915060208084013567ffffffffffffffff811115610757578283fd5b80850186601f820112610768578384fd5b8035915061077d61077883610932565b61090b565b82815283810190828501858502840186018a1015610799578687fd5b8693505b848410156107c3576107af8a82610690565b83526001939093019291850191850161079d565b5080955050505050509250929050565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b901515815260200190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526016908201527514d95d141c9bde1e481a5cc81d1a5b595b1bd8dad95960521b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b60208082526022908201527f444f444f417070726f766550726f78793a416363657373207265737472696374604082015261195960f21b606082015260800190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561092a57600080fd5b604052919050565b600067ffffffffffffffff821115610948578081fd5b5060209081020190565b6001600160a01b038116811461096757600080fd5b5056fea2646970667358221220e1a12024fe8718b070ee978a035e9f7596fcdfe480e8d4ed33fe7740ace0cda264736f6c63430006090033000000000000000000000000cb859ea579b28e02b87a1fde08d087ab9dbe5149

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806346e74298116100975780638456db15116100665780638456db15146101d7578063b75dbf68146101df578063cc646ed4146101f4578063f2fde38b146101fc57610100565b806346e74298146101ac57806348a4f993146101b45780634e71e0c8146101c7578063556d65a8146101cf57610100565b8063374445b2116100d3578063374445b21461015e5780633b2f27bb146101715780633c5a3cea146101915780633e688589146101a457610100565b80630a5ea466146101055780630d0092971461011a57806316048bc41461012d5780632c419f2f1461014b575b600080fd5b6101186101133660046106cf565b61020f565b005b6101186101283660046106ad565b6102d1565b610135610331565b60405161014291906107d3565b60405180910390f35b6101186101593660046106ad565b610340565b61011861016c3660046106ad565b61038b565b61018461017f3660046106ad565b6103e0565b6040516101429190610811565b61011861019f36600461071f565b6103f5565b61011861045b565b6101356104d6565b6101846101c23660046106ad565b6104fa565b610118610518565b6101186105a6565b6101356105e7565b6101e76105f6565b6040516101429190610902565b6101356105fc565b61011861020a3660046106ad565b61060b565b3360009081526002602052604090205460ff166102475760405162461bcd60e51b815260040161023e9061089d565b60405180910390fd5b60405163052f523360e11b81526001600160a01b037f000000000000000000000000cb859ea579b28e02b87a1fde08d087ab9dbe51491690630a5ea466906102999087908790879087906004016107e7565b600060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b5050505050505050565b600154600160a01b900460ff16156102fb5760405162461bcd60e51b815260040161023e90610873565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b6000546001600160a01b0316331461036a5760405162461bcd60e51b815260040161023e906108df565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b031633146103b55760405162461bcd60e51b815260040161023e906108df565b6203f4804201600355600480546001600160a01b0319166001600160a01b0392909216919091179055565b60026020526000908152604090205460ff1681565b6103fe826102d1565b60005b81518110156104565760016002600084848151811061041c57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610401565b505050565b6000546001600160a01b031633146104855760405162461bcd60e51b815260040161023e906108df565b4260035411156104a75760405162461bcd60e51b815260040161023e90610843565b6004546001600160a01b03166000908152600260205260409020805460ff191660011790556104d46105a6565b565b7f000000000000000000000000cb859ea579b28e02b87a1fde08d087ab9dbe514981565b6001600160a01b031660009081526002602052604090205460ff1690565b6001546001600160a01b031633146105425760405162461bcd60e51b815260040161023e9061081c565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146105d05760405162461bcd60e51b815260040161023e906108df565b600480546001600160a01b03191690556000600355565b6001546001600160a01b031681565b60035481565b6004546001600160a01b031681565b6000546001600160a01b031633146106355760405162461bcd60e51b815260040161023e906108df565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b03811681146106a757600080fd5b92915050565b6000602082840312156106be578081fd5b6106c88383610690565b9392505050565b600080600080608085870312156106e4578283fd5b84356106ef81610952565b935060208501356106ff81610952565b9250604085013561070f81610952565b9396929550929360600135925050565b60008060408385031215610731578182fd5b61073b8484610690565b915060208084013567ffffffffffffffff811115610757578283fd5b80850186601f820112610768578384fd5b8035915061077d61077883610932565b61090b565b82815283810190828501858502840186018a1015610799578687fd5b8693505b848410156107c3576107af8a82610690565b83526001939093019291850191850161079d565b5080955050505050509250929050565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b901515815260200190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526016908201527514d95d141c9bde1e481a5cc81d1a5b595b1bd8dad95960521b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b60208082526022908201527f444f444f417070726f766550726f78793a416363657373207265737472696374604082015261195960f21b606082015260800190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561092a57600080fd5b604052919050565b600067ffffffffffffffff821115610948578081fd5b5060209081020190565b6001600160a01b038116811461096757600080fd5b5056fea2646970667358221220e1a12024fe8718b070ee978a035e9f7596fcdfe480e8d4ed33fe7740ace0cda264736f6c63430006090033