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
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 14764588 | 774 days ago | IN | Create: OkxNFTMarketAggregator | 0 ETH | 0.08797458 |
View more zero value Internal Transactions in Advanced View mode
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 Name:
OkxNFTMarketAggregator
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-13 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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 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. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * 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. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual onlyOwner { _transferOwnership(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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract MarketRegistry is Ownable { struct TradeDetails { uint256 marketId; uint256 value; bytes32 orderHash; bytes tradeData; } struct Market { address proxy; bool isLib; bool isActive; } event NewMarketAdded( address indexed proxy, uint256 indexed marketId, bool isLib ); event MarketStatusChanged( uint256 indexed marketId, bool indexed oldStatus, bool indexed newStatus ); event MarketProxyChanged( uint256 indexed marketId, address indexed oldProxy, address indexed newProxy, bool oldIsLib, bool newIsLib ); Market[] public markets; constructor(address[] memory proxies, bool[] memory isLibs) { for (uint256 i = 0; i < proxies.length; i++) { markets.push(Market(proxies[i], isLibs[i], true)); } } function addMarket(address proxy, bool isLib) external onlyOwner { markets.push(Market(proxy, isLib, true)); emit NewMarketAdded(proxy, markets.length - 1, isLib); } function setMarketStatus(uint256 marketId, bool newStatus) external onlyOwner { Market storage market = markets[marketId]; emit MarketStatusChanged(marketId, market.isActive, newStatus); market.isActive = newStatus; } function setMarketProxy( uint256 marketId, address newProxy, bool isLib ) external onlyOwner { Market storage market = markets[marketId]; emit MarketProxyChanged( marketId, market.proxy, newProxy, market.isLib, isLib ); market.proxy = newProxy; market.isLib = isLib; } function getMarketInfo(uint256 marketId) external view returns ( address proxy, bool isLib, bool isActive ) { Market memory marketInfo = markets[marketId]; proxy = marketInfo.proxy; isLib = marketInfo.isLib; isActive = marketInfo.isActive; } } contract OkxNFTMarketAggregator is Ownable, ReentrancyGuard { bool private _initialized; MarketRegistry public marketRegistry; event MatchOrderResults(bytes32[] orderHashes, bool[] results); function init(address newOwner) external { require(!_initialized, "Already initialized"); _initialized = true; _transferOwnership(newOwner); } function setMarketRegistry(address _marketRegistry) external onlyOwner { marketRegistry = MarketRegistry(_marketRegistry); } function trade(MarketRegistry.TradeDetails[] memory tradeDetails) external payable nonReentrant { uint256 length = tradeDetails.length; bytes32[] memory orderHashes = new bytes32[](length); bool[] memory results = new bool[](length); uint256 giveBackValue; for (uint256 i; i < length; ) { (address proxy, bool isLib, bool isActive) = marketRegistry.markets( tradeDetails[i].marketId ); require(isActive, "Market inactive"); bytes memory tradeData = tradeDetails[i].tradeData; uint256 ethValue = tradeDetails[i].value; (bool success, ) = isLib ? proxy.delegatecall(tradeData) : proxy.call{value: ethValue}(tradeData); orderHashes[i] = tradeDetails[i].orderHash; results[i] = success; if (!success) { giveBackValue += ethValue; } unchecked { ++i; } } if (giveBackValue > 0) { (bool transfered, bytes memory reason) = msg.sender.call{ value: giveBackValue }(""); require(transfered, string(reason)); } emit MatchOrderResults(orderHashes, results); } // emergency withdraw function withdraw(address to, uint256 amount) external onlyOwner { (bool success, ) = payable(to).call{value: amount}(""); require(success, "Withdraw failed"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32[]","name":"orderHashes","type":"bytes32[]"},{"indexed":false,"internalType":"bool[]","name":"results","type":"bool[]"}],"name":"MatchOrderResults","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketRegistry","outputs":[{"internalType":"contract MarketRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketRegistry","type":"address"}],"name":"setMarketRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"internalType":"bytes","name":"tradeData","type":"bytes"}],"internalType":"struct MarketRegistry.TradeDetails[]","name":"tradeDetails","type":"tuple[]"}],"name":"trade","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a33610023565b60018055610073565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610cfa806100826000396000f3fe60806040526004361061007b5760003560e01c8063d85797041161004e578063d857970414610100578063ecb96fe614610120578063f2fde38b14610145578063f3fef3a31461016557600080fd5b806319ab453c14610080578063715018a6146100a25780638da5cb5b146100b7578063bc3b58d7146100ed575b600080fd5b34801561008c57600080fd5b506100a061009b366004610997565b610185565b005b3480156100ae57600080fd5b506100a06101ec565b3480156100c357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6100a06100fb366004610a29565b610222565b34801561010c57600080fd5b506100a061011b366004610997565b6106c8565b34801561012c57600080fd5b506002546100d19061010090046001600160a01b031681565b34801561015157600080fd5b506100a0610160366004610997565b61071a565b34801561017157600080fd5b506100a06101803660046109fe565b6107b2565b60025460ff16156101d35760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b6002805460ff191660011790556101e981610876565b50565b6000546001600160a01b031633146102165760405162461bcd60e51b81526004016101ca90610bb6565b6102206000610876565b565b600260015414156102755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ca565b6002600155805160008167ffffffffffffffff8111156102a557634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156102ce578160200160208202803683370190505b50905060008267ffffffffffffffff8111156102fa57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610323578160200160208202803683370190505b5090506000805b8481101561060b576000806000600260019054906101000a90046001600160a01b03166001600160a01b031663b1283e778a868151811061037b57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516040518263ffffffff1660e01b81526004016103a591815260200190565b60606040518083038186803b1580156103bd57600080fd5b505afa1580156103d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f591906109ba565b9250925092508061043a5760405162461bcd60e51b815260206004820152600f60248201526e4d61726b657420696e61637469766560881b60448201526064016101ca565b600089858151811061045c57634e487b7160e01b600052603260045260246000fd5b602002602001015160600151905060008a868151811061048c57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151905060008461050257856001600160a01b031682846040516104ba9190610aeb565b60006040518083038185875af1925050503d80600081146104f7576040519150601f19603f3d011682016040523d82523d6000602084013e6104fc565b606091505b5061055c565b856001600160a01b03168360405161051a9190610aeb565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b505b5090508b878151811061057f57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001518a88815181106105ab57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050808988815181106105d857634e487b7160e01b600052603260045260246000fd5b91151560209283029190910190910152806105fa576105f78289610c45565b97505b86600101965050505050505061032a565b508015610684576040516000908190339084908381818185875af1925050503d8060008114610656576040519150601f19603f3d011682016040523d82523d6000602084013e61065b565b606091505b50915091508181906106805760405162461bcd60e51b81526004016101ca9190610b83565b5050505b7fa43f4bcf06b7e28c335ab6096cae3215c7ca0cedc6f3063a067950e5c2b4921183836040516106b5929190610b07565b60405180910390a1505060018055505050565b6000546001600160a01b031633146106f25760405162461bcd60e51b81526004016101ca90610bb6565b600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146107445760405162461bcd60e51b81526004016101ca90610bb6565b6001600160a01b0381166107a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ca565b6101e981610876565b6000546001600160a01b031633146107dc5760405162461bcd60e51b81526004016101ca90610bb6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610829576040519150601f19603f3d011682016040523d82523d6000602084013e61082e565b606091505b50509050806108715760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016101ca565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805180151581146108d657600080fd5b919050565b6000608082840312156108ec578081fd5b6108f4610beb565b9050813581526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561092957600080fd5b818501915085601f83011261093d57600080fd5b81358181111561094f5761094f610c99565b610961601f8201601f19168501610c14565b9150808252868482850101111561097757600080fd5b808484018584013760008482840101525080606085015250505092915050565b6000602082840312156109a8578081fd5b81356109b381610caf565b9392505050565b6000806000606084860312156109ce578182fd5b83516109d981610caf565b92506109e7602085016108c6565b91506109f5604085016108c6565b90509250925092565b60008060408385031215610a10578182fd5b8235610a1b81610caf565b946020939093013593505050565b60006020808385031215610a3b578182fd5b823567ffffffffffffffff80821115610a52578384fd5b818501915085601f830112610a65578384fd5b813581811115610a7757610a77610c99565b8060051b610a86858201610c14565b8281528581019085870183870188018b1015610aa0578889fd5b8893505b84841015610add57803586811115610aba57898afd5b610ac88c8a838b01016108db565b84525060019390930192918701918701610aa4565b509998505050505050505050565b60008251610afd818460208701610c69565b9190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610b4057815184529284019290840190600101610b24565b50505083810382850152845180825285830191830190845b81811015610b76578351151583529284019291840191600101610b58565b5090979650505050505050565b6020815260008251806020840152610ba2816040850160208701610c69565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6040516080810167ffffffffffffffff81118282101715610c0e57610c0e610c99565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c3d57610c3d610c99565b604052919050565b60008219821115610c6457634e487b7160e01b81526011600452602481fd5b500190565b60005b83811015610c84578181015183820152602001610c6c565b83811115610c93576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146101e957600080fdfea26469706673582212208e0ed9e2f361b5e0e61f94a8d2044810cdbe4a1495d769e35432b22dd5e2b20264736f6c63430008040033
Deployed Bytecode
0x60806040526004361061007b5760003560e01c8063d85797041161004e578063d857970414610100578063ecb96fe614610120578063f2fde38b14610145578063f3fef3a31461016557600080fd5b806319ab453c14610080578063715018a6146100a25780638da5cb5b146100b7578063bc3b58d7146100ed575b600080fd5b34801561008c57600080fd5b506100a061009b366004610997565b610185565b005b3480156100ae57600080fd5b506100a06101ec565b3480156100c357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6100a06100fb366004610a29565b610222565b34801561010c57600080fd5b506100a061011b366004610997565b6106c8565b34801561012c57600080fd5b506002546100d19061010090046001600160a01b031681565b34801561015157600080fd5b506100a0610160366004610997565b61071a565b34801561017157600080fd5b506100a06101803660046109fe565b6107b2565b60025460ff16156101d35760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b6002805460ff191660011790556101e981610876565b50565b6000546001600160a01b031633146102165760405162461bcd60e51b81526004016101ca90610bb6565b6102206000610876565b565b600260015414156102755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ca565b6002600155805160008167ffffffffffffffff8111156102a557634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156102ce578160200160208202803683370190505b50905060008267ffffffffffffffff8111156102fa57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610323578160200160208202803683370190505b5090506000805b8481101561060b576000806000600260019054906101000a90046001600160a01b03166001600160a01b031663b1283e778a868151811061037b57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516040518263ffffffff1660e01b81526004016103a591815260200190565b60606040518083038186803b1580156103bd57600080fd5b505afa1580156103d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f591906109ba565b9250925092508061043a5760405162461bcd60e51b815260206004820152600f60248201526e4d61726b657420696e61637469766560881b60448201526064016101ca565b600089858151811061045c57634e487b7160e01b600052603260045260246000fd5b602002602001015160600151905060008a868151811061048c57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151905060008461050257856001600160a01b031682846040516104ba9190610aeb565b60006040518083038185875af1925050503d80600081146104f7576040519150601f19603f3d011682016040523d82523d6000602084013e6104fc565b606091505b5061055c565b856001600160a01b03168360405161051a9190610aeb565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b505b5090508b878151811061057f57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001518a88815181106105ab57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050808988815181106105d857634e487b7160e01b600052603260045260246000fd5b91151560209283029190910190910152806105fa576105f78289610c45565b97505b86600101965050505050505061032a565b508015610684576040516000908190339084908381818185875af1925050503d8060008114610656576040519150601f19603f3d011682016040523d82523d6000602084013e61065b565b606091505b50915091508181906106805760405162461bcd60e51b81526004016101ca9190610b83565b5050505b7fa43f4bcf06b7e28c335ab6096cae3215c7ca0cedc6f3063a067950e5c2b4921183836040516106b5929190610b07565b60405180910390a1505060018055505050565b6000546001600160a01b031633146106f25760405162461bcd60e51b81526004016101ca90610bb6565b600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146107445760405162461bcd60e51b81526004016101ca90610bb6565b6001600160a01b0381166107a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ca565b6101e981610876565b6000546001600160a01b031633146107dc5760405162461bcd60e51b81526004016101ca90610bb6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610829576040519150601f19603f3d011682016040523d82523d6000602084013e61082e565b606091505b50509050806108715760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016101ca565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805180151581146108d657600080fd5b919050565b6000608082840312156108ec578081fd5b6108f4610beb565b9050813581526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561092957600080fd5b818501915085601f83011261093d57600080fd5b81358181111561094f5761094f610c99565b610961601f8201601f19168501610c14565b9150808252868482850101111561097757600080fd5b808484018584013760008482840101525080606085015250505092915050565b6000602082840312156109a8578081fd5b81356109b381610caf565b9392505050565b6000806000606084860312156109ce578182fd5b83516109d981610caf565b92506109e7602085016108c6565b91506109f5604085016108c6565b90509250925092565b60008060408385031215610a10578182fd5b8235610a1b81610caf565b946020939093013593505050565b60006020808385031215610a3b578182fd5b823567ffffffffffffffff80821115610a52578384fd5b818501915085601f830112610a65578384fd5b813581811115610a7757610a77610c99565b8060051b610a86858201610c14565b8281528581019085870183870188018b1015610aa0578889fd5b8893505b84841015610add57803586811115610aba57898afd5b610ac88c8a838b01016108db565b84525060019390930192918701918701610aa4565b509998505050505050505050565b60008251610afd818460208701610c69565b9190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610b4057815184529284019290840190600101610b24565b50505083810382850152845180825285830191830190845b81811015610b76578351151583529284019291840191600101610b58565b5090979650505050505050565b6020815260008251806020840152610ba2816040850160208701610c69565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6040516080810167ffffffffffffffff81118282101715610c0e57610c0e610c99565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c3d57610c3d610c99565b604052919050565b60008219821115610c6457634e487b7160e01b81526011600452602481fd5b500190565b60005b83811015610c84578181015183820152602001610c6c565b83811115610c93576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146101e957600080fdfea26469706673582212208e0ed9e2f361b5e0e61f94a8d2044810cdbe4a1495d769e35432b22dd5e2b20264736f6c63430008040033
Deployed Bytecode Sourcemap
8227:2142:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8442:174;;;;;;;;;;-1:-1:-1;8442:174:0;;;;;:::i;:::-;;:::i;:::-;;2497:103;;;;;;;;;;;;;:::i;1846:87::-;;;;;;;;;;-1:-1:-1;1892:7:0;1919:6;-1:-1:-1;;;;;1919:6:0;1846:87;;;-1:-1:-1;;;;;4048:32:1;;;4030:51;;4018:2;4003:18;1846:87:0;;;;;;;8770:1377;;;;;;:::i;:::-;;:::i;8624:138::-;;;;;;;;;;-1:-1:-1;8624:138:0;;;;;:::i;:::-;;:::i;8326:36::-;;;;;;;;;;-1:-1:-1;8326:36:0;;;;;;;-1:-1:-1;;;;;8326:36:0;;;2755:201;;;;;;;;;;-1:-1:-1;2755:201:0;;;;;:::i;:::-;;:::i;10182:184::-;;;;;;;;;;-1:-1:-1;10182:184:0;;;;;:::i;:::-;;:::i;8442:174::-;8503:12;;;;8502:13;8494:45;;;;-1:-1:-1;;;8494:45:0;;7541:2:1;8494:45:0;;;7523:21:1;7580:2;7560:18;;;7553:30;-1:-1:-1;;;7599:18:1;;;7592:49;7658:18;;8494:45:0;;;;;;;;;8550:12;:19;;-1:-1:-1;;8550:19:0;8565:4;8550:19;;;8580:28;8599:8;8580:18;:28::i;:::-;8442:174;:::o;2497:103::-;1892:7;1919:6;-1:-1:-1;;;;;1919:6:0;793:10;2066:23;2058:68;;;;-1:-1:-1;;;2058:68:0;;;;;;;:::i;:::-;2562:30:::1;2589:1;2562:18;:30::i;:::-;2497:103::o:0;8770:1377::-;5032:1;5630:7;;:19;;5622:63;;;;-1:-1:-1;;;5622:63:0;;7889:2:1;5622:63:0;;;7871:21:1;7928:2;7908:18;;;7901:30;7967:33;7947:18;;;7940:61;8018:18;;5622:63:0;7861:181:1;5622:63:0;5032:1;5763:7;:18;8926:19;;8909:14:::1;8926:19:::0;8987:21:::1;::::0;::::1;;;;-1:-1:-1::0;;;8987:21:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;8987:21:0::1;;8956:52;;9019:21;9054:6;9043:18;;;;;;-1:-1:-1::0;;;9043:18:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;9043:18:0::1;;9019:42;;9072:21;9111:9:::0;9106:751:::1;9126:6;9122:1;:10;9106:751;;;9152:13;9167:10:::0;9179:13:::1;9196:14;;;;;;;;;-1:-1:-1::0;;;;;9196:14:0::1;-1:-1:-1::0;;;;;9196:22:0::1;;9237:12;9250:1;9237:15;;;;;;-1:-1:-1::0;;;9237:15:0::1;;;;;;;;;;;;;;;:24;;;9196:80;;;;;;;;;;;;;8193:25:1::0;;8181:2;8166:18;;8148:76;9196:80:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9151:125;;;;;;9299:8;9291:36;;;::::0;-1:-1:-1;;;9291:36:0;;7197:2:1;9291:36:0::1;::::0;::::1;7179:21:1::0;7236:2;7216:18;;;7209:30;-1:-1:-1;;;7255:18:1;;;7248:45;7310:18;;9291:36:0::1;7169:165:1::0;9291:36:0::1;9344:22;9369:12;9382:1;9369:15;;;;;;-1:-1:-1::0;;;9369:15:0::1;;;;;;;;;;;;;;;:25;;;9344:50;;9409:16;9428:12;9441:1;9428:15;;;;;;-1:-1:-1::0;;;9428:15:0::1;;;;;;;;;;;;;;;:21;;;9409:40;;9467:12;9485:5;:112;;9559:5;-1:-1:-1::0;;;;;9559:10:0::1;9577:8;9587:9;9559:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9485:112;;;9510:5;-1:-1:-1::0;;;;;9510:18:0::1;9529:9;9510:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9485:112;9466:131;;;9631:12;9644:1;9631:15;;;;;;-1:-1:-1::0;;;9631:15:0::1;;;;;;;;;;;;;;;:25;;;9614:11;9626:1;9614:14;;;;;;-1:-1:-1::0;;;9614:14:0::1;;;;;;;;;;;;;;:42;;;::::0;::::1;9684:7;9671;9679:1;9671:10;;;;;;-1:-1:-1::0;;;9671:10:0::1;;;;;;;;;:20:::0;::::1;;:10;::::0;;::::1;::::0;;;;;;;:20;9713:7;9708:74:::1;;9741:25;9758:8:::0;9741:25;::::1;:::i;:::-;;;9708:74;9827:3;;;;;9106:751;;;;;;;;;-1:-1:-1::0;9873:17:0;;9869:214:::1;;9948:73;::::0;9908:15:::1;::::0;;;9948:10:::1;::::0;9989:13;;9908:15;9948:73;9908:15;9948:73;9989:13;9948:10;:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9907:114;;;;10044:10;10063:6;10036:35;;;;;-1:-1:-1::0;;;10036:35:0::1;;;;;;;;:::i;:::-;;9869:214;;;10100:39;10118:11;10131:7;10100:39;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;4988:1:0;5942:22;;-1:-1:-1;;;8770:1377:0:o;8624:138::-;1892:7;1919:6;-1:-1:-1;;;;;1919:6:0;793:10;2066:23;2058:68;;;;-1:-1:-1;;;2058:68:0;;;;;;;:::i;:::-;8706:14:::1;:48:::0;;-1:-1:-1;;;;;8706:48:0;;::::1;;;-1:-1:-1::0;;;;;;8706:48:0;;::::1;::::0;;;::::1;::::0;;8624:138::o;2755:201::-;1892:7;1919:6;-1:-1:-1;;;;;1919:6:0;793:10;2066:23;2058:68;;;;-1:-1:-1;;;2058:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2844:22:0;::::1;2836:73;;;::::0;-1:-1:-1;;;2836:73:0;;6085:2:1;2836:73:0::1;::::0;::::1;6067:21:1::0;6124:2;6104:18;;;6097:30;6163:34;6143:18;;;6136:62;-1:-1:-1;;;6214:18:1;;;6207:36;6260:19;;2836:73:0::1;6057:228:1::0;2836:73:0::1;2920:28;2939:8;2920:18;:28::i;10182:184::-:0;1892:7;1919:6;-1:-1:-1;;;;;1919:6:0;793:10;2066:23;2058:68;;;;-1:-1:-1;;;2058:68:0;;;;;;;:::i;:::-;10259:12:::1;10285:2;-1:-1:-1::0;;;;;10277:16:0::1;10301:6;10277:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10258:54;;;10331:7;10323:35;;;::::0;-1:-1:-1;;;10323:35:0;;6492:2:1;10323:35:0::1;::::0;::::1;6474:21:1::0;6531:2;6511:18;;;6504:30;-1:-1:-1;;;6550:18:1;;;6543:45;6605:18;;10323:35:0::1;6464:165:1::0;10323:35:0::1;2137:1;10182:184:::0;;:::o;3116:191::-;3190:16;3209:6;;-1:-1:-1;;;;;3226:17:0;;;-1:-1:-1;;;;;;3226:17:0;;;;;;3259:40;;3209:6;;;;;;;3259:40;;3190:16;3259:40;3116:191;;:::o;14:164:1:-;90:13;;139;;132:21;122:32;;112:2;;168:1;165;158:12;112:2;71:107;;;:::o;183:991::-;242:5;290:4;278:9;273:3;269:19;265:30;262:2;;;312:5;305;298:20;262:2;338:22;;:::i;:::-;329:31;;396:9;383:23;376:5;369:38;426:2;488;477:9;473:18;460:32;455:2;448:5;444:14;437:56;553:2;542:9;538:18;525:32;520:2;513:5;509:14;502:56;609:2;598:9;594:18;581:32;632:18;673:2;665:6;662:14;659:2;;;689:1;686;679:12;659:2;727:6;716:9;712:22;702:32;;772:3;765:4;761:2;757:13;753:23;743:2;;790:1;787;780:12;743:2;826;813:16;848:2;844;841:10;838:2;;;854:18;;:::i;:::-;896:53;939:2;920:13;;-1:-1:-1;;916:27:1;912:36;;896:53;:::i;:::-;883:66;;972:2;965:5;958:17;1012:3;1007:2;1002;998;994:11;990:20;987:29;984:2;;;1029:1;1026;1019:12;984:2;1084;1079;1075;1071:11;1066:2;1059:5;1055:14;1042:45;1128:1;1123:2;1118;1111:5;1107:14;1103:23;1096:34;;1162:5;1157:2;1150:5;1146:14;1139:29;;;;252:922;;;;:::o;1179:257::-;1238:6;1291:2;1279:9;1270:7;1266:23;1262:32;1259:2;;;1312:6;1304;1297:22;1259:2;1356:9;1343:23;1375:31;1400:5;1375:31;:::i;:::-;1425:5;1249:187;-1:-1:-1;;;1249:187:1:o;1441:419::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:2;;;1613:6;1605;1598:22;1560:2;1650:9;1644:16;1669:31;1694:5;1669:31;:::i;:::-;1719:5;-1:-1:-1;1743:46:1;1785:2;1770:18;;1743:46;:::i;:::-;1733:56;;1808:46;1850:2;1839:9;1835:18;1808:46;:::i;:::-;1798:56;;1550:310;;;;;:::o;1865:325::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:2;;;2015:6;2007;2000:22;1962:2;2059:9;2046:23;2078:31;2103:5;2078:31;:::i;:::-;2128:5;2180:2;2165:18;;;;2152:32;;-1:-1:-1;;;1952:238:1:o;2195:1195::-;2308:6;2339:2;2382;2370:9;2361:7;2357:23;2353:32;2350:2;;;2403:6;2395;2388:22;2350:2;2448:9;2435:23;2477:18;2518:2;2510:6;2507:14;2504:2;;;2539:6;2531;2524:22;2504:2;2582:6;2571:9;2567:22;2557:32;;2627:7;2620:4;2616:2;2612:13;2608:27;2598:2;;2654:6;2646;2639:22;2598:2;2695;2682:16;2717:2;2713;2710:10;2707:2;;;2723:18;;:::i;:::-;2769:2;2766:1;2762:10;2792:28;2816:2;2812;2808:11;2792:28;:::i;:::-;2854:15;;;2885:12;;;;2917:11;;;2947;;;2943:20;;2940:33;-1:-1:-1;2937:2:1;;;2991:6;2983;2976:22;2937:2;3018:6;3009:15;;3033:327;3047:2;3044:1;3041:9;3033:327;;;3124:3;3111:17;3160:2;3147:11;3144:19;3141:2;;;3181:6;3173;3166:22;3141:2;3215:70;3277:7;3272:2;3258:11;3254:2;3250:20;3246:29;3215:70;:::i;:::-;3203:83;;-1:-1:-1;3065:1:1;3058:9;;;;;3306:12;;;;3338;;3033:327;;;-1:-1:-1;3379:5:1;2319:1071;-1:-1:-1;;;;;;;;;2319:1071:1:o;3395:274::-;3524:3;3562:6;3556:13;3578:53;3624:6;3619:3;3612:4;3604:6;3600:17;3578:53;:::i;:::-;3647:16;;;;;3532:137;-1:-1:-1;;3532:137:1:o;4092:1168::-;4354:2;4366:21;;;4436:13;;4339:18;;;4458:22;;;4306:4;;4533;;4511:2;4496:18;;;4560:15;;;4306:4;4606:169;4620:6;4617:1;4614:13;4606:169;;;4681:13;;4669:26;;4715:12;;;;4750:15;;;;4642:1;4635:9;4606:169;;;-1:-1:-1;;;4811:19:1;;;4791:18;;;4784:47;4881:13;;4903:21;;;4979:15;;;;4942:12;;;5014:4;5027:205;5043:8;5038:3;5035:17;5027:205;;;5126:15;;5119:23;5112:31;5098:46;;5205:17;;;;5166:14;;;;5071:1;5062:11;5027:205;;;-1:-1:-1;5249:5:1;;4315:945;-1:-1:-1;;;;;;;4315:945:1:o;5495:383::-;5644:2;5633:9;5626:21;5607:4;5676:6;5670:13;5719:6;5714:2;5703:9;5699:18;5692:34;5735:66;5794:6;5789:2;5778:9;5774:18;5769:2;5761:6;5757:15;5735:66;:::i;:::-;5862:2;5841:15;-1:-1:-1;;5837:29:1;5822:45;;;;5869:2;5818:54;;5616:262;-1:-1:-1;;5616:262:1:o;6634:356::-;6836:2;6818:21;;;6855:18;;;6848:30;6914:34;6909:2;6894:18;;6887:62;6981:2;6966:18;;6808:182::o;8229:253::-;8301:2;8295:9;8343:4;8331:17;;8378:18;8363:34;;8399:22;;;8360:62;8357:2;;;8425:18;;:::i;:::-;8461:2;8454:22;8275:207;:::o;8487:275::-;8558:2;8552:9;8623:2;8604:13;;-1:-1:-1;;8600:27:1;8588:40;;8658:18;8643:34;;8679:22;;;8640:62;8637:2;;;8705:18;;:::i;:::-;8741:2;8734:22;8532:230;;-1:-1:-1;8532:230:1:o;8767:229::-;8807:3;8838:1;8834:6;8831:1;8828:13;8825:2;;;-1:-1:-1;;;8864:33:1;;8920:4;8917:1;8910:15;8950:4;8871:3;8938:17;8825:2;-1:-1:-1;8981:9:1;;8815:181::o;9001:258::-;9073:1;9083:113;9097:6;9094:1;9091:13;9083:113;;;9173:11;;;9167:18;9154:11;;;9147:39;9119:2;9112:10;9083:113;;;9214:6;9211:1;9208:13;9205:2;;;9249:1;9240:6;9235:3;9231:16;9224:27;9205:2;;9054:205;;;:::o;9264:127::-;9325:10;9320:3;9316:20;9313:1;9306:31;9356:4;9353:1;9346:15;9380:4;9377:1;9370:15;9396:131;-1:-1:-1;;;;;9471:31:1;;9461:42;;9451:2;;9517:1;9514;9507:12
Swarm Source
ipfs://8e0ed9e2f361b5e0e61f94a8d2044810cdbe4a1495d769e35432b22dd5e2b202
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
OP | 100.00% | $3,367.93 | 0.0002 | $0.673586 |
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.