Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14981635 | 889 days ago | 0.075 ETH | ||||
14309968 | 996 days ago | 0.075 ETH | ||||
14309968 | 996 days ago | 0.075 ETH | ||||
13999670 | 1044 days ago | 0.075 ETH | ||||
13999670 | 1044 days ago | 0.075 ETH | ||||
13603522 | 1106 days ago | 0.075 ETH | ||||
13603522 | 1106 days ago | 0.075 ETH | ||||
13558119 | 1113 days ago | 0.075 ETH | ||||
13558119 | 1113 days ago | 0.075 ETH | ||||
13545747 | 1115 days ago | 0.088 ETH | ||||
13545747 | 1115 days ago | 0.088 ETH | ||||
13545690 | 1115 days ago | 0.108 ETH | ||||
13545690 | 1115 days ago | 0.108 ETH | ||||
13545619 | 1115 days ago | 0.005 ETH |
Loading...
Loading
Contract Name:
Arbitrum_Messenger
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-03 */ // Sources flattened with hardhat v2.5.0 https://hardhat.org // File contracts/external/avm/interfaces/iArbitrum_Inbox.sol // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; // Retryable tickets are the Arbitrum protocol’s canonical method for passing generalized messages from Ethereum to // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer, // where any user can re-execute for some fixed period (roughly one week). // Retryable tickets are created by calling Inbox.createRetryableTicket. // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets interface iArbitrum_Inbox { function createRetryableTicketNoRefundAliasRewrite( address destAddr, uint256 l2CallValue, uint256 maxSubmissionCost, address excessFeeRefundAddress, address callValueRefundAddress, uint256 maxGas, uint256 gasPriceBid, bytes calldata data ) external payable returns (uint256); } // File contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol // Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol // with a change to the solidity version. abstract contract Arbitrum_CrossDomainEnabled { iArbitrum_Inbox public immutable inbox; /** * @param _inbox Contract that sends generalized messages to the Arbitrum chain. */ constructor(address _inbox) { inbox = iArbitrum_Inbox(_inbox); } // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters // This function will not apply aliassing to the `user` address on L2. // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the // inbox. function sendTxToL2NoAliassing( address target, // Address where transaction will initiate on L2. address user, // Address where excess gas is credited on L2. uint256 l1CallValue, // msg.value deposited to `user` on L2. uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`. uint256 maxGas, // Gas limit for immediate L2 execution attempt. uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt. bytes memory data // ABI encoded data to send to target. ) internal returns (uint256) { // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external // - address destAddr: destination L2 contract address // - uint256 l2CallValue: call value for retryable L2 message // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2 // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution // - uint256 gasPriceBid: price bid for L2 execution // - bytes data: ABI encoded data of L2 message uint256 seqNum = inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }( target, 0, // we always assume that l2CallValue = 0 maxSubmissionCost, user, user, maxGas, gasPriceBid, data ); return seqNum; } } // File contracts/insured-bridge/interfaces/MessengerInterface.sol /** * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will * differ for each L2. */ interface MessengerInterface { function relayMessage( address target, address userToRefund, uint256 l1CallValue, uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost, bytes memory message ) external payable; } // File @openzeppelin/contracts/utils/[email protected] /* * @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) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File @openzeppelin/contracts/access/[email protected] /** * @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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File contracts/insured-bridge/avm/Arbitrum_Messenger.sol /** * @notice Sends cross chain messages Arbitrum L2 network. * @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the * BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger. * @dev This address will be the sender of any L1 --> L2 retryable tickets, so it should be set as the cross domain * owner for L2 contracts that expect to receive cross domain messages. */ contract Arbitrum_Messenger is Ownable, Arbitrum_CrossDomainEnabled, MessengerInterface { event RelayedMessage( address indexed from, address indexed to, uint256 indexed seqNum, address userToRefund, uint256 l1CallValue, uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost, bytes data ); /** * @param _inbox Contract that sends generalized messages to the Arbitrum chain. */ constructor(address _inbox) Arbitrum_CrossDomainEnabled(_inbox) {} /** * @notice Sends a message to an account on L2. If this message reverts on l2 for any reason it can either be * resent on L1, or redeemed on L2 manually. To learn more see how "retryable tickets" work on Arbitrum * https://developer.offchainlabs.com/docs/l1_l2_messages#parameters * @param target The intended recipient on L2. * @param userToRefund User on L2 to refund extra fees to. * @param l1CallValue Amount of ETH deposited to `target` contract on L2. Used to pay for L2 submission fee and * l2CallValue. This will usually be > 0. * @param gasLimit The gasLimit for the receipt of the message on L2. * @param gasPrice Gas price bid for L2 execution. * @param maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee. * This amount is proportional to the size of `data`. * @param message The data to send to the target (usually calldata to a function with * `onlyFromCrossDomainAccount()`) */ function relayMessage( address target, address userToRefund, uint256 l1CallValue, uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost, bytes memory message ) external payable override onlyOwner { // Since we know the L2 target's address in advance, we don't need to alias an L1 address. uint256 seqNumber = sendTxToL2NoAliassing(target, userToRefund, l1CallValue, maxSubmissionCost, gasLimit, gasPrice, message); emit RelayedMessage( msg.sender, target, seqNumber, userToRefund, l1CallValue, gasLimit, gasPrice, maxSubmissionCost, message ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_inbox","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"seqNum","type":"uint256"},{"indexed":false,"internalType":"address","name":"userToRefund","type":"address"},{"indexed":false,"internalType":"uint256","name":"l1CallValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"RelayedMessage","type":"event"},{"inputs":[],"name":"inbox","outputs":[{"internalType":"contract iArbitrum_Inbox","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"userToRefund","type":"address"},{"internalType":"uint256","name":"l1CallValue","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"bytes","name":"message","type":"bytes"}],"name":"relayMessage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405161075d38038061075d83398101604081905261002f91610086565b600080546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b031916608052506100b6565b60006020828403121561009857600080fd5b81516001600160a01b03811681146100af57600080fd5b9392505050565b60805160601c6106836100da6000396000818160e1015261030c01526106836000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639e353c701461009c578063f2fde38b146100af578063fb0e722b146100cf575b600080fd5b34801561005b57600080fd5b50610064610103565b005b34801561007257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6100646100aa366004610403565b610180565b3480156100bb57600080fd5b506100646100ca3660046103e1565b61021d565b3480156100db57600080fd5b506100807f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146101365760405162461bcd60e51b815260040161012d90610602565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146101aa5760405162461bcd60e51b815260040161012d90610602565b60006101bb88888886898988610307565b905080886001600160a01b0316336001600160a01b03167fe0546421195e3e65035cacdb8d655c6d557e249c01c601f2af8b56f7526bc03f8a8a8a8a8a8a60405161020b969594939291906105bd565b60405180910390a45050505050505050565b6000546001600160a01b031633146102475760405162461bcd60e51b815260040161012d90610602565b6001600160a01b0381166102ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161012d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631b871c8d888b60008a8d8e8c8c8c6040518a63ffffffff1660e01b8152600401610366989796959493929190610562565b6020604051808303818588803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103b891906104fc565b9998505050505050505050565b80356001600160a01b03811681146103dc57600080fd5b919050565b6000602082840312156103f357600080fd5b6103fc826103c5565b9392505050565b600080600080600080600060e0888a03121561041e57600080fd5b610427886103c5565b9650610435602089016103c5565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff8082111561046e57600080fd5b818a0191508a601f83011261048257600080fd5b81358181111561049457610494610637565b604051601f8201601f19908116603f011681019083821181831017156104bc576104bc610637565b816040528281528d60208487010111156104d557600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b60006020828403121561050e57600080fd5b5051919050565b6000815180845260005b8181101561053b5760208185018101518683018201520161051f565b8181111561054d576000602083870101525b50601f01601f19169290920160200192915050565b600061010060018060a01b03808c1684528a602085015289604085015280891660608501528088166080850152508560a08401528460c08401528060e08401526105ae81840185610515565b9b9a5050505050505050505050565b60018060a01b038716815285602082015284604082015283606082015282608082015260c060a082015260006105f660c0830184610515565b98975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fdfea264697066735822122014ae70ed258357998f8e3b88b823951690435719388ed6d4e1aeb5cc0ad61c0a64736f6c634300080700330000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f
Deployed Bytecode
0x60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639e353c701461009c578063f2fde38b146100af578063fb0e722b146100cf575b600080fd5b34801561005b57600080fd5b50610064610103565b005b34801561007257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6100646100aa366004610403565b610180565b3480156100bb57600080fd5b506100646100ca3660046103e1565b61021d565b3480156100db57600080fd5b506100807f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f81565b6000546001600160a01b031633146101365760405162461bcd60e51b815260040161012d90610602565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146101aa5760405162461bcd60e51b815260040161012d90610602565b60006101bb88888886898988610307565b905080886001600160a01b0316336001600160a01b03167fe0546421195e3e65035cacdb8d655c6d557e249c01c601f2af8b56f7526bc03f8a8a8a8a8a8a60405161020b969594939291906105bd565b60405180910390a45050505050505050565b6000546001600160a01b031633146102475760405162461bcd60e51b815260040161012d90610602565b6001600160a01b0381166102ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161012d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000807f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f6001600160a01b0316631b871c8d888b60008a8d8e8c8c8c6040518a63ffffffff1660e01b8152600401610366989796959493929190610562565b6020604051808303818588803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103b891906104fc565b9998505050505050505050565b80356001600160a01b03811681146103dc57600080fd5b919050565b6000602082840312156103f357600080fd5b6103fc826103c5565b9392505050565b600080600080600080600060e0888a03121561041e57600080fd5b610427886103c5565b9650610435602089016103c5565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff8082111561046e57600080fd5b818a0191508a601f83011261048257600080fd5b81358181111561049457610494610637565b604051601f8201601f19908116603f011681019083821181831017156104bc576104bc610637565b816040528281528d60208487010111156104d557600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b60006020828403121561050e57600080fd5b5051919050565b6000815180845260005b8181101561053b5760208185018101518683018201520161051f565b8181111561054d576000602083870101525b50601f01601f19169290920160200192915050565b600061010060018060a01b03808c1684528a602085015289604085015280891660608501528088166080850152508560a08401528460c08401528060e08401526105ae81840185610515565b9b9a5050505050505050505050565b60018060a01b038716815285602082015284604082015283606082015282608082015260c060a082015260006105f660c0830184610515565b98975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fdfea264697066735822122014ae70ed258357998f8e3b88b823951690435719388ed6d4e1aeb5cc0ad61c0a64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f
-----Decoded View---------------
Arg [0] : _inbox (address): 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f
Deployed Bytecode Sourcemap
8721:2391:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7620:148;;;;;;;;;;;;;:::i;:::-;;6969:87;;;;;;;;;;-1:-1:-1;7015:7:0;7042:6;-1:-1:-1;;;;;7042:6:0;6969:87;;;-1:-1:-1;;;;;2562:32:1;;;2544:51;;2532:2;2517:18;6969:87:0;;;;;;;10317:792;;;;;;:::i;:::-;;:::i;7923:244::-;;;;;;;;;;-1:-1:-1;7923:244:0;;;;;:::i;:::-;;:::i;1531:38::-;;;;;;;;;;;;;;;7620:148;7015:7;7042:6;-1:-1:-1;;;;;7042:6:0;5626:10;7189:23;7181:68;;;;-1:-1:-1;;;7181:68:0;;;;;;;:::i;:::-;;;;;;;;;7727:1:::1;7711:6:::0;;7690:40:::1;::::0;-1:-1:-1;;;;;7711:6:0;;::::1;::::0;7690:40:::1;::::0;7727:1;;7690:40:::1;7758:1;7741:19:::0;;-1:-1:-1;;;;;;7741:19:0::1;::::0;;7620:148::o;10317:792::-;7015:7;7042:6;-1:-1:-1;;;;;7042:6:0;5626:10;7189:23;7181:68;;;;-1:-1:-1;;;7181:68:0;;;;;;;:::i;:::-;10700:17:::1;10733:104;10755:6;10763:12;10777:11;10790:17;10809:8;10819;10829:7;10733:21;:104::i;:::-;10700:137;;10928:9;10907:6;-1:-1:-1::0;;;;;10853:248:0::1;10882:10;-1:-1:-1::0;;;;;10853:248:0::1;;10952:12;10979:11;11005:8;11028;11051:17;11083:7;10853:248;;;;;;;;;;;:::i;:::-;;;;;;;;10589:520;10317:792:::0;;;;;;;:::o;7923:244::-;7015:7;7042:6;-1:-1:-1;;;;;7042:6:0;5626:10;7189:23;7181:68;;;;-1:-1:-1;;;7181:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8012:22:0;::::1;8004:73;;;::::0;-1:-1:-1;;;8004:73:0;;4463:2:1;8004:73:0::1;::::0;::::1;4445:21:1::0;4502:2;4482:18;;;4475:30;4541:34;4521:18;;;4514:62;-1:-1:-1;;;4592:18:1;;;4585:36;4638:19;;8004:73:0::1;4261:402:1::0;8004:73:0::1;8114:6;::::0;;8093:38:::1;::::0;-1:-1:-1;;;;;8093:38:0;;::::1;::::0;8114:6;::::1;::::0;8093:38:::1;::::0;::::1;8142:6;:17:::0;;-1:-1:-1;;;;;;8142:17:0::1;-1:-1:-1::0;;;;;8142:17:0;;;::::1;::::0;;;::::1;::::0;;7923:244::o;2105:2308::-;2959:7;4021:14;4051:5;-1:-1:-1;;;;;4051:47:0;;4107:11;4139:6;4164:1;4225:17;4261:4;4284;4307:6;4332:11;4362:4;4051:330;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4021:360;2105:2308;-1:-1:-1;;;;;;;;;2105:2308:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:1345::-;505:6;513;521;529;537;545;553;606:3;594:9;585:7;581:23;577:33;574:53;;;623:1;620;613:12;574:53;646:29;665:9;646:29;:::i;:::-;636:39;;694:38;728:2;717:9;713:18;694:38;:::i;:::-;684:48;;779:2;768:9;764:18;751:32;741:42;;830:2;819:9;815:18;802:32;792:42;;881:3;870:9;866:19;853:33;843:43;;933:3;922:9;918:19;905:33;895:43;;989:3;978:9;974:19;961:33;1013:18;1054:2;1046:6;1043:14;1040:34;;;1070:1;1067;1060:12;1040:34;1108:6;1097:9;1093:22;1083:32;;1153:7;1146:4;1142:2;1138:13;1134:27;1124:55;;1175:1;1172;1165:12;1124:55;1211:2;1198:16;1233:2;1229;1226:10;1223:36;;;1239:18;;:::i;:::-;1314:2;1308:9;1282:2;1368:13;;-1:-1:-1;;1364:22:1;;;1388:2;1360:31;1356:40;1344:53;;;1412:18;;;1432:22;;;1409:46;1406:72;;;1458:18;;:::i;:::-;1498:10;1494:2;1487:22;1533:2;1525:6;1518:18;1573:7;1568:2;1563;1559;1555:11;1551:20;1548:33;1545:53;;;1594:1;1591;1584:12;1545:53;1650:2;1645;1641;1637:11;1632:2;1624:6;1620:15;1607:46;1695:1;1690:2;1685;1677:6;1673:15;1669:24;1662:35;1716:6;1706:16;;;;;;;383:1345;;;;;;;;;;:::o;1733:184::-;1803:6;1856:2;1844:9;1835:7;1831:23;1827:32;1824:52;;;1872:1;1869;1862:12;1824:52;-1:-1:-1;1895:16:1;;1733:184;-1:-1:-1;1733:184:1:o;1922:471::-;1963:3;2001:5;1995:12;2028:6;2023:3;2016:19;2053:1;2063:162;2077:6;2074:1;2071:13;2063:162;;;2139:4;2195:13;;;2191:22;;2185:29;2167:11;;;2163:20;;2156:59;2092:12;2063:162;;;2243:6;2240:1;2237:13;2234:87;;;2309:1;2302:4;2293:6;2288:3;2284:16;2280:27;2273:38;2234:87;-1:-1:-1;2375:2:1;2354:15;-1:-1:-1;;2350:29:1;2341:39;;;;2382:4;2337:50;;1922:471;-1:-1:-1;;1922:471:1:o;2606:813::-;2920:4;2949:3;2988:1;2984;2979:3;2975:11;2971:19;3029:2;3021:6;3017:15;3006:9;2999:34;3069:6;3064:2;3053:9;3049:18;3042:34;3112:6;3107:2;3096:9;3092:18;3085:34;3167:2;3159:6;3155:15;3150:2;3139:9;3135:18;3128:43;3220:2;3212:6;3208:15;3202:3;3191:9;3187:19;3180:44;;3261:6;3255:3;3244:9;3240:19;3233:35;3305:6;3299:3;3288:9;3284:19;3277:35;3349:2;3343:3;3332:9;3328:19;3321:31;3369:44;3409:2;3398:9;3394:18;3386:6;3369:44;:::i;:::-;3361:52;2606:813;-1:-1:-1;;;;;;;;;;;2606:813:1:o;3424:602::-;3740:1;3736;3731:3;3727:11;3723:19;3715:6;3711:32;3700:9;3693:51;3780:6;3775:2;3764:9;3760:18;3753:34;3823:6;3818:2;3807:9;3803:18;3796:34;3866:6;3861:2;3850:9;3846:18;3839:34;3910:6;3904:3;3893:9;3889:19;3882:35;3954:3;3948;3937:9;3933:19;3926:32;3674:4;3975:45;4015:3;4004:9;4000:19;3992:6;3975:45;:::i;:::-;3967:53;3424:602;-1:-1:-1;;;;;;;;3424:602:1:o;4668:356::-;4870:2;4852:21;;;4889:18;;;4882:30;4948:34;4943:2;4928:18;;4921:62;5015:2;5000:18;;4668:356::o;5029:127::-;5090:10;5085:3;5081:20;5078:1;5071:31;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15
Swarm Source
ipfs://14ae70ed258357998f8e3b88b823951690435719388ed6d4e1aeb5cc0ad61c0a
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.