More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 55,001 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 64690426 | 10 days ago | IN | 0.67408702 POL | 0.00694512 | ||||
Deposit | 64690397 | 10 days ago | IN | 0.87091966 POL | 0.0107207 | ||||
Deposit | 64641801 | 11 days ago | IN | 2.31448271 POL | 0.09705525 | ||||
Deposit | 64625372 | 11 days ago | IN | 3.13412526 POL | 0.00983601 | ||||
Deposit | 63874753 | 30 days ago | IN | 0.64395851 POL | 0.00952466 | ||||
Deposit | 63829552 | 31 days ago | IN | 16.20319797 POL | 0.00677675 | ||||
Deposit | 63575323 | 38 days ago | IN | 30.93390525 POL | 0.00660797 | ||||
Deposit | 63526574 | 39 days ago | IN | 0.52714313 POL | 0.00676062 | ||||
Deposit | 63444248 | 41 days ago | IN | 0.48684093 POL | 0.00660876 | ||||
Deposit | 63433772 | 41 days ago | IN | 1.61502119 POL | 0.0123141 | ||||
Deposit | 63433755 | 41 days ago | IN | 0.6754816 POL | 0.01184234 | ||||
Deposit | 63433695 | 41 days ago | IN | 0.48628792 POL | 0.01319764 | ||||
Deposit | 63179185 | 47 days ago | IN | 0.23182913 POL | 0.01103529 | ||||
Deposit | 62974908 | 52 days ago | IN | 6.30459152 POL | 0.00663831 | ||||
Deposit | 62428457 | 66 days ago | IN | 1.59544647 POL | 0.00723442 | ||||
Deposit | 62102553 | 74 days ago | IN | 3.21586517 POL | 0.00660648 | ||||
Deposit | 62102403 | 74 days ago | IN | 2.72674558 POL | 0.00660648 | ||||
Deposit | 61745028 | 83 days ago | IN | 5.39070746 POL | 0.00698411 | ||||
Deposit | 61744983 | 83 days ago | IN | 2.85439686 POL | 0.00662285 | ||||
Deposit | 61441712 | 90 days ago | IN | 1.26247812 POL | 0.00672833 | ||||
Deposit | 60961692 | 103 days ago | IN | 0.08324384 POL | 0.00563385 | ||||
Deposit | 60774517 | 107 days ago | IN | 3.06669284 POL | 0.00698412 | ||||
Deposit | 60581142 | 112 days ago | IN | 0.21009627 POL | 0.00676098 | ||||
Deposit | 60217375 | 121 days ago | IN | 0.18413428 POL | 0.03087429 | ||||
Deposit | 60217375 | 121 days ago | IN | 0.18413428 POL | 0.03087429 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
64690426 | 10 days ago | 0.66549335 POL | ||||
64690397 | 10 days ago | 0.77198476 POL | ||||
64690397 | 10 days ago | 0.08068286 POL | ||||
64641801 | 11 days ago | 2.28945436 POL | ||||
64625372 | 11 days ago | 3.11290756 POL | ||||
63874753 | 30 days ago | 0.64331426 POL | ||||
63829552 | 31 days ago | 16.203118 POL | ||||
63575323 | 38 days ago | 30.56073128 POL | ||||
63526574 | 39 days ago | 0.52706876 POL | ||||
63444248 | 41 days ago | 0.48626488 POL | ||||
63433772 | 41 days ago | 1.61467339 POL | ||||
63433755 | 41 days ago | 0.67088537 POL | ||||
63433695 | 41 days ago | 0.48571187 POL | ||||
63179185 | 47 days ago | 0.10882806 POL | ||||
63179185 | 47 days ago | 0.12294017 POL | ||||
62974908 | 52 days ago | 6.29607126 POL | ||||
62428457 | 66 days ago | 1.59481497 POL | ||||
62102553 | 74 days ago | 3.20227852 POL | ||||
62102403 | 74 days ago | 2.71315892 POL | ||||
61745028 | 83 days ago | 5.39008545 POL | ||||
61744983 | 83 days ago | 2.85094594 POL | ||||
61441712 | 90 days ago | 1.24889147 POL | ||||
60961692 | 103 days ago | 0.08322895 POL | ||||
60774517 | 107 days ago | 3.06606646 POL | ||||
60581142 | 112 days ago | 0.20976068 POL |
Loading...
Loading
Contract Name:
GasZipLZ
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./OptimizedLzApp.sol"; contract GasZipLZ is OptimizedLzApp { constructor(address _lzEndpoint) OptimizedLzApp(_lzEndpoint) { _initializeOwner(msg.sender); } function estimateFees(uint16[] calldata _dstChainIds, bytes[] calldata _adapterParams) external view returns (uint256[] memory nativeFees) { nativeFees = new uint256[](_dstChainIds.length); for (uint i; i < _dstChainIds.length; i++) { nativeFees[i] = estimateFees(_dstChainIds[i], _adapterParams[i]); } } function estimateFees(uint16 _dstChainId, bytes memory _adapterParams) public view returns (uint256 nativeFee) { (nativeFee,) = lzEndpoint.estimateFees(_dstChainId, address(this), "", false, _adapterParams); } function deposit( uint256[] calldata _depositParams, address to ) external payable { uint256 fee; for (uint i; i < _depositParams.length; i++) { fee += _deposit(_depositParams[i], to); } require(msg.value >= fee, "Fee Not Met"); } function _deposit(uint256 _depositParam, address _to) internal returns (uint256 fee) { (uint16 _dstChainId, bytes memory _adapterParams) = _decodeDeposit(_depositParam, _to); fee = estimateFees(_dstChainId, _adapterParams); _lzSend(_dstChainId, "", payable(this), _adapterParams, fee); } function _decodeDeposit(uint256 _depositParam, address _to) internal view returns (uint16 _dstChainId, bytes memory _adapterParams) { _dstChainId = uint16(_depositParam >> 240); _adapterParams = createAdapterParams(_dstChainId, uint256(uint240(_depositParam)), _to); } function createAdapterParams(uint16 dstChainId, uint256 nativeAmount, address to) public view returns (bytes memory) { return abi.encodePacked(uint16(2), getGasLimit(dstChainId), nativeAmount, to); } function withdraw(address token, uint256 amount) external onlyOwner { bool s; if (token == address(0)) { (s,) = msg.sender.call{value: address(this).balance}(""); } else { (s,) = token.call(abi.encodeWithSignature("transfer(address,uint256)", msg.sender, amount)); } require(s, "Withdraw Failed"); } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Ownable.sol"; import "./layerzero/ILayerZeroReceiver.sol"; import "./layerzero/ILayerZeroEndpoint.sol"; abstract contract OptimizedLzApp is Ownable, ILayerZeroReceiver { ILayerZeroEndpoint public immutable lzEndpoint; mapping(uint16 => bytes) public trustedRemoteLookup; mapping(uint16 => uint256) public gasLimitLookup; uint256 public defaultGasLimit = 20_000; constructor(address _endpoint) { lzEndpoint = ILayerZeroEndpoint(_endpoint); } // Do nothing function lzReceive( uint16, bytes calldata, uint64, bytes calldata ) public virtual override { return; } function _lzSend( uint16 _dstChainId, bytes memory _payload, address payable _refundAddress, bytes memory _adapterParams, uint _nativeFee ) internal virtual { bytes memory trustedRemote = getTrusted(_dstChainId); lzEndpoint.send{value: _nativeFee}(_dstChainId, trustedRemote, _payload, _refundAddress, address(0), _adapterParams); } function getTrusted(uint16 _dstChainId) internal view returns (bytes memory) { bytes memory trustedRemote = trustedRemoteLookup[_dstChainId]; if (trustedRemote.length == 0) { return abi.encodePacked(address(this), address(this)); } else { return trustedRemote; } } function getGasLimit(uint16 _dstChainId) internal view returns (uint256) { uint256 gasLimit = gasLimitLookup[_dstChainId]; if (gasLimit == 0) { return defaultGasLimit; } else { return gasLimit; } } function setTrusted( uint16[] calldata _remoteChainIds, address[] calldata _remoteAddresses ) external onlyOwner { require(_remoteChainIds.length == _remoteAddresses.length, "Length Mismatch"); for (uint i; i < _remoteChainIds.length; i++) { trustedRemoteLookup[_remoteChainIds[i]] = abi.encodePacked(_remoteAddresses[i], address(this)); } } function setGasLimit( uint16[] calldata _remoteChainIds, uint256[] calldata _gasLimits ) external onlyOwner { require(_remoteChainIds.length == _gasLimits.length, "Length Mismatch"); for (uint i; i < _remoteChainIds.length; i++) { gasLimitLookup[_remoteChainIds[i]] = _gasLimits[i]; } } function setDefaultGasLimit(uint256 _defaultGasLimit) external onlyOwner { defaultGasLimit = _defaultGasLimit; } function setConfig( uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config ) external onlyOwner { lzEndpoint.setConfig(_version, _chainId, _configType, _config); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice Simple single owner authorization mixin. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol) /// /// @dev Note: /// This implementation does NOT auto-initialize the owner to `msg.sender`. /// You MUST call the `_initializeOwner` in the constructor / initializer. /// /// While the ownable portion follows /// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility, /// the nomenclature for the 2-step ownership handover may be unique to this codebase. abstract contract Ownable { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The caller is not authorized to call the function. error Unauthorized(); /// @dev The `newOwner` cannot be the zero address. error NewOwnerIsZeroAddress(); /// @dev The `pendingOwner` does not have a valid handover request. error NoHandoverRequest(); /// @dev Cannot double-initialize. error AlreadyInitialized(); /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* EVENTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The ownership is transferred from `oldOwner` to `newOwner`. /// This event is intentionally kept the same as OpenZeppelin's Ownable to be /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), /// despite it not being as lightweight as a single argument event. event OwnershipTransferred(address indexed oldOwner, address indexed newOwner); /// @dev An ownership handover to `pendingOwner` has been requested. event OwnershipHandoverRequested(address indexed pendingOwner); /// @dev The ownership handover to `pendingOwner` has been canceled. event OwnershipHandoverCanceled(address indexed pendingOwner); /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`. uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE = 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0; /// @dev `keccak256(bytes("OwnershipHandoverRequested(address)"))`. uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE = 0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d; /// @dev `keccak256(bytes("OwnershipHandoverCanceled(address)"))`. uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE = 0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* STORAGE */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The owner slot is given by: /// `bytes32(~uint256(uint32(bytes4(keccak256("_OWNER_SLOT_NOT")))))`. /// It is intentionally chosen to be a high value /// to avoid collision with lower slots. /// The choice of manual storage layout is to enable compatibility /// with both regular and upgradeable contracts. bytes32 internal constant _OWNER_SLOT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927; /// The ownership handover slot of `newOwner` is given by: /// ``` /// mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED)) /// let handoverSlot := keccak256(0x00, 0x20) /// ``` /// It stores the expiry timestamp of the two-step ownership handover. uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* INTERNAL FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Override to return true to make `_initializeOwner` prevent double-initialization. function _guardInitializeOwner() internal pure virtual returns (bool guard) {} /// @dev Initializes the owner directly without authorization guard. /// This function must be called upon initialization, /// regardless of whether the contract is upgradeable or not. /// This is to enable generalization to both regular and upgradeable contracts, /// and to save gas in case the initial owner is not the caller. /// For performance reasons, this function will not check if there /// is an existing owner. function _initializeOwner(address newOwner) internal virtual { if (_guardInitializeOwner()) { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT if sload(ownerSlot) { mstore(0x00, 0x0dc149f0) // `AlreadyInitialized()`. revert(0x1c, 0x04) } // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Store the new value. sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner)))) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner) } } else { /// @solidity memory-safe-assembly assembly { // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Store the new value. sstore(_OWNER_SLOT, newOwner) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner) } } } /// @dev Sets the owner directly without authorization guard. function _setOwner(address newOwner) internal virtual { if (_guardInitializeOwner()) { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner) // Store the new value. sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner)))) } } else { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner) // Store the new value. sstore(ownerSlot, newOwner) } } } /// @dev Throws if the sender is not the owner. function _checkOwner() internal view virtual { /// @solidity memory-safe-assembly assembly { // If the caller is not the stored owner, revert. if iszero(eq(caller(), sload(_OWNER_SLOT))) { mstore(0x00, 0x82b42900) // `Unauthorized()`. revert(0x1c, 0x04) } } } /// @dev Returns how long a two-step ownership handover is valid for in seconds. /// Override to return a different value if needed. /// Made internal to conserve bytecode. Wrap it in a public function if needed. function _ownershipHandoverValidFor() internal view virtual returns (uint64) { return 48 * 3600; } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* PUBLIC UPDATE FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Allows the owner to transfer the ownership to `newOwner`. function transferOwnership(address newOwner) public payable virtual onlyOwner { /// @solidity memory-safe-assembly assembly { if iszero(shl(96, newOwner)) { mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`. revert(0x1c, 0x04) } } _setOwner(newOwner); } /// @dev Allows the owner to renounce their ownership. function renounceOwnership() public payable virtual onlyOwner { _setOwner(address(0)); } /// @dev Request a two-step ownership handover to the caller. /// The request will automatically expire in 48 hours (172800 seconds) by default. function requestOwnershipHandover() public payable virtual { unchecked { uint256 expires = block.timestamp + _ownershipHandoverValidFor(); /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to `expires`. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, caller()) sstore(keccak256(0x0c, 0x20), expires) // Emit the {OwnershipHandoverRequested} event. log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller()) } } } /// @dev Cancels the two-step ownership handover to the caller, if any. function cancelOwnershipHandover() public payable virtual { /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to 0. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, caller()) sstore(keccak256(0x0c, 0x20), 0) // Emit the {OwnershipHandoverCanceled} event. log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller()) } } /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`. /// Reverts if there is no existing ownership handover requested by `pendingOwner`. function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner { /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to 0. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, pendingOwner) let handoverSlot := keccak256(0x0c, 0x20) // If the handover does not exist, or has expired. if gt(timestamp(), sload(handoverSlot)) { mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`. revert(0x1c, 0x04) } // Set the handover slot to 0. sstore(handoverSlot, 0) } _setOwner(pendingOwner); } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* PUBLIC READ FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Returns the owner of the contract. function owner() public view virtual returns (address result) { /// @solidity memory-safe-assembly assembly { result := sload(_OWNER_SLOT) } } /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`. function ownershipHandoverExpiresAt(address pendingOwner) public view virtual returns (uint256 result) { /// @solidity memory-safe-assembly assembly { // Compute the handover slot. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, pendingOwner) // Load the handover slot. result := sload(keccak256(0x0c, 0x20)) } } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* MODIFIERS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Marks a function as only callable by the owner. modifier onlyOwner() virtual { _checkOwner(); _; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; interface ILayerZeroReceiver { // @notice LayerZero endpoint will invoke this function to deliver the message on the destination // @param _srcChainId - the source endpoint identifier // @param _srcAddress - the source sending contract address from the source chain // @param _nonce - the ordered message nonce // @param _payload - the signed payload is the UA bytes has encoded to be sent function lzReceive( uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload ) external; }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; import "./ILayerZeroUserApplicationConfig.sol"; interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig { // @notice send a LayerZero message to the specified address at a LayerZero endpoint. // @param _dstChainId - the destination chain identifier // @param _destination - the address on destination chain (in bytes). address length/format may vary by chains // @param _payload - a custom bytes payload to send to the destination contract // @param _refundAddress - if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address // @param _zroPaymentAddress - the address of the ZRO token holder who would pay for the transaction // @param _adapterParams - parameters for custom functionality. e.g. receive airdropped native gas from the relayer on destination function send( uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams ) external payable; // @notice used by the messaging library to publish verified payload // @param _srcChainId - the source chain identifier // @param _srcAddress - the source contract (as bytes) at the source chain // @param _dstAddress - the address on destination chain // @param _nonce - the unbound message ordering nonce // @param _gasLimit - the gas limit for external contract execution // @param _payload - verified payload to send to the destination contract function receivePayload( uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload ) external; // @notice get the inboundNonce of a lzApp from a source chain which could be EVM or non-EVM chain // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (uint64); // @notice get the outboundNonce from this source chain which, consequently, is always an EVM // @param _srcAddress - the source chain contract address function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view returns (uint64); // @notice gets a quote in source native gas, for the amount that send() requires to pay for message delivery // @param _dstChainId - the destination chain identifier // @param _userApplication - the user app address on this EVM chain // @param _payload - the custom message to send over LayerZero // @param _payInZRO - if false, user app pays the protocol fee in native token // @param _adapterParam - parameters for the adapter service, e.g. send some dust native token to dstChain function estimateFees( uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam ) external view returns (uint nativeFee, uint zroFee); // @notice get this Endpoint's immutable source identifier function getChainId() external view returns (uint16); // @notice the interface to retry failed message on this Endpoint destination // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address // @param _payload - the payload to be retried function retryPayload( uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload ) external; // @notice query if any STORED payload (message blocking) at the endpoint. // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool); // @notice query if the _libraryAddress is valid for sending msgs. // @param _userApplication - the user app address on this EVM chain function getSendLibraryAddress(address _userApplication) external view returns (address); // @notice query if the _libraryAddress is valid for receiving msgs. // @param _userApplication - the user app address on this EVM chain function getReceiveLibraryAddress(address _userApplication) external view returns (address); // @notice query if the non-reentrancy guard for send() is on // @return true if the guard is on. false otherwise function isSendingPayload() external view returns (bool); // @notice query if the non-reentrancy guard for receive() is on // @return true if the guard is on. false otherwise function isReceivingPayload() external view returns (bool); // @notice get the configuration of the LayerZero messaging library of the specified version // @param _version - messaging library version // @param _chainId - the chainId for the pending config change // @param _userApplication - the contract address of the user application // @param _configType - type of configuration. every messaging library has its own convention. function getConfig( uint16 _version, uint16 _chainId, address _userApplication, uint _configType ) external view returns (bytes memory); // @notice get the send() LayerZero messaging library version // @param _userApplication - the contract address of the user application function getSendVersion(address _userApplication) external view returns (uint16); // @notice get the lzReceive() LayerZero messaging library version // @param _userApplication - the contract address of the user application function getReceiveVersion(address _userApplication) external view returns (uint16); }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; interface ILayerZeroUserApplicationConfig { // @notice set the configuration of the LayerZero messaging library of the specified version // @param _version - messaging library version // @param _chainId - the chainId for the pending config change // @param _configType - type of configuration. every messaging library has its own convention. // @param _config - configuration in the bytes. can encode arbitrary content. function setConfig( uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config ) external; // @notice set the send() LayerZero messaging library version to _version // @param _version - new messaging library version function setSendVersion(uint16 _version) external; // @notice set the lzReceive() LayerZero messaging library version to _version // @param _version - new messaging library version function setReceiveVersion(uint16 _version) external; // @notice Only when the UA needs to resume the message flow in blocking mode and clear the stored payload // @param _srcChainId - the chainId of the source chain // @param _srcAddress - the contract address of the source contract at the source chain function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external; }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/" ], "optimizer": { "enabled": true, "runs": 20000 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "evmVersion": "paris", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_lzEndpoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"dstChainId","type":"uint16"},{"internalType":"uint256","name":"nativeAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"createAdapterParams","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_depositParams","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_dstChainIds","type":"uint16[]"},{"internalType":"bytes[]","name":"_adapterParams","type":"bytes[]"}],"name":"estimateFees","outputs":[{"internalType":"uint256[]","name":"nativeFees","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"estimateFees","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"gasLimitLookup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lzEndpoint","outputs":[{"internalType":"contract ILayerZeroEndpoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_version","type":"uint16"},{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"_configType","type":"uint256"},{"internalType":"bytes","name":"_config","type":"bytes"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_defaultGasLimit","type":"uint256"}],"name":"setDefaultGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_remoteChainIds","type":"uint16[]"},{"internalType":"uint256[]","name":"_gasLimits","type":"uint256[]"}],"name":"setGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_remoteChainIds","type":"uint16[]"},{"internalType":"address[]","name":"_remoteAddresses","type":"address[]"}],"name":"setTrusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"trustedRemoteLookup","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052614e2060025534801561001657600080fd5b5060405162001b4538038062001b458339810160408190526100379161008f565b6001600160a01b03811660805261004d33610053565b506100bf565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6000602082840312156100a157600080fd5b81516001600160a01b03811681146100b857600080fd5b9392505050565b608051611a55620000f060003960008181610311015281816107be015281816108860152610f390152611a556000f3fe60806040526004361061016d5760003560e01c8063b0bf07c6116100cb578063e32bb67b1161007f578063f2fde38b11610059578063f2fde38b146103d9578063f3fef3a3146103ec578063fee81cf41461040c57600080fd5b8063e32bb67b14610393578063f04e283e146103b3578063f2cac920146103c657600080fd5b8063cbed8b9c116100b0578063cbed8b9c14610333578063d191f54914610353578063d2f1e34b1461037357600080fd5b8063b0bf07c6146102d2578063b353aaa7146102ff57600080fd5b8063715018a6116101225780638da5cb5b116101075780638da5cb5b1461023957806395368d2e1461028e5780639753df2c146102b257600080fd5b8063715018a6146102045780637533d7881461020c57600080fd5b8063256929621161015357806325692962146101d457806352b0896a146101dc57806354d1f13d146101fc57600080fd5b80621d35671461017957806309efa2851461019e57600080fd5b3661017457005b600080fd5b34801561018557600080fd5b5061019c610194366004611131565b505050505050565b005b3480156101aa57600080fd5b506101be6101b9366004611210565b61043f565b6040516101cb919061127c565b60405180910390f35b61019c610551565b3480156101e857600080fd5b5061019c6101f7366004611210565b6105a1565b61019c610694565b61019c6106d0565b34801561021857600080fd5b5061022c6102273660046112c0565b6106e4565b6040516101cb9190611350565b34801561024557600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927545b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b34801561029a57600080fd5b506102a460025481565b6040519081526020016101cb565b3480156102be57600080fd5b506102a46102cd366004611392565b61077e565b3480156102de57600080fd5b506102a46102ed3660046112c0565b60016020526000908152604090205481565b34801561030b57600080fd5b506102697f000000000000000000000000000000000000000000000000000000000000000081565b34801561033f57600080fd5b5061019c61034e366004611472565b610841565b34801561035f57600080fd5b5061022c61036e366004611505565b6108fc565b34801561037f57600080fd5b5061019c61038e366004611210565b61098c565b34801561039f57600080fd5b5061019c6103ae366004611541565b610ad9565b61019c6103c136600461155a565b610ae6565b61019c6103d4366004611575565b610b26565b61019c6103e736600461155a565b610be3565b3480156103f857600080fd5b5061019c6104073660046115c0565b610c0a565b34801561041857600080fd5b506102a461042736600461155a565b63389a75e1600c908152600091909152602090205490565b60608367ffffffffffffffff81111561045a5761045a611363565b604051908082528060200260200182016040528015610483578160200160208202803683370190505b50905060005b84811015610548576105198686838181106104a6576104a66115ea565b90506020020160208101906104bb91906112c0565b8585848181106104cd576104cd6115ea565b90506020028101906104df9190611619565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061077e92505050565b82828151811061052b5761052b6115ea565b602090810291909101015280610540816116ad565b915050610489565b50949350505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6105a9610ddf565b828114610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c656e677468204d69736d61746368000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b8381101561068d57828282818110610634576106346115ea565b9050602002013560016000878785818110610651576106516115ea565b905060200201602081019061066691906112c0565b61ffff16815260208101919091526040016000205580610685816116ad565b91505061061a565b5050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6106d8610ddf565b6106e26000610e15565b565b600060208190529081526040902080546106fd906116e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610729906116e5565b80156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b505050505081565b6040517f40a7bb1000000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906107f9908690309086908890600401611732565b6040805180830381865afa158015610815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610839919061178b565b509392505050565b610849610ddf565b6040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906108c390889088908890889088906004016117af565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050505050505050565b6060600261090985610e7b565b60405160f09290921b7fffff000000000000000000000000000000000000000000000000000000000000166020830152602282015260428101849052606083901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016606282015260760160405160208183030381529060405290509392505050565b610994610ddf565b8281146109fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c656e677468204d69736d617463680000000000000000000000000000000000604482015260640161060e565b60005b8381101561068d57828282818110610a1a57610a1a6115ea565b9050602002016020810190610a2f919061155a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301523090921b9091166034820152604801604051602081830303815290604052600080878785818110610a9257610a926115ea565b9050602002016020810190610aa791906112c0565b61ffff168152602081019190915260400160002090610ac69082611862565b5080610ad1816116ad565b915050610a00565b610ae1610ddf565b600255565b610aee610ddf565b63389a75e1600c52806000526020600c208054421115610b1657636f5e88186000526004601cfd5b60009055610b2381610e15565b50565b6000805b83811015610b7257610b54858583818110610b4757610b476115ea565b9050602002013584610eac565b610b5e908361197c565b915080610b6a816116ad565b915050610b2a565b5080341015610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f466565204e6f74204d6574000000000000000000000000000000000000000000604482015260640161060e565b50505050565b610beb610ddf565b8060601b610c0157637448fbae6000526004601cfd5b610b2381610e15565b610c12610ddf565b600073ffffffffffffffffffffffffffffffffffffffff8316610c7f5760405133904790600081818185875af1925050503d8060008114610c6f576040519150601f19603f3d011682016040523d82523d6000602084013e610c74565b606091505b505080915050610d73565b6040513360248201526044810183905273ffffffffffffffffffffffffffffffffffffffff841690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905251610d2b919061198f565b6000604051808303816000865af19150503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b50909150505b80610dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5769746864726177204661696c65640000000000000000000000000000000000604482015260640161060e565b505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146106e2576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b61ffff8116600090815260016020526040812054808203610ea0575050600254919050565b92915050565b50919050565b6000806000610ebb8585610eef565b91509150610ec9828261077e565b9250610ee78260405180602001604052806000815250308487610f2a565b505092915050565b60f082901c6060610f21827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616856108fc565b90509250929050565b6000610f3586610fd6565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c5803100838884898960008a6040518863ffffffff1660e01b8152600401610f9c969594939291906119ab565b6000604051808303818588803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b5050505050505050505050565b61ffff8116600090815260208190526040812080546060929190610ff9906116e5565b80601f0160208091040260200160405190810160405280929190818152602001828054611025906116e5565b80156110725780601f1061104757610100808354040283529160200191611072565b820191906000526020600020905b81548152906001019060200180831161105557829003601f168201915b505050505090508051600003610ea0576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602082018190526034820152604801604051602081830303815290604052915050919050565b803561ffff811681146110e357600080fd5b919050565b60008083601f8401126110fa57600080fd5b50813567ffffffffffffffff81111561111257600080fd5b60208301915083602082850101111561112a57600080fd5b9250929050565b6000806000806000806080878903121561114a57600080fd5b611153876110d1565b9550602087013567ffffffffffffffff8082111561117057600080fd5b61117c8a838b016110e8565b909750955060408901359150808216821461119657600080fd5b909350606088013590808211156111ac57600080fd5b506111b989828a016110e8565b979a9699509497509295939492505050565b60008083601f8401126111dd57600080fd5b50813567ffffffffffffffff8111156111f557600080fd5b6020830191508360208260051b850101111561112a57600080fd5b6000806000806040858703121561122657600080fd5b843567ffffffffffffffff8082111561123e57600080fd5b61124a888389016111cb565b9096509450602087013591508082111561126357600080fd5b50611270878288016111cb565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156112b457835183529284019291840191600101611298565b50909695505050505050565b6000602082840312156112d257600080fd5b6112db826110d1565b9392505050565b60005b838110156112fd5781810151838201526020016112e5565b50506000910152565b6000815180845261131e8160208601602086016112e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112db6020830184611306565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113a557600080fd5b6113ae836110d1565b9150602083013567ffffffffffffffff808211156113cb57600080fd5b818501915085601f8301126113df57600080fd5b8135818111156113f1576113f1611363565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561143757611437611363565b8160405282815288602084870101111561145057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561148a57600080fd5b611493866110d1565b94506114a1602087016110d1565b935060408601359250606086013567ffffffffffffffff8111156114c457600080fd5b6114d0888289016110e8565b969995985093965092949392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146110e357600080fd5b60008060006060848603121561151a57600080fd5b611523846110d1565b925060208401359150611538604085016114e1565b90509250925092565b60006020828403121561155357600080fd5b5035919050565b60006020828403121561156c57600080fd5b6112db826114e1565b60008060006040848603121561158a57600080fd5b833567ffffffffffffffff8111156115a157600080fd5b6115ad868287016111cb565b90945092506115389050602085016114e1565b600080604083850312156115d357600080fd5b6115dc836114e1565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261164e57600080fd5b83018035915067ffffffffffffffff82111561166957600080fd5b60200191503681900382131561112a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116de576116de61167e565b5060010190565b600181811c908216806116f957607f821691505b602082108103610ea6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61ffff8516815273ffffffffffffffffffffffffffffffffffffffff8416602082015260a06040820152600060a0820152821515606082015260c06080820152600061178160c0830184611306565b9695505050505050565b6000806040838503121561179e57600080fd5b505080516020909101519092909150565b600061ffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b601f821115610dda57600081815260208120601f850160051c810160208610156118435750805b601f850160051c820191505b818110156101945782815560010161184f565b815167ffffffffffffffff81111561187c5761187c611363565b6118908161188a84546116e5565b8461181c565b602080601f8311600181146118e357600084156118ad5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610194565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561193057888601518255948401946001909101908401611911565b508582101561196c57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610ea057610ea061167e565b600082516119a18184602087016112e2565b9190910192915050565b61ffff8716815260c0602082015260006119c860c0830188611306565b82810360408401526119da8188611306565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a08501529050611a128185611306565b999850505050505050505056fea2646970667358221220a7b9f213db84f551024f6407a836ae7fda747923cd937eb32c4e764c651c6c6464736f6c634300081500330000000000000000000000003c2269811836af69497e5f486a85d7316753cf62
Deployed Bytecode
0x60806040526004361061016d5760003560e01c8063b0bf07c6116100cb578063e32bb67b1161007f578063f2fde38b11610059578063f2fde38b146103d9578063f3fef3a3146103ec578063fee81cf41461040c57600080fd5b8063e32bb67b14610393578063f04e283e146103b3578063f2cac920146103c657600080fd5b8063cbed8b9c116100b0578063cbed8b9c14610333578063d191f54914610353578063d2f1e34b1461037357600080fd5b8063b0bf07c6146102d2578063b353aaa7146102ff57600080fd5b8063715018a6116101225780638da5cb5b116101075780638da5cb5b1461023957806395368d2e1461028e5780639753df2c146102b257600080fd5b8063715018a6146102045780637533d7881461020c57600080fd5b8063256929621161015357806325692962146101d457806352b0896a146101dc57806354d1f13d146101fc57600080fd5b80621d35671461017957806309efa2851461019e57600080fd5b3661017457005b600080fd5b34801561018557600080fd5b5061019c610194366004611131565b505050505050565b005b3480156101aa57600080fd5b506101be6101b9366004611210565b61043f565b6040516101cb919061127c565b60405180910390f35b61019c610551565b3480156101e857600080fd5b5061019c6101f7366004611210565b6105a1565b61019c610694565b61019c6106d0565b34801561021857600080fd5b5061022c6102273660046112c0565b6106e4565b6040516101cb9190611350565b34801561024557600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927545b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b34801561029a57600080fd5b506102a460025481565b6040519081526020016101cb565b3480156102be57600080fd5b506102a46102cd366004611392565b61077e565b3480156102de57600080fd5b506102a46102ed3660046112c0565b60016020526000908152604090205481565b34801561030b57600080fd5b506102697f0000000000000000000000003c2269811836af69497e5f486a85d7316753cf6281565b34801561033f57600080fd5b5061019c61034e366004611472565b610841565b34801561035f57600080fd5b5061022c61036e366004611505565b6108fc565b34801561037f57600080fd5b5061019c61038e366004611210565b61098c565b34801561039f57600080fd5b5061019c6103ae366004611541565b610ad9565b61019c6103c136600461155a565b610ae6565b61019c6103d4366004611575565b610b26565b61019c6103e736600461155a565b610be3565b3480156103f857600080fd5b5061019c6104073660046115c0565b610c0a565b34801561041857600080fd5b506102a461042736600461155a565b63389a75e1600c908152600091909152602090205490565b60608367ffffffffffffffff81111561045a5761045a611363565b604051908082528060200260200182016040528015610483578160200160208202803683370190505b50905060005b84811015610548576105198686838181106104a6576104a66115ea565b90506020020160208101906104bb91906112c0565b8585848181106104cd576104cd6115ea565b90506020028101906104df9190611619565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061077e92505050565b82828151811061052b5761052b6115ea565b602090810291909101015280610540816116ad565b915050610489565b50949350505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6105a9610ddf565b828114610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c656e677468204d69736d61746368000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b8381101561068d57828282818110610634576106346115ea565b9050602002013560016000878785818110610651576106516115ea565b905060200201602081019061066691906112c0565b61ffff16815260208101919091526040016000205580610685816116ad565b91505061061a565b5050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6106d8610ddf565b6106e26000610e15565b565b600060208190529081526040902080546106fd906116e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610729906116e5565b80156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b505050505081565b6040517f40a7bb1000000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000003c2269811836af69497e5f486a85d7316753cf6216906340a7bb10906107f9908690309086908890600401611732565b6040805180830381865afa158015610815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610839919061178b565b509392505050565b610849610ddf565b6040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000003c2269811836af69497e5f486a85d7316753cf62169063cbed8b9c906108c390889088908890889088906004016117af565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050505050505050565b6060600261090985610e7b565b60405160f09290921b7fffff000000000000000000000000000000000000000000000000000000000000166020830152602282015260428101849052606083901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016606282015260760160405160208183030381529060405290509392505050565b610994610ddf565b8281146109fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c656e677468204d69736d617463680000000000000000000000000000000000604482015260640161060e565b60005b8381101561068d57828282818110610a1a57610a1a6115ea565b9050602002016020810190610a2f919061155a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301523090921b9091166034820152604801604051602081830303815290604052600080878785818110610a9257610a926115ea565b9050602002016020810190610aa791906112c0565b61ffff168152602081019190915260400160002090610ac69082611862565b5080610ad1816116ad565b915050610a00565b610ae1610ddf565b600255565b610aee610ddf565b63389a75e1600c52806000526020600c208054421115610b1657636f5e88186000526004601cfd5b60009055610b2381610e15565b50565b6000805b83811015610b7257610b54858583818110610b4757610b476115ea565b9050602002013584610eac565b610b5e908361197c565b915080610b6a816116ad565b915050610b2a565b5080341015610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f466565204e6f74204d6574000000000000000000000000000000000000000000604482015260640161060e565b50505050565b610beb610ddf565b8060601b610c0157637448fbae6000526004601cfd5b610b2381610e15565b610c12610ddf565b600073ffffffffffffffffffffffffffffffffffffffff8316610c7f5760405133904790600081818185875af1925050503d8060008114610c6f576040519150601f19603f3d011682016040523d82523d6000602084013e610c74565b606091505b505080915050610d73565b6040513360248201526044810183905273ffffffffffffffffffffffffffffffffffffffff841690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905251610d2b919061198f565b6000604051808303816000865af19150503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b50909150505b80610dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5769746864726177204661696c65640000000000000000000000000000000000604482015260640161060e565b505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146106e2576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b61ffff8116600090815260016020526040812054808203610ea0575050600254919050565b92915050565b50919050565b6000806000610ebb8585610eef565b91509150610ec9828261077e565b9250610ee78260405180602001604052806000815250308487610f2a565b505092915050565b60f082901c6060610f21827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616856108fc565b90509250929050565b6000610f3586610fd6565b90507f0000000000000000000000003c2269811836af69497e5f486a85d7316753cf6273ffffffffffffffffffffffffffffffffffffffff1663c5803100838884898960008a6040518863ffffffff1660e01b8152600401610f9c969594939291906119ab565b6000604051808303818588803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b5050505050505050505050565b61ffff8116600090815260208190526040812080546060929190610ff9906116e5565b80601f0160208091040260200160405190810160405280929190818152602001828054611025906116e5565b80156110725780601f1061104757610100808354040283529160200191611072565b820191906000526020600020905b81548152906001019060200180831161105557829003601f168201915b505050505090508051600003610ea0576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602082018190526034820152604801604051602081830303815290604052915050919050565b803561ffff811681146110e357600080fd5b919050565b60008083601f8401126110fa57600080fd5b50813567ffffffffffffffff81111561111257600080fd5b60208301915083602082850101111561112a57600080fd5b9250929050565b6000806000806000806080878903121561114a57600080fd5b611153876110d1565b9550602087013567ffffffffffffffff8082111561117057600080fd5b61117c8a838b016110e8565b909750955060408901359150808216821461119657600080fd5b909350606088013590808211156111ac57600080fd5b506111b989828a016110e8565b979a9699509497509295939492505050565b60008083601f8401126111dd57600080fd5b50813567ffffffffffffffff8111156111f557600080fd5b6020830191508360208260051b850101111561112a57600080fd5b6000806000806040858703121561122657600080fd5b843567ffffffffffffffff8082111561123e57600080fd5b61124a888389016111cb565b9096509450602087013591508082111561126357600080fd5b50611270878288016111cb565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156112b457835183529284019291840191600101611298565b50909695505050505050565b6000602082840312156112d257600080fd5b6112db826110d1565b9392505050565b60005b838110156112fd5781810151838201526020016112e5565b50506000910152565b6000815180845261131e8160208601602086016112e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112db6020830184611306565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113a557600080fd5b6113ae836110d1565b9150602083013567ffffffffffffffff808211156113cb57600080fd5b818501915085601f8301126113df57600080fd5b8135818111156113f1576113f1611363565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561143757611437611363565b8160405282815288602084870101111561145057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561148a57600080fd5b611493866110d1565b94506114a1602087016110d1565b935060408601359250606086013567ffffffffffffffff8111156114c457600080fd5b6114d0888289016110e8565b969995985093965092949392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146110e357600080fd5b60008060006060848603121561151a57600080fd5b611523846110d1565b925060208401359150611538604085016114e1565b90509250925092565b60006020828403121561155357600080fd5b5035919050565b60006020828403121561156c57600080fd5b6112db826114e1565b60008060006040848603121561158a57600080fd5b833567ffffffffffffffff8111156115a157600080fd5b6115ad868287016111cb565b90945092506115389050602085016114e1565b600080604083850312156115d357600080fd5b6115dc836114e1565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261164e57600080fd5b83018035915067ffffffffffffffff82111561166957600080fd5b60200191503681900382131561112a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116de576116de61167e565b5060010190565b600181811c908216806116f957607f821691505b602082108103610ea6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61ffff8516815273ffffffffffffffffffffffffffffffffffffffff8416602082015260a06040820152600060a0820152821515606082015260c06080820152600061178160c0830184611306565b9695505050505050565b6000806040838503121561179e57600080fd5b505080516020909101519092909150565b600061ffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b601f821115610dda57600081815260208120601f850160051c810160208610156118435750805b601f850160051c820191505b818110156101945782815560010161184f565b815167ffffffffffffffff81111561187c5761187c611363565b6118908161188a84546116e5565b8461181c565b602080601f8311600181146118e357600084156118ad5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610194565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561193057888601518255948401946001909101908401611911565b508582101561196c57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610ea057610ea061167e565b600082516119a18184602087016112e2565b9190910192915050565b61ffff8716815260c0602082015260006119c860c0830188611306565b82810360408401526119da8188611306565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a08501529050611a128185611306565b999850505050505050505056fea2646970667358221220a7b9f213db84f551024f6407a836ae7fda747923cd937eb32c4e764c651c6c6464736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003c2269811836af69497e5f486a85d7316753cf62
-----Decoded View---------------
Arg [0] : _lzEndpoint (address): 0x3c2269811836af69497E5F486A85D7316753cf62
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c2269811836af69497e5f486a85d7316753cf62
Deployed Bytecode Sourcemap
90:2272:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;568:152:1;;;;;;;;;;-1:-1:-1;568:152:1;;;;;:::i;:::-;;;;;;;;;;245:344:0;;;;;;;;;;-1:-1:-1;245:344:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9021:617:2;;;:::i;2130:348:1:-;;;;;;;;;;-1:-1:-1;2130:348:1;;;;;:::i;:::-;;:::i;9720:456:2:-;;;:::i;8762:100::-;;;:::i;296:51:1:-;;;;;;;;;;-1:-1:-1;296:51:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11408:182:2:-;;;;;;;;;;-1:-1:-1;11562:11:2;11556:18;11408:182;;;5226:42:6;5214:55;;;5196:74;;5184:2;5169:18;11408:182:2;5050:226:6;408:39:1;;;;;;;;;;;;;;;;;;;5427:25:6;;;5415:2;5400:18;408:39:1;5281:177:6;595:221:0;;;;;;;;;;-1:-1:-1;595:221:0;;;;;:::i;:::-;;:::i;353:48:1:-;;;;;;;;;;-1:-1:-1;353:48:1;;;;;:::i;:::-;;;;;;;;;;;;;;243:46;;;;;;;;;;;;;;;2614:231;;;;;;;;;;-1:-1:-1;2614:231:1;;;;;:::i;:::-;;:::i;1741:211:0:-;;;;;;;;;;-1:-1:-1;1741:211:0;;;;;:::i;:::-;;:::i;1721:403:1:-;;;;;;;;;;-1:-1:-1;1721:403:1;;;;;:::i;:::-;;:::i;2484:124::-;;;;;;;;;;-1:-1:-1;2484:124:1;;;;;:::i;:::-;;:::i;10363:708:2:-;;;;;;:::i;:::-;;:::i;822:298:0:-;;;;;;:::i;:::-;;:::i;8348:349:2:-;;;;;;:::i;:::-;;:::i;1958:367:0:-;;;;;;;;;;-1:-1:-1;1958:367:0;;;;;:::i;:::-;;:::i;11693:435:2:-;;;;;;;;;;-1:-1:-1;11693:435:2;;;;;:::i;:::-;11963:19;11957:4;11950:33;;;11812:14;11996:26;;;;12106:4;12090:21;;12084:28;;11693:435;245:344:0;355:27;421:12;407:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;407:34:0;;394:47;;456:6;451:132;464:23;;;451:132;;;524:48;537:12;;550:1;537:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;554:14;;569:1;554:17;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;524:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;524:12:0;;-1:-1:-1;;;524:48:0:i;:::-;508:10;519:1;508:13;;;;;;;;:::i;:::-;;;;;;;;;;:64;489:3;;;;:::i;:::-;;;;451:132;;;;245:344;;;;;;:::o;9021:617:2:-;9114:15;7972:9;9132:46;;:15;:46;9114:64;;9346:19;9340:4;9333:33;9396:8;9390:4;9383:22;9452:7;9445:4;9439;9429:21;9422:38;9599:8;9552:45;9549:1;9546;9541:67;9248:374;9021:617::o;2130:348:1:-;12517:13:2;:11;:13::i;:::-;2277:43:1;;::::1;2269:71;;;::::0;::::1;::::0;;11415:2:6;2269:71:1::1;::::0;::::1;11397:21:6::0;11454:2;11434:18;;;11427:30;11493:17;11473:18;;;11466:45;11528:18;;2269:71:1::1;;;;;;;;;2356:6;2351:121;2364:26:::0;;::::1;2351:121;;;2448:10;;2459:1;2448:13;;;;;;;:::i;:::-;;;;;;;2411:14;:34;2426:15;;2442:1;2426:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2411:34;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;2411:34:1;:50;2392:3;::::1;::::0;::::1;:::i;:::-;;;;2351:121;;;;2130:348:::0;;;;:::o;9720:456:2:-;9922:19;9916:4;9909:33;9968:8;9962:4;9955:22;10020:1;10013:4;10007;9997:21;9990:32;10151:8;10105:44;10102:1;10099;10094:66;9720:456::o;8762:100::-;12517:13;:11;:13::i;:::-;8834:21:::1;8852:1;8834:9;:21::i;:::-;8762:100::o:0;296:51:1:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;595:221:0:-;731:78;;;;;687:17;;731:23;:10;:23;;;;:78;;755:11;;776:4;;687:17;;794:14;;731:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;716:93:0;595:221;-1:-1:-1;;;595:221:0:o;2614:231:1:-;12517:13:2;:11;:13::i;:::-;2776:62:1::1;::::0;;;;:20:::1;:10;:20;::::0;::::1;::::0;:62:::1;::::0;2797:8;;2807;;2817:11;;2830:7;;;;2776:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2614:231:::0;;;;;:::o;1741:211:0:-;1844:12;1899:1;1903:23;1915:10;1903:11;:23::i;:::-;1875:70;;13876:3:6;13872:16;;;;13890:66;13868:89;1875:70:0;;;13856:102:6;13974:11;;;13967:27;14010:12;;;14003:28;;;14069:2;14065:15;;;14082:66;14061:88;14047:12;;;14040:110;14166:12;;1875:70:0;;;;;;;;;;;;1868:77;;1741:211;;;;;:::o;1721:403:1:-;12517:13:2;:11;:13::i;:::-;1873:49:1;;::::1;1865:77;;;::::0;::::1;::::0;;11415:2:6;1865:77:1::1;::::0;::::1;11397:21:6::0;11454:2;11434:18;;;11427:30;11493:17;11473:18;;;11466:45;11528:18;;1865:77:1::1;11213:339:6::0;1865:77:1::1;1958:6;1953:165;1966:26:::0;;::::1;1953:165;;;2072:16;;2089:1;2072:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2055:52;::::0;14356:66:6;14451:2;14447:15;;;14443:24;;2055:52:1::1;::::0;::::1;14431:37:6::0;2101:4:1::1;14502:15:6::0;;;14498:24;;;14484:12;;;14477:46;14539:12;;2055:52:1::1;;;;;;;;;;;;2013:19;:39:::0;2033:15:::1;;2049:1;2033:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2013:39;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;2013:39:1;;:94:::1;::::0;:39;:94:::1;:::i;:::-;-1:-1:-1::0;1994:3:1;::::1;::::0;::::1;:::i;:::-;;;;1953:165;;2484:124:::0;12517:13:2;:11;:13::i;:::-;2567:15:1::1;:34:::0;2484:124::o;10363:708:2:-;12517:13;:11;:13::i;:::-;10597:19:::1;10591:4;10584:33;10643:12;10637:4;10630:26;10705:4;10699;10689:21;10811:12;10805:19;10792:11;10789:36;10786:157;;;10857:10;10851:4;10844:24;10924:4;10918;10911:18;10786:157;11020:1;10999:23:::0;;11041::::1;11051:12:::0;11041:9:::1;:23::i;:::-;10363:708:::0;:::o;822:298:0:-;935:11;961:6;956:108;969:25;;;956:108;;;1022:31;1031:14;;1046:1;1031:17;;;;;;;:::i;:::-;;;;;;;1050:2;1022:8;:31::i;:::-;1015:38;;;;:::i;:::-;;-1:-1:-1;996:3:0;;;;:::i;:::-;;;;956:108;;;;1094:3;1081:9;:16;;1073:40;;;;;;;17271:2:6;1073:40:0;;;17253:21:6;17310:2;17290:18;;;17283:30;17349:13;17329:18;;;17322:41;17380:18;;1073:40:0;17069:335:6;1073:40:0;925:195;822:298;;;:::o;8348:349:2:-;12517:13;:11;:13::i;:::-;8520:8:::1;8516:2;8512:17;8502:150;;8562:10;8556:4;8549:24;8633:4;8627;8620:18;8502:150;8671:19;8681:8;8671:9;:19::i;1958:367:0:-:0;12517:13:2;:11;:13::i;:::-;2036:6:0::1;2056:19;::::0;::::1;2052:228;;2098:49;::::0;:10:::1;::::0;2121:21:::1;::::0;2098:49:::1;::::0;;;2121:21;2098:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:56;;;;;2052:228;;;2196:72;::::0;2249:10:::1;2196:72;::::0;::::1;17793:74:6::0;17883:18;;;17876:34;;;2185:10:0::1;::::0;::::1;::::0;17766:18:6;;2196:72:0::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;2185:84;::::1;::::0;2196:72;2185:84:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2178:91:0;;-1:-1:-1;;2052:228:0::1;2297:1;2289:29;;;::::0;::::1;::::0;;18415:2:6;2289:29:0::1;::::0;::::1;18397:21:6::0;18454:2;18434:18;;;18427:30;18493:17;18473:18;;;18466:45;18528:18;;2289:29:0::1;18213:339:6::0;2289:29:0::1;2026:299;1958:367:::0;;:::o;7292:355:2:-;7504:11;7498:18;7488:8;7485:32;7475:156;;7550:10;7544:4;7537:24;7612:4;7606;7599:18;6145:1089;6857:11;7093:16;;6941:26;;;;;;;7053:38;7050:1;;7042:78;7177:27;6145:1089::o;1458:257:1:-;1560:27;;;1522:7;1560:27;;;:14;:27;;;;;;1601:13;;;1597:112;;-1:-1:-1;;1637:15:1;;;1458:257;-1:-1:-1;1458:257:1:o;1597:112::-;1690:8;1458:257;-1:-1:-1;;1458:257:1:o;1597:112::-;1531:184;1458:257;;;:::o;1126:315:0:-;1198:11;1222:18;1242:27;1273:34;1288:13;1303:3;1273:14;:34::i;:::-;1221:86;;;;1323:41;1336:11;1349:14;1323:12;:41::i;:::-;1317:47;;1374:60;1382:11;1374:60;;;;;;;;;;;;1407:4;1414:14;1430:3;1374:7;:60::i;:::-;1211:230;;1126:315;;;;:::o;1447:288::-;1627:3;1610:20;;;1550:27;1658:70;1610:20;1691:31;;;1724:3;1658:19;:70::i;:::-;1641:87;;1447:288;;;;;:::o;726:396:1:-;937:26;966:23;977:11;966:10;:23::i;:::-;937:52;;999:10;:15;;;1022:10;1034:11;1047:13;1062:8;1072:14;1096:1;1100:14;999:116;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;927:195;726:396;;;;;:::o;1128:324::-;1244:32;;;1215:26;1244:32;;;;;;;;;;1215:61;;1191:12;;1215:26;1244:32;1215:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1290:13;:20;1314:1;1290:25;1286:160;;1338:46;;14356:66:6;1363:4:1;14451:2:6;14447:15;14443:24;1338:46:1;;;14431:37:6;;;14484:12;;;14477:46;14539:12;;1338:46:1;;;;;;;;;;;;1331:53;;;1128:324;;;:::o;14:159:6:-;81:20;;141:6;130:18;;120:29;;110:57;;163:1;160;153:12;110:57;14:159;;;:::o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:6;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:946::-;636:6;644;652;660;668;676;729:3;717:9;708:7;704:23;700:33;697:53;;;746:1;743;736:12;697:53;769:28;787:9;769:28;:::i;:::-;759:38;;848:2;837:9;833:18;820:32;871:18;912:2;904:6;901:14;898:34;;;928:1;925;918:12;898:34;967:58;1017:7;1008:6;997:9;993:22;967:58;:::i;:::-;1044:8;;-1:-1:-1;941:84:6;-1:-1:-1;1129:2:6;1114:18;;1101:32;;-1:-1:-1;1162:14:6;;;1152:25;;1142:53;;1191:1;1188;1181:12;1142:53;1214:5;;-1:-1:-1;1272:2:6;1257:18;;1244:32;;1288:16;;;1285:36;;;1317:1;1314;1307:12;1285:36;;1356:60;1408:7;1397:8;1386:9;1382:24;1356:60;:::i;:::-;530:946;;;;-1:-1:-1;530:946:6;;-1:-1:-1;530:946:6;;1435:8;;530:946;-1:-1:-1;;;530:946:6:o;1481:366::-;1543:8;1553:6;1607:3;1600:4;1592:6;1588:17;1584:27;1574:55;;1625:1;1622;1615:12;1574:55;-1:-1:-1;1648:20:6;;1691:18;1680:30;;1677:50;;;1723:1;1720;1713:12;1677:50;1760:4;1752:6;1748:17;1736:29;;1820:3;1813:4;1803:6;1800:1;1796:14;1788:6;1784:27;1780:38;1777:47;1774:67;;;1837:1;1834;1827:12;1852:781;1984:6;1992;2000;2008;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2117:9;2104:23;2146:18;2187:2;2179:6;2176:14;2173:34;;;2203:1;2200;2193:12;2173:34;2242:69;2303:7;2294:6;2283:9;2279:22;2242:69;:::i;:::-;2330:8;;-1:-1:-1;2216:95:6;-1:-1:-1;2418:2:6;2403:18;;2390:32;;-1:-1:-1;2434:16:6;;;2431:36;;;2463:1;2460;2453:12;2431:36;;2502:71;2565:7;2554:8;2543:9;2539:24;2502:71;:::i;:::-;1852:781;;;;-1:-1:-1;2592:8:6;-1:-1:-1;;;;1852:781:6:o;2638:632::-;2809:2;2861:21;;;2931:13;;2834:18;;;2953:22;;;2780:4;;2809:2;3032:15;;;;3006:2;2991:18;;;2780:4;3075:169;3089:6;3086:1;3083:13;3075:169;;;3150:13;;3138:26;;3219:15;;;;3184:12;;;;3111:1;3104:9;3075:169;;;-1:-1:-1;3261:3:6;;2638:632;-1:-1:-1;;;;;;2638:632:6:o;4050:184::-;4108:6;4161:2;4149:9;4140:7;4136:23;4132:32;4129:52;;;4177:1;4174;4167:12;4129:52;4200:28;4218:9;4200:28;:::i;:::-;4190:38;4050:184;-1:-1:-1;;;4050:184:6:o;4239:250::-;4324:1;4334:113;4348:6;4345:1;4342:13;4334:113;;;4424:11;;;4418:18;4405:11;;;4398:39;4370:2;4363:10;4334:113;;;-1:-1:-1;;4481:1:6;4463:16;;4456:27;4239:250::o;4494:329::-;4535:3;4573:5;4567:12;4600:6;4595:3;4588:19;4616:76;4685:6;4678:4;4673:3;4669:14;4662:4;4655:5;4651:16;4616:76;:::i;:::-;4737:2;4725:15;4742:66;4721:88;4712:98;;;;4812:4;4708:109;;4494:329;-1:-1:-1;;4494:329:6:o;4828:217::-;4975:2;4964:9;4957:21;4938:4;4995:44;5035:2;5024:9;5020:18;5012:6;4995:44;:::i;5463:184::-;5515:77;5512:1;5505:88;5612:4;5609:1;5602:15;5636:4;5633:1;5626:15;5652:1052;5728:6;5736;5789:2;5777:9;5768:7;5764:23;5760:32;5757:52;;;5805:1;5802;5795:12;5757:52;5828:28;5846:9;5828:28;:::i;:::-;5818:38;;5907:2;5896:9;5892:18;5879:32;5930:18;5971:2;5963:6;5960:14;5957:34;;;5987:1;5984;5977:12;5957:34;6025:6;6014:9;6010:22;6000:32;;6070:7;6063:4;6059:2;6055:13;6051:27;6041:55;;6092:1;6089;6082:12;6041:55;6128:2;6115:16;6150:2;6146;6143:10;6140:36;;;6156:18;;:::i;:::-;6290:2;6284:9;6352:4;6344:13;;6195:66;6340:22;;;6364:2;6336:31;6332:40;6320:53;;;6388:18;;;6408:22;;;6385:46;6382:72;;;6434:18;;:::i;:::-;6474:10;6470:2;6463:22;6509:2;6501:6;6494:18;6549:7;6544:2;6539;6535;6531:11;6527:20;6524:33;6521:53;;;6570:1;6567;6560:12;6521:53;6626:2;6621;6617;6613:11;6608:2;6600:6;6596:15;6583:46;6671:1;6666:2;6661;6653:6;6649:15;6645:24;6638:35;6692:6;6682:16;;;;;;;5652:1052;;;;;:::o;6966:622::-;7061:6;7069;7077;7085;7093;7146:3;7134:9;7125:7;7121:23;7117:33;7114:53;;;7163:1;7160;7153:12;7114:53;7186:28;7204:9;7186:28;:::i;:::-;7176:38;;7233:37;7266:2;7255:9;7251:18;7233:37;:::i;:::-;7223:47;;7317:2;7306:9;7302:18;7289:32;7279:42;;7372:2;7361:9;7357:18;7344:32;7399:18;7391:6;7388:30;7385:50;;;7431:1;7428;7421:12;7385:50;7470:58;7520:7;7511:6;7500:9;7496:22;7470:58;:::i;:::-;6966:622;;;;-1:-1:-1;6966:622:6;;-1:-1:-1;7547:8:6;;7444:84;6966:622;-1:-1:-1;;;6966:622:6:o;7593:196::-;7661:20;;7721:42;7710:54;;7700:65;;7690:93;;7779:1;7776;7769:12;7794:326;7870:6;7878;7886;7939:2;7927:9;7918:7;7914:23;7910:32;7907:52;;;7955:1;7952;7945:12;7907:52;7978:28;7996:9;7978:28;:::i;:::-;7968:38;;8053:2;8042:9;8038:18;8025:32;8015:42;;8076:38;8110:2;8099:9;8095:18;8076:38;:::i;:::-;8066:48;;7794:326;;;;;:::o;8900:180::-;8959:6;9012:2;9000:9;8991:7;8987:23;8983:32;8980:52;;;9028:1;9025;9018:12;8980:52;-1:-1:-1;9051:23:6;;8900:180;-1:-1:-1;8900:180:6:o;9085:186::-;9144:6;9197:2;9185:9;9176:7;9172:23;9168:32;9165:52;;;9213:1;9210;9203:12;9165:52;9236:29;9255:9;9236:29;:::i;9276:510::-;9371:6;9379;9387;9440:2;9428:9;9419:7;9415:23;9411:32;9408:52;;;9456:1;9453;9446:12;9408:52;9496:9;9483:23;9529:18;9521:6;9518:30;9515:50;;;9561:1;9558;9551:12;9515:50;9600:69;9661:7;9652:6;9641:9;9637:22;9600:69;:::i;:::-;9688:8;;-1:-1:-1;9574:95:6;-1:-1:-1;9742:38:6;;-1:-1:-1;9776:2:6;9761:18;;9742:38;:::i;9791:254::-;9859:6;9867;9920:2;9908:9;9899:7;9895:23;9891:32;9888:52;;;9936:1;9933;9926:12;9888:52;9959:29;9978:9;9959:29;:::i;:::-;9949:39;10035:2;10020:18;;;;10007:32;;-1:-1:-1;;;9791:254:6:o;10050:184::-;10102:77;10099:1;10092:88;10199:4;10196:1;10189:15;10223:4;10220:1;10213:15;10239:580;10316:4;10322:6;10382:11;10369:25;10472:66;10461:8;10445:14;10441:29;10437:102;10417:18;10413:127;10403:155;;10554:1;10551;10544:12;10403:155;10581:33;;10633:20;;;-1:-1:-1;10676:18:6;10665:30;;10662:50;;;10708:1;10705;10698:12;10662:50;10741:4;10729:17;;-1:-1:-1;10772:14:6;10768:27;;;10758:38;;10755:58;;;10809:1;10806;10799:12;10824:184;10876:77;10873:1;10866:88;10973:4;10970:1;10963:15;10997:4;10994:1;10987:15;11013:195;11052:3;11083:66;11076:5;11073:77;11070:103;;11153:18;;:::i;:::-;-1:-1:-1;11200:1:6;11189:13;;11013:195::o;11557:437::-;11636:1;11632:12;;;;11679;;;11700:61;;11754:4;11746:6;11742:17;11732:27;;11700:61;11807:2;11799:6;11796:14;11776:18;11773:38;11770:218;;11844:77;11841:1;11834:88;11945:4;11942:1;11935:15;11973:4;11970:1;11963:15;11999:682;12334:6;12326;12322:19;12311:9;12304:38;12390:42;12382:6;12378:55;12373:2;12362:9;12358:18;12351:83;12470:3;12465:2;12454:9;12450:18;12443:31;12511:1;12505:3;12494:9;12490:19;12483:30;12563:6;12556:14;12549:22;12544:2;12533:9;12529:18;12522:50;12609:3;12603;12592:9;12588:19;12581:32;12285:4;12630:45;12670:3;12659:9;12655:19;12647:6;12630:45;:::i;:::-;12622:53;11999:682;-1:-1:-1;;;;;;11999:682:6:o;12686:245::-;12765:6;12773;12826:2;12814:9;12805:7;12801:23;12797:32;12794:52;;;12842:1;12839;12832:12;12794:52;-1:-1:-1;;12865:16:6;;12921:2;12906:18;;;12900:25;12865:16;;12900:25;;-1:-1:-1;12686:245:6:o;12936:704::-;13136:4;13165:6;13210:2;13202:6;13198:15;13187:9;13180:34;13262:2;13254:6;13250:15;13245:2;13234:9;13230:18;13223:43;;13302:6;13297:2;13286:9;13282:18;13275:34;13345:3;13340:2;13329:9;13325:18;13318:31;13386:6;13380:3;13369:9;13365:19;13358:35;13444:6;13436;13430:3;13419:9;13415:19;13402:49;13501:1;13495:3;13486:6;13475:9;13471:22;13467:32;13460:43;13630:3;13560:66;13555:2;13547:6;13543:15;13539:88;13528:9;13524:104;13520:114;13512:122;;12936:704;;;;;;;;:::o;14687:544::-;14788:2;14783:3;14780:11;14777:448;;;14824:1;14849:5;14845:2;14838:17;14894:4;14890:2;14880:19;14964:2;14952:10;14948:19;14945:1;14941:27;14935:4;14931:38;15000:4;14988:10;14985:20;14982:47;;;-1:-1:-1;15023:4:6;14982:47;15078:2;15073:3;15069:12;15066:1;15062:20;15056:4;15052:31;15042:41;;15133:82;15151:2;15144:5;15141:13;15133:82;;;15196:17;;;15177:1;15166:13;15133:82;;15467:1467;15591:3;15585:10;15618:18;15610:6;15607:30;15604:56;;;15640:18;;:::i;:::-;15669:96;15758:6;15718:38;15750:4;15744:11;15718:38;:::i;:::-;15712:4;15669:96;:::i;:::-;15820:4;;15884:2;15873:14;;15901:1;15896:781;;;;16721:1;16738:6;16735:89;;;-1:-1:-1;16790:19:6;;;16784:26;16735:89;15373:66;15364:1;15360:11;;;15356:84;15352:89;15342:100;15448:1;15444:11;;;15339:117;16837:81;;15866:1062;;15896:781;14634:1;14627:14;;;14671:4;14658:18;;15944:66;15932:79;;;16108:236;16122:7;16119:1;16116:14;16108:236;;;16211:19;;;16205:26;16190:42;;16303:27;;;;16271:1;16259:14;;;;16138:19;;16108:236;;;16112:3;16372:6;16363:7;16360:19;16357:261;;;16433:19;;;16427:26;16534:66;16516:1;16512:14;;;16528:3;16508:24;16504:97;16500:102;16485:118;16470:134;;16357:261;-1:-1:-1;;;;;16664:1:6;16648:14;;;16644:22;16631:36;;-1:-1:-1;15467:1467:6:o;16939:125::-;17004:9;;;17025:10;;;17022:36;;;17038:18;;:::i;17921:287::-;18050:3;18088:6;18082:13;18104:66;18163:6;18158:3;18151:4;18143:6;18139:17;18104:66;:::i;:::-;18186:16;;;;;17921:287;-1:-1:-1;;17921:287:6:o;18557:860::-;18906:6;18898;18894:19;18883:9;18876:38;18950:3;18945:2;18934:9;18930:18;18923:31;18857:4;18977:45;19017:3;19006:9;19002:19;18994:6;18977:45;:::i;:::-;19070:9;19062:6;19058:22;19053:2;19042:9;19038:18;19031:50;19104:32;19129:6;19121;19104:32;:::i;:::-;19155:42;19233:15;;;19228:2;19213:18;;19206:43;19286:15;;19280:3;19265:19;;19258:44;19339:22;;;19333:3;19318:19;;19311:51;19090:46;-1:-1:-1;19379:32:6;19090:46;19396:6;19379:32;:::i;:::-;19371:40;18557:860;-1:-1:-1;;;;;;;;;18557:860:6:o
Swarm Source
ipfs://a7b9f213db84f551024f6407a836ae7fda747923cd937eb32c4e764c651c6c64
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ARB | 41.61% | $3,860.42 | 0.2835 | $1,094.25 | |
POL | Polygon (POL) | 10.26% | $0.697001 | 387.2132 | $269.89 |
BASE | 9.63% | $3,868.83 | 0.0655 | $253.28 | |
OP | 7.61% | $3,871.29 | 0.0517 | $200.21 | |
BSC | 6.10% | $723.33 | 0.2218 | $160.41 | |
FTM | 5.31% | $1.21 | 115.6563 | $139.6 | |
AVAX | 5.00% | $51.37 | 2.5581 | $131.42 | |
SCROLL | 4.96% | $3,862.06 | 0.0338 | $130.39 | |
GNO | 2.94% | $1 | 77.1569 | $77.19 | |
LINEA | 2.89% | $3,862.06 | 0.0197 | $75.91 | |
ETH | 1.13% | $3,869.65 | 0.0077061 | $29.82 | |
ARBNOVA | 1.00% | $3,859.58 | 0.00684647 | $26.42 | |
CELO | 0.65% | $1.05 | 16.3088 | $17.12 | |
OPBNB | 0.39% | $723.7 | 0.0141 | $10.23 | |
GLMR | 0.31% | $0.37677 | 21.4785 | $8.09 | |
MOVR | 0.20% | $19.32 | 0.277 | $5.35 | |
ZKSYNC | <0.01% | $3,869.65 | 0.00001941 | $0.075124 |
[ 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.