false
false
0

Contract Address Details

0x0f226B0acB4A0E3ed33A9E8242F106599883c601

Contract Name
DumperShieldToken
Creator
0x94bac2–dfc7a0 at 0x468c82–12feb8
Balance
0 CLO
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
18628161
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
DumperShieldToken




Optimization enabled
true
Compiler version
v0.8.19+commit.7dd6d404




Optimization runs
200
EVM Version
default




Verified at
2024-09-26T15:31:23.184546Z

Contract source code

// Copyright (c) [2023], [Qwantum Finance Labs]
// All rights reserved.
// SPDX-License-Identifier: No License (None)
pragma solidity ^0.8.0;

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

interface IDSFactory {
    function totalSupply(address token) external view returns (uint256);
    function getLock(address token, address user) external view returns(uint256);
    function setLock(address token, address user, uint256 time) external returns(bool);
}

contract DumperShieldUser {

    address public factory; // dumper shield factory
    address public user;
    error OnlyFactory();
/*
    address public dumperShield;
    modifier onlyDumperShield() {
        require(dumperShield == msg.sender, "Only dumperShield allowed");
        _;
    }
*/
    modifier onlyFactory() {
        if (factory != msg.sender) revert OnlyFactory();
        _;
    }

    constructor (address _user, address _factory) {
        require(_user != address(0) && _factory != address(0));
        user = _user;
        factory = _factory;
    }

    function safeTransfer(address token, address to, uint value) external onlyFactory {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'DSU1'); //DumperShieldUser: TRANSFER_FAILED
    }

    function tokenReceived(address, uint, bytes calldata) external pure returns(bytes4) {
        return this.tokenReceived.selector;
    }
}

contract DumperShieldToken {
    IERC20 public shieldedToken;   // address of shielded token
    address public factory; // dumper shield factory
    //address public router;
    mapping(address => address) public dumperShieldUsers;   // user address => DumperShieldUser contract
    address public DAO; // address of global voting contract

    event CreateDumperShieldUser(address user, address dsUserContract);

    modifier onlyFactory() {
        require(factory == msg.sender, "onlyFactory");
        _;
    }

    function initialize(address _token, address _dao) external {
        require(address(shieldedToken) == address(0) && _token != address(0));
        shieldedToken = IERC20(_token);
        DAO = _dao;
        //router = _router;
        factory = msg.sender;
    }
    /**
     * @dev Gets the balance of the specified address.
     * @param user The address to query the the balance of.
     * @return balance an uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address user) external view returns (uint256 balance) {
        return shieldedToken.balanceOf(dumperShieldUsers[user]);
    }

    // returns DumperShieldUser contract address. If user has not contract - create it.
    function createDumperShieldUser(address user, address dsUser) external onlyFactory returns(address) {

        if (dsUser == address(0)) {
            dsUser = address(new DumperShieldUser(user, factory));
            emit CreateDumperShieldUser(user, dsUser);
        } else if (dumperShieldUsers[user] == dsUser) {
            return dsUser;
        }
        dumperShieldUsers[user] = dsUser;
        return dsUser;
    }

    function totalSupply() external view returns (uint256) {
        return IDSFactory(factory).totalSupply(address(shieldedToken));
    }

    function setLock(address user, uint256 time) external returns(bool) {
        require(msg.sender == DAO, "Only DAO");
        return IDSFactory(factory).setLock(address(shieldedToken), user, time);
    }

    function getLock(address user) external view returns(uint256) {
        return IDSFactory(factory).getLock(address(shieldedToken),user);
    }

    function setDAO(address _dao) external returns (bool) {
        require(msg.sender == factory, "Only factory");
        DAO = _dao;
        return true;
    }

    // allow to rescue tokens that were transferet to this contract by mistake
    function safeTransfer(address token, address to, uint value) external onlyFactory {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TRANSFER_FAILED');
    }
}
        

Contract ABI

[{"type":"event","name":"CreateDumperShieldUser","inputs":[{"type":"address","name":"user","internalType":"address","indexed":false},{"type":"address","name":"dsUserContract","internalType":"address","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"DAO","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"balance","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"user","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"createDumperShieldUser","inputs":[{"type":"address","name":"user","internalType":"address"},{"type":"address","name":"dsUser","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"dumperShieldUsers","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"factory","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getLock","inputs":[{"type":"address","name":"user","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"_dao","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransfer","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"setDAO","inputs":[{"type":"address","name":"_dao","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"setLock","inputs":[{"type":"address","name":"user","internalType":"address"},{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"shieldedToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b50610d5a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806398fabd3a1161007157806398fabd3a14610163578063b0fc29e614610176578063c45a015514610199578063cc9ae595146101ac578063d1660f99146101bf578063e73a914c146101d257600080fd5b806318160ddd146100b957806345ba8489146100d4578063485cc9551461011557806351bb50e61461012a5780636b9db4e61461013d57806370a0823114610150575b600080fd5b6100c16101e5565b6040519081526020015b60405180910390f35b6100fd6100e236600461079a565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b6101286101233660046107b5565b61025c565b005b6100fd6101383660046107b5565b6102c4565b6100c161014b36600461079a565b61041e565b6100c161015e36600461079a565b610499565b6003546100fd906001600160a01b031681565b6101896101843660046107e8565b6104da565b60405190151581526020016100cb565b6001546100fd906001600160a01b031681565b6000546100fd906001600160a01b031681565b6101286101cd366004610812565b6105aa565b6101896101e036600461079a565b6106ff565b600154600080546040516339370aa960e21b81526001600160a01b0391821660048201529192169063e4dc2aa490602401602060405180830381865afa158015610233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610257919061084e565b905090565b6000546001600160a01b031615801561027d57506001600160a01b03821615155b61028657600080fd5b600080546001600160a01b039384166001600160a01b0319918216179091556003805492909316918116919091179091556001805490911633179055565b6001546000906001600160a01b031633146103145760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b60448201526064015b60405180910390fd5b6001600160a01b0382166103bc5760015460405184916001600160a01b03169061033d90610771565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610370573d6000803e3d6000fd5b50604080516001600160a01b038087168252831660208201529193507f326b0c8847d196b508808bef01c8cadb0b718f12f4cdf79f702100ad0e77d6e2910160405180910390a16103e7565b6001600160a01b038381166000908152600260205260409020548184169116036103e7575080610418565b506001600160a01b03828116600090815260026020526040902080546001600160a01b031916918316919091179055805b92915050565b600154600080546040516310cfa87b60e21b81526001600160a01b03918216600482015284821660248201529192169063433ea1ec906044015b602060405180830381865afa158015610475573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610418919061084e565b600080546001600160a01b038381168352600260205260408084205490516370a0823160e01b815290821660048201529116906370a0823190602401610458565b6003546000906001600160a01b031633146105225760405162461bcd60e51b81526020600482015260086024820152674f6e6c792044414f60c01b604482015260640161030b565b600154600054604051631ac8874560e21b81526001600160a01b039182166004820152858216602482015260448101859052911690636b221d14906064016020604051808303816000875af115801561057f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a39190610867565b9392505050565b6001546001600160a01b031633146105f25760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b604482015260640161030b565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161064e9190610889565b6000604051808303816000865af19150503d806000811461068b576040519150601f19603f3d011682016040523d82523d6000602084013e610690565b606091505b50915091508180156106ba5750805115806106ba5750808060200190518101906106ba9190610867565b6106f85760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161030b565b5050505050565b6001546000906001600160a01b0316331461074b5760405162461bcd60e51b815260206004820152600c60248201526b4f6e6c7920666163746f727960a01b604482015260640161030b565b50600380546001600160a01b0319166001600160a01b0392909216919091179055600190565b61046c806108b983390190565b80356001600160a01b038116811461079557600080fd5b919050565b6000602082840312156107ac57600080fd5b6105a38261077e565b600080604083850312156107c857600080fd5b6107d18361077e565b91506107df6020840161077e565b90509250929050565b600080604083850312156107fb57600080fd5b6108048361077e565b946020939093013593505050565b60008060006060848603121561082757600080fd5b6108308461077e565b925061083e6020850161077e565b9150604084013590509250925092565b60006020828403121561086057600080fd5b5051919050565b60006020828403121561087957600080fd5b815180151581146105a357600080fd5b6000825160005b818110156108aa5760208186018101518583015201610890565b50600092019182525091905056fe608060405234801561001057600080fd5b5060405161046c38038061046c83398101604081905261002f916100a5565b6001600160a01b0382161580159061004f57506001600160a01b03811615155b61005857600080fd5b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100d8565b80516001600160a01b03811681146100a057600080fd5b919050565b600080604083850312156100b857600080fd5b6100c183610089565b91506100cf60208401610089565b90509250929050565b610385806100e76000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634f8632ba146100515780638943ec0214610081578063c45a0155146100b8578063d1660f99146100cb575b600080fd5b600154610064906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f61008f366004610234565b6344a1f60160e11b949350505050565b6040516001600160e01b03199091168152602001610078565b600054610064906001600160a01b031681565b6100de6100d93660046102bb565b6100e0565b005b6000546001600160a01b0316331461010b57604051630636a15760e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161016791906102f7565b6000604051808303816000865af19150503d80600081146101a4576040519150601f19603f3d011682016040523d82523d6000602084013e6101a9565b606091505b50915091508180156101d35750805115806101d35750808060200190518101906101d39190610326565b6102115760405162461bcd60e51b8152600401610208906020808252600490820152634453553160e01b604082015260600190565b60405180910390fd5b5050505050565b80356001600160a01b038116811461022f57600080fd5b919050565b6000806000806060858703121561024a57600080fd5b61025385610218565b935060208501359250604085013567ffffffffffffffff8082111561027757600080fd5b818701915087601f83011261028b57600080fd5b81358181111561029a57600080fd5b8860208285010111156102ac57600080fd5b95989497505060200194505050565b6000806000606084860312156102d057600080fd5b6102d984610218565b92506102e760208501610218565b9150604084013590509250925092565b6000825160005b8181101561031857602081860181015185830152016102fe565b506000920191825250919050565b60006020828403121561033857600080fd5b8151801515811461034857600080fd5b939250505056fea2646970667358221220fcd69f300d44341dea4eeacad83f40c2e3f08880767792a0401c85baead5b10464736f6c63430008130033a26469706673582212205ca45ec83ab81ceebd0fadb10a49a9cf1a4d728bbd406299e2f3cd5ab3c7e25064736f6c63430008130033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806398fabd3a1161007157806398fabd3a14610163578063b0fc29e614610176578063c45a015514610199578063cc9ae595146101ac578063d1660f99146101bf578063e73a914c146101d257600080fd5b806318160ddd146100b957806345ba8489146100d4578063485cc9551461011557806351bb50e61461012a5780636b9db4e61461013d57806370a0823114610150575b600080fd5b6100c16101e5565b6040519081526020015b60405180910390f35b6100fd6100e236600461079a565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b6101286101233660046107b5565b61025c565b005b6100fd6101383660046107b5565b6102c4565b6100c161014b36600461079a565b61041e565b6100c161015e36600461079a565b610499565b6003546100fd906001600160a01b031681565b6101896101843660046107e8565b6104da565b60405190151581526020016100cb565b6001546100fd906001600160a01b031681565b6000546100fd906001600160a01b031681565b6101286101cd366004610812565b6105aa565b6101896101e036600461079a565b6106ff565b600154600080546040516339370aa960e21b81526001600160a01b0391821660048201529192169063e4dc2aa490602401602060405180830381865afa158015610233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610257919061084e565b905090565b6000546001600160a01b031615801561027d57506001600160a01b03821615155b61028657600080fd5b600080546001600160a01b039384166001600160a01b0319918216179091556003805492909316918116919091179091556001805490911633179055565b6001546000906001600160a01b031633146103145760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b60448201526064015b60405180910390fd5b6001600160a01b0382166103bc5760015460405184916001600160a01b03169061033d90610771565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610370573d6000803e3d6000fd5b50604080516001600160a01b038087168252831660208201529193507f326b0c8847d196b508808bef01c8cadb0b718f12f4cdf79f702100ad0e77d6e2910160405180910390a16103e7565b6001600160a01b038381166000908152600260205260409020548184169116036103e7575080610418565b506001600160a01b03828116600090815260026020526040902080546001600160a01b031916918316919091179055805b92915050565b600154600080546040516310cfa87b60e21b81526001600160a01b03918216600482015284821660248201529192169063433ea1ec906044015b602060405180830381865afa158015610475573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610418919061084e565b600080546001600160a01b038381168352600260205260408084205490516370a0823160e01b815290821660048201529116906370a0823190602401610458565b6003546000906001600160a01b031633146105225760405162461bcd60e51b81526020600482015260086024820152674f6e6c792044414f60c01b604482015260640161030b565b600154600054604051631ac8874560e21b81526001600160a01b039182166004820152858216602482015260448101859052911690636b221d14906064016020604051808303816000875af115801561057f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a39190610867565b9392505050565b6001546001600160a01b031633146105f25760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b604482015260640161030b565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161064e9190610889565b6000604051808303816000865af19150503d806000811461068b576040519150601f19603f3d011682016040523d82523d6000602084013e610690565b606091505b50915091508180156106ba5750805115806106ba5750808060200190518101906106ba9190610867565b6106f85760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161030b565b5050505050565b6001546000906001600160a01b0316331461074b5760405162461bcd60e51b815260206004820152600c60248201526b4f6e6c7920666163746f727960a01b604482015260640161030b565b50600380546001600160a01b0319166001600160a01b0392909216919091179055600190565b61046c806108b983390190565b80356001600160a01b038116811461079557600080fd5b919050565b6000602082840312156107ac57600080fd5b6105a38261077e565b600080604083850312156107c857600080fd5b6107d18361077e565b91506107df6020840161077e565b90509250929050565b600080604083850312156107fb57600080fd5b6108048361077e565b946020939093013593505050565b60008060006060848603121561082757600080fd5b6108308461077e565b925061083e6020850161077e565b9150604084013590509250925092565b60006020828403121561086057600080fd5b5051919050565b60006020828403121561087957600080fd5b815180151581146105a357600080fd5b6000825160005b818110156108aa5760208186018101518583015201610890565b50600092019182525091905056fe608060405234801561001057600080fd5b5060405161046c38038061046c83398101604081905261002f916100a5565b6001600160a01b0382161580159061004f57506001600160a01b03811615155b61005857600080fd5b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100d8565b80516001600160a01b03811681146100a057600080fd5b919050565b600080604083850312156100b857600080fd5b6100c183610089565b91506100cf60208401610089565b90509250929050565b610385806100e76000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634f8632ba146100515780638943ec0214610081578063c45a0155146100b8578063d1660f99146100cb575b600080fd5b600154610064906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f61008f366004610234565b6344a1f60160e11b949350505050565b6040516001600160e01b03199091168152602001610078565b600054610064906001600160a01b031681565b6100de6100d93660046102bb565b6100e0565b005b6000546001600160a01b0316331461010b57604051630636a15760e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161016791906102f7565b6000604051808303816000865af19150503d80600081146101a4576040519150601f19603f3d011682016040523d82523d6000602084013e6101a9565b606091505b50915091508180156101d35750805115806101d35750808060200190518101906101d39190610326565b6102115760405162461bcd60e51b8152600401610208906020808252600490820152634453553160e01b604082015260600190565b60405180910390fd5b5050505050565b80356001600160a01b038116811461022f57600080fd5b919050565b6000806000806060858703121561024a57600080fd5b61025385610218565b935060208501359250604085013567ffffffffffffffff8082111561027757600080fd5b818701915087601f83011261028b57600080fd5b81358181111561029a57600080fd5b8860208285010111156102ac57600080fd5b95989497505060200194505050565b6000806000606084860312156102d057600080fd5b6102d984610218565b92506102e760208501610218565b9150604084013590509250925092565b6000825160005b8181101561031857602081860181015185830152016102fe565b506000920191825250919050565b60006020828403121561033857600080fd5b8151801515811461034857600080fd5b939250505056fea2646970667358221220fcd69f300d44341dea4eeacad83f40c2e3f08880767792a0401c85baead5b10464736f6c63430008130033a26469706673582212205ca45ec83ab81ceebd0fadb10a49a9cf1a4d728bbd406299e2f3cd5ab3c7e25064736f6c63430008130033