ETH Price: $2,163.04 (-7.25%)

Contract

0x21C0c111E0468BA83c5192130e887EB02384DF23
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute90161942019-11-28 15:29:491918 days ago1574954989IN
DSProxy #6,513
1 ETH0.0059433810
Execute89949122019-11-24 22:14:201922 days ago1574633660IN
DSProxy #6,513
0 ETH0.000396642
Execute89941722019-11-24 19:25:231922 days ago1574623523IN
DSProxy #6,513
0 ETH0.000214211
Execute89940222019-11-24 18:51:421922 days ago1574621502IN
DSProxy #6,513
0 ETH0.000213141
Execute89936552019-11-24 17:21:031922 days ago1574616063IN
DSProxy #6,513
0 ETH0.000635153
Execute89537412019-11-18 1:30:281929 days ago1574040628IN
DSProxy #6,513
0 ETH0.000429032
Execute88862882019-11-06 22:04:211940 days ago1573077861IN
DSProxy #6,513
0 ETH0.000214581
Execute87971472019-10-23 14:07:321954 days ago1571839652IN
DSProxy #6,513
0 ETH0.0036223717
Execute87971412019-10-23 14:06:021954 days ago1571839562IN
DSProxy #6,513
0 ETH0.003628817
Execute83584232019-08-16 1:00:412023 days ago1565917241IN
DSProxy #6,513
2 ETH0.000173571
Execute83258622019-08-10 23:38:312028 days ago1565480311IN
DSProxy #6,513
2 ETH0.000173571
Execute83258422019-08-10 23:34:052028 days ago1565480045IN
DSProxy #6,513
0 ETH0.000214191
Execute81637602019-07-16 19:34:042053 days ago1563305644IN
DSProxy #6,513
3 ETH0.003471520
Execute81636842019-07-16 19:13:462053 days ago1563304426IN
DSProxy #6,513
0.07 ETH0.0036450721
Execute81504842019-07-14 17:21:062055 days ago1563124866IN
DSProxy #6,513
3.4 ETH0.000173571
Execute81504182019-07-14 17:07:432055 days ago1563124063IN
DSProxy #6,513
0 ETH0.000172881
Execute81503022019-07-14 16:37:582055 days ago1563122278IN
DSProxy #6,513
4.4 ETH0.000173571
Execute81495162019-07-14 13:37:342055 days ago1563111454IN
DSProxy #6,513
2.04 ETH0.000173571
Execute81494502019-07-14 13:23:522055 days ago1563110632IN
DSProxy #6,513
0 ETH0.00046713
Execute81494102019-07-14 13:15:222055 days ago1563110122IN
DSProxy #6,513
2.05 ETH0.000520723
Execute81493782019-07-14 13:08:302055 days ago1563109710IN
DSProxy #6,513
0 ETH0.000516193
Execute80035412019-06-21 20:17:092078 days ago1561148229IN
DSProxy #6,513
5 ETH0.000173571
Execute80028682019-06-21 17:49:232078 days ago1561139363IN
DSProxy #6,513
0 ETH0.000158191
Execute79699792019-06-16 14:09:032083 days ago1560694143IN
DSProxy #6,513
3.6 ETH0.000173571
Execute79698572019-06-16 13:40:182083 days ago1560692418IN
DSProxy #6,513
0 ETH0.000156451
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
90161942019-11-28 15:29:491918 days ago1574954989
DSProxy #6,513
1 ETH
89949122019-11-24 22:14:201922 days ago1574633660
DSProxy #6,513
5.13136108 ETH
89949122019-11-24 22:14:201922 days ago1574633660
DSProxy #6,513
5.13136108 ETH
89941722019-11-24 19:25:231922 days ago1574623523
DSProxy #6,513
0.5 ETH
89941722019-11-24 19:25:231922 days ago1574623523
DSProxy #6,513
0.5 ETH
89940222019-11-24 18:51:421922 days ago1574621502
DSProxy #6,513
2 ETH
89940222019-11-24 18:51:421922 days ago1574621502
DSProxy #6,513
2 ETH
89936552019-11-24 17:21:031922 days ago1574616063
DSProxy #6,513
2 ETH
89936552019-11-24 17:21:031922 days ago1574616063
DSProxy #6,513
2 ETH
89537412019-11-18 1:30:281929 days ago1574040628
DSProxy #6,513
0.5 ETH
89537412019-11-18 1:30:281929 days ago1574040628
DSProxy #6,513
0.5 ETH
88862882019-11-06 22:04:211940 days ago1573077861
DSProxy #6,513
2 ETH
88862882019-11-06 22:04:211940 days ago1573077861
DSProxy #6,513
2 ETH
87971472019-10-23 14:07:321954 days ago1571839652
DSProxy #6,513
0.1 ETH
87971472019-10-23 14:07:321954 days ago1571839652
DSProxy #6,513
0.1 ETH
87971412019-10-23 14:06:021954 days ago1571839562
DSProxy #6,513
5 ETH
87971412019-10-23 14:06:021954 days ago1571839562
DSProxy #6,513
5 ETH
83584232019-08-16 1:00:412023 days ago1565917241
DSProxy #6,513
2 ETH
83258622019-08-10 23:38:312028 days ago1565480311
DSProxy #6,513
2 ETH
83258422019-08-10 23:34:052028 days ago1565480045
DSProxy #6,513
2 ETH
83258422019-08-10 23:34:052028 days ago1565480045
DSProxy #6,513
2 ETH
81637602019-07-16 19:34:042053 days ago1563305644
DSProxy #6,513
3 ETH
81636842019-07-16 19:13:462053 days ago1563304426
DSProxy #6,513
0.07 ETH
81504842019-07-14 17:21:062055 days ago1563124866
DSProxy #6,513
3.4 ETH
81503022019-07-14 16:37:582055 days ago1563122278
DSProxy #6,513
4.4 ETH
View All Internal Transactions
Loading...
Loading

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

Contract Name:
DSProxy

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-09-06
*/

// proxy.sol - execute actions atomically through the proxy's identity

// Copyright (C) 2017  DappHub, LLC

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

pragma solidity ^0.4.23;

contract DSAuthority {
    function canCall(
        address src, address dst, bytes4 sig
    ) public view returns (bool);
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;

    constructor() public {
        owner = msg.sender;
        emit LogSetOwner(msg.sender);
    }

    function setOwner(address owner_)
        public
        auth
    {
        owner = owner_;
        emit LogSetOwner(owner);
    }

    function setAuthority(DSAuthority authority_)
        public
        auth
    {
        authority = authority_;
        emit LogSetAuthority(authority);
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig));
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, this, sig);
        }
    }
}

contract DSNote {
    event LogNote(
        bytes4   indexed  sig,
        address  indexed  guy,
        bytes32  indexed  foo,
        bytes32  indexed  bar,
        uint              wad,
        bytes             fax
    ) anonymous;

    modifier note {
        bytes32 foo;
        bytes32 bar;

        assembly {
            foo := calldataload(4)
            bar := calldataload(36)
        }

        emit LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);

        _;
    }
}

// DSProxy
// Allows code execution using a persistant identity This can be very
// useful to execute a sequence of atomic actions. Since the owner of
// the proxy can be changed, this allows for dynamic ownership models
// i.e. a multisig
contract DSProxy is DSAuth, DSNote {
    DSProxyCache public cache;  // global cache for contracts

    constructor(address _cacheAddr) public {
        require(setCache(_cacheAddr));
    }

    function() public payable {
    }

    // use the proxy to execute calldata _data on contract _code
    function execute(bytes _code, bytes _data)
        public
        payable
        returns (address target, bytes32 response)
    {
        target = cache.read(_code);
        if (target == 0x0) {
            // deploy contract & store its address in cache
            target = cache.write(_code);
        }

        response = execute(target, _data);
    }

    function execute(address _target, bytes _data)
        public
        auth
        note
        payable
        returns (bytes32 response)
    {
        require(_target != 0x0);

        // call contract in current context
        assembly {
            let succeeded := delegatecall(sub(gas, 5000), _target, add(_data, 0x20), mload(_data), 0, 32)
            response := mload(0)      // load delegatecall output
            switch iszero(succeeded)
            case 1 {
                // throw if delegatecall failed
                revert(0, 0)
            }
        }
    }

    //set new cache
    function setCache(address _cacheAddr)
        public
        auth
        note
        returns (bool)
    {
        require(_cacheAddr != 0x0);        // invalid cache address
        cache = DSProxyCache(_cacheAddr);  // overwrite cache
        return true;
    }
}

// DSProxyFactory
// This factory deploys new proxy instances through build()
// Deployed proxy addresses are logged
contract DSProxyFactory {
    event Created(address indexed sender, address indexed owner, address proxy, address cache);
    mapping(address=>bool) public isProxy;
    DSProxyCache public cache = new DSProxyCache();

    // deploys a new proxy instance
    // sets owner of proxy to caller
    function build() public returns (DSProxy proxy) {
        proxy = build(msg.sender);
    }

    // deploys a new proxy instance
    // sets custom owner of proxy
    function build(address owner) public returns (DSProxy proxy) {
        proxy = new DSProxy(cache);
        emit Created(msg.sender, owner, address(proxy), address(cache));
        proxy.setOwner(owner);
        isProxy[proxy] = true;
    }
}

// DSProxyCache
// This global cache stores addresses of contracts previously deployed
// by a proxy. This saves gas from repeat deployment of the same
// contracts and eliminates blockchain bloat.

// By default, all proxies deployed from the same factory store
// contracts in the same cache. The cache a proxy instance uses can be
// changed.  The cache uses the sha3 hash of a contract's bytecode to
// lookup the address
contract DSProxyCache {
    mapping(bytes32 => address) cache;

    function read(bytes _code) public view returns (address) {
        bytes32 hash = keccak256(_code);
        return cache[hash];
    }

    function write(bytes _code) public returns (address target) {
        assembly {
            target := create(0, add(_code, 0x20), mload(_code))
            switch iszero(extcodesize(target))
            case 1 {
                // throw if contract failed to deploy
                revert(0, 0)
            }
        }
        bytes32 hash = keccak256(_code);
        cache[hash] = target;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"response","type":"bytes32"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"target","type":"address"},{"name":"response","type":"bytes32"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"cache","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cacheAddr","type":"address"}],"name":"setCache","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_cacheAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]

Deployed Bytecode

0x60806040526004361061008d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af4035811461008f5780631cff79cd146100b05780631f6a1eb91461011c57806360c7d295146101c95780637a9e5e4b146101fa5780638da5cb5b1461021b578063948f507614610230578063bf7e214f14610265575b005b34801561009b57600080fd5b5061008d600160a060020a036004351661027a565b60408051602060046024803582810135601f810185900485028601850190965285855261010a958335600160a060020a03169536956044949193909101919081908401838280828437509497506102f89650505050505050565b60408051918252519081900360200190f35b6040805160206004803580820135601f81018490048402850184019095528484526101a694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506103be9650505050505050565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156101d557600080fd5b506101de6105ce565b60408051600160a060020a039092168252519081900360200190f35b34801561020657600080fd5b5061008d600160a060020a03600435166105dd565b34801561022757600080fd5b506101de610657565b34801561023c57600080fd5b50610251600160a060020a0360043516610666565b604080519115158252519081900360200190f35b34801561027157600080fd5b506101de61072d565b61029033600035600160e060020a03191661073c565b151561029b57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b600061031033600035600160e060020a03191661073c565b151561031b57600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a03169360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4600160a060020a038516151561038a57600080fd5b60206000855160208701886113885a03f460005193508015600181146103af576103b4565b600080fd5b5050505092915050565b6002546040517f8bf4515c0000000000000000000000000000000000000000000000000000000081526020600482018181528551602484015285516000948594600160a060020a0390911693638bf4515c93899390928392604490910191908501908083838b5b8381101561043d578181015183820152602001610425565b50505050905090810190601f16801561046a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b505050506040513d60208110156104b357600080fd5b50519150600160a060020a03821615156105bb576002546040517f7ed0c3b2000000000000000000000000000000000000000000000000000000008152602060048201818152875160248401528751600160a060020a0390941693637ed0c3b293899383926044909201919085019080838360005b83811015610540578181015183820152602001610528565b50505050905090810190601f16801561056d5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561058c57600080fd5b505af11580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505191505b6105c582846102f8565b90509250929050565b600254600160a060020a031681565b6105f333600035600160e060020a03191661073c565b15156105fe57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b600061067e33600035600160e060020a03191661073c565b151561068957600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a03169360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4600160a060020a03841615156106f857600080fd5b60028054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116179055600192505050919050565b600054600160a060020a031681565b600030600160a060020a031683600160a060020a031614156107605750600161084a565b600154600160a060020a038481169116141561077e5750600161084a565b600054600160a060020a031615156107985750600061084a565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301523081166024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561081b57600080fd5b505af115801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b505190505b929150505600a165627a7a72305820e498874c9ba9e75028e0c84f1b1d83b2dad5de910c59b837b32e5a190794c5e10029

Swarm Source

bzzr://e498874c9ba9e75028e0c84f1b1d83b2dad5de910c59b837b32e5a190794c5e1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

The proxy contract address for 0xc77d5376bfca0954ff38a5089f09ae1939804060.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.