Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ExchangeStateV1
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-11-17
*/
pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () internal { }
// solhint-disable-previous-line no-empty-blocks
function _msgSender() internal view returns (address payable) {
return msg.sender;
}
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @title Roles
* @dev Library for managing addresses assigned to a Role.
*/
library Roles {
struct Role {
mapping (address => bool) bearer;
}
/**
* @dev Give an account access to this role.
*/
function add(Role storage role, address account) internal {
require(!has(role, account), "Roles: account already has role");
role.bearer[account] = true;
}
/**
* @dev Remove an account's access to this role.
*/
function remove(Role storage role, address account) internal {
require(has(role, account), "Roles: account does not have role");
role.bearer[account] = false;
}
/**
* @dev Check if an account has this role.
* @return bool
*/
function has(Role storage role, address account) internal view returns (bool) {
require(account != address(0), "Roles: account is the zero address");
return role.bearer[account];
}
}
contract OperatorRole is Context {
using Roles for Roles.Role;
event OperatorAdded(address indexed account);
event OperatorRemoved(address indexed account);
Roles.Role private _operators;
constructor () internal {
}
modifier onlyOperator() {
require(isOperator(_msgSender()), "OperatorRole: caller does not have the Operator role");
_;
}
function isOperator(address account) public view returns (bool) {
return _operators.has(account);
}
function _addOperator(address account) internal {
_operators.add(account);
emit OperatorAdded(account);
}
function _removeOperator(address account) internal {
_operators.remove(account);
emit OperatorRemoved(account);
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return _msgSender() == _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract OwnableOperatorRole is Ownable, OperatorRole {
function addOperator(address account) external onlyOwner {
_addOperator(account);
}
function removeOperator(address account) external onlyOwner {
_removeOperator(account);
}
}
contract ExchangeDomainV1 {
enum AssetType {ETH, ERC20, ERC1155, ERC721, ERC721Deprecated}
struct Asset {
address token;
uint tokenId;
AssetType assetType;
}
struct OrderKey {
/* who signed the order */
address owner;
/* random number */
uint salt;
/* what has owner */
Asset sellAsset;
/* what wants owner */
Asset buyAsset;
}
struct Order {
OrderKey key;
/* how much has owner (in wei, or UINT256_MAX if ERC-721) */
uint selling;
/* how much wants owner (in wei, or UINT256_MAX if ERC-721) */
uint buying;
/* fee for selling */
uint sellerFee;
}
/* An ECDSA signature. */
struct Sig {
/* v parameter */
uint8 v;
/* r parameter */
bytes32 r;
/* s parameter */
bytes32 s;
}
}
contract ExchangeStateV1 is OwnableOperatorRole {
// keccak256(OrderKey) => completed
mapping(bytes32 => uint256) public completed;
function getCompleted(ExchangeDomainV1.OrderKey calldata key) view external returns (uint256) {
return completed[getCompletedKey(key)];
}
function setCompleted(ExchangeDomainV1.OrderKey calldata key, uint256 newCompleted) external onlyOperator {
completed[getCompletedKey(key)] = newCompleted;
}
function getCompletedKey(ExchangeDomainV1.OrderKey memory key) pure public returns (bytes32) {
return keccak256(abi.encodePacked(key.owner, key.sellAsset.token, key.sellAsset.tokenId, key.buyAsset.token, key.buyAsset.tokenId, key.salt));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"completed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"salt","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum ExchangeDomainV1.AssetType","name":"assetType","type":"uint8"}],"internalType":"struct ExchangeDomainV1.Asset","name":"sellAsset","type":"tuple"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum ExchangeDomainV1.AssetType","name":"assetType","type":"uint8"}],"internalType":"struct ExchangeDomainV1.Asset","name":"buyAsset","type":"tuple"}],"internalType":"struct ExchangeDomainV1.OrderKey","name":"key","type":"tuple"}],"name":"getCompleted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"salt","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum ExchangeDomainV1.AssetType","name":"assetType","type":"uint8"}],"internalType":"struct ExchangeDomainV1.Asset","name":"sellAsset","type":"tuple"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum ExchangeDomainV1.AssetType","name":"assetType","type":"uint8"}],"internalType":"struct ExchangeDomainV1.Asset","name":"buyAsset","type":"tuple"}],"internalType":"struct ExchangeDomainV1.OrderKey","name":"key","type":"tuple"}],"name":"getCompletedKey","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"salt","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum ExchangeDomainV1.AssetType","name":"assetType","type":"uint8"}],"internalType":"struct ExchangeDomainV1.Asset","name":"sellAsset","type":"tuple"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum ExchangeDomainV1.AssetType","name":"assetType","type":"uint8"}],"internalType":"struct ExchangeDomainV1.Asset","name":"buyAsset","type":"tuple"}],"internalType":"struct ExchangeDomainV1.OrderKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"newCompleted","type":"uint256"}],"name":"setCompleted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610b0e806100796000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80639870d7fe116100715780639870d7fe14610111578063ac8a584a14610124578063dc10fb0a14610137578063f2fde38b14610157578063f6419d961461016a578063fb0000c01461017d576100a9565b80633a076e9a146100ae5780636d70f7ae146100c3578063715018a6146100ec5780638da5cb5b146100f45780638f32d59b14610109575b600080fd5b6100c16100bc366004610717565b610190565b005b6100d66100d13660046106b4565b6101ec565b6040516100e391906109c4565b60405180910390f35b6100c1610205565b6100fc610273565b6040516100e391906109b6565b6100d6610282565b6100c161011f3660046106b4565b6102a6565b6100c16101323660046106b4565b6102d6565b61014a610145366004610753565b610303565b6040516100e391906109d2565b6100c16101653660046106b4565b610352565b61014a6101783660046106da565b61037f565b61014a61018b3660046106f8565b610391565b61019b6100d16103be565b6101c05760405162461bcd60e51b81526004016101b790610a00565b60405180910390fd5b80600260006101d761014536879003870187610753565b81526020810191909152604001600020555050565b60006101ff60018363ffffffff6103c216565b92915050565b61020d610282565b6102295760405162461bcd60e51b81526004016101b790610a20565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b03166102976103be565b6001600160a01b031614905090565b6102ae610282565b6102ca5760405162461bcd60e51b81526004016101b790610a20565b6102d38161040a565b50565b6102de610282565b6102fa5760405162461bcd60e51b81526004016101b790610a20565b6102d381610452565b80516040808301518051602091820151606086015180519084015184880151955160009761033597909690910161094c565b604051602081830303815290604052805190602001209050919050565b61035a610282565b6103765760405162461bcd60e51b81526004016101b790610a20565b6102d38161049a565b60026020526000908152604090205481565b60006002816103a861014536869003860186610753565b8152602001908152602001600020549050919050565b3390565b60006001600160a01b0382166103ea5760405162461bcd60e51b81526004016101b790610a30565b506001600160a01b03166000908152602091909152604090205460ff1690565b61041b60018263ffffffff61051b16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b61046360018263ffffffff61056716565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b6001600160a01b0381166104c05760405162461bcd60e51b81526004016101b7906109f0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61052582826103c2565b156105425760405162461bcd60e51b81526004016101b7906109e0565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61057182826103c2565b61058d5760405162461bcd60e51b81526004016101b790610a10565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b80356101ff81610aa1565b80356101ff81610ab5565b80356101ff81610abe565b6000606082840312156105e257600080fd5b6105ec6060610a40565b905060006105fa84846105af565b825250602061060b848483016105ba565b602083015250604061061f848285016105c5565b60408301525092915050565b6000610100828403121561063e57600080fd5b50919050565b6000610100828403121561065757600080fd5b6106616080610a40565b9050600061066f84846105af565b8252506020610680848483016105ba565b6020830152506040610694848285016105d0565b60408301525060a06106a8848285016105d0565b60608301525092915050565b6000602082840312156106c657600080fd5b60006106d284846105af565b949350505050565b6000602082840312156106ec57600080fd5b60006106d284846105ba565b6000610100828403121561070b57600080fd5b60006106d2848461062b565b600080610120838503121561072b57600080fd5b6000610737858561062b565b925050610100610749858286016105ba565b9150509250929050565b6000610100828403121561076657600080fd5b60006106d28484610644565b61077b81610a70565b82525050565b61077b61078d82610a70565b610a8f565b61077b81610a7b565b61077b81610a80565b60006107b1601f83610a67565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500815260200192915050565b60006107ea602683610a67565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610832603483610a67565b7f4f70657261746f72526f6c653a2063616c6c657220646f6573206e6f74206861815273766520746865204f70657261746f7220726f6c6560601b602082015260400192915050565b6000610888602183610a67565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c8152606560f81b602082015260400192915050565b60006108cb602083610a67565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000610904602283610a67565b7f526f6c65733a206163636f756e7420697320746865207a65726f206164647265815261737360f01b602082015260400192915050565b61077b61094782610a80565b610a80565b60006109588289610781565b6014820191506109688288610781565b601482019150610978828761093b565b6020820191506109888286610781565b601482019150610998828561093b565b6020820191506109a8828461093b565b506020019695505050505050565b602081016101ff8284610772565b602081016101ff8284610792565b602081016101ff828461079b565b602080825281016101ff816107a4565b602080825281016101ff816107dd565b602080825281016101ff81610825565b602080825281016101ff8161087b565b602080825281016101ff816108be565b602080825281016101ff816108f7565b60405181810167ffffffffffffffff81118282101715610a5f57600080fd5b604052919050565b90815260200190565b60006101ff82610a83565b151590565b90565b6001600160a01b031690565b60006101ff8260006101ff8260601b90565b610aaa81610a70565b81146102d357600080fd5b610aaa81610a80565b600581106102d357600080fdfea365627a7a72315820aa5601af19ab1e5293abaf4d8b2fd00c0df68c612deb796da2ea78e857eb4d656c6578706572696d656e74616cf564736f6c63430005110040
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80639870d7fe116100715780639870d7fe14610111578063ac8a584a14610124578063dc10fb0a14610137578063f2fde38b14610157578063f6419d961461016a578063fb0000c01461017d576100a9565b80633a076e9a146100ae5780636d70f7ae146100c3578063715018a6146100ec5780638da5cb5b146100f45780638f32d59b14610109575b600080fd5b6100c16100bc366004610717565b610190565b005b6100d66100d13660046106b4565b6101ec565b6040516100e391906109c4565b60405180910390f35b6100c1610205565b6100fc610273565b6040516100e391906109b6565b6100d6610282565b6100c161011f3660046106b4565b6102a6565b6100c16101323660046106b4565b6102d6565b61014a610145366004610753565b610303565b6040516100e391906109d2565b6100c16101653660046106b4565b610352565b61014a6101783660046106da565b61037f565b61014a61018b3660046106f8565b610391565b61019b6100d16103be565b6101c05760405162461bcd60e51b81526004016101b790610a00565b60405180910390fd5b80600260006101d761014536879003870187610753565b81526020810191909152604001600020555050565b60006101ff60018363ffffffff6103c216565b92915050565b61020d610282565b6102295760405162461bcd60e51b81526004016101b790610a20565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b03166102976103be565b6001600160a01b031614905090565b6102ae610282565b6102ca5760405162461bcd60e51b81526004016101b790610a20565b6102d38161040a565b50565b6102de610282565b6102fa5760405162461bcd60e51b81526004016101b790610a20565b6102d381610452565b80516040808301518051602091820151606086015180519084015184880151955160009761033597909690910161094c565b604051602081830303815290604052805190602001209050919050565b61035a610282565b6103765760405162461bcd60e51b81526004016101b790610a20565b6102d38161049a565b60026020526000908152604090205481565b60006002816103a861014536869003860186610753565b8152602001908152602001600020549050919050565b3390565b60006001600160a01b0382166103ea5760405162461bcd60e51b81526004016101b790610a30565b506001600160a01b03166000908152602091909152604090205460ff1690565b61041b60018263ffffffff61051b16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b61046360018263ffffffff61056716565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b6001600160a01b0381166104c05760405162461bcd60e51b81526004016101b7906109f0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61052582826103c2565b156105425760405162461bcd60e51b81526004016101b7906109e0565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61057182826103c2565b61058d5760405162461bcd60e51b81526004016101b790610a10565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b80356101ff81610aa1565b80356101ff81610ab5565b80356101ff81610abe565b6000606082840312156105e257600080fd5b6105ec6060610a40565b905060006105fa84846105af565b825250602061060b848483016105ba565b602083015250604061061f848285016105c5565b60408301525092915050565b6000610100828403121561063e57600080fd5b50919050565b6000610100828403121561065757600080fd5b6106616080610a40565b9050600061066f84846105af565b8252506020610680848483016105ba565b6020830152506040610694848285016105d0565b60408301525060a06106a8848285016105d0565b60608301525092915050565b6000602082840312156106c657600080fd5b60006106d284846105af565b949350505050565b6000602082840312156106ec57600080fd5b60006106d284846105ba565b6000610100828403121561070b57600080fd5b60006106d2848461062b565b600080610120838503121561072b57600080fd5b6000610737858561062b565b925050610100610749858286016105ba565b9150509250929050565b6000610100828403121561076657600080fd5b60006106d28484610644565b61077b81610a70565b82525050565b61077b61078d82610a70565b610a8f565b61077b81610a7b565b61077b81610a80565b60006107b1601f83610a67565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500815260200192915050565b60006107ea602683610a67565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610832603483610a67565b7f4f70657261746f72526f6c653a2063616c6c657220646f6573206e6f74206861815273766520746865204f70657261746f7220726f6c6560601b602082015260400192915050565b6000610888602183610a67565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c8152606560f81b602082015260400192915050565b60006108cb602083610a67565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000610904602283610a67565b7f526f6c65733a206163636f756e7420697320746865207a65726f206164647265815261737360f01b602082015260400192915050565b61077b61094782610a80565b610a80565b60006109588289610781565b6014820191506109688288610781565b601482019150610978828761093b565b6020820191506109888286610781565b601482019150610998828561093b565b6020820191506109a8828461093b565b506020019695505050505050565b602081016101ff8284610772565b602081016101ff8284610792565b602081016101ff828461079b565b602080825281016101ff816107a4565b602080825281016101ff816107dd565b602080825281016101ff81610825565b602080825281016101ff8161087b565b602080825281016101ff816108be565b602080825281016101ff816108f7565b60405181810167ffffffffffffffff81118282101715610a5f57600080fd5b604052919050565b90815260200190565b60006101ff82610a83565b151590565b90565b6001600160a01b031690565b60006101ff8260006101ff8260601b90565b610aaa81610a70565b81146102d357600080fd5b610aaa81610a80565b600581106102d357600080fdfea365627a7a72315820aa5601af19ab1e5293abaf4d8b2fd00c0df68c612deb796da2ea78e857eb4d656c6578706572696d656e74616cf564736f6c63430005110040
Deployed Bytecode Sourcemap
6655:745:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6655:745:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6965:171;;;;;;;;;:::i;:::-;;2587:113;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4669:140;;;:::i;3858:79::-;;;:::i;:::-;;;;;;;;4224:94;;;:::i;5476:97::-;;;;;;;;;:::i;5581:103::-;;;;;;;;;:::i;7144:253::-;;;;;;;;;:::i;:::-;;;;;;;;4964:109;;;;;;;;;:::i;6753:44::-;;;;;;;;;:::i;6806:151::-;;;;;;;;;:::i;6965:171::-;2478:24;2489:12;:10;:12::i;2478:24::-;2470:89;;;;-1:-1:-1;;;2470:89:0;;;;;;;;;;;;;;;;;7116:12;7082:9;:31;7092:20;;;;;;;;7108:3;7092:20;;;7082:31;;;;;;;;;;;-1:-1:-1;7082:31:0;:46;-1:-1:-1;;6965:171:0:o;2587:113::-;2645:4;2669:23;:10;2684:7;2669:23;:14;:23;:::i;:::-;2662:30;2587:113;-1:-1:-1;;2587:113:0:o;4669:140::-;4070:9;:7;:9::i;:::-;4062:54;;;;-1:-1:-1;;;4062:54:0;;;;;;;;;4768:1;4752:6;;4731:40;;-1:-1:-1;;;;;4752:6:0;;;;4731:40;;4768:1;;4731:40;4799:1;4782:19;;-1:-1:-1;;;;;;4782:19:0;;;4669:140::o;3858:79::-;3896:7;3923:6;-1:-1:-1;;;;;3923:6:0;3858:79;:::o;4224:94::-;4264:4;4304:6;;-1:-1:-1;;;;;4304:6:0;4288:12;:10;:12::i;:::-;-1:-1:-1;;;;;4288:22:0;;4281:29;;4224:94;:::o;5476:97::-;4070:9;:7;:9::i;:::-;4062:54;;;;-1:-1:-1;;;4062:54:0;;;;;;;;;5544:21;5557:7;5544:12;:21::i;:::-;5476:97;:::o;5581:103::-;4070:9;:7;:9::i;:::-;4062:54;;;;-1:-1:-1;;;4062:54:0;;;;;;;;;5652:24;5668:7;5652:15;:24::i;7144:253::-;7282:9;;7293:13;;;;;:19;;7314:21;;;;;7337:12;;;;:18;;7357:20;;;;7379:8;;;;7265:123;;7228:7;;7265:123;;7282:9;;7379:8;;7265:123;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7265:123:0;;;7255:134;;;;;;7248:141;;7144:253;;;:::o;4964:109::-;4070:9;:7;:9::i;:::-;4062:54;;;;-1:-1:-1;;;4062:54:0;;;;;;;;;5037:28;5056:8;5037:18;:28::i;6753:44::-;;;;;;;;;;;;;:::o;6806:151::-;6891:7;6918:9;6891:7;6928:20;;;;;;;;6944:3;6928:20;;;6918:31;;;;;;;;;;;;6911:38;;6806:151;;;:::o;843:98::-;923:10;843:98;:::o;1964:203::-;2036:4;-1:-1:-1;;;;;2061:21:0;;2053:68;;;;-1:-1:-1;;;2053:68:0;;;;;;;;;-1:-1:-1;;;;;;2139:20:0;:11;:20;;;;;;;;;;;;;;;1964:203::o;2708:128::-;2767:23;:10;2782:7;2767:23;:14;:23;:::i;:::-;2806:22;;-1:-1:-1;;;;;2806:22:0;;;;;;;;2708:128;:::o;2844:136::-;2906:26;:10;2924:7;2906:26;:17;:26;:::i;:::-;2948:24;;-1:-1:-1;;;;;2948:24:0;;;;;;;;2844:136;:::o;5179:229::-;-1:-1:-1;;;;;5253:22:0;;5245:73;;;;-1:-1:-1;;;5245:73:0;;;;;;;;;5355:6;;;5334:38;;-1:-1:-1;;;;;5334:38:0;;;;5355:6;;;5334:38;;;5383:6;:17;;-1:-1:-1;;;;;;5383:17:0;-1:-1:-1;;;;;5383:17:0;;;;;;;;;;5179:229::o;1428:178::-;1506:18;1510:4;1516:7;1506:3;:18::i;:::-;1505:19;1497:63;;;;-1:-1:-1;;;1497:63:0;;;;;;;;;-1:-1:-1;;;;;1571:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;1571:27:0;1594:4;1571:27;;;1428:178::o;1686:183::-;1766:18;1770:4;1776:7;1766:3;:18::i;:::-;1758:64;;;;-1:-1:-1;;;1758:64:0;;;;;;;;;-1:-1:-1;;;;;1833:20:0;1856:5;1833:20;;;;;;;;;;;:28;;-1:-1:-1;;1833:28:0;;;1686:183::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;279:156;359:20;;384:46;359:20;384:46;;478:626;;585:4;573:9;568:3;564:19;560:30;557:2;;;603:1;600;593:12;557:2;621:20;636:4;621:20;;;612:29;-1:-1;692:1;724:49;769:3;749:9;724:49;;;699:75;;-1:-1;838:2;871:49;916:3;892:22;;;871:49;;;864:4;857:5;853:16;846:75;795:137;987:2;1020:62;1078:3;1069:6;1058:9;1054:22;1020:62;;;1013:4;1006:5;1002:16;995:88;942:152;551:553;;;;;1152:159;;1263:3;1254:6;1249:3;1245:16;1241:26;1238:2;;;1280:1;1277;1270:12;1238:2;-1:-1;1299:6;1231:80;-1:-1;1231:80;1357:804;;1471:6;1459:9;1454:3;1450:19;1446:32;1443:2;;;1491:1;1488;1481:12;1443:2;1509:20;1524:4;1509:20;;;1500:29;-1:-1;1580:1;1612:49;1657:3;1637:9;1612:49;;;1587:75;;-1:-1;1723:2;1756:49;1801:3;1777:22;;;1756:49;;;1749:4;1742:5;1738:16;1731:75;1683:134;1872:2;1905:67;1968:3;1959:6;1948:9;1944:22;1905:67;;;1898:4;1891:5;1887:16;1880:93;1827:157;2038:3;2072:67;2135:3;2126:6;2115:9;2111:22;2072:67;;;2065:4;2058:5;2054:16;2047:93;1994:157;1437:724;;;;;2305:241;;2409:2;2397:9;2388:7;2384:23;2380:32;2377:2;;;2425:1;2422;2415:12;2377:2;2460:1;2477:53;2522:7;2502:9;2477:53;;;2467:63;2371:175;-1:-1;;;;2371:175;2553:241;;2657:2;2645:9;2636:7;2632:23;2628:32;2625:2;;;2673:1;2670;2663:12;2625:2;2708:1;2725:53;2770:7;2750:9;2725:53;;2801:296;;2932:3;2920:9;2911:7;2907:23;2903:33;2900:2;;;2949:1;2946;2939:12;2900:2;2984:1;3001:80;3073:7;3053:9;3001:80;;3104:422;;;3252:3;3240:9;3231:7;3227:23;3223:33;3220:2;;;3269:1;3266;3259:12;3220:2;3304:1;3321:80;3393:7;3373:9;3321:80;;;3311:90;;3283:124;3438:3;3457:53;3502:7;3493:6;3482:9;3478:22;3457:53;;;3447:63;;3417:99;3214:312;;;;;;3533:292;;3662:3;3650:9;3641:7;3637:23;3633:33;3630:2;;;3679:1;3676;3669:12;3630:2;3714:1;3731:78;3801:7;3781:9;3731:78;;3832:113;3915:24;3933:5;3915:24;;;3910:3;3903:37;3897:48;;;3952:152;4053:45;4073:24;4091:5;4073:24;;;4053:45;;4111:104;4188:21;4203:5;4188:21;;4222:113;4305:24;4323:5;4305:24;;4343:331;;4503:67;4567:2;4562:3;4503:67;;;4603:33;4583:54;;4665:2;4656:12;;4489:185;-1:-1;;4489:185;4683:375;;4843:67;4907:2;4902:3;4843:67;;;4943:34;4923:55;;-1:-1;;;5007:2;4998:12;;4991:30;5049:2;5040:12;;4829:229;-1:-1;;4829:229;5067:389;;5227:67;5291:2;5286:3;5227:67;;;5327:34;5307:55;;-1:-1;;;5391:2;5382:12;;5375:44;5447:2;5438:12;;5213:243;-1:-1;;5213:243;5465:370;;5625:67;5689:2;5684:3;5625:67;;;5725:34;5705:55;;-1:-1;;;5789:2;5780:12;;5773:25;5826:2;5817:12;;5611:224;-1:-1;;5611:224;5844:332;;6004:67;6068:2;6063:3;6004:67;;;6104:34;6084:55;;6167:2;6158:12;;5990:186;-1:-1;;5990:186;6185:371;;6345:67;6409:2;6404:3;6345:67;;;6445:34;6425:55;;-1:-1;;;6509:2;6500:12;;6493:26;6547:2;6538:12;;6331:225;-1:-1;;6331:225;6684:152;6785:45;6805:24;6823:5;6805:24;;;6785:45;;6843:939;;7102:75;7173:3;7164:6;7102:75;;;7199:2;7194:3;7190:12;7183:19;;7213:75;7284:3;7275:6;7213:75;;;7310:2;7305:3;7301:12;7294:19;;7324:75;7395:3;7386:6;7324:75;;;7421:2;7416:3;7412:12;7405:19;;7435:75;7506:3;7497:6;7435:75;;;7532:2;7527:3;7523:12;7516:19;;7546:75;7617:3;7608:6;7546:75;;;7643:2;7638:3;7634:12;7627:19;;7657:75;7728:3;7719:6;7657:75;;;-1:-1;7754:2;7745:12;;7090:692;-1:-1;;;;;;7090:692;7789:213;7907:2;7892:18;;7921:71;7896:9;7965:6;7921:71;;8009:201;8121:2;8106:18;;8135:65;8110:9;8173:6;8135:65;;8217:213;8335:2;8320:18;;8349:71;8324:9;8393:6;8349:71;;8437:407;8628:2;8642:47;;;8613:18;;8703:131;8613:18;8703:131;;8851:407;9042:2;9056:47;;;9027:18;;9117:131;9027:18;9117:131;;9265:407;9456:2;9470:47;;;9441:18;;9531:131;9441:18;9531:131;;9679:407;9870:2;9884:47;;;9855:18;;9945:131;9855:18;9945:131;;10093:407;10284:2;10298:47;;;10269:18;;10359:131;10269:18;10359:131;;10507:407;10698:2;10712:47;;;10683:18;;10773:131;10683:18;10773:131;;11141:256;11203:2;11197:9;11229:17;;;11304:18;11289:34;;11325:22;;;11286:62;11283:2;;;11361:1;11358;11351:12;11283:2;11377;11370:22;11181:216;;-1:-1;11181:216;11405:163;11508:19;;;11557:4;11548:14;;11501:67;11576:91;;11638:24;11656:5;11638:24;;11674:85;11740:13;11733:21;;11716:43;11766:72;11828:5;11811:27;11845:121;-1:-1;;;;;11907:54;;11890:76;12052:95;;12116:26;12136:5;12154:89;12218:20;12232:5;12405:2;12401:14;;12373:52;12433:117;12502:24;12520:5;12502:24;;;12495:5;12492:35;12482:2;;12541:1;12538;12531:12;12557:117;12626:24;12644:5;12626:24;;12681:107;12763:1;12756:5;12753:12;12743:2;;12779:1;12776;12769:12
Swarm Source
bzzr://aa5601af19ab1e5293abaf4d8b2fd00c0df68c612deb796da2ea78e857eb4d65
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.