Source Code
Overview
ETH Balance
ETH Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
RSETHRateReceiver
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 10000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;
import { CrossChainRateReceiver } from "./CrossChainRateReceiver.sol";
/// @title rsETH cross chain rate receiver
/// @notice Receives the rsETH rate from a provider contract on a different chain than the one this contract is deployed
/// on
contract RSETHRateReceiver is CrossChainRateReceiver {
constructor(uint16 _srcChainId, address _rateProvider, address _layerZeroEndpoint) {
rateInfo = RateInfo({ tokenSymbol: "rsETH", baseTokenSymbol: "ETH" });
srcChainId = _srcChainId;
rateProvider = _rateProvider;
layerZeroEndpoint = _layerZeroEndpoint;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { ILayerZeroReceiver } from "../interfaces/ILayerZeroReceiver.sol";
/// @title Cross chain rate receiver. By witherblock reference: https://github.com/witherblock/gyarados
/// @notice Receives a rate from a provider contract on a different chain than the one this contract is deployed on
/// @dev Powered using LayerZero
abstract contract CrossChainRateReceiver is ILayerZeroReceiver, Ownable {
/// @notice Last rate updated on the receiver
uint256 public rate;
/// @notice Last time rate was updated
uint256 public lastUpdated;
/// @notice Source chainId
uint16 public srcChainId;
/// @notice Rate Provider address
address public rateProvider;
/// @notice LayerZero endpoint address
address public layerZeroEndpoint;
/// @notice Information of which token and base token rate is being provided
RateInfo public rateInfo;
struct RateInfo {
string tokenSymbol;
string baseTokenSymbol;
}
/// @notice Emitted when rate is updated
/// @param newRate the rate that was updated
event RateUpdated(uint256 newRate);
/// @notice Emitted when RateProvider is updated
/// @param newRateProvider the RateProvider address that was updated
event RateProviderUpdated(address newRateProvider);
/// @notice Emitted when the source chainId is updated
/// @param newSrcChainId the source chainId that was updated
event SrcChainIdUpdated(uint16 newSrcChainId);
/// @notice Emitted when LayerZero Endpoint is updated
/// @param newLayerZeroEndpoint the LayerZero Endpoint address that was updated
event LayerZeroEndpointUpdated(address newLayerZeroEndpoint);
/// @notice Updates the LayerZero Endpoint address
/// @dev Can only be called by owner
/// @param _layerZeroEndpoint the new layer zero endpoint address
function updateLayerZeroEndpoint(address _layerZeroEndpoint) external onlyOwner {
layerZeroEndpoint = _layerZeroEndpoint;
emit LayerZeroEndpointUpdated(_layerZeroEndpoint);
}
/// @notice Updates the RateProvider address
/// @dev Can only be called by owner
/// @param _rateProvider the new rate provider address
function updateRateProvider(address _rateProvider) external onlyOwner {
rateProvider = _rateProvider;
emit RateProviderUpdated(_rateProvider);
}
/// @notice Updates the source chainId
/// @dev Can only be called by owner
/// @param _srcChainId the source chainId
function updateSrcChainId(uint16 _srcChainId) external onlyOwner {
srcChainId = _srcChainId;
emit SrcChainIdUpdated(_srcChainId);
}
/// @notice LayerZero receive function which is called via send from a different chain
/// @param _srcChainId The source chainId
/// @param _srcAddress The source address
/// @param _payload The payload
function lzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64, bytes calldata _payload) external {
require(msg.sender == layerZeroEndpoint, "Sender should be lz endpoint");
address srcAddress;
assembly {
srcAddress := mload(add(_srcAddress, 20))
}
require(_srcChainId == srcChainId, "Src chainId must be correct");
require(srcAddress == rateProvider, "Src address must be provider");
uint256 _rate = abi.decode(_payload, (uint256));
rate = _rate;
lastUpdated = block.timestamp;
emit RateUpdated(_rate);
}
/// @notice Gets the last stored rate in the contract
function getRate() external view returns (uint256) {
return rate;
}
}// 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
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
// OpenZeppelin Contracts v4.4.1 (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;
}
}{
"remappings": [
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"hardhat/=node_modules/hardhat/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/",
"solidity-code-metrics/=node_modules/solidity-code-metrics/"
],
"optimizer": {
"enabled": true,
"runs": 10000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"address","name":"_rateProvider","type":"address"},{"internalType":"address","name":"_layerZeroEndpoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLayerZeroEndpoint","type":"address"}],"name":"LayerZeroEndpointUpdated","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":"address","name":"newRateProvider","type":"address"}],"name":"RateProviderUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"RateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"newSrcChainId","type":"uint16"}],"name":"SrcChainIdUpdated","type":"event"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"layerZeroEndpoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateInfo","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"string","name":"baseTokenSymbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"srcChainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_layerZeroEndpoint","type":"address"}],"name":"updateLayerZeroEndpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rateProvider","type":"address"}],"name":"updateRateProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"}],"name":"updateSrcChainId","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801562000010575f80fd5b5060405162000eba38038062000eba833981016040819052620000339162000164565b6200003e33620000f9565b604080516080810182526005818301818152640e4e68aa8960db1b606084015282528251808401909352600383526208aa8960eb1b6020848101919091528201929092528051909190819062000095908262000252565b5060208201516001820190620000ac908262000252565b50506003805461ffff959095166001600160b01b031990951694909417620100006001600160a01b039485160217909355600480546001600160a01b03191691909216179055506200031a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200015f575f80fd5b919050565b5f805f6060848603121562000177575f80fd5b835161ffff8116811462000189575f80fd5b9250620001996020850162000148565b9150620001a96040850162000148565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620001db57607f821691505b602082108103620001fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200024d575f81815260208120601f850160051c81016020861015620002285750805b601f850160051c820191505b81811015620002495782815560010162000234565b5050505b505050565b81516001600160401b038111156200026e576200026e620001b2565b62000286816200027f8454620001c6565b8462000200565b602080601f831160018114620002bc575f8415620002a45750858301515b5f19600386901b1c1916600185901b17855562000249565b5f85815260208120601f198616915b82811015620002ec57888601518255948401946001909101908401620002cb565b50858210156200030a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610b9280620003285f395ff3fe608060405234801561000f575f80fd5b50600436106100e4575f3560e01c8063679aefce116100885780638da5cb5b116100635780638da5cb5b146101de578063949db658146101fb578063d0b06f5d14610221578063f2fde38b1461022a575f80fd5b8063679aefce146101b8578063690adb53146101c0578063715018a6146101d6575f80fd5b80632c4e722e116100c35780632c4e722e1461015a578063496c62e71461017157806349d12605146101845780634a7f931e146101a5575f80fd5b80621d3567146100e857806307968db1146100fd578063290b535014610147575b5f80fd5b6100fb6100f6366004610900565b61023d565b005b60045461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100fb610155366004610a13565b610419565b61016360015481565b60405190815260200161013e565b6100fb61017f366004610a33565b610489565b6003546101929061ffff1681565b60405161ffff909116815260200161013e565b6100fb6101b3366004610a33565b61050c565b600154610163565b6101c8610587565b60405161013e929190610ac7565b6100fb6106a3565b5f5473ffffffffffffffffffffffffffffffffffffffff1661011d565b60035461011d9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b61016360025481565b6100fb610238366004610a33565b6106b6565b60045473ffffffffffffffffffffffffffffffffffffffff1633146102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f53656e6465722073686f756c64206265206c7a20656e64706f696e740000000060448201526064015b60405180910390fd5b601484015160035461ffff87811691161461033a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f53726320636861696e4964206d75737420626520636f7272656374000000000060448201526064016102ba565b60035473ffffffffffffffffffffffffffffffffffffffff8281166201000090920416146103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5372632061646472657373206d7573742062652070726f76696465720000000060448201526064016102ba565b5f6103d183850185610af4565b6001819055426002556040518181529091507fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b9060200160405180910390a150505050505050565b61042161076d565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f618f724fbcac3c2403733c2935c91acf3b9517362bacd763f22c288a58b17e25906020015b60405180910390a150565b61049161076d565b600380547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f0d06d9b44e07c32063e5d28b944beae17c12e342870c5e7d956ec5b252a3f5649060200161047e565b61051461076d565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f07ac75b380fe4c5e41ea9b7030179bb21229b84ab9f9ba2fabebccd430ae2f6d9060200161047e565b60058054819061059690610b0b565b80601f01602080910402602001604051908101604052809291908181526020018280546105c290610b0b565b801561060d5780601f106105e45761010080835404028352916020019161060d565b820191905f5260205f20905b8154815290600101906020018083116105f057829003601f168201915b50505050509080600101805461062290610b0b565b80601f016020809104026020016040519081016040528092919081815260200182805461064e90610b0b565b80156106995780601f1061067057610100808354040283529160200191610699565b820191905f5260205f20905b81548152906001019060200180831161067c57829003601f168201915b5050505050905082565b6106ab61076d565b6106b45f6107ed565b565b6106be61076d565b73ffffffffffffffffffffffffffffffffffffffff8116610761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ba565b61076a816107ed565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ba565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803561ffff81168114610872575f80fd5b919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b803567ffffffffffffffff81168114610872575f80fd5b5f8083601f8401126108cb575f80fd5b50813567ffffffffffffffff8111156108e2575f80fd5b6020830191508360208285010111156108f9575f80fd5b9250929050565b5f805f805f60808688031215610914575f80fd5b61091d86610861565b9450602086013567ffffffffffffffff80821115610939575f80fd5b818801915088601f83011261094c575f80fd5b81358181111561095e5761095e610877565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109a4576109a4610877565b816040528281528b60208487010111156109bc575f80fd5b826020860160208301375f602084830101528098505050506109e0604089016108a4565b945060608801359150808211156109f5575f80fd5b50610a02888289016108bb565b969995985093965092949392505050565b5f60208284031215610a23575f80fd5b610a2c82610861565b9392505050565b5f60208284031215610a43575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a2c575f80fd5b5f81518084525f5b81811015610a8a57602081850181015186830182015201610a6e565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081525f610ad96040830185610a66565b8281036020840152610aeb8185610a66565b95945050505050565b5f60208284031215610b04575f80fd5b5035919050565b600181811c90821680610b1f57607f821691505b602082108103610b56577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5091905056fea2646970667358221220e0d7184797442b1b1279801f8b7429af2eb03ef073ce9d4f94ea887d2f0850d864736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000650000000000000000000000000788906b19ba8f8d0e8a7015f0714df3179d9ab6000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100e4575f3560e01c8063679aefce116100885780638da5cb5b116100635780638da5cb5b146101de578063949db658146101fb578063d0b06f5d14610221578063f2fde38b1461022a575f80fd5b8063679aefce146101b8578063690adb53146101c0578063715018a6146101d6575f80fd5b80632c4e722e116100c35780632c4e722e1461015a578063496c62e71461017157806349d12605146101845780634a7f931e146101a5575f80fd5b80621d3567146100e857806307968db1146100fd578063290b535014610147575b5f80fd5b6100fb6100f6366004610900565b61023d565b005b60045461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100fb610155366004610a13565b610419565b61016360015481565b60405190815260200161013e565b6100fb61017f366004610a33565b610489565b6003546101929061ffff1681565b60405161ffff909116815260200161013e565b6100fb6101b3366004610a33565b61050c565b600154610163565b6101c8610587565b60405161013e929190610ac7565b6100fb6106a3565b5f5473ffffffffffffffffffffffffffffffffffffffff1661011d565b60035461011d9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b61016360025481565b6100fb610238366004610a33565b6106b6565b60045473ffffffffffffffffffffffffffffffffffffffff1633146102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f53656e6465722073686f756c64206265206c7a20656e64706f696e740000000060448201526064015b60405180910390fd5b601484015160035461ffff87811691161461033a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f53726320636861696e4964206d75737420626520636f7272656374000000000060448201526064016102ba565b60035473ffffffffffffffffffffffffffffffffffffffff8281166201000090920416146103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5372632061646472657373206d7573742062652070726f76696465720000000060448201526064016102ba565b5f6103d183850185610af4565b6001819055426002556040518181529091507fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b9060200160405180910390a150505050505050565b61042161076d565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f618f724fbcac3c2403733c2935c91acf3b9517362bacd763f22c288a58b17e25906020015b60405180910390a150565b61049161076d565b600380547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f0d06d9b44e07c32063e5d28b944beae17c12e342870c5e7d956ec5b252a3f5649060200161047e565b61051461076d565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f07ac75b380fe4c5e41ea9b7030179bb21229b84ab9f9ba2fabebccd430ae2f6d9060200161047e565b60058054819061059690610b0b565b80601f01602080910402602001604051908101604052809291908181526020018280546105c290610b0b565b801561060d5780601f106105e45761010080835404028352916020019161060d565b820191905f5260205f20905b8154815290600101906020018083116105f057829003601f168201915b50505050509080600101805461062290610b0b565b80601f016020809104026020016040519081016040528092919081815260200182805461064e90610b0b565b80156106995780601f1061067057610100808354040283529160200191610699565b820191905f5260205f20905b81548152906001019060200180831161067c57829003601f168201915b5050505050905082565b6106ab61076d565b6106b45f6107ed565b565b6106be61076d565b73ffffffffffffffffffffffffffffffffffffffff8116610761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ba565b61076a816107ed565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ba565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803561ffff81168114610872575f80fd5b919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b803567ffffffffffffffff81168114610872575f80fd5b5f8083601f8401126108cb575f80fd5b50813567ffffffffffffffff8111156108e2575f80fd5b6020830191508360208285010111156108f9575f80fd5b9250929050565b5f805f805f60808688031215610914575f80fd5b61091d86610861565b9450602086013567ffffffffffffffff80821115610939575f80fd5b818801915088601f83011261094c575f80fd5b81358181111561095e5761095e610877565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109a4576109a4610877565b816040528281528b60208487010111156109bc575f80fd5b826020860160208301375f602084830101528098505050506109e0604089016108a4565b945060608801359150808211156109f5575f80fd5b50610a02888289016108bb565b969995985093965092949392505050565b5f60208284031215610a23575f80fd5b610a2c82610861565b9392505050565b5f60208284031215610a43575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a2c575f80fd5b5f81518084525f5b81811015610a8a57602081850181015186830182015201610a6e565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081525f610ad96040830185610a66565b8281036020840152610aeb8185610a66565b95945050505050565b5f60208284031215610b04575f80fd5b5035919050565b600181811c90821680610b1f57607f821691505b602082108103610b56577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5091905056fea2646970667358221220e0d7184797442b1b1279801f8b7429af2eb03ef073ce9d4f94ea887d2f0850d864736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000650000000000000000000000000788906b19ba8f8d0e8a7015f0714df3179d9ab6000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7
-----Decoded View---------------
Arg [0] : _srcChainId (uint16): 101
Arg [1] : _rateProvider (address): 0x0788906B19bA8f8d0e8a7015f0714DF3179D9aB6
Arg [2] : _layerZeroEndpoint (address): 0xb6319cC6c8c27A8F5dAF0dD3DF91EA35C4720dd7
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000065
Arg [1] : 0000000000000000000000000788906b19ba8f8d0e8a7015f0714df3179d9ab6
Arg [2] : 000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
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.