ETH Price: $3,393.77 (+1.30%)
Gas: 6 Gwei

Contract

0x10a49c54BAbEF0d39f5531F0D1a5d98fBe219c08
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...121380592021-03-30 3:03:051204 days ago1617073385IN
0x10a49c54...fBe219c08
0 ETH0.0044121137.5
Change Admin121380292021-03-30 2:56:281204 days ago1617072988IN
0x10a49c54...fBe219c08
0 ETH0.00614988132
Approve121345912021-03-29 14:04:351204 days ago1617026675IN
0x10a49c54...fBe219c08
0 ETH0.00401232156
Approve121345772021-03-29 14:02:181204 days ago1617026538IN
0x10a49c54...fBe219c08
0 ETH0.01481507163
Approve121345712021-03-29 14:00:551204 days ago1617026455IN
0x10a49c54...fBe219c08
0 ETH0.00838906161
Approve121344662021-03-29 13:37:061204 days ago1617025026IN
0x10a49c54...fBe219c08
0 ETH0.01299055155
Seti Tokens Rela...121344572021-03-29 13:35:051204 days ago1617024905IN
0x10a49c54...fBe219c08
0 ETH0.00761637154
Set Authority121344532021-03-29 13:33:551204 days ago1617024835IN
0x10a49c54...fBe219c08
0 ETH0.00728681154
Enable Tokens121344502021-03-29 13:33:341204 days ago1617024814IN
0x10a49c54...fBe219c08
0 ETH0.00691548141
Initialize121344412021-03-29 13:30:351204 days ago1617024635IN
0x10a49c54...fBe219c08
0 ETH0.017693137
0x60806040121343442021-03-29 13:09:401204 days ago1617023380IN
 Contract Creation
0 ETH0.07871875125

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xe3412D27...63a5Ee5Ff
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
DTokenProxy

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-03-29
*/

pragma solidity 0.5.12;

contract Proxy {
    function() external payable {
        _fallback();
    }

    function _implementation() internal view returns (address);

    function _delegate(address implementation) internal {
        assembly {
            calldatacopy(0, 0, calldatasize)

            let result := delegatecall(
                gas,
                implementation,
                0,
                calldatasize,
                0,
                0
            )
            returndatacopy(0, 0, returndatasize)

            switch result
                case 0 {
                    revert(0, returndatasize)
                }
                default {
                    return(0, returndatasize)
                }
        }
    }

    function _willFallback() internal {}

    function _fallback() internal {
        _willFallback();
        _delegate(_implementation());
    }
}

library AddressUtils {
    function isContract(address addr) internal view returns (bool) {
        uint256 size;

        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }
}

contract UpgradeabilityProxy is Proxy {
    event Upgraded(address implementation);

    bytes32
        private constant IMPLEMENTATION_SLOT = 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3;

    constructor(address _implementation) public {
        assert(
            IMPLEMENTATION_SLOT ==
                keccak256("org.zeppelinos.proxy.implementation")
        );

        _setImplementation(_implementation);
    }

    function _implementation() internal view returns (address impl) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        assembly {
            impl := sload(slot)
        }
    }

    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    function _setImplementation(address newImplementation) private {
        require(
            AddressUtils.isContract(newImplementation),
            "Cannot set a proxy implementation to a non-contract address"
        );

        bytes32 slot = IMPLEMENTATION_SLOT;

        assembly {
            sstore(slot, newImplementation)
        }
    }
}

contract AdminUpgradeabilityProxy is UpgradeabilityProxy {
    event AdminChanged(address previousAdmin, address newAdmin);
    event AdminUpdated(address newAdmin);

    bytes32
        private constant ADMIN_SLOT = 0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b;
    bytes32
        private constant PENDING_ADMIN_SLOT = 0x54ac2bd5363dfe95a011c5b5a153968d77d153d212e900afce8624fdad74525c;

    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    constructor(address _implementation)
        public
        UpgradeabilityProxy(_implementation)
    {
        assert(ADMIN_SLOT == keccak256("org.zeppelinos.proxy.admin"));

        _setAdmin(msg.sender);
    }

    function admin() external ifAdmin returns (address) {
        return _admin();
    }

    function pendingAdmin() external ifAdmin returns (address) {
        return _pendingAdmin();
    }

    function implementation() external ifAdmin returns (address) {
        return _implementation();
    }

    function changeAdmin(address _newAdmin) external ifAdmin {
        require(
            _newAdmin != address(0),
            "Cannot change the admin of a proxy to the zero address"
        );
        require(
            _newAdmin != _admin(),
            "The current and new admin cannot be the same ."
        );
        require(
            _newAdmin != _pendingAdmin(),
            "Cannot set the newAdmin of a proxy to the same address ."
        );
        _setPendingAdmin(_newAdmin);
        emit AdminChanged(_admin(), _newAdmin);
    }

    function updateAdmin() external {
        address _newAdmin = _pendingAdmin();
        require(
            _newAdmin != address(0),
            "Cannot change the admin of a proxy to the zero address"
        );
        require(
            msg.sender == _newAdmin,
            "msg.sender and newAdmin must be the same ."
        );
        _setAdmin(_newAdmin);
        _setPendingAdmin(address(0));
        emit AdminUpdated(_newAdmin);
    }

    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeTo(newImplementation);
    }

    function upgradeToAndCall(address newImplementation, bytes calldata data)
        external
        payable
        ifAdmin
    {
        _upgradeTo(newImplementation);
        (bool success, ) = address(this).call.value(msg.value)(data);
        require(success, "upgradeToAndCall-error");
    }

    function _admin() internal view returns (address adm) {
        bytes32 slot = ADMIN_SLOT;
        assembly {
            adm := sload(slot)
        }
    }

    function _pendingAdmin() internal view returns (address pendingAdm) {
        bytes32 slot = PENDING_ADMIN_SLOT;
        assembly {
            pendingAdm := sload(slot)
        }
    }

    function _setAdmin(address newAdmin) internal {
        bytes32 slot = ADMIN_SLOT;

        assembly {
            sstore(slot, newAdmin)
        }
    }

    function _setPendingAdmin(address pendingAdm) internal {
        bytes32 slot = PENDING_ADMIN_SLOT;

        assembly {
            sstore(slot, pendingAdm)
        }
    }

    function _willFallback() internal {
        require(
            msg.sender != _admin(),
            "Cannot call fallback function from the proxy admin"
        );
        super._willFallback();
    }
}

contract DTokenProxy is AdminUpgradeabilityProxy {
    constructor(address _implementation)
        public
        AdminUpgradeabilityProxy(_implementation)
    {}

    // Allow anyone to view the implementation address
    function dTokenImplementation() external view returns (address) {
        return _implementation();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dTokenImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]

Deployed Bytecode

0x60806040526004361061007b5760003560e01c80636a2848371161004e5780636a2848371461017e5780638f28397014610193578063d3b2f598146101c6578063f851a440146101db5761007b565b806326782247146100855780633659cfe6146100b65780634f1ef286146100e95780635c60da1b14610169575b6100836101f0565b005b34801561009157600080fd5b5061009a61020a565b604080516001600160a01b039092168252519081900360200190f35b3480156100c257600080fd5b50610083600480360360208110156100d957600080fd5b50356001600160a01b0316610247565b610083600480360360408110156100ff57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561012a57600080fd5b82018360208201111561013c57600080fd5b8035906020019184600183028401116401000000008311171561015e57600080fd5b509092509050610281565b34801561017557600080fd5b5061009a610372565b34801561018a57600080fd5b5061009a61039d565b34801561019f57600080fd5b50610083600480360360208110156101b657600080fd5b50356001600160a01b03166103ac565b3480156101d257600080fd5b5061008361051b565b3480156101e757600080fd5b5061009a610605565b6101f8610630565b610208610203610690565b6106b5565b565b60006102146106d9565b6001600160a01b0316336001600160a01b0316141561023c576102356106fe565b9050610244565b6102446101f0565b90565b61024f6106d9565b6001600160a01b0316336001600160a01b031614156102765761027181610723565b61027e565b61027e6101f0565b50565b6102896106d9565b6001600160a01b0316336001600160a01b03161415610365576102ab83610723565b6000306001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461030b576040519150601f19603f3d011682016040523d82523d6000602084013e610310565b606091505b505090508061035f576040805162461bcd60e51b81526020600482015260166024820152753ab833b930b232aa37a0b73221b0b63616b2b93937b960511b604482015290519081900360640190fd5b5061036d565b61036d6101f0565b505050565b600061037c6106d9565b6001600160a01b0316336001600160a01b0316141561023c57610235610690565b60006103a7610690565b905090565b6103b46106d9565b6001600160a01b0316336001600160a01b03161415610276576001600160a01b0381166104125760405162461bcd60e51b815260040180806020018281038252603681526020018061087e6036913960400191505060405180910390fd5b61041a6106d9565b6001600160a01b0316816001600160a01b0316141561046a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806108ef602e913960400191505060405180910390fd5b6104726106fe565b6001600160a01b0316816001600160a01b031614156104c25760405162461bcd60e51b815260040180806020018281038252603881526020018061091d6038913960400191505060405180910390fd5b6104cb8161076b565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f46106d9565b604080516001600160a01b03928316815291841660208301528051918290030190a161027e565b60006105256106fe565b90506001600160a01b03811661056c5760405162461bcd60e51b815260040180806020018281038252603681526020018061087e6036913960400191505060405180910390fd5b336001600160a01b038216146105b35760405162461bcd60e51b815260040180806020018281038252602a815260200180610822602a913960400191505060405180910390fd5b6105bc8161078f565b6105c6600061076b565b604080516001600160a01b038316815290517f54e4612788f90384e6843298d7854436f3a585b2c3831ab66abf1de63bfa6c2d9181900360200190a150565b600061060f6106d9565b6001600160a01b0316336001600160a01b0316141561023c576102356106d9565b6106386106d9565b6001600160a01b0316336001600160a01b031614156106885760405162461bcd60e51b815260040180806020018281038252603281526020018061084c6032913960400191505060405180910390fd5b610208610208565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b3660008037600080366000845af43d6000803e8080156106d4573d6000f35b3d6000fd5b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5490565b7f54ac2bd5363dfe95a011c5b5a153968d77d153d212e900afce8624fdad74525c5490565b61072c816107b3565b604080516001600160a01b038316815290517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9181900360200190a150565b7f54ac2bd5363dfe95a011c5b5a153968d77d153d212e900afce8624fdad74525c55565b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b55565b6107bc8161081b565b6107f75760405162461bcd60e51b815260040180806020018281038252603b8152602001806108b4603b913960400191505060405180910390fd5b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c355565b3b15159056fe6d73672e73656e64657220616e64206e657741646d696e206d757374206265207468652073616d65202e43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573735468652063757272656e7420616e64206e65772061646d696e2063616e6e6f74206265207468652073616d65202e43616e6e6f742073657420746865206e657741646d696e206f6620612070726f787920746f207468652073616d652061646472657373202ea265627a7a723158201d250b4abe3dfdc43dd4828b03b8496f0d6b055e1ceebbd3392a639e98f1c8c464736f6c634300050c0032

Deployed Bytecode Sourcemap

5866:341:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;88:11;:9;:11::i;:::-;5866:341;3244:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3244:100:0;;;:::i;:::-;;;;-1:-1:-1;;;;;3244:100:0;;;;;;;;;;;;;;4502:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4502:111:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4502:111:0;-1:-1:-1;;;;;4502:111:0;;:::i;4621:303::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;4621:303:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4621:303:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4621:303:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;4621:303:0;;-1:-1:-1;4621:303:0;-1:-1:-1;4621:303:0;:::i;3352:104::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3352:104:0;;;:::i;6097:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6097:107:0;;;:::i;3464:563::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3464:563:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3464:563:0;-1:-1:-1;;;;;3464:563:0;;:::i;4035:459::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4035:459:0;;;:::i;3150:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3150:86:0;;;:::i;838:103::-;879:15;:13;:15::i;:::-;905:28;915:17;:15;:17::i;:::-;905:9;:28::i;:::-;838:103::o;3244:100::-;3294:7;2827:8;:6;:8::i;:::-;-1:-1:-1;;;;;2813:22:0;:10;-1:-1:-1;;;;;2813:22:0;;2809:100;;;3321:15;:13;:15::i;:::-;3314:22;;2809:100;;;2886:11;:9;:11::i;:::-;3244:100;:::o;4502:111::-;2827:8;:6;:8::i;:::-;-1:-1:-1;;;;;2813:22:0;:10;-1:-1:-1;;;;;2813:22:0;;2809:100;;;4576:29;4587:17;4576:10;:29::i;:::-;2809:100;;;2886:11;:9;:11::i;:::-;4502:111;:::o;4621:303::-;2827:8;:6;:8::i;:::-;-1:-1:-1;;;;;2813:22:0;:10;-1:-1:-1;;;;;2813:22:0;;2809:100;;;4763:29;4774:17;4763:10;:29::i;:::-;4804:12;4830:4;-1:-1:-1;;;;;4822:18:0;4847:9;4858:4;;4822:41;;;;;30:3:-1;22:6;14;1:33;4822:41:0;;45:16:-1;;;-1:-1;4822:41:0;;-1:-1:-1;4822:41:0;;-1:-1:-1;;4822:41:0;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4803:60:0;;;4882:7;4874:42;;;;;-1:-1:-1;;;4874:42:0;;;;;;;;;;;;-1:-1:-1;;;4874:42:0;;;;;;;;;;;;;;;2852:1;2809:100;;;2886:11;:9;:11::i;:::-;4621:303;;;:::o;3352:104::-;3404:7;2827:8;:6;:8::i;:::-;-1:-1:-1;;;;;2813:22:0;:10;-1:-1:-1;;;;;2813:22:0;;2809:100;;;3431:17;:15;:17::i;6097:107::-;6152:7;6179:17;:15;:17::i;:::-;6172:24;;6097:107;:::o;3464:563::-;2827:8;:6;:8::i;:::-;-1:-1:-1;;;;;2813:22:0;:10;-1:-1:-1;;;;;2813:22:0;;2809:100;;;-1:-1:-1;;;;;3554:23:0;;3532:127;;;;-1:-1:-1;;;3532:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:8;:6;:8::i;:::-;-1:-1:-1;;;;;3692:21:0;:9;-1:-1:-1;;;;;3692:21:0;;;3670:117;;;;-1:-1:-1;;;3670:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3833:15;:13;:15::i;:::-;-1:-1:-1;;;;;3820:28:0;:9;-1:-1:-1;;;;;3820:28:0;;;3798:134;;;;-1:-1:-1;;;3798:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3943:27;3960:9;3943:16;:27::i;:::-;3986:33;3999:8;:6;:8::i;:::-;3986:33;;;-1:-1:-1;;;;;3986:33:0;;;;;;;;;;;;;;;;;;;;;2809:100;;4035:459;4078:17;4098:15;:13;:15::i;:::-;4078:35;-1:-1:-1;;;;;;4146:23:0;;4124:127;;;;-1:-1:-1;;;4124:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4284:10;-1:-1:-1;;;;;4284:23:0;;;4262:115;;;;-1:-1:-1;;;4262:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4388:20;4398:9;4388;:20::i;:::-;4419:28;4444:1;4419:16;:28::i;:::-;4463:23;;;-1:-1:-1;;;;;4463:23:0;;;;;;;;;;;;;;;4035:459;:::o;3150:86::-;3193:7;2827:8;:6;:8::i;:::-;-1:-1:-1;;;;;2813:22:0;:10;-1:-1:-1;;;;;2813:22:0;;2809:100;;;3220:8;:6;:8::i;5652:207::-;5733:8;:6;:8::i;:::-;-1:-1:-1;;;;;5719:22:0;:10;-1:-1:-1;;;;;5719:22:0;;;5697:122;;;;-1:-1:-1;;;5697:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5830:21;:19;:21::i;1637:181::-;1323:66;1789:11;;1766:45::o;182:604::-;288:12;285:1;282;269:32;488:1;468;437:12;417:1;384:14;362:3;331:173;539:14;536:1;533;518:36;577:6;601:74;;;;734:14;731:1;724:25;601:74;641:14;638:1;631:25;4932:161;2576:66;5064:11;;5042:44::o;5101:190::-;2704:66;5262:11;;5233:51::o;1826:155::-;1893:37;1912:17;1893:18;:37::i;:::-;1946:27;;;-1:-1:-1;;;;;1946:27:0;;;;;;;;;;;;;;;1826:155;:::o;5466:178::-;2704:66;5602:24;5587:50::o;5299:159::-;2576:66;5418:22;5403:48::o;1989:358::-;2085:42;2109:17;2085:23;:42::i;:::-;2063:151;;;;-1:-1:-1;;;2063:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1323:66;2298:31;2283:57::o;976:192::-;1107:17;1152:8;;;976:192::o

Swarm Source

bzzr://1d250b4abe3dfdc43dd4828b03b8496f0d6b055e1ceebbd3392a639e98f1c8c4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.