Polygon Sponsored slots available. Book your slot here!
Overview
POL Balance
POL Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
54064027 | 386 days ago | Contract Creation | 0 POL |
Loading...
Loading
Contract Name:
LayerZeroV2Executor
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import { ILayerZeroEndpointV2, Origin } from "layerzero-v2/protocol/contracts/interfaces/ILayerZeroEndpointV2.sol"; contract LayerZeroV2Executor { uint64 internal constant RECEIVER_VERSION = 1; address public immutable endpoint; error InvalidSender(); constructor(address _endpoint, address delegate) { endpoint = _endpoint; ILayerZeroEndpointV2(endpoint).setDelegate(delegate); } function oAppVersion() public view virtual returns (uint64, uint64) { return (0, RECEIVER_VERSION); } function nextNonce(uint32, bytes32) public view virtual returns (uint64) { return 0; } function allowInitializePath(Origin calldata) public view virtual returns (bool) { return true; } function lzReceive( Origin calldata _origin, bytes32, // _guid bytes calldata _message, address, // _executor bytes calldata // _extraData ) external payable { if (msg.sender != endpoint) revert InvalidSender(); address src = address(uint160(uint256(_origin.sender))); (bool success, bytes memory result) = src.call(_message); if (!success) { assembly { revert(add(result, 32), mload(result)) } } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; import { IMessageLibManager } from "./IMessageLibManager.sol"; import { IMessagingComposer } from "./IMessagingComposer.sol"; import { IMessagingChannel } from "./IMessagingChannel.sol"; import { IMessagingContext } from "./IMessagingContext.sol"; struct MessagingParams { uint32 dstEid; bytes32 receiver; bytes message; bytes options; bool payInLzToken; } struct MessagingReceipt { bytes32 guid; uint64 nonce; MessagingFee fee; } struct MessagingFee { uint256 nativeFee; uint256 lzTokenFee; } struct Origin { uint32 srcEid; bytes32 sender; uint64 nonce; } interface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext { event PacketSent(bytes encodedPayload, bytes options, address sendLibrary); event PacketVerified(Origin origin, address receiver, bytes32 payloadHash); event PacketDelivered(Origin origin, address receiver); event LzReceiveAlert( address indexed receiver, address indexed executor, Origin origin, bytes32 guid, uint256 gas, uint256 value, bytes message, bytes extraData, bytes reason ); event LzTokenSet(address token); event DelegateSet(address sender, address delegate); function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory); function send( MessagingParams calldata _params, address _refundAddress ) external payable returns (MessagingReceipt memory); function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external; function verifiable(Origin calldata _origin, address _receiver) external view returns (bool); function initializable(Origin calldata _origin, address _receiver) external view returns (bool); function lzReceive( Origin calldata _origin, address _receiver, bytes32 _guid, bytes calldata _message, bytes calldata _extraData ) external payable; // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external; function setLzToken(address _lzToken) external; function lzToken() external view returns (address); function nativeToken() external view returns (address); function setDelegate(address _delegate) external; }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; struct SetConfigParam { uint32 eid; uint32 configType; bytes config; } interface IMessageLibManager { struct Timeout { address lib; uint256 expiry; } event LibraryRegistered(address newLib); event DefaultSendLibrarySet(uint32 eid, address newLib); event DefaultReceiveLibrarySet(uint32 eid, address newLib); event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry); event SendLibrarySet(address sender, uint32 eid, address newLib); event ReceiveLibrarySet(address receiver, uint32 eid, address newLib); event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout); function registerLibrary(address _lib) external; function isRegisteredLibrary(address _lib) external view returns (bool); function getRegisteredLibraries() external view returns (address[] memory); function setDefaultSendLibrary(uint32 _eid, address _newLib) external; function defaultSendLibrary(uint32 _eid) external view returns (address); function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _timeout) external; function defaultReceiveLibrary(uint32 _eid) external view returns (address); function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external; function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry); function isSupportedEid(uint32 _eid) external view returns (bool); function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool); /// ------------------- OApp interfaces ------------------- function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external; function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib); function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool); function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external; function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault); function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _gracePeriod) external; function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry); function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external; function getConfig( address _oapp, address _lib, uint32 _eid, uint32 _configType ) external view returns (bytes memory config); }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; interface IMessagingComposer { event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message); event ComposeDelivered(address from, address to, bytes32 guid, uint16 index); event LzComposeAlert( address indexed from, address indexed to, address indexed executor, bytes32 guid, uint16 index, uint256 gas, uint256 value, bytes message, bytes extraData, bytes reason ); function composeQueue( address _from, address _to, bytes32 _guid, uint16 _index ) external view returns (bytes32 messageHash); function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external; function lzCompose( address _from, address _to, bytes32 _guid, uint16 _index, bytes calldata _message, bytes calldata _extraData ) external payable; }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; interface IMessagingChannel { event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce); event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash); event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash); function eid() external view returns (uint32); // this is an emergency function if a message cannot be verified for some reasons // required to provide _nextNonce to avoid race condition function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external; function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external; function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external; function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32); function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64); function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64); function inboundPayloadHash( address _receiver, uint32 _srcEid, bytes32 _sender, uint64 _nonce ) external view returns (bytes32); function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64); }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; interface IMessagingContext { function isSendingMessage() external view returns (bool); function getSendContext() external view returns (uint32 dstEid, address sender); }
{ "remappings": [ "@account-abstraction/=lib/account-abstraction/", "erc6551/=lib/erc6551/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "multicall-authenticated/=lib/multicall-authenticated/src/", "layerzero-v1/=lib/layerzero-v1/contracts/", "layerzero-v2/=lib/layerzero-v2/", "@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/protocol/", "@layerzerolabs/lz-evm-messagelib-v2/=lib/layerzero-v2/messagelib/", "solidity-bytes-utils/=lib/layerzero-v2/oapp/node_modules/solidity-bytes-utils/", "@openzeppelin/contracts-upgradeable/=lib/layerzero-v2/messagelib/node_modules/@openzeppelin/contracts-upgradeable/", "@layerzerolabs/lz-evm-v1-0.7/=lib/layerzero-v2/messagelib/node_modules/@layerzerolabs/lz-evm-v1-0.7/", "@axelar-network/=lib/layerzero-v2/messagelib/node_modules/@axelar-network/", "@chainlink/=lib/layerzero-v2/messagelib/node_modules/@chainlink/contracts-ccip/src/", "account-abstraction/=lib/account-abstraction/contracts/", "hardhat-deploy/=lib/layerzero-v2/oapp/node_modules/hardhat-deploy/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_endpoint","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidSender","type":"error"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516104c53803806104c583398101604081905261002f916100b3565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b15801561007857600080fd5b505af115801561008c573d6000803e3d6000fd5b5050505050506100e6565b80516001600160a01b03811681146100ae57600080fd5b919050565b600080604083850312156100c657600080fd5b6100cf83610097565b91506100dd60208401610097565b90509250929050565b6080516103be61010760003960008181609d015261014f01526103be6000f3fe60806040526004361061004a5760003560e01c806313137d651461004f57806317442b70146100645780635e280f111461008b5780637d25a05e146100d7578063ff7bd03d14610113575b600080fd5b61006261005d366004610274565b610144565b005b34801561007057600080fd5b50604080516000815260016020820152015b60405180910390f35b34801561009757600080fd5b506100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610082565b3480156100e357600080fd5b506100fa6100f2366004610320565b600092915050565b60405167ffffffffffffffff9091168152602001610082565b34801561011f57600080fd5b5061013461012e366004610355565b50600190565b6040519015158152602001610082565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018d57604051636edaef2f60e11b815260040160405180910390fd5b60405160208801359060009081906001600160a01b038416906101b3908a908a90610378565b6000604051808303816000865af19150503d80600081146101f0576040519150601f19603f3d011682016040523d82523d6000602084013e6101f5565b606091505b50915091508161020757805160208201fd5b50505050505050505050565b60006060828403121561022557600080fd5b50919050565b60008083601f84011261023d57600080fd5b50813567ffffffffffffffff81111561025557600080fd5b60208301915083602082850101111561026d57600080fd5b9250929050565b600080600080600080600060e0888a03121561028f57600080fd5b6102998989610213565b965060608801359550608088013567ffffffffffffffff808211156102bd57600080fd5b6102c98b838c0161022b565b909750955060a08a013591506001600160a01b03821682146102ea57600080fd5b90935060c0890135908082111561030057600080fd5b5061030d8a828b0161022b565b989b979a50959850939692959293505050565b6000806040838503121561033357600080fd5b823563ffffffff8116811461034757600080fd5b946020939093013593505050565b60006060828403121561036757600080fd5b6103718383610213565b9392505050565b818382376000910190815291905056fea264697066735822122071fb98406b6d56d491e3673fedbc61f33ce6f1337d4a42d0ee7ea613b50475d364736f6c634300081400330000000000000000000000001a44076050125825900e736c501f859c50fe728c000000000000000000000000781b6a527482828bb04f33563797d4b696ddf328
Deployed Bytecode
0x60806040526004361061004a5760003560e01c806313137d651461004f57806317442b70146100645780635e280f111461008b5780637d25a05e146100d7578063ff7bd03d14610113575b600080fd5b61006261005d366004610274565b610144565b005b34801561007057600080fd5b50604080516000815260016020820152015b60405180910390f35b34801561009757600080fd5b506100bf7f0000000000000000000000001a44076050125825900e736c501f859c50fe728c81565b6040516001600160a01b039091168152602001610082565b3480156100e357600080fd5b506100fa6100f2366004610320565b600092915050565b60405167ffffffffffffffff9091168152602001610082565b34801561011f57600080fd5b5061013461012e366004610355565b50600190565b6040519015158152602001610082565b336001600160a01b037f0000000000000000000000001a44076050125825900e736c501f859c50fe728c161461018d57604051636edaef2f60e11b815260040160405180910390fd5b60405160208801359060009081906001600160a01b038416906101b3908a908a90610378565b6000604051808303816000865af19150503d80600081146101f0576040519150601f19603f3d011682016040523d82523d6000602084013e6101f5565b606091505b50915091508161020757805160208201fd5b50505050505050505050565b60006060828403121561022557600080fd5b50919050565b60008083601f84011261023d57600080fd5b50813567ffffffffffffffff81111561025557600080fd5b60208301915083602082850101111561026d57600080fd5b9250929050565b600080600080600080600060e0888a03121561028f57600080fd5b6102998989610213565b965060608801359550608088013567ffffffffffffffff808211156102bd57600080fd5b6102c98b838c0161022b565b909750955060a08a013591506001600160a01b03821682146102ea57600080fd5b90935060c0890135908082111561030057600080fd5b5061030d8a828b0161022b565b989b979a50959850939692959293505050565b6000806040838503121561033357600080fd5b823563ffffffff8116811461034757600080fd5b946020939093013593505050565b60006060828403121561036757600080fd5b6103718383610213565b9392505050565b818382376000910190815291905056fea264697066735822122071fb98406b6d56d491e3673fedbc61f33ce6f1337d4a42d0ee7ea613b50475d364736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001a44076050125825900e736c501f859c50fe728c000000000000000000000000781b6a527482828bb04f33563797d4b696ddf328
-----Decoded View---------------
Arg [0] : _endpoint (address): 0x1a44076050125825900e736c501f859c50fE728c
Arg [1] : delegate (address): 0x781b6A527482828bB04F33563797d4b696ddF328
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a44076050125825900e736c501f859c50fe728c
Arg [1] : 000000000000000000000000781b6a527482828bb04f33563797d4b696ddf328
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.