SendUln301
0x37aaaf95887624a363effb7762d489e3c05c2a02
Verification
Verified
v0.8.22+commit.4fc1097e
Type
Contract
22,620 bytes
ABI entries
69
14 read · 11 write
License
none
Contract information
- Address
- 0x37aaaf95887624a363effb7762d489e3c05c2a02
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.22+commit.4fc1097e
- Optimization
- Enabled
- Creator
- 0x9F403140Bc…1Bbd4eF327
- Creation tx
- 0x199766c64e…5ceae7e860
Token
Not a token
This contract does not expose ERC-20 metadata.
Read contract (14)
addressSizes(uint32) → uint256
estimateFees(uint16, address, bytes, bool, bytes) → uint256, uint256
executorConfigs(address, uint32) → uint32, address
fees(address) → uint256
getAppUlnConfig(address, uint32) → tuple
getConfig(uint16, address, uint256) → bytes
getExecutorConfig(address, uint32) → tuple
getUlnConfig(address, uint32) → tuple
isSupportedEid(uint32) → bool
nonceContract() → address
owner() → address
treasury() → address
treasuryFeeHandler() → address
version() → uint64, uint8, uint8
Events (13)
AddressSizeSetDVNFeePaidDefaultExecutorConfigsSetDefaultUlnConfigsSetExecutorConfigSetExecutorFeePaidLzTokenSetNativeFeeWithdrawnOwnershipTransferredPacketSentTreasuryNativeFeeCapSetTreasurySetUlnConfigSet
ABI
[
{
"inputs": [
{
"internalType": "address",
"name": "_endpoint",
"type": "address"
},
{
"internalType": "uint256",
"name": "_treasuryGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_treasuryGasForFeeCap",
"type": "uint256"
},
{
"internalType": "address",
"name": "_nonceContract",
"type": "address"
},
{
"internalType": "uint32",
"name": "_localEid",
"type": "uint32"
},
{
"internalType": "address",
"name": "_treasuryFeeHandler",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AddressCast_InvalidAddress",
"type": "error"
},
{
"inputs": [],
"name": "AddressSizeConfig_AddressSizeAlreadySet",
"type": "error"
},
{
"inputs": [],
"name": "AddressSizeConfig_InvalidAddressSize",
"type": "error"
},
{
"inputs": [],
"name": "DVN_InvalidDVNIdx",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cursor",
"type": "uint256"
}
],
"name": "DVN_InvalidDVNOptions",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_InsufficientMsgValue",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "available",
"type": "uint256"
}
],
"name": "LZ_MessageLib_InvalidAmount",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_InvalidExecutor",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "actual",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "LZ_MessageLib_InvalidMessageSize",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_InvalidPath",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_InvalidSender",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_LzTokenPaymentAddressMustBeSender",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_OnlyEndpoint",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_TransferFailed",
"type": "error"
},
{
"inputs": [],
"name": "LZ_MessageLib_ZeroMessageSize",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_AtLeastOneDVN",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "configType",
"type": "uint256"
}
],
"name": "LZ_ULN_InvalidConfigType",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_InvalidConfirmations",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_InvalidLegacyType1Option",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_InvalidLegacyType2Option",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_InvalidOptionalDVNCount",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_InvalidOptionalDVNThreshold",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_InvalidRequiredDVNCount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "workerId",
"type": "uint8"
}
],
"name": "LZ_ULN_InvalidWorkerId",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cursor",
"type": "uint256"
}
],
"name": "LZ_ULN_InvalidWorkerOptions",
"type": "error"
},
{
"inputs": [],
"name": "LZ_ULN_Unsorted",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
}
],
"name": "LZ_ULN_UnsupportedEid",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "optionType",
"type": "uint16"
}
],
"name": "LZ_ULN_UnsupportedOptionType",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer_NativeFailed",
"type": "error"
},
{
"inputs": [],
"name": "Transfer_ToAddressIsZero",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "eid",
"type": "uint16"
},
{
"indexed": false,
"internalType": "uint256",
"name": "size",
"type": "uint256"
}
],
"name": "AddressSizeSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "requiredDVNs",
"type": "address[]"
},
{
"indexed": false,
"internalType": "address[]",
"name": "optionalDVNs",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "fees",
"type": "uint256[]"
}
],
"name": "DVNFeePaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"components": [
{
"internalType": "uint32",
"name": "maxMessageSize",
"type": "uint32"
},
{
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"internalType": "struct ExecutorConfig",
"name": "config",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct SetDefaultExecutorConfigParam[]",
"name": "params",
"type": "tuple[]"
}
],
"name": "DefaultExecutorConfigsSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"components": [
{
"internalType": "uint64",
"name": "confirmations",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "requiredDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNThreshold",
"type": "uint8"
},
{
"internalType": "address[]",
"name": "requiredDVNs",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "optionalDVNs",
"type": "address[]"
}
],
"internalType": "struct UlnConfig",
"name": "config",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct SetDefaultUlnConfigParam[]",
"name": "params",
"type": "tuple[]"
}
],
"name": "DefaultUlnConfigsSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oapp",
"type": "address"
},
{
"indexed": false,
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"components": [
{
"internalType": "uint32",
"name": "maxMessageSize",
"type": "uint32"
},
{
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"indexed": false,
"internalType": "struct ExecutorConfig",
"name": "config",
"type": "tuple"
}
],
"name": "ExecutorConfigSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "executor",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"name": "ExecutorFeePaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "LzTokenSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "NativeFeeWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "encodedPayload",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes",
"name": "options",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lzTokenFee",
"type": "uint256"
}
],
"name": "PacketSent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "newTreasuryNativeFeeCap",
"type": "uint256"
}
],
"name": "TreasuryNativeFeeCapSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "treasury",
"type": "address"
}
],
"name": "TreasurySet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oapp",
"type": "address"
},
{
"indexed": false,
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"components": [
{
"internalType": "uint64",
"name": "confirmations",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "requiredDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNThreshold",
"type": "uint8"
},
{
"internalType": "address[]",
"name": "requiredDVNs",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "optionalDVNs",
"type": "address[]"
}
],
"indexed": false,
"internalType": "struct UlnConfig",
"name": "config",
"type": "tuple"
}
],
"name": "UlnConfigSet",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "dstEid",
"type": "uint32"
}
],
"name": "addressSizes",
"outputs": [
{
"internalType": "uint256",
"name": "size",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_dstEid",
"type": "uint16"
},
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "bytes",
"name": "_message",
"type": "bytes"
},
{
"internalType": "bool",
"name": "_payInLzToken",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_options",
"type": "bytes"
}
],
"name": "estimateFees",
"outputs": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lzTokenFee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oapp",
"type": "address"
},
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
}
],
"name": "executorConfigs",
"outputs": [
{
"internalType": "uint32",
"name": "maxMessageSize",
"type": "uint32"
},
{
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "worker",
"type": "address"
}
],
"name": "fees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_oapp",
"type": "address"
},
{
"internalType": "uint32",
"name": "_remoteEid",
"type": "uint32"
}
],
"name": "getAppUlnConfig",
"outputs": [
{
"components": [
{
"internalType": "uint64",
"name": "confirmations",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "requiredDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNThreshold",
"type": "uint8"
},
{
"internalType": "address[]",
"name": "requiredDVNs",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "optionalDVNs",
"type": "address[]"
}
],
"internalType": "struct UlnConfig",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_eid",
"type": "uint16"
},
{
"internalType": "address",
"name": "_oapp",
"type": "address"
},
{
"internalType": "uint256",
"name": "_configType",
"type": "uint256"
}
],
"name": "getConfig",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_oapp",
"type": "address"
},
{
"internalType": "uint32",
"name": "_remoteEid",
"type": "uint32"
}
],
"name": "getExecutorConfig",
"outputs": [
{
"components": [
{
"internalType": "uint32",
"name": "maxMessageSize",
"type": "uint32"
},
{
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"internalType": "struct ExecutorConfig",
"name": "rtnConfig",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_oapp",
"type": "address"
},
{
"internalType": "uint32",
"name": "_remoteEid",
"type": "uint32"
}
],
"name": "getUlnConfig",
"outputs": [
{
"components": [
{
"internalType": "uint64",
"name": "confirmations",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "requiredDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNThreshold",
"type": "uint8"
},
{
"internalType": "address[]",
"name": "requiredDVNs",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "optionalDVNs",
"type": "address[]"
}
],
"internalType": "struct UlnConfig",
"name": "rtnConfig",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "_eid",
"type": "uint32"
}
],
"name": "isSupportedEid",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nonceContract",
"outputs": [
{
"internalType": "contract INonceContract",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint64",
"name": "",
"type": "uint64"
},
{
"internalType": "uint16",
"name": "_dstEid",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_message",
"type": "bytes"
},
{
"internalType": "address payable",
"name": "_refundAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_lzTokenPaymentAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "_options",
"type": "bytes"
}
],
"name": "send",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_eid",
"type": "uint16"
},
{
"internalType": "uint256",
"name": "_size",
"type": "uint256"
}
],
"name": "setAddressSize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_eid",
"type": "uint16"
},
{
"internalType": "address",
"name": "_oapp",
"type": "address"
},
{
"internalType": "uint256",
"name": "_configType",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_config",
"type": "bytes"
}
],
"name": "setConfig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"components": [
{
"internalType": "uint32",
"name": "maxMessageSize",
"type": "uint32"
},
{
"internalType": "address",
"name": "executor",
"type": "address"
}
],
"internalType": "struct ExecutorConfig",
"name": "config",
"type": "tuple"
}
],
"internalType": "struct SetDefaultExecutorConfigParam[]",
"name": "_params",
"type": "tuple[]"
}
],
"name": "setDefaultExecutorConfigs",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"components": [
{
"internalType": "uint64",
"name": "confirmations",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "requiredDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNCount",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "optionalDVNThreshold",
"type": "uint8"
},
{
"internalType": "address[]",
"name": "requiredDVNs",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "optionalDVNs",
"type": "address[]"
}
],
"internalType": "struct UlnConfig",
"name": "config",
"type": "tuple"
}
],
"internalType": "struct SetDefaultUlnConfigParam[]",
"name": "_params",
"type": "tuple[]"
}
],
"name": "setDefaultUlnConfigs",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_lzToken",
"type": "address"
}
],
"name": "setLzToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_treasury",
"type": "address"
}
],
"name": "setTreasury",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newTreasuryNativeFeeCap",
"type": "uint256"
}
],
"name": "setTreasuryNativeFeeCap",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "treasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryFeeHandler",
"outputs": [
{
"internalType": "contract ITreasuryFeeHandler",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint64",
"name": "major",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "minor",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "endpointVersion",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdrawFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]Source code
// SPDX-License-Identifier: LZBL-1.2
pragma solidity ^0.8.20;
import { Packet } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol";
import { ExecutorConfig, WorkerOptions } from "../../SendLibBase.sol";
import { SendLibBaseE1 } from "./SendLibBaseE1.sol";
import { SendUlnBase } from "../SendUlnBase.sol";
import { UlnConfig } from "../UlnBase.sol";
/// @dev ULN301 will be deployed on EndpointV1 and is for backward compatibility with ULN302 on EndpointV2. 301 can talk to both 301 and 302
/// @dev This is a gluing contract. It simply parses the requests and forward to the super.impl() accordingly.
/// @dev In this case, it combines the logic of SendUlnBase and SendLibBaseE1
contract SendUln301 is SendUlnBase, SendLibBaseE1 {
uint256 internal constant CONFIG_TYPE_EXECUTOR = 1;
uint256 internal constant CONFIG_TYPE_ULN = 2;
error LZ_ULN_InvalidConfigType(uint256 configType);
constructor(
address _endpoint,
uint256 _treasuryGasLimit,
uint256 _treasuryGasForFeeCap,
address _nonceContract,
uint32 _localEid,
address _treasuryFeeHandler
)
SendLibBaseE1(
_endpoint,
_treasuryGasLimit,
_treasuryGasForFeeCap,
_nonceContract,
_localEid,
_treasuryFeeHandler
)
{}
// ============================ OnlyEndpoint ===================================
function setConfig(
uint16 _eid,
address _oapp,
uint256 _configType,
bytes calldata _config
) external override onlyEndpoint {
_assertSupportedEid(_eid);
if (_configType == CONFIG_TYPE_EXECUTOR) {
_setExecutorConfig(_eid, _oapp, abi.decode(_config, (ExecutorConfig)));
} else if (_configType == CONFIG_TYPE_ULN) {
_setUlnConfig(_eid, _oapp, abi.decode(_config, (UlnConfig)));
} else {
revert LZ_ULN_InvalidConfigType(_configType);
}
}
// ============================ View ===================================
function getConfig(uint16 _eid, address _oapp, uint256 _configType) external view override returns (bytes memory) {
if (_configType == CONFIG_TYPE_EXECUTOR) {
return abi.encode(getExecutorConfig(_oapp, _eid));
} else if (_configType == CONFIG_TYPE_ULN) {
return abi.encode(getUlnConfig(_oapp, _eid));
} else {
revert LZ_ULN_InvalidConfigType(_configType);
}
}
function version() external pure override returns (uint64 major, uint8 minor, uint8 endpointVersion) {
return (3, 0, 1);
}
function isSupportedEid(uint32 _eid) external view returns (bool) {
return _isSupportedEid(_eid);
}
// ============================ Internal ===================================
function _quoteVerifier(
address _sender,
uint32 _dstEid,
WorkerOptions[] memory _options
) internal view override returns (uint256) {
return _quoteDVNs(_sender, _dstEid, _options);
}
function _payVerifier(
Packet memory _packet,
WorkerOptions[] memory _options
) internal virtual override returns (uint256 otherWorkerFees, bytes memory encodedPacket) {
(otherWorkerFees, encodedPacket) = _payDVNs(fees, _packet, _options);
}
function _splitOptions(
bytes calldata _options
) internal pure override returns (bytes memory, WorkerOptions[] memory) {
return _splitUlnOptions(_options);
}
}
Chain explorer3009msChain node88ms