Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 149 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Build | 12999614 | 1664 days ago | IN | 0 ETH | 0.05205249 | ||||
| Build | 12853087 | 1687 days ago | IN | 0 ETH | 0.01802558 | ||||
| Build | 12850253 | 1688 days ago | IN | 0 ETH | 0.0192787 | ||||
| Build | 12791279 | 1697 days ago | IN | 0 ETH | 0.0414492 | ||||
| Build | 12477475 | 1746 days ago | IN | 0 ETH | 0.04434101 | ||||
| Build | 12384981 | 1760 days ago | IN | 0 ETH | 0.03373772 | ||||
| Build | 12383315 | 1760 days ago | IN | 0 ETH | 0.05880003 | ||||
| Build | 12358858 | 1764 days ago | IN | 0 ETH | 0.03662953 | ||||
| Build | 12339073 | 1767 days ago | IN | 0 ETH | 0.03662953 | ||||
| Build | 12338464 | 1767 days ago | IN | 0 ETH | 0.03084592 | ||||
| Build | 12333359 | 1768 days ago | IN | 0 ETH | 0.04048527 | ||||
| Build | 12332470 | 1768 days ago | IN | 0 ETH | 0.06651151 | ||||
| Build | 12302445 | 1773 days ago | IN | 0 ETH | 0.05590823 | ||||
| Build | 12302268 | 1773 days ago | IN | 0 ETH | 0.05590823 | ||||
| Build | 12296872 | 1774 days ago | IN | 0 ETH | 0.10121317 | ||||
| Build | 12256874 | 1780 days ago | IN | 0 ETH | 0.15904927 | ||||
| Build | 12250255 | 1781 days ago | IN | 0 ETH | 0.118564 | ||||
| Build | 12237415 | 1783 days ago | IN | 0 ETH | 0.15471053 | ||||
| Build | 12200408 | 1789 days ago | IN | 0 ETH | 0.15759334 | ||||
| Build | 12172635 | 1793 days ago | IN | 0 ETH | 0.08744508 | ||||
| Build | 12170217 | 1793 days ago | IN | 0 ETH | 0.0960935 | ||||
| Build | 12165928 | 1794 days ago | IN | 0 ETH | 0.11915594 | ||||
| Build | 12159874 | 1795 days ago | IN | 0 ETH | 0.13549183 | ||||
| Build | 12156624 | 1795 days ago | IN | 0 ETH | 0.14510118 | ||||
| Build | 12155376 | 1795 days ago | IN | 0 ETH | 0.24888216 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ProxyRegistry
Compiler Version
v0.4.23+commit.124ca40d
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-12-16
*/
// 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;
}
}
// ProxyRegistry
// This Registry deploys new proxy instances through DSProxyFactory.build(address) and keeps a registry of owner => proxy
contract ProxyRegistry {
mapping(address => DSProxy) public proxies;
DSProxyFactory factory;
constructor(DSProxyFactory factory_) public {
factory = factory_;
}
// 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) {
require(proxies[owner] == DSProxy(0) || proxies[owner].owner() != owner); // Not allow new proxy if the user already has one and remains being the owner
proxy = factory.build(owner);
proxies[owner] = proxy;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"build","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"proxies","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"build","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"factory_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]Contract Creation Code
608060405234801561001057600080fd5b506040516020806105f58339810180604052810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610571806100846000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638e1a55fc1461005c578063c4552791146100b3578063f3701da214610136575b600080fd5b34801561006857600080fd5b506100716101b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100bf57600080fd5b506100f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014257600080fd5b50610177600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006101c4336101fc565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806103be57508173ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050506040513d602081101561039457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b15156103c957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3701da2836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561048657600080fd5b505af115801561049a573d6000803e3d6000fd5b505050506040513d60208110156104b057600080fd5b81019080805190602001909291905050509050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509190505600a165627a7a723058200fab1ac4cb6f598e6bdccae37eeb4d9efd570eeec5437fb38cced859eca6e54c002900000000000000000000000093b0cb6ba869b7a90f05e3c233e970df0ce29557
Deployed Bytecode
0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638e1a55fc1461005c578063c4552791146100b3578063f3701da214610136575b600080fd5b34801561006857600080fd5b506100716101b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100bf57600080fd5b506100f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014257600080fd5b50610177600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006101c4336101fc565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806103be57508173ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050506040513d602081101561039457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b15156103c957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3701da2836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561048657600080fd5b505af115801561049a573d6000803e3d6000fd5b505050506040513d60208110156104b057600080fd5b81019080805190602001909291905050509050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509190505600a165627a7a723058200fab1ac4cb6f598e6bdccae37eeb4d9efd570eeec5437fb38cced859eca6e54c0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000093b0cb6ba869b7a90f05e3c233e970df0ce29557
-----Decoded View---------------
Arg [0] : factory_ (address): 0x93b0Cb6ba869b7a90f05e3c233e970df0Ce29557
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000093b0cb6ba869b7a90f05e3c233e970df0ce29557
Deployed Bytecode Sourcemap
6484:752:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6758:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6514:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6514:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6930:303;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6930:303:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:92;6791:13;6825:17;6831:10;6825:5;:17::i;:::-;6817:25;;6758:92;:::o;6514:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6930:303::-;6976:13;7036:1;7010:28;;:7;:14;7018:5;7010:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:63;;;;7068:5;7042:31;;:7;:14;7050:5;7042:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7042:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7042:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7042:22:0;;;;;;;;;;;;;;;;:31;;;;7010:63;7002:72;;;;;;;;7172:7;;;;;;;;;;;:13;;;7186:5;7172:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7172:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7172:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7172:20:0;;;;;;;;;;;;;;;;7164:28;;7220:5;7203:7;:14;7211:5;7203:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;6930:303;;;:::o
Swarm Source
bzzr://0fab1ac4cb6f598e6bdccae37eeb4d9efd570eeec5437fb38cced859eca6e54c
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.