Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 27 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Account Mast... | 7417981 | 2144 days ago | IN | 0 ETH | 0.00071584 | ||||
Batch New Accoun... | 7400467 | 2147 days ago | IN | 0 ETH | 0.02364959 | ||||
Batch New Accoun... | 7311004 | 2161 days ago | IN | 0 ETH | 0.01742557 | ||||
Batch New Accoun... | 7310999 | 2161 days ago | IN | 0 ETH | 0.01742512 | ||||
Batch New Accoun... | 7310997 | 2161 days ago | IN | 0 ETH | 0.01742557 | ||||
Batch New Accoun... | 7310988 | 2161 days ago | IN | 0 ETH | 0.01742557 | ||||
Batch New Accoun... | 7310987 | 2161 days ago | IN | 0 ETH | 0.01742557 | ||||
Batch New Accoun... | 7310985 | 2161 days ago | IN | 0 ETH | 0.01742602 | ||||
Batch New Accoun... | 7242386 | 2174 days ago | IN | 0 ETH | 0.02489431 | ||||
Batch New Accoun... | 7242380 | 2174 days ago | IN | 0 ETH | 0.02489335 | ||||
Batch New Accoun... | 7242374 | 2174 days ago | IN | 0 ETH | 0.02489367 | ||||
Batch New Accoun... | 7242365 | 2174 days ago | IN | 0 ETH | 0.02489431 | ||||
Batch New Accoun... | 7242360 | 2174 days ago | IN | 0 ETH | 0.02489335 | ||||
Batch New Accoun... | 7242348 | 2174 days ago | IN | 0 ETH | 0.02016361 | ||||
Batch New Accoun... | 7242336 | 2174 days ago | IN | 0 ETH | 0.02016387 | ||||
Batch New Accoun... | 7217351 | 2180 days ago | IN | 0 ETH | 0.02489431 | ||||
Set Account Mast... | 7207255 | 2183 days ago | IN | 0 ETH | 0.00071584 | ||||
Batch New Accoun... | 7114682 | 2202 days ago | IN | 0 ETH | 0.02984343 | ||||
Batch New Accoun... | 7114678 | 2202 days ago | IN | 0 ETH | 0.02984343 | ||||
Batch New Accoun... | 7114144 | 2202 days ago | IN | 0 ETH | 0.04924229 | ||||
Batch New Accoun... | 7114141 | 2202 days ago | IN | 0 ETH | 0.04924229 | ||||
Batch New Accoun... | 7114139 | 2202 days ago | IN | 0 ETH | 0.04725148 | ||||
Batch New Accoun... | 7114136 | 2202 days ago | IN | 0 ETH | 0.04476572 | ||||
Batch New Accoun... | 7113994 | 2202 days ago | IN | 0 ETH | 0.05989701 | ||||
Set Owner | 7109526 | 2203 days ago | IN | 0 ETH | 0.00028718 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
AccountFactory
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-02-05 */ pragma solidity 0.4.24; contract DSMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x); } // custom : not in original DSMath, putting it here for consistency, copied from SafeMath function div(uint x, uint y) internal pure returns (uint z) { z = x / y; } function min(uint x, uint y) internal pure returns (uint z) { return x <= y ? x : y; } function max(uint x, uint y) internal pure returns (uint z) { return x >= y ? x : y; } function imin(int x, int y) internal pure returns (int z) { return x <= y ? x : y; } function imax(int x, int y) internal pure returns (int z) { return x >= y ? x : y; } uint constant WAD = 10 ** 18; uint constant RAY = 10 ** 27; function wmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), WAD / 2) / WAD; } function rmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), RAY / 2) / RAY; } function wdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, WAD), y / 2) / y; } function rdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, RAY), y / 2) / y; } // This famous algorithm is called "exponentiation by squaring" // and calculates x^n with x as fixed-point and n as regular unsigned. // // It's O(log n), instead of O(n) for naive repeated multiplication. // // These facts are why it works: // // If n is even, then x^n = (x^2)^(n/2). // If n is odd, then x^n = x * x^(n-1), // and applying the equation for even x gives // x^n = x * (x^2)^((n-1) / 2). // // Also, EVM division is flooring and // floor[(n-1) / 2] = floor[n / 2]. // function rpow(uint x, uint n) internal pure returns (uint z) { z = n % 2 != 0 ? x : RAY; for (n /= 2; n != 0; n /= 2) { x = rmul(x, x); if (n % 2 != 0) { z = rmul(z, x); } } } } contract ErrorUtils { event LogError(string methodSig, string errMsg); event LogErrorWithHintBytes32(bytes32 indexed bytes32Value, string methodSig, string errMsg); event LogErrorWithHintAddress(address indexed addressValue, string methodSig, string errMsg); } contract Proxy { address masterCopy; constructor(address _masterCopy) public { require(_masterCopy != 0, "Invalid master copy address provided"); masterCopy = _masterCopy; } function () external payable { // solium-disable-next-line security/no-inline-assembly assembly { let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff) calldatacopy(0, 0, calldatasize()) let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) if eq(success, 0) { revert(0, returndatasize()) } return(0, returndatasize()) } } function implementation() public view returns (address) { return masterCopy; } function proxyType() public pure returns (uint256) { return 2; } } 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), "DSAuth::_ SENDER_NOT_AUTHORIZED"); _; } 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); _; } } interface ERC20 { function name() public view returns(string); function symbol() public view returns(string); function decimals() public view returns(uint8); function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } contract MasterCopy { address masterCopy; function changeMasterCopy(address _masterCopy) public { require(_masterCopy != 0, "Invalid master copy address provided"); masterCopy = _masterCopy; } } contract Utils { modifier addressValid(address _address) { require(_address != address(0), "Utils::_ INVALID_ADDRESS"); _; } } contract WETH9 { string public name = "Wrapped Ether"; string public symbol = "WETH"; uint8 public decimals = 18; event Approval(address indexed _owner, address indexed _spender, uint _value); event Transfer(address indexed _from, address indexed _to, uint _value); event Deposit(address indexed _owner, uint _value); event Withdrawal(address indexed _owner, uint _value); mapping (address => uint) public balanceOf; mapping (address => mapping (address => uint)) public allowance; function() public payable { deposit(); } function deposit() public payable { balanceOf[msg.sender] += msg.value; Deposit(msg.sender, msg.value); } function withdraw(uint wad) public { require(balanceOf[msg.sender] >= wad); balanceOf[msg.sender] -= wad; msg.sender.transfer(wad); Withdrawal(msg.sender, wad); } function totalSupply() public view returns (uint) { return this.balance; } function approve(address guy, uint wad) public returns (bool) { allowance[msg.sender][guy] = wad; Approval(msg.sender, guy, wad); return true; } function transfer(address dst, uint wad) public returns (bool) { return transferFrom(msg.sender, dst, wad); } function transferFrom(address src, address dst, uint wad) public returns (bool) { require(balanceOf[src] >= wad); if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) { require(allowance[src][msg.sender] >= wad); allowance[src][msg.sender] -= wad; } balanceOf[src] -= wad; balanceOf[dst] += wad; Transfer(src, dst, wad); return true; } } contract DSThing is DSNote, DSAuth, DSMath { function S(string s) internal pure returns (bytes4) { return bytes4(keccak256(s)); } } library ECRecovery { function recover(bytes32 _hash, bytes _sig) internal pure returns (address) { bytes32 r; bytes32 s; uint8 v; if (_sig.length != 65) { return (address(0)); } assembly { r := mload(add(_sig, 32)) s := mload(add(_sig, 64)) v := byte(0, mload(add(_sig, 96))) } if (v < 27) { v += 27; } if (v != 27 && v != 28) { return (address(0)); } else { return ecrecover(_hash, v, r, s); } } function toEthSignedMessageHash(bytes32 _hash) internal pure returns (bytes32) { return keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash) ); } } contract Utils2 { using ECRecovery for bytes32; function _recoverSigner(bytes32 _hash, bytes _signature) internal pure returns(address _signer) { return _hash.toEthSignedMessageHash().recover(_signature); } } contract Config is DSNote, DSAuth, Utils { WETH9 public weth9; mapping (address => bool) public isAccountHandler; mapping (address => bool) public isAdmin; address[] public admins; bool public disableAdminControl = false; event LogAdminAdded(address indexed _admin, address _by); event LogAdminRemoved(address indexed _admin, address _by); constructor() public { admins.push(msg.sender); isAdmin[msg.sender] = true; } modifier onlyAdmin(){ require(isAdmin[msg.sender], "Config::_ SENDER_NOT_AUTHORIZED"); _; } function setWETH9 ( address _weth9 ) public auth note addressValid(_weth9) { weth9 = WETH9(_weth9); } function setAccountHandler ( address _accountHandler, bool _isAccountHandler ) public auth note addressValid(_accountHandler) { isAccountHandler[_accountHandler] = _isAccountHandler; } function toggleAdminsControl() public auth note { disableAdminControl = !disableAdminControl; } function isAdminValid(address _admin) public view returns (bool) { if(disableAdminControl) { return true; } else { return isAdmin[_admin]; } } function getAllAdmins() public view returns(address[]) { return admins; } function addAdmin ( address _admin ) external note onlyAdmin addressValid(_admin) { require(!isAdmin[_admin], "Config::addAdmin ADMIN_ALREADY_EXISTS"); admins.push(_admin); isAdmin[_admin] = true; emit LogAdminAdded(_admin, msg.sender); } function removeAdmin ( address _admin ) external note onlyAdmin addressValid(_admin) { require(isAdmin[_admin], "Config::removeAdmin ADMIN_DOES_NOT_EXIST"); require(msg.sender != _admin, "Config::removeAdmin ADMIN_NOT_AUTHORIZED"); isAdmin[_admin] = false; for (uint i = 0; i < admins.length - 1; i++) { if (admins[i] == _admin) { admins[i] = admins[admins.length - 1]; admins.length -= 1; break; } } emit LogAdminRemoved(_admin, msg.sender); } } contract DSStop is DSNote, DSAuth { bool public stopped = false; modifier whenNotStopped { require(!stopped, "DSStop::_ FEATURE_STOPPED"); _; } modifier whenStopped { require(stopped, "DSStop::_ FEATURE_NOT_STOPPED"); _; } function stop() public auth note { stopped = true; } function start() public auth note { stopped = false; } } contract Account is MasterCopy, DSNote, Utils, Utils2, ErrorUtils { address[] public users; mapping (address => bool) public isUser; mapping (bytes32 => bool) public actionCompleted; WETH9 public weth9; Config public config; bool public isInitialized = false; event LogTransferBySystem(address indexed token, address indexed to, uint value, address by); event LogTransferByUser(address indexed token, address indexed to, uint value, address by); event LogUserAdded(address indexed user, address by); event LogUserRemoved(address indexed user, address by); modifier initialized() { require(isInitialized, "Account::_ ACCOUNT_NOT_INITIALIZED"); _; } modifier userExists(address _user) { require(isUser[_user], "Account::_ INVALID_USER"); _; } modifier userDoesNotExist(address _user) { require(!isUser[_user], "Account::_ USER_DOES_NOT_EXISTS"); _; } modifier onlyHandler(){ require(config.isAccountHandler(msg.sender), "Account::_ INVALID_ACC_HANDLER"); _; } function init(address _user, address _config) public { users.push(_user); isUser[_user] = true; config = Config(_config); weth9 = config.weth9(); isInitialized = true; } function getAllUsers() public view returns (address[]) { return users; } function balanceFor(address _token) public view returns (uint _balance){ _balance = ERC20(_token).balanceOf(this); } function transferBySystem ( address _token, address _to, uint _value ) external onlyHandler note initialized { require(ERC20(_token).balanceOf(this) >= _value, "Account::transferBySystem INSUFFICIENT_BALANCE_IN_ACCOUNT"); require(ERC20(_token).transfer(_to, _value), "Account::transferBySystem TOKEN_TRANSFER_FAILED"); emit LogTransferBySystem(_token, _to, _value, msg.sender); } function transferByUser ( address _token, address _to, uint _value, uint _salt, bytes _signature ) external addressValid(_to) note initialized { bytes32 actionHash = _getTransferActionHash(_token, _to, _value, _salt); if(actionCompleted[actionHash]) { emit LogError("Account::transferByUser", "ACTION_ALREADY_PERFORMED"); return; } if(ERC20(_token).balanceOf(this) < _value){ emit LogError("Account::transferByUser", "INSUFFICIENT_BALANCE_IN_ACCOUNT"); return; } address signer = _recoverSigner(actionHash, _signature); if(!isUser[signer]) { emit LogError("Account::transferByUser", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT"); return; } actionCompleted[actionHash] = true; if (_token == address(weth9)) { weth9.withdraw(_value); _to.transfer(_value); } else { require(ERC20(_token).transfer(_to, _value), "Account::transferByUser TOKEN_TRANSFER_FAILED"); } emit LogTransferByUser(_token, _to, _value, signer); } function addUser ( address _user, uint _salt, bytes _signature ) external note addressValid(_user) userDoesNotExist(_user) initialized { bytes32 actionHash = _getUserActionHash(_user, "ADD_USER", _salt); if(actionCompleted[actionHash]) { emit LogError("Account::addUser", "ACTION_ALREADY_PERFORMED"); return; } address signer = _recoverSigner(actionHash, _signature); if(!isUser[signer]) { emit LogError("Account::addUser", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT"); return; } actionCompleted[actionHash] = true; users.push(_user); isUser[_user] = true; emit LogUserAdded(_user, signer); } function removeUser ( address _user, uint _salt, bytes _signature ) external note userExists(_user) initialized { bytes32 actionHash = _getUserActionHash(_user, "REMOVE_USER", _salt); if(actionCompleted[actionHash]) { emit LogError("Account::removeUser", "ACTION_ALREADY_PERFORMED"); return; } address signer = _recoverSigner(actionHash, _signature); // require(signer != _user, "Account::removeUser SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT"); if(!isUser[signer]){ emit LogError("Account::removeUser", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT"); return; } actionCompleted[actionHash] = true; isUser[_user] = false; for (uint i = 0; i < users.length - 1; i++) { if (users[i] == _user) { users[i] = users[users.length - 1]; users.length -= 1; break; } } emit LogUserRemoved(_user, signer); } function _getTransferActionHash ( address _token, address _to, uint _value, uint _salt ) internal view returns (bytes32) { return keccak256( abi.encodePacked( address(this), _token, _to, _value, _salt ) ); } function _getUserActionHash ( address _user, string _action, uint _salt ) internal view returns (bytes32) { return keccak256( abi.encodePacked( address(this), _user, _action, _salt ) ); } // to directly send ether to contract function() external payable { require(msg.data.length == 0 && msg.value > 0, "Account::fallback INVALID_ETHER_TRANSFER"); if(msg.sender != address(weth9)){ weth9.deposit.value(msg.value)(); } } } contract AccountFactory is DSStop, Utils { Config public config; mapping (address => bool) public isAccount; mapping (address => address[]) public userToAccounts; address[] public accounts; address public accountMaster; constructor ( Config _config, address _accountMaster ) public { config = _config; accountMaster = _accountMaster; } event LogAccountCreated(address indexed user, address indexed account, address by); modifier onlyAdmin() { require(config.isAdminValid(msg.sender), "AccountFactory::_ INVALID_ADMIN_ACCOUNT"); _; } function setConfig(Config _config) external note auth addressValid(_config) { config = _config; } function setAccountMaster(address _accountMaster) external note auth addressValid(_accountMaster) { accountMaster = _accountMaster; } function newAccount(address _user) public note onlyAdmin addressValid(config) addressValid(accountMaster) whenNotStopped returns ( Account _account ) { address proxy = new Proxy(accountMaster); _account = Account(proxy); _account.init(_user, config); accounts.push(_account); userToAccounts[_user].push(_account); isAccount[_account] = true; emit LogAccountCreated(_user, _account, msg.sender); } function batchNewAccount(address[] _users) public note onlyAdmin { for (uint i = 0; i < _users.length; i++) { newAccount(_users[i]); } } function getAllAccounts() public view returns (address[]) { return accounts; } function getAccountsForUser(address _user) public view returns (address[]) { return userToAccounts[_user]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"newAccount","outputs":[{"name":"_account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllAccounts","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userToAccounts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"getAccountsForUser","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_config","type":"address"}],"name":"setConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_accountMaster","type":"address"}],"name":"setAccountMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"config","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":"_users","type":"address[]"}],"name":"batchNewAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accountMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"accounts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_config","type":"address"},{"name":"_accountMaster","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"by","type":"address"}],"name":"LogAccountCreated","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"},{"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"}]
Contract Creation Code
60806040526001805460a060020a60ff021916905534801561002057600080fd5b506040516040806114e4833981016040819052815160209092015160018054600160a060020a0319163390811790915590917fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a260028054600160a060020a03938416600160a060020a03199182161790915560068054929093169116179055611431806100b36000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303152429811461010057806307da68f51461013d57806308e93d0a1461015457806313af4035146101b9578063169b7012146101da5780631eb9ef91146101fe57806320e3dbd41461021f57806325ca4c9c146102405780633e0bd52e1461027557806375f12b211461029657806379502c55146102ab5780637a9e5e4b146102c05780638da5cb5b146102e15780639996eb64146102f6578063be9a65551461034b578063bf7e214f14610360578063f0a72a8414610375578063f2a40db81461038a575b600080fd5b34801561010c57600080fd5b50610121600160a060020a03600435166103a2565b60408051600160a060020a039092168252519081900360200190f35b34801561014957600080fd5b506101526107c3565b005b34801561016057600080fd5b506101696108a7565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101a557818101518382015260200161018d565b505050509050019250505060405180910390f35b3480156101c557600080fd5b50610152600160a060020a0360043516610909565b3480156101e657600080fd5b50610121600160a060020a03600435166024356109c0565b34801561020a57600080fd5b50610169600160a060020a03600435166109f7565b34801561022b57600080fd5b50610152600160a060020a0360043516610a6d565b34801561024c57600080fd5b50610261600160a060020a0360043516610b9a565b604080519115158252519081900360200190f35b34801561028157600080fd5b50610152600160a060020a0360043516610baf565b3480156102a257600080fd5b50610261610cdc565b3480156102b757600080fd5b50610121610cfd565b3480156102cc57600080fd5b50610152600160a060020a0360043516610d0c565b3480156102ed57600080fd5b50610121610dbf565b34801561030257600080fd5b506040805160206004803580820135838102808601850190965280855261015295369593946024949385019291829185019084908082843750949750610dce9650505050505050565b34801561035757600080fd5b50610152610f71565b34801561036c57600080fd5b5061012161103e565b34801561038157600080fd5b5061012161104d565b34801561039657600080fd5b5061012160043561105c565b6040805134808252602082018381523693830184905260009384936004359360243593849386933393600160e060020a03198a35169390928a929091606082018484808284376040519201829003965090945050505050a4600254604080517f9c14ee290000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691639c14ee29916024808201926020929091908290030181600087803b15801561046057600080fd5b505af1158015610474573d6000803e3d6000fd5b505050506040513d602081101561048a57600080fd5b50511515610508576040805160e560020a62461bcd02815260206004820152602760248201527f4163636f756e74466163746f72793a3a5f20494e56414c49445f41444d494e5f60448201527f4143434f554e5400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600160a060020a0316801515610559576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b600654600160a060020a03168015156105aa576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b60015474010000000000000000000000000000000000000000900460ff161561061d576040805160e560020a62461bcd02815260206004820152601960248201527f445353746f703a3a5f20464541545552455f53544f5050454400000000000000604482015290519081900360640190fd5b600654600160a060020a031661063161118d565b600160a060020a03909116815260405190819003602001906000f08015801561065e573d6000803e3d6000fd5b50600254604080517ff09a4016000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152928316602482015290519298508897509087169163f09a40169160448082019260009290919082900301818387803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b50506005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831681179093558c1660008181526004602090815260408083208054808901825590845282842001805490951686179094558482526003815290839020805460ff19169095179094558151338152915192955093507eef0c4d7ce8d09e55441711e41dc8f1a6abbe3313f4369ea8094dbf0b7b182092908290030190a35050505050919050565b6107d933600035600160e060020a031916611084565b151561081d576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b606060058054806020026020016040519081016040528092919081815260200182805480156108ff57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108e1575b5050505050905090565b61091f33600035600160e060020a031916611084565b1515610963576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6004602052816000526040600020818154811015156109db57fe5b600091825260209091200154600160a060020a03169150829050565b600160a060020a038116600090815260046020908152604091829020805483518184028101840190945280845260609392830182828015610a6157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610a43575b50505050509050919050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610ad433600035600160e060020a031916611084565b1515610b18576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b82600160a060020a0381161515610b67576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60036020526000908152604090205460ff1681565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610c1633600035600160e060020a031916611084565b1515610c5a576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b82600160a060020a0381161515610ca9576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60015474010000000000000000000000000000000000000000900460ff1681565b600254600160a060020a031681565b610d2233600035600160e060020a031916611084565b1515610d66576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b604080513480825260208201838152369383018490526000936004359360243593849386933393600160e060020a03198a351693928a929190606082018484808284376040519201829003965090945050505050a4600254604080517f9c14ee290000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691639c14ee29916024808201926020929091908290030181600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b505050506040513d6020811015610eb357600080fd5b50511515610f31576040805160e560020a62461bcd02815260206004820152602760248201527f4163636f756e74466163746f72793a3a5f20494e56414c49445f41444d494e5f60448201527f4143434f554e5400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600092505b8351831015610f6b57610f5f8484815181101515610f5057fe5b906020019060200201516103a2565b50600190920191610f36565b50505050565b610f8733600035600160e060020a031916611084565b1515610fcb576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff000000000000000000000000000000000000000019169055565b600054600160a060020a031681565b600654600160a060020a031681565b600580548290811061106a57fe5b600091825260209091200154600160a060020a0316905081565b6000600160a060020a03831630141561109f57506001611187565b600154600160a060020a03848116911614156110bd57506001611187565b600054600160a060020a031615156110d757506000611187565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561115857600080fd5b505af115801561116c573d6000803e3d6000fd5b505050506040513d602081101561118257600080fd5b505190505b92915050565b6040516102288061119e833901905600608060405234801561001057600080fd5b506040516020806102288339810160405251600160a060020a03811615156100be57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e76616c6964206d617374657220636f707920616464726573732070726f7660448201527f6964656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03909216600160a060020a031990921691909117905561013a806100ee6000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c981146100885780635c60da1b146100af575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e801515610083573d6000fd5b3d6000f35b34801561009457600080fd5b5061009d6100ed565b60408051918252519081900360200190f35b3480156100bb57600080fd5b506100c46100f2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600290565b60005473ffffffffffffffffffffffffffffffffffffffff16905600a165627a7a7230582000e8963a53396a420e260d6762a2b264be1db09b89fce92475fadd0600ddeffb00294453417574683a3a5f2053454e4445525f4e4f545f415554484f52495a4544005574696c733a3a5f20494e56414c49445f414444524553530000000000000000a165627a7a723058209fe86b6dbc0e1c96205965761ce3bd59967c1099aefabcfab84953b455d281f30029000000000000000000000000431f429035a1e3059d5c6a9a83208c6d3143d92500000000000000000000000035175824b39f936cc9e5498947d9b4029f55d192
Deployed Bytecode
0x6080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303152429811461010057806307da68f51461013d57806308e93d0a1461015457806313af4035146101b9578063169b7012146101da5780631eb9ef91146101fe57806320e3dbd41461021f57806325ca4c9c146102405780633e0bd52e1461027557806375f12b211461029657806379502c55146102ab5780637a9e5e4b146102c05780638da5cb5b146102e15780639996eb64146102f6578063be9a65551461034b578063bf7e214f14610360578063f0a72a8414610375578063f2a40db81461038a575b600080fd5b34801561010c57600080fd5b50610121600160a060020a03600435166103a2565b60408051600160a060020a039092168252519081900360200190f35b34801561014957600080fd5b506101526107c3565b005b34801561016057600080fd5b506101696108a7565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101a557818101518382015260200161018d565b505050509050019250505060405180910390f35b3480156101c557600080fd5b50610152600160a060020a0360043516610909565b3480156101e657600080fd5b50610121600160a060020a03600435166024356109c0565b34801561020a57600080fd5b50610169600160a060020a03600435166109f7565b34801561022b57600080fd5b50610152600160a060020a0360043516610a6d565b34801561024c57600080fd5b50610261600160a060020a0360043516610b9a565b604080519115158252519081900360200190f35b34801561028157600080fd5b50610152600160a060020a0360043516610baf565b3480156102a257600080fd5b50610261610cdc565b3480156102b757600080fd5b50610121610cfd565b3480156102cc57600080fd5b50610152600160a060020a0360043516610d0c565b3480156102ed57600080fd5b50610121610dbf565b34801561030257600080fd5b506040805160206004803580820135838102808601850190965280855261015295369593946024949385019291829185019084908082843750949750610dce9650505050505050565b34801561035757600080fd5b50610152610f71565b34801561036c57600080fd5b5061012161103e565b34801561038157600080fd5b5061012161104d565b34801561039657600080fd5b5061012160043561105c565b6040805134808252602082018381523693830184905260009384936004359360243593849386933393600160e060020a03198a35169390928a929091606082018484808284376040519201829003965090945050505050a4600254604080517f9c14ee290000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691639c14ee29916024808201926020929091908290030181600087803b15801561046057600080fd5b505af1158015610474573d6000803e3d6000fd5b505050506040513d602081101561048a57600080fd5b50511515610508576040805160e560020a62461bcd02815260206004820152602760248201527f4163636f756e74466163746f72793a3a5f20494e56414c49445f41444d494e5f60448201527f4143434f554e5400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600160a060020a0316801515610559576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b600654600160a060020a03168015156105aa576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b60015474010000000000000000000000000000000000000000900460ff161561061d576040805160e560020a62461bcd02815260206004820152601960248201527f445353746f703a3a5f20464541545552455f53544f5050454400000000000000604482015290519081900360640190fd5b600654600160a060020a031661063161118d565b600160a060020a03909116815260405190819003602001906000f08015801561065e573d6000803e3d6000fd5b50600254604080517ff09a4016000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152928316602482015290519298508897509087169163f09a40169160448082019260009290919082900301818387803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b50506005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831681179093558c1660008181526004602090815260408083208054808901825590845282842001805490951686179094558482526003815290839020805460ff19169095179094558151338152915192955093507eef0c4d7ce8d09e55441711e41dc8f1a6abbe3313f4369ea8094dbf0b7b182092908290030190a35050505050919050565b6107d933600035600160e060020a031916611084565b151561081d576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b606060058054806020026020016040519081016040528092919081815260200182805480156108ff57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108e1575b5050505050905090565b61091f33600035600160e060020a031916611084565b1515610963576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6004602052816000526040600020818154811015156109db57fe5b600091825260209091200154600160a060020a03169150829050565b600160a060020a038116600090815260046020908152604091829020805483518184028101840190945280845260609392830182828015610a6157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610a43575b50505050509050919050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610ad433600035600160e060020a031916611084565b1515610b18576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b82600160a060020a0381161515610b67576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60036020526000908152604090205460ff1681565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610c1633600035600160e060020a031916611084565b1515610c5a576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b82600160a060020a0381161515610ca9576040805160e560020a62461bcd02815260206004820152601860248201526000805160206113e6833981519152604482015290519081900360640190fd5b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60015474010000000000000000000000000000000000000000900460ff1681565b600254600160a060020a031681565b610d2233600035600160e060020a031916611084565b1515610d66576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b604080513480825260208201838152369383018490526000936004359360243593849386933393600160e060020a03198a351693928a929190606082018484808284376040519201829003965090945050505050a4600254604080517f9c14ee290000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691639c14ee29916024808201926020929091908290030181600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b505050506040513d6020811015610eb357600080fd5b50511515610f31576040805160e560020a62461bcd02815260206004820152602760248201527f4163636f756e74466163746f72793a3a5f20494e56414c49445f41444d494e5f60448201527f4143434f554e5400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600092505b8351831015610f6b57610f5f8484815181101515610f5057fe5b906020019060200201516103a2565b50600190920191610f36565b50505050565b610f8733600035600160e060020a031916611084565b1515610fcb576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206113c6833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff000000000000000000000000000000000000000019169055565b600054600160a060020a031681565b600654600160a060020a031681565b600580548290811061106a57fe5b600091825260209091200154600160a060020a0316905081565b6000600160a060020a03831630141561109f57506001611187565b600154600160a060020a03848116911614156110bd57506001611187565b600054600160a060020a031615156110d757506000611187565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561115857600080fd5b505af115801561116c573d6000803e3d6000fd5b505050506040513d602081101561118257600080fd5b505190505b92915050565b6040516102288061119e833901905600608060405234801561001057600080fd5b506040516020806102288339810160405251600160a060020a03811615156100be57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e76616c6964206d617374657220636f707920616464726573732070726f7660448201527f6964656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03909216600160a060020a031990921691909117905561013a806100ee6000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c981146100885780635c60da1b146100af575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e801515610083573d6000fd5b3d6000f35b34801561009457600080fd5b5061009d6100ed565b60408051918252519081900360200190f35b3480156100bb57600080fd5b506100c46100f2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600290565b60005473ffffffffffffffffffffffffffffffffffffffff16905600a165627a7a7230582000e8963a53396a420e260d6762a2b264be1db09b89fce92475fadd0600ddeffb00294453417574683a3a5f2053454e4445525f4e4f545f415554484f52495a4544005574696c733a3a5f20494e56414c49445f414444524553530000000000000000a165627a7a723058209fe86b6dbc0e1c96205965761ce3bd59967c1099aefabcfab84953b455d281f30029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000431f429035a1e3059d5c6a9a83208c6d3143d92500000000000000000000000035175824b39f936cc9e5498947d9b4029f55d192
-----Decoded View---------------
Arg [0] : _config (address): 0x431F429035a1e3059d5c6a9a83208c6D3143D925
Arg [1] : _accountMaster (address): 0x35175824b39f936cc9E5498947d9B4029f55d192
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000431f429035a1e3059d5c6a9a83208c6d3143d925
Arg [1] : 00000000000000000000000035175824b39f936cc9e5498947d9b4029f55d192
Swarm Source
bzzr://9fe86b6dbc0e1c96205965761ce3bd59967c1099aefabcfab84953b455d281f3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.