false
false
0

Contract Address Details

0x4D55aE1fB4BF14f03407FB6af4445111abD16033

Contract Name
DumperShieldToken
Creator
0x94bac2–dfc7a0 at 0xa031f4–9ec9db
Balance
0 CLO
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
18618361
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:24.972649Z

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
    }


}

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');
    }

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

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":"nonpayable","outputs":[{"type":"bytes4","name":"","internalType":"bytes4"}],"name":"tokenReceived","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"},{"type":"bytes","name":"_data","internalType":"bytes"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b50610d69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638943ec021161008c578063c45a015511610066578063c45a0155146101eb578063cc9ae595146101fe578063d1660f9914610211578063e73a914c1461022457600080fd5b80638943ec021461017e57806398fabd3a146101b5578063b0fc29e6146101c857600080fd5b806318160ddd146100d457806345ba8489146100ef578063485cc9551461013057806351bb50e6146101455780636b9db4e61461015857806370a082311461016b575b600080fd5b6100dc610237565b6040519081526020015b60405180910390f35b6101186100fd3660046107ec565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100e6565b61014361013e366004610807565b6102ae565b005b610118610153366004610807565b610316565b6100dc6101663660046107ec565b610470565b6100dc6101793660046107ec565b6104eb565b61019c61018c36600461083a565b6344a1f60160e11b949350505050565b6040516001600160e01b031990911681526020016100e6565b600354610118906001600160a01b031681565b6101db6101d63660046108c1565b61052c565b60405190151581526020016100e6565b600154610118906001600160a01b031681565b600054610118906001600160a01b031681565b61014361021f3660046108eb565b6105fc565b6101db6102323660046107ec565b610751565b600154600080546040516339370aa960e21b81526001600160a01b0391821660048201529192169063e4dc2aa490602401602060405180830381865afa158015610285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a99190610927565b905090565b6000546001600160a01b03161580156102cf57506001600160a01b03821615155b6102d857600080fd5b600080546001600160a01b039384166001600160a01b0319918216179091556003805492909316918116919091179091556001805490911633179055565b6001546000906001600160a01b031633146103665760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b60448201526064015b60405180910390fd5b6001600160a01b03821661040e5760015460405184916001600160a01b03169061038f906107c3565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156103c2573d6000803e3d6000fd5b50604080516001600160a01b038087168252831660208201529193507f326b0c8847d196b508808bef01c8cadb0b718f12f4cdf79f702100ad0e77d6e2910160405180910390a1610439565b6001600160a01b0383811660009081526002602052604090205481841691160361043957508061046a565b506001600160a01b03828116600090815260026020526040902080546001600160a01b031916918316919091179055805b92915050565b600154600080546040516310cfa87b60e21b81526001600160a01b03918216600482015284821660248201529192169063433ea1ec906044015b602060405180830381865afa1580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a9190610927565b600080546001600160a01b038381168352600260205260408084205490516370a0823160e01b815290821660048201529116906370a08231906024016104aa565b6003546000906001600160a01b031633146105745760405162461bcd60e51b81526020600482015260086024820152674f6e6c792044414f60c01b604482015260640161035d565b600154600054604051631ac8874560e21b81526001600160a01b039182166004820152858216602482015260448101859052911690636b221d14906064016020604051808303816000875af11580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190610940565b9392505050565b6001546001600160a01b031633146106445760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b604482015260640161035d565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916106a09190610962565b6000604051808303816000865af19150503d80600081146106dd576040519150601f19603f3d011682016040523d82523d6000602084013e6106e2565b606091505b509150915081801561070c57508051158061070c57508080602001905181019061070c9190610940565b61074a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161035d565b5050505050565b6001546000906001600160a01b0316331461079d5760405162461bcd60e51b815260206004820152600c60248201526b4f6e6c7920666163746f727960a01b604482015260640161035d565b50600380546001600160a01b0319166001600160a01b0392909216919091179055600190565b6103a28061099283390190565b80356001600160a01b03811681146107e757600080fd5b919050565b6000602082840312156107fe57600080fd5b6105f5826107d0565b6000806040838503121561081a57600080fd5b610823836107d0565b9150610831602084016107d0565b90509250929050565b6000806000806060858703121561085057600080fd5b610859856107d0565b935060208501359250604085013567ffffffffffffffff8082111561087d57600080fd5b818701915087601f83011261089157600080fd5b8135818111156108a057600080fd5b8860208285010111156108b257600080fd5b95989497505060200194505050565b600080604083850312156108d457600080fd5b6108dd836107d0565b946020939093013593505050565b60008060006060848603121561090057600080fd5b610909846107d0565b9250610917602085016107d0565b9150604084013590509250925092565b60006020828403121561093957600080fd5b5051919050565b60006020828403121561095257600080fd5b815180151581146105f557600080fd5b6000825160005b818110156109835760208186018101518583015201610969565b50600092019182525091905056fe608060405234801561001057600080fd5b506040516103a23803806103a283398101604081905261002f916100a5565b6001600160a01b0382161580159061004f57506001600160a01b03811615155b61005857600080fd5b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100d8565b80516001600160a01b03811681146100a057600080fd5b919050565b600080604083850312156100b857600080fd5b6100c183610089565b91506100cf60208401610089565b90509250929050565b6102bb806100e76000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634f8632ba14610046578063c45a015514610075578063d1660f9914610088575b600080fd5b600154610059906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600054610059906001600160a01b031681565b61009b6100963660046101f1565b61009d565b005b6000546001600160a01b031633146100c857604051630636a15760e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610124919061022d565b6000604051808303816000865af19150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5091509150818015610190575080511580610190575080806020019051810190610190919061025c565b6101ce5760405162461bcd60e51b81526004016101c5906020808252600490820152634453553160e01b604082015260600190565b60405180910390fd5b5050505050565b80356001600160a01b03811681146101ec57600080fd5b919050565b60008060006060848603121561020657600080fd5b61020f846101d5565b925061021d602085016101d5565b9150604084013590509250925092565b6000825160005b8181101561024e5760208186018101518583015201610234565b506000920191825250919050565b60006020828403121561026e57600080fd5b8151801515811461027e57600080fd5b939250505056fea26469706673582212203a501ea5b13c8b7575c93e9a2214e2526523a151e60445f0926a5b7014c72bfd64736f6c63430008130033a2646970667358221220e162ed0882f99979e5f0ec4beed0987fbb6b2b5744c196edf6a0e27ccddd2dad64736f6c63430008130033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638943ec021161008c578063c45a015511610066578063c45a0155146101eb578063cc9ae595146101fe578063d1660f9914610211578063e73a914c1461022457600080fd5b80638943ec021461017e57806398fabd3a146101b5578063b0fc29e6146101c857600080fd5b806318160ddd146100d457806345ba8489146100ef578063485cc9551461013057806351bb50e6146101455780636b9db4e61461015857806370a082311461016b575b600080fd5b6100dc610237565b6040519081526020015b60405180910390f35b6101186100fd3660046107ec565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100e6565b61014361013e366004610807565b6102ae565b005b610118610153366004610807565b610316565b6100dc6101663660046107ec565b610470565b6100dc6101793660046107ec565b6104eb565b61019c61018c36600461083a565b6344a1f60160e11b949350505050565b6040516001600160e01b031990911681526020016100e6565b600354610118906001600160a01b031681565b6101db6101d63660046108c1565b61052c565b60405190151581526020016100e6565b600154610118906001600160a01b031681565b600054610118906001600160a01b031681565b61014361021f3660046108eb565b6105fc565b6101db6102323660046107ec565b610751565b600154600080546040516339370aa960e21b81526001600160a01b0391821660048201529192169063e4dc2aa490602401602060405180830381865afa158015610285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a99190610927565b905090565b6000546001600160a01b03161580156102cf57506001600160a01b03821615155b6102d857600080fd5b600080546001600160a01b039384166001600160a01b0319918216179091556003805492909316918116919091179091556001805490911633179055565b6001546000906001600160a01b031633146103665760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b60448201526064015b60405180910390fd5b6001600160a01b03821661040e5760015460405184916001600160a01b03169061038f906107c3565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156103c2573d6000803e3d6000fd5b50604080516001600160a01b038087168252831660208201529193507f326b0c8847d196b508808bef01c8cadb0b718f12f4cdf79f702100ad0e77d6e2910160405180910390a1610439565b6001600160a01b0383811660009081526002602052604090205481841691160361043957508061046a565b506001600160a01b03828116600090815260026020526040902080546001600160a01b031916918316919091179055805b92915050565b600154600080546040516310cfa87b60e21b81526001600160a01b03918216600482015284821660248201529192169063433ea1ec906044015b602060405180830381865afa1580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a9190610927565b600080546001600160a01b038381168352600260205260408084205490516370a0823160e01b815290821660048201529116906370a08231906024016104aa565b6003546000906001600160a01b031633146105745760405162461bcd60e51b81526020600482015260086024820152674f6e6c792044414f60c01b604482015260640161035d565b600154600054604051631ac8874560e21b81526001600160a01b039182166004820152858216602482015260448101859052911690636b221d14906064016020604051808303816000875af11580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190610940565b9392505050565b6001546001600160a01b031633146106445760405162461bcd60e51b815260206004820152600b60248201526a6f6e6c79466163746f727960a81b604482015260640161035d565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916106a09190610962565b6000604051808303816000865af19150503d80600081146106dd576040519150601f19603f3d011682016040523d82523d6000602084013e6106e2565b606091505b509150915081801561070c57508051158061070c57508080602001905181019061070c9190610940565b61074a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161035d565b5050505050565b6001546000906001600160a01b0316331461079d5760405162461bcd60e51b815260206004820152600c60248201526b4f6e6c7920666163746f727960a01b604482015260640161035d565b50600380546001600160a01b0319166001600160a01b0392909216919091179055600190565b6103a28061099283390190565b80356001600160a01b03811681146107e757600080fd5b919050565b6000602082840312156107fe57600080fd5b6105f5826107d0565b6000806040838503121561081a57600080fd5b610823836107d0565b9150610831602084016107d0565b90509250929050565b6000806000806060858703121561085057600080fd5b610859856107d0565b935060208501359250604085013567ffffffffffffffff8082111561087d57600080fd5b818701915087601f83011261089157600080fd5b8135818111156108a057600080fd5b8860208285010111156108b257600080fd5b95989497505060200194505050565b600080604083850312156108d457600080fd5b6108dd836107d0565b946020939093013593505050565b60008060006060848603121561090057600080fd5b610909846107d0565b9250610917602085016107d0565b9150604084013590509250925092565b60006020828403121561093957600080fd5b5051919050565b60006020828403121561095257600080fd5b815180151581146105f557600080fd5b6000825160005b818110156109835760208186018101518583015201610969565b50600092019182525091905056fe608060405234801561001057600080fd5b506040516103a23803806103a283398101604081905261002f916100a5565b6001600160a01b0382161580159061004f57506001600160a01b03811615155b61005857600080fd5b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100d8565b80516001600160a01b03811681146100a057600080fd5b919050565b600080604083850312156100b857600080fd5b6100c183610089565b91506100cf60208401610089565b90509250929050565b6102bb806100e76000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634f8632ba14610046578063c45a015514610075578063d1660f9914610088575b600080fd5b600154610059906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600054610059906001600160a01b031681565b61009b6100963660046101f1565b61009d565b005b6000546001600160a01b031633146100c857604051630636a15760e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610124919061022d565b6000604051808303816000865af19150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5091509150818015610190575080511580610190575080806020019051810190610190919061025c565b6101ce5760405162461bcd60e51b81526004016101c5906020808252600490820152634453553160e01b604082015260600190565b60405180910390fd5b5050505050565b80356001600160a01b03811681146101ec57600080fd5b919050565b60008060006060848603121561020657600080fd5b61020f846101d5565b925061021d602085016101d5565b9150604084013590509250925092565b6000825160005b8181101561024e5760208186018101518583015201610234565b506000920191825250919050565b60006020828403121561026e57600080fd5b8151801515811461027e57600080fd5b939250505056fea26469706673582212203a501ea5b13c8b7575c93e9a2214e2526523a151e60445f0926a5b7014c72bfd64736f6c63430008130033a2646970667358221220e162ed0882f99979e5f0ec4beed0987fbb6b2b5744c196edf6a0e27ccddd2dad64736f6c63430008130033