ETH Price: $2,078.25 (-2.63%)

Contract

0x20827008C4B7104332CfFF86CcBc50e9043Ec704
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Send Exact Paren...246355302026-03-11 16:51:113 days ago1773247871IN
0x20827008...9043Ec704
0.00002454 ETH0.000241243.27295397
Send Exact Paren...239957282025-12-12 9:42:1192 days ago1765532531IN
0x20827008...9043Ec704
0.00002055 ETH0.000227473.08612882
Send Exact Paren...233894262025-09-18 10:39:59177 days ago1758191999IN
0x20827008...9043Ec704
0.00011115 ETH0.0008245911.18704417
Send Exact Paren...233259822025-09-09 13:57:11186 days ago1757426231IN
0x20827008...9043Ec704
0.00003829 ETH0.000289753.93104675
Send Exact Paren...233251552025-09-09 11:11:11186 days ago1757416271IN
0x20827008...9043Ec704
0.00002401 ETH0.000239583.2504209
Send Exact Paren...233251482025-09-09 11:09:47186 days ago1757416187IN
0x20827008...9043Ec704
0.00002401 ETH0.000240053.25668678
Send Exact Paren...232465472025-08-29 11:41:11197 days ago1756467671IN
0x20827008...9043Ec704
0.00002488 ETH0.000236773.21225571
Send Exact Paren...232327832025-08-27 13:34:11199 days ago1756301651IN
0x20827008...9043Ec704
0.00003937 ETH0.000341594.63436184
Send Exact Paren...232327772025-08-27 13:32:59199 days ago1756301579IN
0x20827008...9043Ec704
0.00003937 ETH0.000337534.57918125
Send Exact Paren...232176182025-08-25 10:46:59201 days ago1756118819IN
0x20827008...9043Ec704
0.00002367 ETH0.000255373.4645315
Send Exact Paren...232171242025-08-25 9:07:59201 days ago1756112879IN
0x20827008...9043Ec704
0.0000252 ETH0.000237333.21982208
Send Exact Paren...231899792025-08-21 14:13:11205 days ago1755785591IN
0x20827008...9043Ec704
0.00003064 ETH0.000288163.90947597
Send Exact Paren...231890822025-08-21 11:13:23205 days ago1755774803IN
0x20827008...9043Ec704
0.00002681 ETH0.000236473.20823492
Send Exact Paren...231890602025-08-21 11:08:59205 days ago1755774539IN
0x20827008...9043Ec704
0.00002681 ETH0.000236043.20232606
Send Exact Paren...231877842025-08-21 6:51:47205 days ago1755759107IN
0x20827008...9043Ec704
0.00002299 ETH0.000238813.23994008
Send Exact Paren...231743872025-08-19 10:01:23207 days ago1755597683IN
0x20827008...9043Ec704
0.00002592 ETH0.000240543.26343871
Send Exact Paren...231740692025-08-19 8:57:23207 days ago1755593843IN
0x20827008...9043Ec704
0.00002324 ETH0.000244983.32364904
Send Exact Paren...231740622025-08-19 8:55:59207 days ago1755593759IN
0x20827008...9043Ec704
0.00002324 ETH0.00024783.36189338
Send Exact Paren...231668562025-08-18 8:49:11208 days ago1755506951IN
0x20827008...9043Ec704
0.00002412 ETH0.000236183.2042259
Send Exact Paren...231668512025-08-18 8:48:11208 days ago1755506891IN
0x20827008...9043Ec704
0.00002412 ETH0.00023853.2357386
Send Exact Paren...231399692025-08-14 14:46:47212 days ago1755182807IN
0x20827008...9043Ec704
0.00011979 ETH0.000591958.03082154
Send Exact Paren...231397632025-08-14 14:05:11212 days ago1755180311IN
0x20827008...9043Ec704
0.00020047 ETH0.000580877.88059706
Send Exact Paren...231326352025-08-13 14:10:23213 days ago1755094223IN
0x20827008...9043Ec704
0.00007454 ETH0.000568687.71512933
Send Exact Paren...231318072025-08-13 11:23:35213 days ago1755084215IN
0x20827008...9043Ec704
0.00004762 ETH0.000249193.38071655
Send Exact Paren...231244822025-08-12 10:51:23214 days ago1754995883IN
0x20827008...9043Ec704
0.00003003 ETH0.000253863.44408592
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Send Message To ...246355302026-03-11 16:51:113 days ago1773247871
0x20827008...9043Ec704
0.00002454 ETH
Send Message To ...239957282025-12-12 9:42:1192 days ago1765532531
0x20827008...9043Ec704
0.00002055 ETH
Send Message To ...233894262025-09-18 10:39:59177 days ago1758191999
0x20827008...9043Ec704
0.00011115 ETH
Send Message To ...233259822025-09-09 13:57:11186 days ago1757426231
0x20827008...9043Ec704
0.00003829 ETH
Send Message To ...233251552025-09-09 11:11:11186 days ago1757416271
0x20827008...9043Ec704
0.00002401 ETH
Send Message To ...233251482025-09-09 11:09:47186 days ago1757416187
0x20827008...9043Ec704
0.00002401 ETH
Send Message To ...232465472025-08-29 11:41:11197 days ago1756467671
0x20827008...9043Ec704
0.00002488 ETH
Send Message To ...232327832025-08-27 13:34:11199 days ago1756301651
0x20827008...9043Ec704
0.00003937 ETH
Send Message To ...232327772025-08-27 13:32:59199 days ago1756301579
0x20827008...9043Ec704
0.00003937 ETH
Send Message To ...232176182025-08-25 10:46:59201 days ago1756118819
0x20827008...9043Ec704
0.00002367 ETH
Send Message To ...232171242025-08-25 9:07:59201 days ago1756112879
0x20827008...9043Ec704
0.0000252 ETH
Send Message To ...231899792025-08-21 14:13:11205 days ago1755785591
0x20827008...9043Ec704
0.00003064 ETH
Send Message To ...231890822025-08-21 11:13:23205 days ago1755774803
0x20827008...9043Ec704
0.00002681 ETH
Send Message To ...231890602025-08-21 11:08:59205 days ago1755774539
0x20827008...9043Ec704
0.00002681 ETH
Send Message To ...231877872025-08-21 6:52:23205 days ago1755759143
0x20827008...9043Ec704
0.00002299 ETH
Send Exact Paren...231877872025-08-21 6:52:23205 days ago1755759143
0x20827008...9043Ec704
0.00002299 ETH
Send Message To ...231877872025-08-21 6:52:23205 days ago1755759143
0x20827008...9043Ec704
0.00002299 ETH
Send Exact Paren...231877872025-08-21 6:52:23205 days ago1755759143
0x20827008...9043Ec704
0.00002299 ETH
Send Message To ...231877842025-08-21 6:51:47205 days ago1755759107
0x20827008...9043Ec704
0.00002299 ETH
Send Message To ...231743872025-08-19 10:01:23207 days ago1755597683
0x20827008...9043Ec704
0.00002592 ETH
Send Message To ...231740692025-08-19 8:57:23207 days ago1755593843
0x20827008...9043Ec704
0.00002324 ETH
Send Message To ...231740622025-08-19 8:55:59207 days ago1755593759
0x20827008...9043Ec704
0.00002324 ETH
Send Message To ...231668562025-08-18 8:49:11208 days ago1755506951
0x20827008...9043Ec704
0.00002412 ETH
Send Message To ...231668512025-08-18 8:48:11208 days ago1755506891
0x20827008...9043Ec704
0.00002412 ETH
Send Message To ...231399692025-08-14 14:46:47212 days ago1755182807
0x20827008...9043Ec704
0.00011979 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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
// 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;
    }
}

Settings
{
  "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

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"}]

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


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.