Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
10747396 | 1619 days ago | Contract Creation | 0 ETH |
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.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x6eB6c1A9...5002296AC The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
WalletV3
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-01 */ /** *Submitted for verification at Etherscan.io on 2019-08-06 */ // File: contracts/utils/LoggingErrors.sol pragma solidity ^0.4.11; /** * @title Log Various Error Types * @author Adam Lemmon <[email protected]> * @dev Inherit this contract and your may now log errors easily * To support various error types, params, etc. */ contract LoggingErrors { /** * Events */ event LogErrorString(string errorString); /** * Error cases */ /** * @dev Default error to simply log the error message and return * @param _errorMessage The error message to log * @return ALWAYS false */ function error(string _errorMessage) internal returns(bool) { emit LogErrorString(_errorMessage); return false; } } // File: contracts/wallet/WalletConnector.sol pragma solidity ^0.4.15; /** * @title Wallet Connector * @dev Connect the wallet contract to the correct Wallet Logic version */ contract WalletConnector is LoggingErrors { /** * Storage */ address public owner_; address public latestLogic_; uint256 public latestVersion_; mapping(uint256 => address) public logicVersions_; uint256 public birthBlock_; /** * Events */ event LogLogicVersionAdded(uint256 version); event LogLogicVersionRemoved(uint256 version); /** * @dev Constructor to set the latest logic address * @param _latestVersion Latest version of the wallet logic * @param _latestLogic Latest address of the wallet logic contract */ function WalletConnector ( uint256 _latestVersion, address _latestLogic ) public { owner_ = msg.sender; latestLogic_ = _latestLogic; latestVersion_ = _latestVersion; logicVersions_[_latestVersion] = _latestLogic; birthBlock_ = block.number; } /** * Add a new version of the logic contract * @param _version The version to be associated with the new contract. * @param _logic New logic contract. * @return Success of the transaction. */ function addLogicVersion ( uint256 _version, address _logic ) external returns(bool) { if (msg.sender != owner_) return error('msg.sender != owner, WalletConnector.addLogicVersion()'); if (logicVersions_[_version] != 0) return error('Version already exists, WalletConnector.addLogicVersion()'); // Update latest if this is the latest version if (_version > latestVersion_) { latestLogic_ = _logic; latestVersion_ = _version; } logicVersions_[_version] = _logic; LogLogicVersionAdded(_version); return true; } /** * @dev Remove a version. Cannot remove the latest version. * @param _version The version to remove. */ function removeLogicVersion(uint256 _version) external { require(msg.sender == owner_); require(_version != latestVersion_); delete logicVersions_[_version]; LogLogicVersionRemoved(_version); } /** * Constants */ /** * Called from user wallets in order to upgrade their logic. * @param _version The version to upgrade to. NOTE pass in 0 to upgrade to latest. * @return The address of the logic contract to upgrade to. */ function getLogic(uint256 _version) external constant returns(address) { if (_version == 0) return latestLogic_; else return logicVersions_[_version]; } } // File: contracts/wallet/WalletBuilderInterface.sol pragma solidity ^0.4.15; /** * @title Wallet to hold and trade ERC20 tokens and ether */ interface WalletBuilderInterface { /** * @dev build a new trading wallet and returns its address * @param _owner user EOA of the created trading wallet * @param _exchange exchange address */ function buildWallet(address _owner, address _exchange) external returns(address); } // File: contracts/token/ERC20Interface.sol pragma solidity ^0.4.11; interface Token { /// @return total amount of tokens function totalSupply() external constant returns (uint256 supply); /// @param _owner The address from which the balance will be retrieved /// @return The balance function balanceOf(address _owner) external constant returns (uint256 balance); /// @notice send `_value` token to `_to` from `msg.sender` /// @param _to The address of the recipient /// @param _value The amount of token to be transferred /// @return Whether the transfer was successful or not function transfer(address _to, uint256 _value) external returns (bool success); /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from` /// @param _from The address of the sender /// @param _to The address of the recipient /// @param _value The amount of token to be transferred /// @return Whether the transfer was successful or not function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); /// @notice `msg.sender` approves `_addr` to spend `_value` tokens /// @param _spender The address of the account able to transfer the tokens /// @param _value The amount of wei to be approved for transfer /// @return Whether the approval was successful or not function approve(address _spender, uint256 _value) external returns (bool success); /// @param _owner The address of the account owning tokens /// @param _spender The address of the account able to transfer the tokens /// @return Amount of remaining tokens allowed to spent function allowance(address _owner, address _spender) external constant returns (uint256 remaining); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function decimals() external constant returns(uint); function name() external constant returns(string); } // File: contracts/wallet/WalletV3.sol pragma solidity ^0.4.15; /** * @title Wallet to hold and trade ERC20 tokens and ether * @dev User wallet to interact with the exchange. * all tokens and ether held in this wallet, 1 to 1 mapping to user EOAs. */ contract WalletV3 is LoggingErrors { /** * Storage */ // Vars included in wallet logic "lib", the order must match between Wallet and Logic address public owner_; address public exchange_; mapping(address => uint256) public tokenBalances_; address public logic_; // storage location 0x3 loaded for delegatecalls so this var must remain at index 3 uint256 public birthBlock_; WalletConnector private connector_; /** * Events */ event LogDeposit(address token, uint256 amount, uint256 balance); event LogWithdrawal(address token, uint256 amount, uint256 balance); /** * @dev Contract constructor. Set user as owner and connector address. * @param _owner The address of the user's EOA, wallets created from the exchange * so must past in the owner address, msg.sender == exchange. * @param _connector The wallet connector to be used to retrieve the wallet logic */ constructor(address _owner, address _connector, address _exchange) public { owner_ = _owner; connector_ = WalletConnector(_connector); exchange_ = _exchange; logic_ = connector_.latestLogic_(); birthBlock_ = block.number; } function () external payable {} /** * External */ /** * @dev Deposit ether into this wallet, default to address 0 for consistent token lookup. */ function depositEther() external payable { require( logic_.delegatecall(abi.encodeWithSignature('deposit(address,uint256)', 0, msg.value)), "depositEther() failed" ); } /** * @dev Deposit any ERC20 token into this wallet. * @param _token The address of the existing token contract. * @param _amount The amount of tokens to deposit. * @return Bool if the deposit was successful. */ function depositERC20Token ( address _token, uint256 _amount ) external returns(bool) { // ether if (_token == 0) return error('Cannot deposit ether via depositERC20, Wallet.depositERC20Token()'); require( logic_.delegatecall(abi.encodeWithSignature('deposit(address,uint256)', _token, _amount)), "depositERC20Token() failed" ); return true; } /** * @dev The result of an order, update the balance of this wallet. * param _token The address of the token balance to update. * param _amount The amount to update the balance by. * param _subtractionFlag If true then subtract the token amount else add. * @return Bool if the update was successful. */ function updateBalance ( address /*_token*/, uint256 /*_amount*/, bool /*_subtractionFlag*/ ) external returns(bool) { assembly { calldatacopy(0x40, 0, calldatasize) delegatecall(gas, sload(0x3), 0x40, calldatasize, 0, 32) return(0, 32) pop } } /** * User may update to the latest version of the exchange contract. * Note that multiple versions are NOT supported at this time and therefore if a * user does not wish to update they will no longer be able to use the exchange. * @param _exchange The new exchange. * @return Success of this transaction. */ function updateExchange(address _exchange) external returns(bool) { if (msg.sender != owner_) return error('msg.sender != owner_, Wallet.updateExchange()'); // If subsequent messages are not sent from this address all orders will fail exchange_ = _exchange; return true; } /** * User may update to a new or older version of the logic contract. * @param _version The versin to update to. * @return Success of this transaction. */ function updateLogic(uint256 _version) external returns(bool) { if (msg.sender != owner_) return error('msg.sender != owner_, Wallet.updateLogic()'); address newVersion = connector_.getLogic(_version); // Invalid version as defined by connector if (newVersion == 0) return error('Invalid version, Wallet.updateLogic()'); logic_ = newVersion; return true; } /** * @dev Verify an order that the Exchange has received involving this wallet. * Internal checks and then authorize the exchange to move the tokens. * If sending ether will transfer to the exchange to broker the trade. * param _token The address of the token contract being sold. * param _amount The amount of tokens the order is for. * param _fee The fee for the current trade. * param _feeToken The token of which the fee is to be paid in. * @return If the order was verified or not. */ function verifyOrder ( address /*_token*/, uint256 /*_amount*/, uint256 /*_fee*/, address /*_feeToken*/ ) external returns(bool) { assembly { calldatacopy(0x40, 0, calldatasize) delegatecall(gas, sload(0x3), 0x40, calldatasize, 0, 32) return(0, 32) pop } } /** * @dev Withdraw any token, including ether from this wallet to an EOA. * param _token The address of the token to withdraw. * param _amount The amount to withdraw. * @return Success of the withdrawal. */ function withdraw(address /*_token*/, uint256 /*_amount*/) external returns(bool) { if(msg.sender != owner_) return error('msg.sender != owner, Wallet.withdraw()'); assembly { calldatacopy(0x40, 0, calldatasize) delegatecall(gas, sload(0x3), 0x40, calldatasize, 0, 32) return(0, 32) pop } } /** * Constants */ /** * @dev Get the balance for a specific token. * @param _token The address of the token contract to retrieve the balance of. * @return The current balance within this contract. */ function balanceOf(address _token) public view returns(uint) { if (_token == address(0)) { return address(this).balance; } else { return Token(_token).balanceOf(this); } } function walletVersion() external pure returns(uint){ return 3; } } // File: contracts/wallet/WalletV3Builder.sol pragma solidity ^0.4.15; /** * @title Wallet to hold and trade ERC20 tokens and ether * @dev User wallet to interact with the exchange. * all tokens and ether held in this wallet, 1 to 1 mapping to user EOAs. */ contract WalletV3Builder is WalletBuilderInterface { address public connector; /** * @dev Contract constructor. Set user as owner and connector address. * @param _connector The wallet connector to be used to retrieve the wallet logic */ constructor (address _connector) public { connector = _connector; } /** * @dev build a new trading wallet and returns its address * @param _owner user EOA of the created trading wallet * @param _exchange exchange address */ function buildWallet(address _owner, address _exchange) external returns(address) { return new WalletV3(_owner, connector, _exchange); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"depositERC20Token","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"logic_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"name":"updateBalance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"verifyOrder","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_exchange","type":"address"}],"name":"updateExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"birthBlock_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"depositEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"walletVersion","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"exchange_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_version","type":"uint256"}],"name":"updateLogic","outputs":[{"name":"","type":"bool"}],"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":"","type":"address"},{"name":"","type":"uint256"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenBalances_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_connector","type":"address"},{"name":"_exchange","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"errorString","type":"string"}],"name":"LogErrorString","type":"event"}]
Deployed Bytecode
0x6080604052600436106100cf5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632039d9fd81146100d157806322d40b1314610109578063412288031461013a5780634e7343ea14610163578063648a0c911461019257806369820a80146101b357806370a08231146101da57806398ea5fca146101fb578063bc51713114610203578063c066817914610218578063d767ee4d1461022d578063e766307914610245578063f3fef3a31461025a578063f6b1b18b1461027e575b005b3480156100dd57600080fd5b506100f5600160a060020a036004351660243561029f565b604080519115158252519081900360200190f35b34801561011557600080fd5b5061011e61049d565b60408051600160a060020a039092168252519081900360200190f35b34801561014657600080fd5b506100f5600160a060020a036004351660243560443515156104ac565b34801561016f57600080fd5b506100f5600160a060020a036004358116906024359060443590606435166104ac565b34801561019e57600080fd5b506100f5600160a060020a03600435166104c6565b3480156101bf57600080fd5b506101c8610574565b60408051918252519081900360200190f35b3480156101e657600080fd5b506101c8600160a060020a036004351661057a565b6100cf610628565b34801561020f57600080fd5b506101c861077f565b34801561022457600080fd5b5061011e610784565b34801561023957600080fd5b506100f5600435610793565b34801561025157600080fd5b5061011e610951565b34801561026657600080fd5b506100f5600160a060020a0360043516602435610960565b34801561028a57600080fd5b506101c8600160a060020a03600435166109f0565b6000600160a060020a03831615156103435761033c608060405190810160405280604181526020017f43616e6e6f74206465706f73697420657468657220766961206465706f73697481526020017f45524332302c2057616c6c65742e6465706f7369744552433230546f6b656e2881526020017f2900000000000000000000000000000000000000000000000000000000000000815250610a02565b9050610497565b60035460408051600160a060020a038681166024830152604480830187905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f47e7ef24000000000000000000000000000000000000000000000000000000001781529251825191909416939192829180838360005b838110156103e65781810151838201526020016103ce565b50505050905090810190601f1680156104135780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561049357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6465706f7369744552433230546f6b656e2829206661696c6564000000000000604482015290519081900360640190fd5b5060015b92915050565b600354600160a060020a031681565b6000366000604037602060003660406003545af460206000f35b60008054600160a060020a031633146105455761053e606060405190810160405280602d81526020017f6d73672e73656e64657220213d206f776e65725f2c2057616c6c65742e75706481526020017f61746545786368616e6765282900000000000000000000000000000000000000815250610a02565b905061056f565b506001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161781555b919050565b60045481565b6000600160a060020a03821615156105945750303161056f565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b505050506040513d602081101561061f57600080fd5b5051905061056f565b600354604080516000602482018190523460448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f47e7ef240000000000000000000000000000000000000000000000000000000017815292518251600160a060020a03909516949293909283928190849084905b838110156106d05781810151838201526020016106b8565b50505050905090810190601f1680156106fd5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561077d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6465706f73697445746865722829206661696c65640000000000000000000000604482015290519081900360640190fd5b565b600390565b600154600160a060020a031681565b600080548190600160a060020a031633146108145761080d606060405190810160405280602a81526020017f6d73672e73656e64657220213d206f776e65725f2c2057616c6c65742e75706481526020017f6174654c6f676963282900000000000000000000000000000000000000000000815250610a02565b915061094b565b600554604080517fd526d332000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163d526d332916024808201926020929091908290030181600087803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050506040513d60208110156108a557600080fd5b50519050600160a060020a038116151561091e5761080d606060405190810160405280602581526020017f496e76616c69642076657273696f6e2c2057616c6c65742e7570646174654c6f81526020017f6769632829000000000000000000000000000000000000000000000000000000815250610a02565b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055600191505b50919050565b600054600160a060020a031681565b60008054600160a060020a031633146109d85761033c606060405190810160405280602681526020017f6d73672e73656e64657220213d206f776e65722c2057616c6c65742e7769746881526020017f6472617728290000000000000000000000000000000000000000000000000000815250610a02565b366000604037602060003660406003545af460206000f35b60026020526000908152604090205481565b60007f551303dd5f39cbfe6daba6b3e27754b8a7d72f519756a2cde2b92c2bbde159a7826040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a63578181015183820152602001610a4b565b50505050905090810190601f168015610a905780820380516001836020036101000a031916815260200191505b509250505060405180910390a15060009190505600a165627a7a723058204ddb185cd98efe930cfa8de5cabb456db5fab579527b769a5d5660a922e134d20029
Deployed Bytecode Sourcemap
6269:6152:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8093:415;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8093:415:0;;;-1:-1:-1;;;;;8093:415:0;;;;;;;;;;;;;;;;;;;;;;;6537:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6537:21:0;;;;;;;;-1:-1:-1;;;;;6537:21:0;;;;;;;;;;;;;;8845:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8845:311:0;;;-1:-1:-1;;;;;8845:311:0;;;;;;;;;10956:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10956:328:0;-1:-1:-1;;;;;10956:328:0;;;;;;;;;;;;;;;;9498:319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9498:319:0;;;-1:-1:-1;;;;;9498:319:0;;;6647:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6647:26:0;;;;;;;;;;;;;;;;;;;;12118:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12118:221:0;;;-1:-1:-1;;;;;12118:221:0;;;7644:208;;;;12345:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12345:73:0;;;;6452:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6452:24:0;;;;9998:422;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9998:422:0;;;;;6426:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6426:21:0;;;;11521:358;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11521:358:0;;;-1:-1:-1;;;;;11521:358:0;;;;;6481:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6481:49:0;;;-1:-1:-1;;;;;6481:49:0;;;8093:415;8191:4;-1:-1:-1;;;;;8225:11:0;;;8221:105;;;8252:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;:74::i;:::-;8245:81;;;;8221:105;8351:6;;8371:68;;;-1:-1:-1;;;;;8371:68:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8371:68:0;;;;;;;25:18:-1;;61:17;;8371:68:0;182:15:-1;8371:68:0;179:29:-1;160:49;;8351:89:0;;;;:6;;;;;8371:68;;8351:89;;;;25:18:-1;-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8351:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8335:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8498:4:0;8093:415;;;;;:::o;6537:21::-;;;-1:-1:-1;;;;;6537:21:0;;:::o;8845:311::-;8979:4;9035:12;9032:1;9026:4;9013:35;9109:2;9106:1;9092:12;9086:4;9080:3;9074:10;9069:3;9056:56;9130:2;9127:1;9120:13;9498:319;9568:4;9602:6;;-1:-1:-1;;;;;9602:6:0;9588:10;:20;9584:94;;9624:54;;;;;;;;;;;;;;;;;;;;;;;;:5;:54::i;:::-;9617:61;;;;9584:94;-1:-1:-1;9770:9:0;:21;;-1:-1:-1;;9770:21:0;-1:-1:-1;;;;;9770:21:0;;;;;9498:319;;;;:::o;6647:26::-;;;;:::o;12118:221::-;12188:4;-1:-1:-1;;;;;12208:20:0;;;12204:130;;;-1:-1:-1;12254:4:0;12246:21;12239:28;;12204:130;12297:29;;;;;;12321:4;12297:29;;;;;;-1:-1:-1;;;;;12297:23:0;;;;;:29;;;;;;;;;;;;;;-1:-1:-1;12297:23:0;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;12297:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12297:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12297:29:0;;-1:-1:-1;12290:36:0;;7644:208;7721:6;;7741:65;;;7721:6;7741:65;;;;;;7796:9;7741:65;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7741:65:0;;;;;;;25:18:-1;;61:17;;7741:65:0;182:15:-1;7741:65:0;179:29:-1;160:49;;7721:86:0;;;;-1:-1:-1;;;;;7721:6:0;;;;7741:65;;7721:86;;;;;;;;25:18:-1;;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7721:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7644:208::o;12345:73::-;12411:1;12345:73;:::o;6452:24::-;;;-1:-1:-1;;;;;6452:24:0;;:::o;9998:422::-;10064:4;10098:6;;10064:4;;-1:-1:-1;;;;;10098:6:0;10084:10;:20;10080:91;;10120:51;;;;;;;;;;;;;;;;;;;;;;;;:5;:51::i;:::-;10113:58;;;;10080:91;10201:10;;:29;;;;;;;;;;;;;;-1:-1:-1;;;;;10201:10:0;;;;:19;;:29;;;;;;;;;;;;;;;-1:-1:-1;10201:10:0;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;10201:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10201:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10201:29:0;;-1:-1:-1;;;;;;10291:15:0;;;10287:81;;;10322:46;;;;;;;;;;;;;;;;;;;;;;;;:5;:46::i;10287:81::-;10377:6;:19;;-1:-1:-1;;10377:19:0;-1:-1:-1;;;;;10377:19:0;;;;;-1:-1:-1;;;9998:422:0;;;;;:::o;6426:21::-;;;-1:-1:-1;;;;;6426:21:0;;:::o;11521:358::-;11607:4;11640:6;;-1:-1:-1;;;;;11640:6:0;11626:10;:20;11623:86;;11662:47;;;;;;;;;;;;;;;;;;;;;;;;:5;:47::i;11623:86::-;11758:12;11755:1;11749:4;11736:35;11832:2;11829:1;11815:12;11809:4;11803:3;11797:10;11792:3;11779:56;11853:2;11850:1;11843:13;6481:49;;;;;;;;;;;;;:::o;641:126::-;695:4;713:29;728:13;713:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;713:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;756:5:0;641:126;;;:::o
Swarm Source
bzzr://4ddb185cd98efe930cfa8de5cabb456db5fab579527b769a5d5660a922e134d2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.