Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 200 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Send Exact Paren... | 21773066 | 6 days ago | IN | 0.00004743 ETH | 0.00032124 | ||||
Send Exact Paren... | 21773049 | 6 days ago | IN | 0.00004733 ETH | 0.00032666 | ||||
Send Exact Paren... | 21738077 | 11 days ago | IN | 0.00009984 ETH | 0.00064616 | ||||
Send Exact Paren... | 21371802 | 62 days ago | IN | 0.00027905 ETH | 0.00126971 | ||||
Send Exact Paren... | 21344100 | 66 days ago | IN | 0.00038065 ETH | 0.0018346 | ||||
Send Exact Paren... | 21344082 | 66 days ago | IN | 0.00038528 ETH | 0.00168542 | ||||
Send Exact Paren... | 21323005 | 69 days ago | IN | 0.00085845 ETH | 0.00277483 | ||||
Send Exact Paren... | 21314880 | 70 days ago | IN | 0.00026618 ETH | 0.00136266 | ||||
Send Exact Paren... | 21292660 | 73 days ago | IN | 0.00016592 ETH | 0.00085245 | ||||
Send Exact Paren... | 21289416 | 74 days ago | IN | 0.00014928 ETH | 0.00070638 | ||||
Send Exact Paren... | 21286532 | 74 days ago | IN | 0.00020782 ETH | 0.00081999 | ||||
Send Exact Paren... | 21285368 | 74 days ago | IN | 0.00016236 ETH | 0.00069858 | ||||
Send Exact Paren... | 21285360 | 74 days ago | IN | 0.00016346 ETH | 0.00074386 | ||||
Send Exact Paren... | 21278199 | 75 days ago | IN | 0.00016858 ETH | 0.00085312 | ||||
Send Exact Paren... | 21242300 | 80 days ago | IN | 0.00020294 ETH | 0.00096738 | ||||
Send Exact Paren... | 21211667 | 85 days ago | IN | 0.00020325 ETH | 0.00099311 | ||||
Send Exact Paren... | 21193359 | 87 days ago | IN | 0.00030789 ETH | 0.00150617 | ||||
Send Exact Paren... | 21184638 | 89 days ago | IN | 0.00061179 ETH | 0.00278329 | ||||
Send Exact Paren... | 21184611 | 89 days ago | IN | 0.00060811 ETH | 0.0026948 | ||||
Send Exact Paren... | 21170020 | 91 days ago | IN | 0.00048789 ETH | 0.0019063 | ||||
Send Exact Paren... | 21169827 | 91 days ago | IN | 0.00046996 ETH | 0.00202334 | ||||
Send Exact Paren... | 21128048 | 96 days ago | IN | 0.00025795 ETH | 0.00127276 | ||||
Send Exact Paren... | 21128022 | 96 days ago | IN | 0.00026163 ETH | 0.00112033 | ||||
Send Exact Paren... | 21128014 | 96 days ago | IN | 0.00026163 ETH | 0.00114486 | ||||
Send Exact Paren... | 21123032 | 97 days ago | IN | 0.00027023 ETH | 0.00099239 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21773066 | 6 days ago | 0.00004743 ETH | ||||
21773049 | 6 days ago | 0.00004733 ETH | ||||
21738077 | 11 days ago | 0.00009984 ETH | ||||
21371802 | 62 days ago | 0.00027905 ETH | ||||
21344100 | 66 days ago | 0.00038065 ETH | ||||
21344082 | 66 days ago | 0.00038528 ETH | ||||
21323005 | 69 days ago | 0.00085845 ETH | ||||
21314880 | 70 days ago | 0.00026618 ETH | ||||
21292660 | 73 days ago | 0.00016592 ETH | ||||
21291857 | 74 days ago | 0.00014356 ETH | ||||
21291857 | 74 days ago | 0.00014356 ETH | ||||
21291857 | 74 days ago | 0.00014356 ETH | ||||
21291857 | 74 days ago | 0.00014356 ETH | ||||
21289416 | 74 days ago | 0.00014928 ETH | ||||
21289409 | 74 days ago | 0.00014928 ETH | ||||
21289409 | 74 days ago | 0.00014928 ETH | ||||
21289409 | 74 days ago | 0.00014928 ETH | ||||
21289409 | 74 days ago | 0.00014928 ETH | ||||
21286532 | 74 days ago | 0.00020782 ETH | ||||
21285368 | 74 days ago | 0.00016236 ETH | ||||
21285360 | 74 days ago | 0.00016346 ETH | ||||
21278199 | 75 days ago | 0.00016858 ETH | ||||
21242300 | 80 days ago | 0.00020294 ETH | ||||
21211667 | 85 days ago | 0.00020325 ETH | ||||
21193359 | 87 days ago | 0.00030789 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
L1MessagesSender
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 20000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.21; import {Ownable} from "openzeppelin/access/Ownable.sol"; import {IStarknetCore} from "./interfaces/IStarknetCore.sol"; import {IAggregatorsFactory} from "./interfaces/IAggregatorsFactory.sol"; import {IAggregator} from "./interfaces/IAggregator.sol"; import {Uint256Splitter} from "./lib/Uint256Splitter.sol"; contract L1MessagesSender is Ownable { using Uint256Splitter for uint256; IStarknetCore public immutable starknetCore; uint256 public l2RecipientAddr; IAggregatorsFactory public aggregatorsFactory; /// @dev L2 "receive_commitment" L1 handler selector uint256 constant RECEIVE_COMMITMENT_L1_HANDLER_SELECTOR = 0x3fa70707d0e831418fb142ca8fb7483611b84e89c0c42bf1fc2a7a5c40890ad; /// @dev L2 "receive_mmr" L1 handler selector uint256 constant RECEIVE_MMR_L1_HANDLER_SELECTOR = 0x36c76e67f1d589956059cbd9e734d42182d1f8a57d5876390bb0fcfe1090bb4; /// @param starknetCore_ a StarknetCore address to send and consume messages on/from L2 /// @param l2RecipientAddr_ a L2 recipient address that is the recipient contract on L2. /// @param aggregatorsFactoryAddr_ Herodotus aggregators factory address (where MMR trees are referenced) constructor( IStarknetCore starknetCore_, uint256 l2RecipientAddr_, address aggregatorsFactoryAddr_ ) { starknetCore = starknetCore_; l2RecipientAddr = l2RecipientAddr_; aggregatorsFactory = IAggregatorsFactory(aggregatorsFactoryAddr_); } /// @notice Send an exact L1 parent hash to L2 /// @param blockNumber_ the child block of the requested parent hash function sendExactParentHashToL2(uint256 blockNumber_) external payable { bytes32 parentHash = blockhash(blockNumber_ - 1); require(parentHash != bytes32(0), "ERR_INVALID_BLOCK_NUMBER"); _sendBlockHashToL2(parentHash, blockNumber_); } /// @notice Send the L1 latest parent hash to L2 function sendLatestParentHashToL2() external payable { bytes32 parentHash = blockhash(block.number - 1); _sendBlockHashToL2(parentHash, block.number); } /// @param aggregatorId The id of a tree previously created by the aggregators factory function sendPoseidonMMRTreeToL2(uint256 aggregatorId) external payable { address existingAggregatorAddr = aggregatorsFactory.aggregatorsById( aggregatorId ); require(existingAggregatorAddr != address(0), "Unknown aggregator"); IAggregator aggregator = IAggregator(existingAggregatorAddr); bytes32 poseidonMMRRoot = aggregator.getMMRPoseidonRoot(); uint256 mmrSize = aggregator.getMMRSize(); require(mmrSize >= 1, "Invalid tree size"); require(poseidonMMRRoot != bytes32(0), "Invalid root (Poseidon)"); _sendPoseidonMMRTreeToL2(poseidonMMRRoot, mmrSize, aggregatorId); } function _sendBlockHashToL2( bytes32 parentHash_, uint256 blockNumber_ ) internal { uint256[] memory message = new uint256[](4); (uint256 parentHashLow, uint256 parentHashHigh) = uint256(parentHash_) .split128(); (uint256 blockNumberLow, uint256 blockNumberHigh) = blockNumber_ .split128(); message[0] = parentHashLow; message[1] = parentHashHigh; message[2] = blockNumberLow; message[3] = blockNumberHigh; starknetCore.sendMessageToL2{value: msg.value}( l2RecipientAddr, RECEIVE_COMMITMENT_L1_HANDLER_SELECTOR, message ); } function _sendPoseidonMMRTreeToL2( bytes32 poseidonMMRRoot, uint256 mmrSize, uint256 aggregatorId ) internal { uint256[] memory message = new uint256[](3); message[0] = uint256(poseidonMMRRoot); message[1] = mmrSize; message[2] = aggregatorId; // Pass along msg.value starknetCore.sendMessageToL2{value: msg.value}( l2RecipientAddr, RECEIVE_MMR_L1_HANDLER_SELECTOR, message ); } /// @notice Set the L2 recipient address /// @param newL2RecipientAddr_ The new L2 recipient address function setL2RecipientAddr( uint256 newL2RecipientAddr_ ) external onlyOwner { l2RecipientAddr = newL2RecipientAddr_; } /// @notice Set the aggregators factory address /// @param newAggregatorsFactoryAddr_ The new aggregators factory address function setAggregatorsFactoryAddr( address newAggregatorsFactoryAddr_ ) external onlyOwner { aggregatorsFactory = IAggregatorsFactory(newAggregatorsFactoryAddr_); } }
// 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: GPL-3.0 pragma solidity 0.8.21; interface IStarknetCore { /** Sends a message to an L2 contract. This function is payable, the payed amount is the message fee. Returns the hash of the message and the nonce of the message. */ function sendMessageToL2( uint256 toAddress, uint256 selector, uint256[] calldata payload ) external payable returns (bytes32, uint256); /** Consumes a message that was sent from an L2 contract. Returns the hash of the message. */ function consumeMessageFromL2( uint256 fromAddress, uint256[] calldata payload ) external returns (bytes32); /** Starts the cancellation of an L1 to L2 message. A message can be canceled messageCancellationDelay() seconds after this function is called. Note: This function may only be called for a message that is currently pending and the caller must be the sender of the that message. */ function startL1ToL2MessageCancellation( uint256 toAddress, uint256 selector, uint256[] calldata payload, uint256 nonce ) external returns (bytes32); /** Cancels an L1 to L2 message, this function should be called at least messageCancellationDelay() seconds after the call to startL1ToL2MessageCancellation(). A message may only be cancelled by its sender. If the message is missing, the call will revert. Note that the message fee is not refunded. */ function cancelL1ToL2Message( uint256 toAddress, uint256 selector, uint256[] calldata payload, uint256 nonce ) external returns (bytes32); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.21; import {IAggregator} from "./IAggregator.sol"; interface IAggregatorsFactory { function aggregatorsById(uint256 id) external view returns (address); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.21; interface IAggregator { /// @notice Returns the current root hash of the Keccak Merkle Mountain Range (MMR) tree function getMMRKeccakRoot() external view returns (bytes32); /// @notice Returns the current root hash of the Poseidon Merkle Mountain Range (MMR) tree function getMMRPoseidonRoot() external view returns (bytes32); /// @notice Returns the current size of the Merkle Mountain Range (MMR) trees function getMMRSize() external view returns (uint256); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; library Uint256Splitter { uint256 constant _MASK = type(uint128).max; /// @notice Splits a uint256 into two uint128s (low, high) represented as uint256s. /// @param a The uint256 to split. function split128( uint256 a ) internal pure returns (uint256 lower, uint256 upper) { return (a & _MASK, a >> 128); } /// @notice Merges two uint128s (low, high) into one uint256. /// @param lower The lower uint256. The caller is required to pass a value that is less than 2^128 - 1. /// @param upper The upper uint256. function merge128( uint256 lower, uint256 upper ) internal pure returns (uint256 a) { require(lower <= _MASK, "Uint256Splitter: lower exceeds uint128"); // return (upper << 128) | lower; assembly { a := or(shl(128, upper), lower) } } }
// 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/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "optimizer": { "enabled": true, "runs": 20000 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IStarknetCore","name":"starknetCore_","type":"address"},{"internalType":"uint256","name":"l2RecipientAddr_","type":"uint256"},{"internalType":"address","name":"aggregatorsFactoryAddr_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"aggregatorsFactory","outputs":[{"internalType":"contract IAggregatorsFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2RecipientAddr","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":"blockNumber_","type":"uint256"}],"name":"sendExactParentHashToL2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sendLatestParentHashToL2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"aggregatorId","type":"uint256"}],"name":"sendPoseidonMMRTreeToL2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newAggregatorsFactoryAddr_","type":"address"}],"name":"setAggregatorsFactoryAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newL2RecipientAddr_","type":"uint256"}],"name":"setL2RecipientAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"starknetCore","outputs":[{"internalType":"contract IStarknetCore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610de4380380610de483398101604081905261002f916100ce565b61003833610066565b6001600160a01b03928316608052600191909155600280546001600160a01b03191691909216179055610111565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100cb57600080fd5b50565b6000806000606084860312156100e357600080fd5b83516100ee816100b6565b602085015160408601519194509250610106816100b6565b809150509250925092565b608051610caa61013a6000396000818161012a015281816107b20152610a510152610caa6000f3fe6080604052600436106100bc5760003560e01c8063715018a611610074578063a28730321161004e578063a287303214610205578063f2fde38b1461020d578063fda70f201461022d57600080fd5b8063715018a6146101a557806384ceb32c146101ba5780638da5cb5b146101da57600080fd5b80634573e7fc116100a55780634573e7fc1461014c5780636c41ecf1146101705780636cc1b95b1461018557600080fd5b806323a31e57146100c157806339e730ab14610118575b600080fd5b3480156100cd57600080fd5b506002546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561012457600080fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b34801561015857600080fd5b5061016260015481565b60405190815260200161010f565b61018361017e366004610af7565b610240565b005b34801561019157600080fd5b506101836101a0366004610b32565b610527565b3480156101b157600080fd5b50610183610576565b3480156101c657600080fd5b506101836101d5366004610af7565b61058a565b3480156101e657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100ee565b610183610597565b34801561021957600080fd5b50610183610228366004610b32565b6105b4565b61018361023b366004610af7565b610668565b6002546040517f7b8269220000000000000000000000000000000000000000000000000000000081526004810183905260009173ffffffffffffffffffffffffffffffffffffffff1690637b82692290602401602060405180830381865afa1580156102b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d49190610b56565b905073ffffffffffffffffffffffffffffffffffffffff8116610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e6b6e6f776e2061676772656761746f72000000000000000000000000000060448201526064015b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663b13c7cde6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ce9190610b73565b905060008273ffffffffffffffffffffffffffffffffffffffff166365ff47ee6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104419190610b73565b905060018110156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420747265652073697a65000000000000000000000000000000604482015260640161034f565b81610515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420726f6f742028506f736569646f6e29000000000000000000604482015260640161034f565b6105208282876106ed565b5050505050565b61052f610855565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61057e610855565b61058860006108d6565b565b610592610855565b600155565b60006105a4600143610b8c565b4090506105b1814361094b565b50565b6105bc610855565b73ffffffffffffffffffffffffffffffffffffffff811661065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161034f565b6105b1816108d6565b6000610675600183610b8c565b409050806106df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552525f494e56414c49445f424c4f434b5f4e554d4245520000000000000000604482015260640161034f565b6106e9818361094b565b5050565b60408051600380825260808201909252600091602082016060803683370190505090508360001c8160008151811061072757610727610bcc565b602002602001018181525050828160018151811061074757610747610bcc565b602002602001018181525050818160028151811061076757610767610bcc565b60209081029190910101526001546040517f3e3aa6c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691633e3aa6c591349161080b917f036c76e67f1d589956059cbd9e734d42182d1f8a57d5876390bb0fcfe1090bb4908790600401610bfb565b604080518083038185885af1158015610828573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061084d9190610c50565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161034f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600480825260a082019092526000916020820160808036833750508151919250506fffffffffffffffffffffffffffffffff84811691608086811c928616919086901c90849086906000906109a6576109a6610bcc565b60200260200101818152505082856001815181106109c6576109c6610bcc565b60200260200101818152505081856002815181106109e6576109e6610bcc565b6020026020010181815250508085600381518110610a0657610a06610bcc565b60209081029190910101526001546040517f3e3aa6c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691633e3aa6c5913491610aaa917f03fa70707d0e831418fb142ca8fb7483611b84e89c0c42bf1fc2a7a5c40890ad908b90600401610bfb565b604080518083038185885af1158015610ac7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aec9190610c50565b505050505050505050565b600060208284031215610b0957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105b157600080fd5b600060208284031215610b4457600080fd5b8135610b4f81610b10565b9392505050565b600060208284031215610b6857600080fd5b8151610b4f81610b10565b600060208284031215610b8557600080fd5b5051919050565b81810381811115610bc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000606082018583526020858185015260606040850152818551808452608086019150828701935060005b81811015610c4257845183529383019391830191600101610c26565b509098975050505050505050565b60008060408385031215610c6357600080fd5b50508051602090910151909290915056fea26469706673582212208e2e3ba78f8fd1ad07da7b37d20fae4a54177f319719cdb8a548932564cb9e3264736f6c63430008150033000000000000000000000000c662c410c0ecf747543f5ba90660f6abebd9c8c4033ccf9558480bb06843d47e9582e1c16e17a71229ae28bdc89a5d0c93f32c6d0000000000000000000000005c189aedecbc07830b64ec8cae51ce38e4365286
Deployed Bytecode
0x6080604052600436106100bc5760003560e01c8063715018a611610074578063a28730321161004e578063a287303214610205578063f2fde38b1461020d578063fda70f201461022d57600080fd5b8063715018a6146101a557806384ceb32c146101ba5780638da5cb5b146101da57600080fd5b80634573e7fc116100a55780634573e7fc1461014c5780636c41ecf1146101705780636cc1b95b1461018557600080fd5b806323a31e57146100c157806339e730ab14610118575b600080fd5b3480156100cd57600080fd5b506002546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561012457600080fd5b506100ee7f000000000000000000000000c662c410c0ecf747543f5ba90660f6abebd9c8c481565b34801561015857600080fd5b5061016260015481565b60405190815260200161010f565b61018361017e366004610af7565b610240565b005b34801561019157600080fd5b506101836101a0366004610b32565b610527565b3480156101b157600080fd5b50610183610576565b3480156101c657600080fd5b506101836101d5366004610af7565b61058a565b3480156101e657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100ee565b610183610597565b34801561021957600080fd5b50610183610228366004610b32565b6105b4565b61018361023b366004610af7565b610668565b6002546040517f7b8269220000000000000000000000000000000000000000000000000000000081526004810183905260009173ffffffffffffffffffffffffffffffffffffffff1690637b82692290602401602060405180830381865afa1580156102b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d49190610b56565b905073ffffffffffffffffffffffffffffffffffffffff8116610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e6b6e6f776e2061676772656761746f72000000000000000000000000000060448201526064015b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663b13c7cde6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ce9190610b73565b905060008273ffffffffffffffffffffffffffffffffffffffff166365ff47ee6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104419190610b73565b905060018110156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420747265652073697a65000000000000000000000000000000604482015260640161034f565b81610515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420726f6f742028506f736569646f6e29000000000000000000604482015260640161034f565b6105208282876106ed565b5050505050565b61052f610855565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61057e610855565b61058860006108d6565b565b610592610855565b600155565b60006105a4600143610b8c565b4090506105b1814361094b565b50565b6105bc610855565b73ffffffffffffffffffffffffffffffffffffffff811661065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161034f565b6105b1816108d6565b6000610675600183610b8c565b409050806106df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552525f494e56414c49445f424c4f434b5f4e554d4245520000000000000000604482015260640161034f565b6106e9818361094b565b5050565b60408051600380825260808201909252600091602082016060803683370190505090508360001c8160008151811061072757610727610bcc565b602002602001018181525050828160018151811061074757610747610bcc565b602002602001018181525050818160028151811061076757610767610bcc565b60209081029190910101526001546040517f3e3aa6c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c662c410c0ecf747543f5ba90660f6abebd9c8c41691633e3aa6c591349161080b917f036c76e67f1d589956059cbd9e734d42182d1f8a57d5876390bb0fcfe1090bb4908790600401610bfb565b604080518083038185885af1158015610828573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061084d9190610c50565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161034f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600480825260a082019092526000916020820160808036833750508151919250506fffffffffffffffffffffffffffffffff84811691608086811c928616919086901c90849086906000906109a6576109a6610bcc565b60200260200101818152505082856001815181106109c6576109c6610bcc565b60200260200101818152505081856002815181106109e6576109e6610bcc565b6020026020010181815250508085600381518110610a0657610a06610bcc565b60209081029190910101526001546040517f3e3aa6c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c662c410c0ecf747543f5ba90660f6abebd9c8c41691633e3aa6c5913491610aaa917f03fa70707d0e831418fb142ca8fb7483611b84e89c0c42bf1fc2a7a5c40890ad908b90600401610bfb565b604080518083038185885af1158015610ac7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aec9190610c50565b505050505050505050565b600060208284031215610b0957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105b157600080fd5b600060208284031215610b4457600080fd5b8135610b4f81610b10565b9392505050565b600060208284031215610b6857600080fd5b8151610b4f81610b10565b600060208284031215610b8557600080fd5b5051919050565b81810381811115610bc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000606082018583526020858185015260606040850152818551808452608086019150828701935060005b81811015610c4257845183529383019391830191600101610c26565b509098975050505050505050565b60008060408385031215610c6357600080fd5b50508051602090910151909290915056fea26469706673582212208e2e3ba78f8fd1ad07da7b37d20fae4a54177f319719cdb8a548932564cb9e3264736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c662c410c0ecf747543f5ba90660f6abebd9c8c4033ccf9558480bb06843d47e9582e1c16e17a71229ae28bdc89a5d0c93f32c6d0000000000000000000000005c189aedecbc07830b64ec8cae51ce38e4365286
-----Decoded View---------------
Arg [0] : starknetCore_ (address): 0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4
Arg [1] : l2RecipientAddr_ (uint256): 1464382057459460809554074554286138003603108906878236079583274491394512858221
Arg [2] : aggregatorsFactoryAddr_ (address): 0x5C189aEdEcBc07830B64Ec8CAE51ce38E4365286
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c662c410c0ecf747543f5ba90660f6abebd9c8c4
Arg [1] : 033ccf9558480bb06843d47e9582e1c16e17a71229ae28bdc89a5d0c93f32c6d
Arg [2] : 0000000000000000000000005c189aedecbc07830b64ec8cae51ce38e4365286
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.