Source Code
Overview
ETH Balance
0.9668 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 667 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Dispatch Blocks | 7024190 | 37 days ago | IN | 0 ETH | 0.00341895 | ||||
Dispatch Blocks | 6471599 | 126 days ago | IN | 0.002 ETH | 0.00061761 | ||||
Dispatch Blocks | 6471551 | 126 days ago | IN | 0.002 ETH | 0.00081832 | ||||
Dispatch Blocks | 6471547 | 126 days ago | IN | 0.002 ETH | 0.00075384 | ||||
Dispatch Blocks | 6471499 | 126 days ago | IN | 0.002 ETH | 0.00048754 | ||||
Dispatch Blocks | 6471492 | 126 days ago | IN | 0.002 ETH | 0.00054965 | ||||
Dispatch Blocks | 6471443 | 126 days ago | IN | 0.002 ETH | 0.0007095 | ||||
Dispatch Blocks | 6471439 | 126 days ago | IN | 0.002 ETH | 0.00074541 | ||||
Dispatch Blocks | 6471391 | 126 days ago | IN | 0.002 ETH | 0.00057583 | ||||
Dispatch Blocks | 6471386 | 126 days ago | IN | 0.002 ETH | 0.00057931 | ||||
Dispatch Blocks | 6471343 | 126 days ago | IN | 0.002 ETH | 0.00032215 | ||||
Dispatch Blocks | 6471332 | 126 days ago | IN | 0.002 ETH | 0.00037062 | ||||
Dispatch Blocks | 6471284 | 126 days ago | IN | 0.002 ETH | 0.00027132 | ||||
Dispatch Blocks | 6471280 | 126 days ago | IN | 0.002 ETH | 0.00028048 | ||||
Dispatch Blocks | 6471227 | 126 days ago | IN | 0.002 ETH | 0.00034443 | ||||
Dispatch Blocks | 6471221 | 126 days ago | IN | 0.002 ETH | 0.00038943 | ||||
Dispatch Blocks | 6471117 | 126 days ago | IN | 0.002 ETH | 0.00056633 | ||||
Dispatch Blocks | 6471114 | 126 days ago | IN | 0.002 ETH | 0.0005565 | ||||
Dispatch Blocks | 6471066 | 126 days ago | IN | 0.002 ETH | 0.00045428 | ||||
Dispatch Blocks | 6471063 | 126 days ago | IN | 0.002 ETH | 0.00038602 | ||||
Dispatch Blocks | 6471015 | 126 days ago | IN | 0.002 ETH | 0.00059839 | ||||
Dispatch Blocks | 6471009 | 126 days ago | IN | 0.002 ETH | 0.00066893 | ||||
Dispatch Blocks | 6470982 | 126 days ago | IN | 0.002 ETH | 0.00035942 | ||||
Dispatch Blocks | 6470908 | 126 days ago | IN | 0.002 ETH | 0.00040513 | ||||
Dispatch Blocks | 6470906 | 126 days ago | IN | 0.002 ETH | 0.00043126 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
7024190 | 37 days ago | 0.0002 ETH | ||||
6917321 | 53 days ago | 0.0002 ETH | ||||
6626778 | 101 days ago | 0.0002 ETH | ||||
6626573 | 101 days ago | 0.0002 ETH | ||||
6626418 | 101 days ago | 0.0002 ETH | ||||
6626254 | 101 days ago | 0.0002 ETH | ||||
6626080 | 101 days ago | 0.0002 ETH | ||||
6625923 | 101 days ago | 0.0002 ETH | ||||
6625713 | 101 days ago | 0.0002 ETH | ||||
6625496 | 101 days ago | 0.0002 ETH | ||||
6625303 | 102 days ago | 0.0002 ETH | ||||
6624755 | 102 days ago | 0.0002 ETH | ||||
6624580 | 102 days ago | 0.0002 ETH | ||||
6624419 | 102 days ago | 0.0002 ETH | ||||
6624214 | 102 days ago | 0.0002 ETH | ||||
6624007 | 102 days ago | 0.0002 ETH | ||||
6623850 | 102 days ago | 0.0002 ETH | ||||
6623690 | 102 days ago | 0.0002 ETH | ||||
6623479 | 102 days ago | 0.0002 ETH | ||||
6623318 | 102 days ago | 0.0002 ETH | ||||
6623118 | 102 days ago | 0.0002 ETH | ||||
6622915 | 102 days ago | 0.0002 ETH | ||||
6622741 | 102 days ago | 0.0002 ETH | ||||
6622383 | 102 days ago | 0.0002 ETH | ||||
6622198 | 102 days ago | 0.0002 ETH |
Loading...
Loading
Contract Name:
CCIPReporter
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 10000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.20; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { IRouterClient } from "@chainlink/contracts-ccip/src/v0.8/ccip/interfaces/IRouterClient.sol"; import { Client } from "@chainlink/contracts-ccip/src/v0.8/ccip/libraries/Client.sol"; import { Reporter } from "../Reporter.sol"; contract CCIPReporter is Reporter, Ownable { string public constant PROVIDER = "ccip"; IRouterClient public immutable CCIP_ROUTER; uint256 public fee; mapping(uint256 => uint64) public chainSelectors; error ChainSelectorNotAvailable(); event ChainSelectorSet(uint256 indexed chainId, uint64 indexed chainSelector); event FeeSet(uint256 fee); constructor(address headerStorage, address yaho, address ccipRouter) Reporter(headerStorage, yaho) { CCIP_ROUTER = IRouterClient(ccipRouter); } function setChainSelectorByChainId(uint256 chainId, uint64 chainSelector) external onlyOwner { chainSelectors[chainId] = chainSelector; emit ChainSelectorSet(chainId, chainSelector); } function setFee(uint256 fee_) external onlyOwner { fee = fee_; emit FeeSet(fee_); } function _dispatch( uint256 targetChainId, address adapter, uint256[] memory ids, bytes32[] memory hashes ) internal override returns (bytes32) { uint64 targetChainSelector = chainSelectors[targetChainId]; if (targetChainSelector == 0) revert ChainSelectorNotAvailable(); bytes memory payload = abi.encode(ids, hashes); Client.EVM2AnyMessage memory message = Client.EVM2AnyMessage({ receiver: abi.encode(adapter), data: payload, tokenAmounts: new Client.EVMTokenAmount[](0), // Empty array - no tokens are transferred extraArgs: Client._argsToBytes(Client.EVMExtraArgsV1({ gasLimit: 200_000, strict: false })), feeToken: address(0) // Pay fees with native }); CCIP_ROUTER.ccipSend{ value: fee }(targetChainSelector, message); return bytes32(0); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {Client} from "../libraries/Client.sol"; interface IRouterClient { error UnsupportedDestinationChain(uint64 destChainSelector); error InsufficientFeeTokenAmount(); error InvalidMsgValue(); /// @notice Checks if the given chain ID is supported for sending/receiving. /// @param chainSelector The chain to check. /// @return supported is true if it is supported, false if not. function isChainSupported(uint64 chainSelector) external view returns (bool supported); /// @notice Gets a list of all supported tokens which can be sent or received /// to/from a given chain id. /// @param chainSelector The chainSelector. /// @return tokens The addresses of all tokens that are supported. function getSupportedTokens(uint64 chainSelector) external view returns (address[] memory tokens); /// @param destinationChainSelector The destination chainSelector /// @param message The cross-chain CCIP message including data and/or tokens /// @return fee returns guaranteed execution fee for the specified message /// delivery to destination chain /// @dev returns 0 fee on invalid message. function getFee( uint64 destinationChainSelector, Client.EVM2AnyMessage memory message ) external view returns (uint256 fee); /// @notice Request a message to be sent to the destination chain /// @param destinationChainSelector The destination chain ID /// @param message The cross-chain CCIP message including data and/or tokens /// @return messageId The message ID /// @dev Note if msg.value is larger than the required fee (from getFee) we accept /// the overpayment with no refund. function ccipSend( uint64 destinationChainSelector, Client.EVM2AnyMessage calldata message ) external payable returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // End consumer library. library Client { struct EVMTokenAmount { address token; // token address on the local chain. uint256 amount; // Amount of tokens. } struct Any2EVMMessage { bytes32 messageId; // MessageId corresponding to ccipSend on source. uint64 sourceChainSelector; // Source chain selector. bytes sender; // abi.decode(sender) if coming from an EVM chain. bytes data; // payload sent in original message. EVMTokenAmount[] destTokenAmounts; // Tokens and their amounts in their destination chain representation. } // If extraArgs is empty bytes, the default is 200k gas limit and strict = false. struct EVM2AnyMessage { bytes receiver; // abi.encode(receiver address) for dest EVM chains bytes data; // Data payload EVMTokenAmount[] tokenAmounts; // Token transfers address feeToken; // Address of feeToken. address(0) means you will send msg.value. bytes extraArgs; // Populate this with _argsToBytes(EVMExtraArgsV1) } // extraArgs will evolve to support new features // bytes4(keccak256("CCIP EVMExtraArgsV1")); bytes4 public constant EVM_EXTRA_ARGS_V1_TAG = 0x97a657c9; struct EVMExtraArgsV1 { uint256 gasLimit; // ATTENTION!!! MAX GAS LIMIT 4M FOR BETA TESTING bool strict; // See strict sequencing details below. } function _argsToBytes(EVMExtraArgsV1 memory extraArgs) internal pure returns (bytes memory bts) { return abi.encodeWithSelector(EVM_EXTRA_ARGS_V1_TAG, extraArgs); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.20; import { IHeaderStorage } from "../interfaces/IHeaderStorage.sol"; import { IReporter } from "../interfaces/IReporter.sol"; import { IAdapter } from "../interfaces/IAdapter.sol"; abstract contract Reporter is IReporter { address public immutable HEADER_STORAGE; address public immutable YAHO; modifier onlyYaho() { if (msg.sender != YAHO) revert NotYaho(msg.sender, YAHO); _; } constructor(address headerStorage, address yaho) { HEADER_STORAGE = headerStorage; YAHO = yaho; } /// @inheritdoc IReporter function dispatchBlocks( uint256 targetChainId, IAdapter adapter, uint256[] memory blockNumbers ) external payable returns (bytes32) { bytes32[] memory blockHeaders = IHeaderStorage(HEADER_STORAGE).storeBlockHeaders(blockNumbers); for (uint256 i = 0; i < blockNumbers.length; ) { emit BlockDispatched(targetChainId, adapter, blockNumbers[i], blockHeaders[i]); unchecked { ++i; } } return _dispatch(targetChainId, address(adapter), blockNumbers, blockHeaders); } /// @inheritdoc IReporter function dispatchMessages( uint256 targetChainId, IAdapter adapter, uint256[] memory messageIds, bytes32[] memory messageHashes ) external payable onlyYaho returns (bytes32) { for (uint256 i = 0; i < messageIds.length; ) { emit MessageDispatched(targetChainId, adapter, messageIds[i], messageHashes[i]); unchecked { ++i; } } return _dispatch(targetChainId, address(adapter), messageIds, messageHashes); } function _dispatch( uint256 targetChainId, address adapter, uint256[] memory ids, bytes32[] memory hashes ) internal virtual returns (bytes32); }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; /** * @title IAdapter */ interface IAdapter { error ConflictingBlockHeader(uint256 blockNumber, bytes32 blockHash, bytes32 storedBlockHash); error InvalidBlockHeaderLength(uint256 length); error InvalidBlockHeaderRLP(); /** * @dev Emitted when a hash is stored. * @param id - The ID of the stored hash. * @param hash - The stored hash as bytes32 values. */ event HashStored(uint256 indexed id, bytes32 indexed hash); /** * @dev Returns the hash for a given ID. * @param domain - Identifier for the domain to query. * @param id - Identifier for the ID to query. * @return hash Bytes32 hash for the given ID on the given domain. * @notice MUST return bytes32(0) if the hash is not present. */ function getHash(uint256 domain, uint256 id) external view returns (bytes32 hash); }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; /** * @title IHeaderStorage */ interface IHeaderStorage { error HeaderOutOfRange(uint256 blockNumber); /** * @dev Emitted when a block header is stored. * @param blockNumber - The block number associated with the stored header. * @param blockHeader - The stored block header as a bytes32 value. */ event HeaderStored(uint256 indexed blockNumber, bytes32 indexed blockHeader); /** * @dev Retrieves the stored block header for a specific block number. * @param blockNumber - The block number as a uint256 value. * @return The block header as a bytes32 value. */ function headers(uint256 blockNumber) external view returns (bytes32); /** * @dev Stores and returns the header for the given block. * @param blockNumber - Block number. * @return blockHeader - Block header stored. * @notice Reverts if the given block header was not previously stored and is now out of range. */ function storeBlockHeader(uint256 blockNumber) external returns (bytes32); /** * @dev Stores and returns the header for an array of given blocks. * @param blockNumbers - Array of block numbers. * @return blockHeaders - Array of block headers stored. * @notice Reverts if the given block header was not previously stored and is now out of range. */ function storeBlockHeaders(uint256[] memory blockNumbers) external returns (bytes32[] memory); }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; import { IAdapter } from "./IAdapter.sol"; interface IReporter { error NotYaho(address sender, address expectedYaho); /** * @dev Emitted when a block is dispatched to another chain. * @param targetChainId - The target chain's identifier associated with the dispatched block. * @param adapter - The adapter address associated with the dispatched block. * @param blockNumber - The block number associated with the dispatched block. * @param blockHeader - The dispatched block header as a bytes32 value. */ event BlockDispatched( uint256 indexed targetChainId, IAdapter adapter, uint256 indexed blockNumber, bytes32 blockHeader ); /** * @dev Emitted when a message is dispatched to another chain. * @param targetChainId - The target chain's identifier associated with the dispatched message. * @param adapter - The adapter address associated with the dispatched message. * @param messageId - The message identifier associated with the dispatched message. * @param messageHash - The dispatched message hash as a bytes32 value. */ event MessageDispatched( uint256 indexed targetChainId, IAdapter adapter, uint256 indexed messageId, bytes32 messageHash ); /** * @dev Dispatches blocks to a given adapter on the target chaib. * @param targetChainId - The target chain's Uint256 identifier. * @param adapter - The adapter instance to use. * @param blockNumbers - An array of Uint256 block numbers to dispatch. * @notice blockNumbers must include block numbers that are greater than or equal to (currentBlock - 256) due to EVM limitations. * @return result - The result returned by the adapter as bytes. */ function dispatchBlocks( uint256 targetChainId, IAdapter adapter, uint256[] memory blockNumbers ) external payable returns (bytes32); /** * @dev Dispatches messages to a target chain using the specified adapter. * @param targetChainId - The target chain's Uint256 identifier. * @param adapter - The adapter instance to use. * @param messageIds - An array of Uint256 message identifiers. * @param messageHashes - An array of bytes32 message hashes. * @notice This function can be called only by Yaho * @return result - The result returned by the adapter as bytes. */ function dispatchMessages( uint256 targetChainId, IAdapter adapter, uint256[] memory messageIds, bytes32[] memory messageHashes ) external payable returns (bytes32); }
{ "viaIR": true, "optimizer": { "enabled": true, "runs": 10000 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"headerStorage","type":"address"},{"internalType":"address","name":"yaho","type":"address"},{"internalType":"address","name":"ccipRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ChainSelectorNotAvailable","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"expectedYaho","type":"address"}],"name":"NotYaho","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"targetChainId","type":"uint256"},{"indexed":false,"internalType":"contract IAdapter","name":"adapter","type":"address"},{"indexed":true,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"blockHeader","type":"bytes32"}],"name":"BlockDispatched","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":true,"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"ChainSelectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"FeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"targetChainId","type":"uint256"},{"indexed":false,"internalType":"contract IAdapter","name":"adapter","type":"address"},{"indexed":true,"internalType":"uint256","name":"messageId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"name":"MessageDispatched","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"CCIP_ROUTER","outputs":[{"internalType":"contract IRouterClient","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HEADER_STORAGE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROVIDER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"YAHO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chainSelectors","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"targetChainId","type":"uint256"},{"internalType":"contract IAdapter","name":"adapter","type":"address"},{"internalType":"uint256[]","name":"blockNumbers","type":"uint256[]"}],"name":"dispatchBlocks","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"targetChainId","type":"uint256"},{"internalType":"contract IAdapter","name":"adapter","type":"address"},{"internalType":"uint256[]","name":"messageIds","type":"uint256[]"},{"internalType":"bytes32[]","name":"messageHashes","type":"bytes32[]"}],"name":"dispatchMessages","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"chainId","type":"uint256"},{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"setChainSelectorByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee_","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e0346100f257601f610fb538819003918201601f19168301916001600160401b038311848410176100f7578084926060946040528339810103126100f2576100478161010d565b9061006060406100596020840161010d565b920161010d565b60809290925260a05260008054336001600160a01b0319821681178355604051936001600160a01b039390928416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a31660c052610e93908161012282396080518181816104ea01526107f9015260a0518181816102f80152610431015260c05181818160de0152610d400152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100f25756fe608060408181526004918236101561001657600080fd5b600092833560e01c918262d344111461081d575081631073f93d146107cc5781632bf34fbd1461079a57816369fe0e2d1461074c578163715018a6146106ce5781638c09f0e5146106445781638da5cb5b146106115781639ac41b98146104555781639e83334b14610404578163b4a90ff714610248578163ddca3f4314610229578163f2fde38b14610106575063fe5f42ca146100b357600080fd5b346101025781600319360112610102576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b919050346102255760206003193601126102255781359173ffffffffffffffffffffffffffffffffffffffff9182841680940361022157610145610a04565b831561019e5750508254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b8480fd5b8280fd5b5050346101025781600319360112610102576020906001549051908152f35b9050826080600319360112610401578135610261610966565b67ffffffffffffffff926044358481116101025761028290369087016109a6565b9060643594851161040157366023860112156104015784860135906102a68261098e565b956102b3895197886108c7565b82875260209260248489019160051b830101913683116103fd576024859101915b8383106103ed575050505073ffffffffffffffffffffffffffffffffffffffff96877f0000000000000000000000000000000000000000000000000000000000000000168033036103b75750505b825181101561039f578061033860019285610ab7565b51867fd05d8e0013365e4d441d98e6459477af9dd142c5cf590e87ca927921993b6c62610396610368858c610ab7565b518d5173ffffffffffffffffffffffffffffffffffffffff8b16815260208101919091529081906040820190565b0390a301610322565b5095946103b0949391921690610afa565b9051908152f35b604492508951917fce98f81500000000000000000000000000000000000000000000000000000000835233908301526024820152fd5b82358152918101918591016102d4565b8380fd5b80fd5b5050346101025781600319360112610102576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b839150606060031936011261010257803561046e610966565b67ffffffffffffffff9260443584811161060d5761048f90369083016109a6565b908651957fceee6e5500000000000000000000000000000000000000000000000000000000875260208092880152866104cb6024820185610a83565b0396818173ffffffffffffffffffffffffffffffffffffffff9981838c7f0000000000000000000000000000000000000000000000000000000000000000165af196871561060357829761056c575b50505b825181101561039f578061053360019285610ab7565b51867fdfde4db189423e6f919a3d3cb1306e03dc18b4e72bc0c6c13fe07c58b395335c610563610368858c610ab7565b0390a30161051d565b909196503d8088843e61057f81846108c7565b82019183818403126105ff5780519182116105ff57019080601f830112156105fb5781516105ac8161098e565b926105b98b5194856108c7565b818452848085019260051b8201019283116105f75784809101915b8383106105e7575050505094888061051a565b82518152918101918591016105d4565b8880fd5b8680fd5b8780fd5b89513d84823e3d90fd5b8580fd5b50503461010257816003193601126101025773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b905034610225578160031936011261022557356024359167ffffffffffffffff83168093036103fd57610675610a04565b81845260026020528320827fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790557fb791570583b562de90557c30a4aa1697096764d7627f1b2e3029be46a867defb8380a380f35b83346104015780600319360112610401576106e7610a04565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b905034610225576020600319360112610225577f20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f91602091359061078e610a04565b8160015551908152a180f35b905034610225576020600319360112610225578160209367ffffffffffffffff92358152600285522054169051908152f35b5050346101025781600319360112610102576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b929150346103fd57836003193601126103fd57610878935061083e8361087c565b82527f6363697000000000000000000000000000000000000000000000000000000000602083015251918291602083526020830190610908565b0390f35b6040810190811067ffffffffffffffff82111761089857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089857604052565b919082519283825260005b8481106109525750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610913565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361098957565b600080fd5b67ffffffffffffffff81116108985760051b60200190565b81601f82011215610989578035916109bd8361098e565b926109cb60405194856108c7565b808452602092838086019260051b820101928311610989578301905b8282106109f5575050505090565b813581529083019083016109e7565b73ffffffffffffffffffffffffffffffffffffffff600054163303610a2557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90815180825260208080930193019160005b828110610aa3575050505090565b835185529381019392810192600101610a95565b8051821015610acb5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92909160009384526020926002845267ffffffffffffffff604092818488205416948515610e3457610b3785519286898501526060840190610a83565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0918282820301888301528980855192838152019401908b5b8b828210610e1d5750505050610b8d92039081018352826108c7565b83519073ffffffffffffffffffffffffffffffffffffffff80941687830152868252610bb88261087c565b84519187830183811085821117610df0578652888352855190610bda8261087c565b62030d4082528882018a81528751927f97a657c9000000000000000000000000000000000000000000000000000000008b850152516024840152511515604483015260448252608082019482861081871117610dc357610120830190811186821017610dc357908996949293918899969952885260a0830190815260c0830191825260e08301928a845261010081019081526001938b855495610cf2610cbe8c519d8e9b7f96f4e9f9000000000000000000000000000000000000000000000000000000008d5260048d01528d60248d01525160a060448d015260e48c0190610908565b9551957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc96878c83030160648d0152610908565b955195858a82030160848b01528a80885192838152019701925b8c828210610da15750505050509286949392610d3c92878795511660a486015251908483030160c4850152610908565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1908115610d985750610d7357505090565b813d8311610d91575b610d8681836108c7565b810103126104015790565b503d610d7c565b513d85823e3d90fd5b845180518c168a528d0151898e01528f9c8f9c50980197909301928201610d0c565b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b835187529586019587945090920191600101610b71565b600485517f4210af62000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220f67de1f4e504b47d2982f4b9a095ac85d3886e82f206774be9d5cfd98339dc1564736f6c6343000814003300000000000000000000000048800ebef4491c65b2172d3628ddddc9c47fe43000000000000000000000000021eab033c7d2df6a67aef6c5bda9a7f151eb9f520000000000000000000000000bf3de8c5d3e8a2b34d2beeb17abfcebaf363a59
Deployed Bytecode
0x608060408181526004918236101561001657600080fd5b600092833560e01c918262d344111461081d575081631073f93d146107cc5781632bf34fbd1461079a57816369fe0e2d1461074c578163715018a6146106ce5781638c09f0e5146106445781638da5cb5b146106115781639ac41b98146104555781639e83334b14610404578163b4a90ff714610248578163ddca3f4314610229578163f2fde38b14610106575063fe5f42ca146100b357600080fd5b346101025781600319360112610102576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000bf3de8c5d3e8a2b34d2beeb17abfcebaf363a59168152f35b5080fd5b919050346102255760206003193601126102255781359173ffffffffffffffffffffffffffffffffffffffff9182841680940361022157610145610a04565b831561019e5750508254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b8480fd5b8280fd5b5050346101025781600319360112610102576020906001549051908152f35b9050826080600319360112610401578135610261610966565b67ffffffffffffffff926044358481116101025761028290369087016109a6565b9060643594851161040157366023860112156104015784860135906102a68261098e565b956102b3895197886108c7565b82875260209260248489019160051b830101913683116103fd576024859101915b8383106103ed575050505073ffffffffffffffffffffffffffffffffffffffff96877f00000000000000000000000021eab033c7d2df6a67aef6c5bda9a7f151eb9f52168033036103b75750505b825181101561039f578061033860019285610ab7565b51867fd05d8e0013365e4d441d98e6459477af9dd142c5cf590e87ca927921993b6c62610396610368858c610ab7565b518d5173ffffffffffffffffffffffffffffffffffffffff8b16815260208101919091529081906040820190565b0390a301610322565b5095946103b0949391921690610afa565b9051908152f35b604492508951917fce98f81500000000000000000000000000000000000000000000000000000000835233908301526024820152fd5b82358152918101918591016102d4565b8380fd5b80fd5b5050346101025781600319360112610102576020905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000021eab033c7d2df6a67aef6c5bda9a7f151eb9f52168152f35b839150606060031936011261010257803561046e610966565b67ffffffffffffffff9260443584811161060d5761048f90369083016109a6565b908651957fceee6e5500000000000000000000000000000000000000000000000000000000875260208092880152866104cb6024820185610a83565b0396818173ffffffffffffffffffffffffffffffffffffffff9981838c7f00000000000000000000000048800ebef4491c65b2172d3628ddddc9c47fe430165af196871561060357829761056c575b50505b825181101561039f578061053360019285610ab7565b51867fdfde4db189423e6f919a3d3cb1306e03dc18b4e72bc0c6c13fe07c58b395335c610563610368858c610ab7565b0390a30161051d565b909196503d8088843e61057f81846108c7565b82019183818403126105ff5780519182116105ff57019080601f830112156105fb5781516105ac8161098e565b926105b98b5194856108c7565b818452848085019260051b8201019283116105f75784809101915b8383106105e7575050505094888061051a565b82518152918101918591016105d4565b8880fd5b8680fd5b8780fd5b89513d84823e3d90fd5b8580fd5b50503461010257816003193601126101025773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b905034610225578160031936011261022557356024359167ffffffffffffffff83168093036103fd57610675610a04565b81845260026020528320827fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790557fb791570583b562de90557c30a4aa1697096764d7627f1b2e3029be46a867defb8380a380f35b83346104015780600319360112610401576106e7610a04565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b905034610225576020600319360112610225577f20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f91602091359061078e610a04565b8160015551908152a180f35b905034610225576020600319360112610225578160209367ffffffffffffffff92358152600285522054169051908152f35b5050346101025781600319360112610102576020905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000048800ebef4491c65b2172d3628ddddc9c47fe430168152f35b929150346103fd57836003193601126103fd57610878935061083e8361087c565b82527f6363697000000000000000000000000000000000000000000000000000000000602083015251918291602083526020830190610908565b0390f35b6040810190811067ffffffffffffffff82111761089857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089857604052565b919082519283825260005b8481106109525750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610913565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361098957565b600080fd5b67ffffffffffffffff81116108985760051b60200190565b81601f82011215610989578035916109bd8361098e565b926109cb60405194856108c7565b808452602092838086019260051b820101928311610989578301905b8282106109f5575050505090565b813581529083019083016109e7565b73ffffffffffffffffffffffffffffffffffffffff600054163303610a2557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90815180825260208080930193019160005b828110610aa3575050505090565b835185529381019392810192600101610a95565b8051821015610acb5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92909160009384526020926002845267ffffffffffffffff604092818488205416948515610e3457610b3785519286898501526060840190610a83565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0918282820301888301528980855192838152019401908b5b8b828210610e1d5750505050610b8d92039081018352826108c7565b83519073ffffffffffffffffffffffffffffffffffffffff80941687830152868252610bb88261087c565b84519187830183811085821117610df0578652888352855190610bda8261087c565b62030d4082528882018a81528751927f97a657c9000000000000000000000000000000000000000000000000000000008b850152516024840152511515604483015260448252608082019482861081871117610dc357610120830190811186821017610dc357908996949293918899969952885260a0830190815260c0830191825260e08301928a845261010081019081526001938b855495610cf2610cbe8c519d8e9b7f96f4e9f9000000000000000000000000000000000000000000000000000000008d5260048d01528d60248d01525160a060448d015260e48c0190610908565b9551957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc96878c83030160648d0152610908565b955195858a82030160848b01528a80885192838152019701925b8c828210610da15750505050509286949392610d3c92878795511660a486015251908483030160c4850152610908565b03927f0000000000000000000000000bf3de8c5d3e8a2b34d2beeb17abfcebaf363a59165af1908115610d985750610d7357505090565b813d8311610d91575b610d8681836108c7565b810103126104015790565b503d610d7c565b513d85823e3d90fd5b845180518c168a528d0151898e01528f9c8f9c50980197909301928201610d0c565b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b835187529586019587945090920191600101610b71565b600485517f4210af62000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220f67de1f4e504b47d2982f4b9a095ac85d3886e82f206774be9d5cfd98339dc1564736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000048800ebef4491c65b2172d3628ddddc9c47fe43000000000000000000000000021eab033c7d2df6a67aef6c5bda9a7f151eb9f520000000000000000000000000bf3de8c5d3e8a2b34d2beeb17abfcebaf363a59
-----Decoded View---------------
Arg [0] : headerStorage (address): 0x48800eBEf4491C65b2172d3628DdDDC9c47fe430
Arg [1] : yaho (address): 0x21eAB033C7D2DF6A67AeF6C5Bda9A7F151eB9f52
Arg [2] : ccipRouter (address): 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000048800ebef4491c65b2172d3628ddddc9c47fe430
Arg [1] : 00000000000000000000000021eab033c7d2df6a67aef6c5bda9a7f151eb9f52
Arg [2] : 0000000000000000000000000bf3de8c5d3e8a2b34d2beeb17abfcebaf363a59
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.