Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 257 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Send Exact Paren... | 24635530 | 3 days ago | IN | 0.00002454 ETH | 0.00024124 | ||||
| Send Exact Paren... | 23995728 | 92 days ago | IN | 0.00002055 ETH | 0.00022747 | ||||
| Send Exact Paren... | 23389426 | 177 days ago | IN | 0.00011115 ETH | 0.00082459 | ||||
| Send Exact Paren... | 23325982 | 186 days ago | IN | 0.00003829 ETH | 0.00028975 | ||||
| Send Exact Paren... | 23325155 | 186 days ago | IN | 0.00002401 ETH | 0.00023958 | ||||
| Send Exact Paren... | 23325148 | 186 days ago | IN | 0.00002401 ETH | 0.00024005 | ||||
| Send Exact Paren... | 23246547 | 197 days ago | IN | 0.00002488 ETH | 0.00023677 | ||||
| Send Exact Paren... | 23232783 | 199 days ago | IN | 0.00003937 ETH | 0.00034159 | ||||
| Send Exact Paren... | 23232777 | 199 days ago | IN | 0.00003937 ETH | 0.00033753 | ||||
| Send Exact Paren... | 23217618 | 201 days ago | IN | 0.00002367 ETH | 0.00025537 | ||||
| Send Exact Paren... | 23217124 | 201 days ago | IN | 0.0000252 ETH | 0.00023733 | ||||
| Send Exact Paren... | 23189979 | 205 days ago | IN | 0.00003064 ETH | 0.00028816 | ||||
| Send Exact Paren... | 23189082 | 205 days ago | IN | 0.00002681 ETH | 0.00023647 | ||||
| Send Exact Paren... | 23189060 | 205 days ago | IN | 0.00002681 ETH | 0.00023604 | ||||
| Send Exact Paren... | 23187784 | 205 days ago | IN | 0.00002299 ETH | 0.00023881 | ||||
| Send Exact Paren... | 23174387 | 207 days ago | IN | 0.00002592 ETH | 0.00024054 | ||||
| Send Exact Paren... | 23174069 | 207 days ago | IN | 0.00002324 ETH | 0.00024498 | ||||
| Send Exact Paren... | 23174062 | 207 days ago | IN | 0.00002324 ETH | 0.0002478 | ||||
| Send Exact Paren... | 23166856 | 208 days ago | IN | 0.00002412 ETH | 0.00023618 | ||||
| Send Exact Paren... | 23166851 | 208 days ago | IN | 0.00002412 ETH | 0.0002385 | ||||
| Send Exact Paren... | 23139969 | 212 days ago | IN | 0.00011979 ETH | 0.00059195 | ||||
| Send Exact Paren... | 23139763 | 212 days ago | IN | 0.00020047 ETH | 0.00058087 | ||||
| Send Exact Paren... | 23132635 | 213 days ago | IN | 0.00007454 ETH | 0.00056868 | ||||
| Send Exact Paren... | 23131807 | 213 days ago | IN | 0.00004762 ETH | 0.00024919 | ||||
| Send Exact Paren... | 23124482 | 214 days ago | IN | 0.00003003 ETH | 0.00025386 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Send Message To ... | 24635530 | 3 days ago | 0.00002454 ETH | ||||
| Send Message To ... | 23995728 | 92 days ago | 0.00002055 ETH | ||||
| Send Message To ... | 23389426 | 177 days ago | 0.00011115 ETH | ||||
| Send Message To ... | 23325982 | 186 days ago | 0.00003829 ETH | ||||
| Send Message To ... | 23325155 | 186 days ago | 0.00002401 ETH | ||||
| Send Message To ... | 23325148 | 186 days ago | 0.00002401 ETH | ||||
| Send Message To ... | 23246547 | 197 days ago | 0.00002488 ETH | ||||
| Send Message To ... | 23232783 | 199 days ago | 0.00003937 ETH | ||||
| Send Message To ... | 23232777 | 199 days ago | 0.00003937 ETH | ||||
| Send Message To ... | 23217618 | 201 days ago | 0.00002367 ETH | ||||
| Send Message To ... | 23217124 | 201 days ago | 0.0000252 ETH | ||||
| Send Message To ... | 23189979 | 205 days ago | 0.00003064 ETH | ||||
| Send Message To ... | 23189082 | 205 days ago | 0.00002681 ETH | ||||
| Send Message To ... | 23189060 | 205 days ago | 0.00002681 ETH | ||||
| Send Message To ... | 23187787 | 205 days ago | 0.00002299 ETH | ||||
| Send Exact Paren... | 23187787 | 205 days ago | 0.00002299 ETH | ||||
| Send Message To ... | 23187787 | 205 days ago | 0.00002299 ETH | ||||
| Send Exact Paren... | 23187787 | 205 days ago | 0.00002299 ETH | ||||
| Send Message To ... | 23187784 | 205 days ago | 0.00002299 ETH | ||||
| Send Message To ... | 23174387 | 207 days ago | 0.00002592 ETH | ||||
| Send Message To ... | 23174069 | 207 days ago | 0.00002324 ETH | ||||
| Send Message To ... | 23174062 | 207 days ago | 0.00002324 ETH | ||||
| Send Message To ... | 23166856 | 208 days ago | 0.00002412 ETH | ||||
| Send Message To ... | 23166851 | 208 days ago | 0.00002412 ETH | ||||
| Send Message To ... | 23139969 | 212 days ago | 0.00011979 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
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
Contract ABI
API[{"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
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.