Goerli Testnet

Contract

0xee02F29aE9A4988aE064940bF11954d6eafE26Ac
Source Code

Overview

ETH Balance

0 ETH

Multi Chain

Multichain Addresses

N/A
Transaction Hash
Method
Block
From
To
Value
Update State54155322021-08-31 10:02:43757 days 6 hrs ago1630404163IN
0xee02F2...eafE26Ac
0 ETH0.012380715
Update State54155132021-08-31 9:57:58757 days 6 hrs ago1630403878IN
0xee02F2...eafE26Ac
0 ETH0.010501375
Update State54155042021-08-31 9:55:43757 days 6 hrs ago1630403743IN
0xee02F2...eafE26Ac
0 ETH0.011879295
Update State54154882021-08-31 9:51:43757 days 6 hrs ago1630403503IN
0xee02F2...eafE26Ac
0 ETH0.01201185
Update State54154722021-08-31 9:47:43757 days 6 hrs ago1630403263IN
0xee02F2...eafE26Ac
0 ETH0.013746895
Update State54154652021-08-31 9:45:58757 days 6 hrs ago1630403158IN
0xee02F2...eafE26Ac
0 ETH0.01243455
Update State54154452021-08-31 9:40:58757 days 6 hrs ago1630402858IN
0xee02F2...eafE26Ac
0 ETH0.013809615
Update State54154242021-08-31 9:35:43757 days 6 hrs ago1630402543IN
0xee02F2...eafE26Ac
0 ETH0.013205895
Update State54154092021-08-31 9:31:58757 days 6 hrs ago1630402318IN
0xee02F2...eafE26Ac
0 ETH0.010741255
Update State54154032021-08-31 9:30:28757 days 6 hrs ago1630402228IN
0xee02F2...eafE26Ac
0 ETH0.010745275
Update State54153822021-08-31 9:25:13757 days 6 hrs ago1630401913IN
0xee02F2...eafE26Ac
0 ETH0.010171365
Update State54153622021-08-31 9:20:13757 days 6 hrs ago1630401613IN
0xee02F2...eafE26Ac
0 ETH0.011760955
Update State54153462021-08-31 9:16:13757 days 7 hrs ago1630401373IN
0xee02F2...eafE26Ac
0 ETH0.015019025
Update State54153332021-08-31 9:12:58757 days 7 hrs ago1630401178IN
0xee02F2...eafE26Ac
0 ETH0.012846165
Update State54153122021-08-31 9:07:43757 days 7 hrs ago1630400863IN
0xee02F2...eafE26Ac
0 ETH0.011027315
Update State54153032021-08-31 9:05:28757 days 7 hrs ago1630400728IN
0xee02F2...eafE26Ac
0 ETH0.008367065
Update State54152822021-08-31 9:00:13757 days 7 hrs ago1630400413IN
0xee02F2...eafE26Ac
0 ETH0.014928575
Update State54152622021-08-31 8:55:13757 days 7 hrs ago1630400113IN
0xee02F2...eafE26Ac
0 ETH0.009031755
Update State54152522021-08-31 8:52:43757 days 7 hrs ago1630399963IN
0xee02F2...eafE26Ac
0 ETH0.009385665
Update State54152432021-08-31 8:50:28757 days 7 hrs ago1630399828IN
0xee02F2...eafE26Ac
0 ETH0.010076335
Update State54152432021-08-31 8:50:28757 days 7 hrs ago1630399828IN
0xee02F2...eafE26Ac
0 ETH0.013781145
Update State54152432021-08-31 8:50:28757 days 7 hrs ago1630399828IN
0xee02F2...eafE26Ac
0 ETH0.012031495
Update State54152132021-08-31 8:42:58757 days 7 hrs ago1630399378IN
0xee02F2...eafE26Ac
0 ETH0.013315915
Update State54152132021-08-31 8:42:58757 days 7 hrs ago1630399378IN
0xee02F2...eafE26Ac
0 ETH0.011086865
Update State54151822021-08-31 8:35:13757 days 7 hrs ago1630398913IN
0xee02F2...eafE26Ac
0 ETH0.011159815

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
56441562021-10-10 2:48:43717 days 13 hrs ago1633834123
0xee02F2...eafE26Ac
0 ETH
56441282021-10-10 2:41:43717 days 13 hrs ago1633833703
0xee02F2...eafE26Ac
0 ETH
56438292021-10-10 1:26:56717 days 14 hrs ago1633829216
0xee02F2...eafE26Ac
0 ETH
54155322021-08-31 10:02:43757 days 6 hrs ago1630404163
0xee02F2...eafE26Ac
0 ETH
54155132021-08-31 9:57:58757 days 6 hrs ago1630403878
0xee02F2...eafE26Ac
0 ETH
54155042021-08-31 9:55:43757 days 6 hrs ago1630403743
0xee02F2...eafE26Ac
0 ETH
54154882021-08-31 9:51:43757 days 6 hrs ago1630403503
0xee02F2...eafE26Ac
0 ETH
54154722021-08-31 9:47:43757 days 6 hrs ago1630403263
0xee02F2...eafE26Ac
0 ETH
54154652021-08-31 9:45:58757 days 6 hrs ago1630403158
0xee02F2...eafE26Ac
0 ETH
54154452021-08-31 9:40:58757 days 6 hrs ago1630402858
0xee02F2...eafE26Ac
0 ETH
54154242021-08-31 9:35:43757 days 6 hrs ago1630402543
0xee02F2...eafE26Ac
0 ETH
54154092021-08-31 9:31:58757 days 6 hrs ago1630402318
0xee02F2...eafE26Ac
0 ETH
54154032021-08-31 9:30:28757 days 6 hrs ago1630402228
0xee02F2...eafE26Ac
0 ETH
54153822021-08-31 9:25:13757 days 6 hrs ago1630401913
0xee02F2...eafE26Ac
0 ETH
54153622021-08-31 9:20:13757 days 6 hrs ago1630401613
0xee02F2...eafE26Ac
0 ETH
54153462021-08-31 9:16:13757 days 7 hrs ago1630401373
0xee02F2...eafE26Ac
0 ETH
54153332021-08-31 9:12:58757 days 7 hrs ago1630401178
0xee02F2...eafE26Ac
0 ETH
54153122021-08-31 9:07:43757 days 7 hrs ago1630400863
0xee02F2...eafE26Ac
0 ETH
54153032021-08-31 9:05:28757 days 7 hrs ago1630400728
0xee02F2...eafE26Ac
0 ETH
54152822021-08-31 9:00:13757 days 7 hrs ago1630400413
0xee02F2...eafE26Ac
0 ETH
54152622021-08-31 8:55:13757 days 7 hrs ago1630400113
0xee02F2...eafE26Ac
0 ETH
54152522021-08-31 8:52:43757 days 7 hrs ago1630399963
0xee02F2...eafE26Ac
0 ETH
54152432021-08-31 8:50:28757 days 7 hrs ago1630399828
0xee02F2...eafE26Ac
0 ETH
54152432021-08-31 8:50:28757 days 7 hrs ago1630399828
0xee02F2...eafE26Ac
0 ETH
54152432021-08-31 8:50:28757 days 7 hrs ago1630399828
0xee02F2...eafE26Ac
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Starknet

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity Multiple files format)

File 5 of 6: Starknet.sol
/*
  Copyright 2019-2021 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;
pragma experimental ABIEncoderV2;

import "IFactRegistry.sol";
import "IIdentity.sol";
import "Output.sol";
import "StarknetState.sol";
import "OnchainDataFactTreeEncoder.sol";

contract Starknet is IIdentity {
    using StarknetState for StarknetState.State;
    StarknetState.State internal state;
    IFactRegistry verifier;
    uint256 programHash;
    mapping(bytes32 => uint256) public l2ToL1Messages;
    mapping(bytes32 => uint256) public l1ToL2Messages;

    // Logs the new state following a state update.
    event LogStateUpdate(uint256 globalRoot, int256 sequenceNumber);

    // Logs a stateTransitionFact that was used to update the state.
    event LogStateTransitionFact(bytes32 stateTransitionFact);

    // An event that is raised when a message is sent from L1 to L2.
    event LogMessageToL2(
        address indexed from_address,
        uint256 indexed to_address,
        uint256 indexed selector,
        uint256[] payload
    );

    // This event needs to be compatible with the one defined in Output.sol.
    event LogMessageToL1(
        uint256 indexed from_address,
        address indexed to_address,
        uint256[] payload
    );

    /**
      The Starknet contract constructor.

      Arguments:
        programHash_ - The program hash of the StarkNet OS.
        verifier_ - The address of a SHARP verifier fact registry.
        initialState - The initial state of the system.
    */
    constructor(
        uint256 programHash_,
        IFactRegistry verifier_,
        StarknetState.State memory initialState
    ) public {
        programHash = programHash_;
        verifier = verifier_;
        state = initialState;
    }

    /**
      Returns a string that identifies the contract.
    */
    function identify() external pure override returns (string memory) {
        return "StarkWare_Starknet_2021_1";
    }

    /**
      Returns the current state root.
    */
    function stateRoot() external view returns (uint256) {
        return state.globalRoot;
    }

    /**
      Returns the current sequence number.
    */
    function stateSequenceNumber() external view returns (int256) {
        return state.sequenceNumber;
    }

    /**
      Updates the state of the StarkNet, based on a proof of the 
      StarkNet OS that the state transition is valid.

      Arguments:
        sequenceNumber - The expected sequence number of the new block.
        programOutput - The main part of the StarkNet OS program output.
        data_availability_fact - An encoding of the on-chain data associated
        with the 'programOutput'.
    */
    function updateState(
        int256 sequenceNumber,
        uint256[] calldata programOutput,
        OnchainDataFactTreeEncoder.DataAvailabilityFact calldata data_availability_fact
    ) public {
        // Validate program output.
        StarknetOutput.validate(programOutput);

        bytes32 stateTransitionFact = OnchainDataFactTreeEncoder.encodeFactWithOnchainData(
            programOutput,
            data_availability_fact
        );
        bytes32 sharpFact = keccak256(abi.encode(programHash, stateTransitionFact));
        require(verifier.isValid(sharpFact), "NO_STATE_TRANSITION_PROOF");
        emit LogStateTransitionFact(stateTransitionFact);

        // Process L2 -> L1 messages.
        uint256 outputOffset = StarknetOutput.HEADER_SIZE;
        outputOffset += StarknetOutput.processMessages(
            // isL2ToL1=
            true,
            programOutput[outputOffset:],
            l2ToL1Messages
        );

        // Process L1 -> L2 messages.
        outputOffset += StarknetOutput.processMessages(
            // isL2ToL1=
            false,
            programOutput[outputOffset:],
            l1ToL2Messages
        );

        require(outputOffset == programOutput.length, "STARKNET_OUTPUT_TOO_LONG");

        // Perform state update.
        state.update(sequenceNumber, programOutput);
        emit LogStateUpdate(state.globalRoot, state.sequenceNumber);
    }

    /**
      Sends a message to an L2 contract.
    */
    function sendMessageToL2(
        uint256 to_address,
        uint256 selector,
        uint256[] calldata payload
    ) external {
        emit LogMessageToL2(msg.sender, to_address, selector, payload);
        // Note that the selector is prepended to the payload.
        bytes32 msgHash = keccak256(
            abi.encodePacked(uint256(msg.sender), to_address, 1 + payload.length, selector, payload)
        );
        l1ToL2Messages[msgHash] += 1;
    }

    /**
      Consumes a message that was sent from an L2 contract.
    */
    function consumeMessageFromL2(uint256 from_address, uint256[] calldata payload) external {
        bytes32 msgHash = keccak256(
            abi.encodePacked(from_address, uint256(msg.sender), payload.length, payload)
        );

        require(l2ToL1Messages[msgHash] > 0, "INVALID_MESSAGE_TO_CONSUME");
        l2ToL1Messages[msgHash] -= 1;
    }
}

File 1 of 6: IFactRegistry.sol
/*
  Copyright 2019-2021 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

/*
  The Fact Registry design pattern is a way to separate cryptographic verification from the
  business logic of the contract flow.

  A fact registry holds a hash table of verified "facts" which are represented by a hash of claims
  that the registry hash check and found valid. This table may be queried by accessing the
  isValid() function of the registry with a given hash.

  In addition, each fact registry exposes a registry specific function for submitting new claims
  together with their proofs. The information submitted varies from one registry to the other
  depending of the type of fact requiring verification.

  For further reading on the Fact Registry design pattern see this
  `StarkWare blog post <https://medium.com/starkware/the-fact-registry-a64aafb598b6>`_.
*/
interface IFactRegistry {
    /*
      Returns true if the given fact was previously registered in the contract.
    */
    function isValid(bytes32 fact) external view returns (bool);
}

File 2 of 6: IIdentity.sol
/*
  Copyright 2019-2021 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

interface IIdentity {
    /*
      Allows a caller to ensure that the provided address is of the expected type and version.
    */
    function identify() external pure returns (string memory);
}

File 3 of 6: OnchainDataFactTreeEncoder.sol
/*
  Copyright 2019-2021 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

library OnchainDataFactTreeEncoder {
    struct DataAvailabilityFact {
        uint256 onchainDataHash;
        uint256 onchainDataSize;
    }

    // The number of additional words appended to the public input when using the
    // OnchainDataFactTreeEncoder format.
    uint256 internal constant ONCHAIN_DATA_FACT_ADDITIONAL_WORDS = 2;

    /*
      Encodes a GPS fact Merkle tree where the root has two children.
      The left child contains the data we care about and the right child contains
      on-chain data for the fact.
    */
    function encodeFactWithOnchainData(
        uint256[] calldata programOutput,
        DataAvailabilityFact memory factData
    ) internal pure returns (bytes32) {
        // The state transition fact is computed as a Merkle tree, as defined in
        // GpsOutputParser.
        //
        // In our case the fact tree looks as follows:
        //   The root has two children.
        //   The left child is a leaf that includes the main part - the information regarding
        //   the state transition required by this contract.
        //   The right child contains the onchain-data which shouldn't be accessed by this
        //   contract, so we are only given its hash and length
        //   (it may be a leaf or an inner node, this has no effect on this contract).

        // Compute the hash without the two additional fields.
        uint256 mainPublicInputLen = programOutput.length;
        bytes32 mainPublicInputHash = keccak256(abi.encodePacked(programOutput));

        // Compute the hash of the fact Merkle tree.
        bytes32 hashResult = keccak256(
            abi.encodePacked(
                mainPublicInputHash,
                mainPublicInputLen,
                factData.onchainDataHash,
                mainPublicInputLen + factData.onchainDataSize
            )
        );
        // Add one to the hash to indicate it represents an inner node, rather than a leaf.
        return bytes32(uint256(hashResult) + 1);
    }
}

File 4 of 6: Output.sol
/*
  Copyright 2019-2021 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

library CommitmentTreeUpdateOutput {
    /**
      Returns the previous commitment tree root.
    */
    function getPrevRoot(uint256[] calldata commitment_tree_update_data)
        internal
        pure
        returns (uint256)
    {
        return commitment_tree_update_data[0];
    }

    /**
      Returns the new commitment tree root.
    */
    function getNewRoot(uint256[] calldata commitment_tree_update_data)
        internal
        pure
        returns (uint256)
    {
        return commitment_tree_update_data[1];
    }
}

library StarknetOutput {
    uint256 internal constant MERKLE_UPDATE_OFFSET = 0;
    uint256 internal constant HEADER_SIZE = 2;

    uint256 constant MESSAGE_FROM_ADDRESS_OFFSET = 0;
    uint256 constant MESSAGE_TO_ADDRESS_OFFSET = 1;
    uint256 constant MESSAGE_PAYLOAD_SIZE_OFFSET = 2;
    uint256 constant MESSAGE_PREFIX_SIZE = 3;

    // An event that is raised when a message is sent from L2 to L1.
    event LogMessageToL1(
        uint256 indexed from_address,
        address indexed to_address,
        uint256[] payload
    );

    /**
      Does a sanity check of the output_data length.
    */
    function validate(uint256[] calldata output_data) internal pure {
        require(output_data.length > HEADER_SIZE, "STARKNET_OUTPUT_TOO_SHORT");
    }

    /**
      Returns a slice of the 'output_data' with the commitment tree update information.
    */
    function getMerkleUpdate(uint256[] calldata output_data)
        internal
        pure
        returns (uint256[] calldata)
    {
        return output_data[MERKLE_UPDATE_OFFSET:MERKLE_UPDATE_OFFSET + 2];
    }

    /**
      Processes a message segment from the program output.
      The format of a message segment is the length of the messages in words followed
      by the concatenation of all the messages.

      The 'messages' mapping is updated according to the messages and the direction ('isL2ToL1').
    */
    function processMessages(
        bool isL2ToL1,
        uint256[] calldata programOutputSlice,
        mapping(bytes32 => uint256) storage messages
    ) internal returns (uint256) {
        uint256 message_segment_size = programOutputSlice[0];
        require(message_segment_size < 2**30, "INVALID_MESSAGE_SEGMENT_SIZE");

        uint256 offset = 1;
        uint256 message_segment_end = offset + message_segment_size;
        while (offset < message_segment_end) {
            uint256 payloadLengthOffset = offset + MESSAGE_PAYLOAD_SIZE_OFFSET;
            require(payloadLengthOffset < programOutputSlice.length, "MESSAGE_TOO_SHORT");

            uint256 payloadLengh = programOutputSlice[payloadLengthOffset];
            require(payloadLengh < 2**30, "INVALID_PAYLOAD_LENGTH");

            uint256 endOffset = offset + MESSAGE_PREFIX_SIZE + payloadLengh;
            require(endOffset <= programOutputSlice.length, "TRUNCATED_MESSAGE_PAYLOAD");

            bytes32 messageHash = keccak256(abi.encodePacked(programOutputSlice[offset:endOffset]));
            if (isL2ToL1) {
                emit LogMessageToL1(
                    programOutputSlice[offset + MESSAGE_FROM_ADDRESS_OFFSET],
                    address(programOutputSlice[offset + MESSAGE_TO_ADDRESS_OFFSET]),
                    (uint256[])(programOutputSlice[offset + MESSAGE_PREFIX_SIZE:endOffset])
                );
                messages[messageHash] += 1;
            } else {
                require(messages[messageHash] > 0, "INVALID_MESSAGE_TO_CONSUME");
                messages[messageHash] -= 1;
            }

            offset = endOffset;
        }
        require(offset == message_segment_end, "INVALID_MESSAGE_SEGMENT_SIZE");

        return offset;
    }
}

File 6 of 6: StarknetState.sol
/*
  Copyright 2019-2021 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

import "Output.sol";

library StarknetState {
    struct State {
        uint256 globalRoot;
        int256 sequenceNumber;
    }

    /**
      Validates that the 'sequenceNumber' and the previous root are consistent with the
      current state and updates the state.
    */
    function update(
        State storage state,
        int256 sequenceNumber,
        uint256[] calldata starknetOutput
    ) internal {
        // Check the sequenceNumber first as the error is less ambiguous then INVALID_PREVIOUS_ROOT.
        state.sequenceNumber += 1;
        require(state.sequenceNumber == sequenceNumber, "INVALID_SEQUENCE_NUMBER");

        uint256[] calldata commitment_tree_update = StarknetOutput.getMerkleUpdate(starknetOutput);
        require(
            state.globalRoot == CommitmentTreeUpdateOutput.getPrevRoot(commitment_tree_update),
            "INVALID_PREVIOUS_ROOT"
        );
        state.globalRoot = CommitmentTreeUpdateOutput.getNewRoot(commitment_tree_update);
    }
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"programHash_","type":"uint256"},{"internalType":"contract IFactRegistry","name":"verifier_","type":"address"},{"components":[{"internalType":"uint256","name":"globalRoot","type":"uint256"},{"internalType":"int256","name":"sequenceNumber","type":"int256"}],"internalType":"struct StarknetState.State","name":"initialState","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"from_address","type":"uint256"},{"indexed":true,"internalType":"address","name":"to_address","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"payload","type":"uint256[]"}],"name":"LogMessageToL1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"to_address","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"selector","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"payload","type":"uint256[]"}],"name":"LogMessageToL2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"stateTransitionFact","type":"bytes32"}],"name":"LogStateTransitionFact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"globalRoot","type":"uint256"},{"indexed":false,"internalType":"int256","name":"sequenceNumber","type":"int256"}],"name":"LogStateUpdate","type":"event"},{"inputs":[{"internalType":"uint256","name":"from_address","type":"uint256"},{"internalType":"uint256[]","name":"payload","type":"uint256[]"}],"name":"consumeMessageFromL2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"identify","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"l1ToL2Messages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"l2ToL1Messages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"to_address","type":"uint256"},{"internalType":"uint256","name":"selector","type":"uint256"},{"internalType":"uint256[]","name":"payload","type":"uint256[]"}],"name":"sendMessageToL2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stateRoot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stateSequenceNumber","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"sequenceNumber","type":"int256"},{"internalType":"uint256[]","name":"programOutput","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"onchainDataHash","type":"uint256"},{"internalType":"uint256","name":"onchainDataSize","type":"uint256"}],"internalType":"struct OnchainDataFactTreeEncoder.DataAvailabilityFact","name":"data_availability_fact","type":"tuple"}],"name":"updateState","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610e80380380610e8083398101604081905261002f91610066565b600392909255600280546001600160a01b0319166001600160a01b03929092169190911790558051600055602001516001556100e8565b6000806000838503608081121561007b578384fd5b845160208601519094506001600160a01b0381168114610099578384fd5b92506040603f19820112156100ac578182fd5b50604080519081016001600160401b03811182821017156100cb578283fd5b604090815285015181526060909401516020850152509093909250565b610d89806100f76000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639588eca21161005b5780639588eca2146100f1578063a46efaf3146100f9578063a5cab7691461010c578063eeb728661461011457610088565b80632c9dd5c01461008d5780633e3aa6c5146100a257806377c7d7a9146100b557806381fd8c6b146100de575b600080fd5b6100a061009b366004610928565b610129565b005b6100a06100b0366004610972565b6101ad565b6100c86100c3366004610862565b610245565b6040516100d59190610ab3565b60405180910390f35b6100a06100ec36600461087a565b610257565b6100c8610426565b6100c8610107366004610862565b61042c565b6100c861043e565b61011c610444565b6040516100d59190610abc565b6040516000906101459085903390859087908290602001610a1e565b60408051601f198184030181529181528151602092830120600081815260049093529120549091506101925760405162461bcd60e51b815260040161018990610ce3565b60405180910390fd5b60009081526004602052604090208054600019019055505050565b8284336001600160a01b03167f474d2456b41fc1146ae05ba36e794e448efd2f172a9128ca1c8c6dbdb22b62f785856040516101ea929190610a79565b60405180910390a460405160009061021390339087906001860190889088908890602001610a48565b60408051601f198184030181529181528151602092830120600090815260059092529020805460010190555050505050565b60056020526000908152604090205481565b610261838361047b565b600061027c8484610277368690038601866108de565b61049f565b9050600060035482604051602001610295929190610d1a565b60408051601f19818403018152908290528051602090910120600254636a93856760e01b83529092506001600160a01b031690636a938567906102dc908490600401610ab3565b60206040518083038186803b1580156102f457600080fd5b505afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c919061083b565b6103485760405162461bcd60e51b815260040161018990610cac565b7f9866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111826040516103779190610ab3565b60405180910390a1600261039960016103928784818b610d28565b600461051a565b016103b260006103ab8784818b610d28565b600561051a565b018481146103d25760405162461bcd60e51b815260040161018990610c07565b6103df6000888888610736565b6000546001546040517fe8012213bb931d3efa0a954cfb0d7b75f2a5e2358ba5f7d3edfb0154f6e7a56892610415929091610d1a565b60405180910390a150505050505050565b60005490565b60046020526000908152604090205481565b60015490565b60408051808201909152601981527f537461726b576172655f537461726b6e65745f323032315f3100000000000000602082015290565b6002811161049b5760405162461bcd60e51b815260040161018990610c3e565b5050565b604051600090839082906104b990879084906020016109ee565b604051602081830303815290604052805190602001209050600081838660000151876020015186016040516020016104f49493929190610a03565b60408051808303601f190181529190528051602090910120600101979650505050505050565b6000808484600081811061052a57fe5b905060200201359050634000000081106105565760405162461bcd60e51b815260040161018990610bd0565b60018181015b8082101561070c57600282018681106105875760405162461bcd60e51b815260040161018990610b0f565b600088888381811061059557fe5b905060200201359050634000000081106105c15760405162461bcd60e51b815260040161018990610ba0565b838101600301888111156105e75760405162461bcd60e51b815260040161018990610c75565b60006105f582878c8e610d28565b6040516020016106069291906109ee565b6040516020818303038152906040528051906020012090508b156106bf578a8a6001880181811061063357fe5b905060200201356001600160a01b03168b8b6000890181811061065257fe5b905060200201357f4264ac208b5fde633ccdd42e0f12c3d6d443a4f3779bbf886925b94665b63a228d8d60038b0190879261068f93929190610d28565b60405161069d929190610a79565b60405180910390a3600081815260208a90526040902080546001019055610701565b600081815260208a905260409020546106ea5760405162461bcd60e51b815260040161018990610ce3565b600081815260208a90526040902080546000190190555b50935061055c915050565b80821461072b5760405162461bcd60e51b815260040161018990610bd0565b509695505050505050565b600184810180549091019081905583146107625760405162461bcd60e51b815260040161018990610b3a565b36600061076f84846107b0565b9150915061077d82826107cc565b86541461079c5760405162461bcd60e51b815260040161018990610b71565b6107a682826107ea565b9095555050505050565b3660006107c06002828587610d28565b915091505b9250929050565b6000828260008181106107db57fe5b90506020020135905092915050565b6000828260018181106107db57fe5b60008083601f84011261080a578182fd5b50813567ffffffffffffffff811115610821578182fd5b60208301915083602080830285010111156107c557600080fd5b60006020828403121561084c578081fd5b8151801515811461085b578182fd5b9392505050565b600060208284031215610873578081fd5b5035919050565b6000806000808486036080811215610890578384fd5b85359450602086013567ffffffffffffffff8111156108ad578485fd5b6108b9888289016107f9565b9095509350506040603f19820112156108d0578182fd5b509295919450926040019150565b6000604082840312156108ef578081fd5b6040516040810181811067ffffffffffffffff8211171561090e578283fd5b604052823581526020928301359281019290925250919050565b60008060006040848603121561093c578283fd5b83359250602084013567ffffffffffffffff811115610959578283fd5b610965868287016107f9565b9497909650939450505050565b60008060008060608587031215610987578384fd5b8435935060208501359250604085013567ffffffffffffffff8111156109ab578283fd5b6109b7878288016107f9565b95989497509550505050565b60006001600160fb1b038311156109d8578081fd5b6020830280838637939093019283525090919050565b60006109fb8284866109c3565b949350505050565b93845260208401929092526040830152606082015260800190565b6000868252856020830152846040830152610a3d6060830184866109c3565b979650505050505050565b6000878252866020830152856040830152846060830152610a6d6080830184866109c3565b98975050505050505050565b6020808252810182905260006001600160fb1b03831115610a98578081fd5b60208302808560408501379190910160400190815292915050565b90815260200190565b6000602080835283518082850152825b81811015610ae857858101830151858201604001528201610acc565b81811115610af95783604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270135154d4d051d157d513d3d7d4d213d495607a1b604082015260600190565b60208082526017908201527f494e56414c49445f53455155454e43455f4e554d424552000000000000000000604082015260600190565b6020808252601590820152741253959053125117d41491559253d554d7d493d3d5605a1b604082015260600190565b6020808252601690820152750929cac82989288bea082b2989e8288be988a9c8ea8960531b604082015260600190565b6020808252601c908201527f494e56414c49445f4d4553534147455f5345474d454e545f53495a4500000000604082015260600190565b60208082526018908201527f535441524b4e45545f4f55545055545f544f4f5f4c4f4e470000000000000000604082015260600190565b60208082526019908201527f535441524b4e45545f4f55545055545f544f4f5f53484f525400000000000000604082015260600190565b60208082526019908201527f5452554e43415445445f4d4553534147455f5041594c4f414400000000000000604082015260600190565b60208082526019908201527f4e4f5f53544154455f5452414e534954494f4e5f50524f4f4600000000000000604082015260600190565b6020808252601a908201527f494e56414c49445f4d4553534147455f544f5f434f4e53554d45000000000000604082015260600190565b918252602082015260400190565b60008085851115610d37578182fd5b83861115610d43578182fd5b505060208302019391909203915056fea26469706673582212205402583629cbb9b29553a8eabce54846cb1e8838dbe8e919650914a1c23825dd64736f6c634300060c00330513d56ae0d52afdeba4ce06a1834ebe448ce08ce98f9698a468a1ea69dfe8d5000000000000000000000000ab43ba48c9edf4c2c4bb01237348d1d7b28ef1680000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639588eca21161005b5780639588eca2146100f1578063a46efaf3146100f9578063a5cab7691461010c578063eeb728661461011457610088565b80632c9dd5c01461008d5780633e3aa6c5146100a257806377c7d7a9146100b557806381fd8c6b146100de575b600080fd5b6100a061009b366004610928565b610129565b005b6100a06100b0366004610972565b6101ad565b6100c86100c3366004610862565b610245565b6040516100d59190610ab3565b60405180910390f35b6100a06100ec36600461087a565b610257565b6100c8610426565b6100c8610107366004610862565b61042c565b6100c861043e565b61011c610444565b6040516100d59190610abc565b6040516000906101459085903390859087908290602001610a1e565b60408051601f198184030181529181528151602092830120600081815260049093529120549091506101925760405162461bcd60e51b815260040161018990610ce3565b60405180910390fd5b60009081526004602052604090208054600019019055505050565b8284336001600160a01b03167f474d2456b41fc1146ae05ba36e794e448efd2f172a9128ca1c8c6dbdb22b62f785856040516101ea929190610a79565b60405180910390a460405160009061021390339087906001860190889088908890602001610a48565b60408051601f198184030181529181528151602092830120600090815260059092529020805460010190555050505050565b60056020526000908152604090205481565b610261838361047b565b600061027c8484610277368690038601866108de565b61049f565b9050600060035482604051602001610295929190610d1a565b60408051601f19818403018152908290528051602090910120600254636a93856760e01b83529092506001600160a01b031690636a938567906102dc908490600401610ab3565b60206040518083038186803b1580156102f457600080fd5b505afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c919061083b565b6103485760405162461bcd60e51b815260040161018990610cac565b7f9866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac111826040516103779190610ab3565b60405180910390a1600261039960016103928784818b610d28565b600461051a565b016103b260006103ab8784818b610d28565b600561051a565b018481146103d25760405162461bcd60e51b815260040161018990610c07565b6103df6000888888610736565b6000546001546040517fe8012213bb931d3efa0a954cfb0d7b75f2a5e2358ba5f7d3edfb0154f6e7a56892610415929091610d1a565b60405180910390a150505050505050565b60005490565b60046020526000908152604090205481565b60015490565b60408051808201909152601981527f537461726b576172655f537461726b6e65745f323032315f3100000000000000602082015290565b6002811161049b5760405162461bcd60e51b815260040161018990610c3e565b5050565b604051600090839082906104b990879084906020016109ee565b604051602081830303815290604052805190602001209050600081838660000151876020015186016040516020016104f49493929190610a03565b60408051808303601f190181529190528051602090910120600101979650505050505050565b6000808484600081811061052a57fe5b905060200201359050634000000081106105565760405162461bcd60e51b815260040161018990610bd0565b60018181015b8082101561070c57600282018681106105875760405162461bcd60e51b815260040161018990610b0f565b600088888381811061059557fe5b905060200201359050634000000081106105c15760405162461bcd60e51b815260040161018990610ba0565b838101600301888111156105e75760405162461bcd60e51b815260040161018990610c75565b60006105f582878c8e610d28565b6040516020016106069291906109ee565b6040516020818303038152906040528051906020012090508b156106bf578a8a6001880181811061063357fe5b905060200201356001600160a01b03168b8b6000890181811061065257fe5b905060200201357f4264ac208b5fde633ccdd42e0f12c3d6d443a4f3779bbf886925b94665b63a228d8d60038b0190879261068f93929190610d28565b60405161069d929190610a79565b60405180910390a3600081815260208a90526040902080546001019055610701565b600081815260208a905260409020546106ea5760405162461bcd60e51b815260040161018990610ce3565b600081815260208a90526040902080546000190190555b50935061055c915050565b80821461072b5760405162461bcd60e51b815260040161018990610bd0565b509695505050505050565b600184810180549091019081905583146107625760405162461bcd60e51b815260040161018990610b3a565b36600061076f84846107b0565b9150915061077d82826107cc565b86541461079c5760405162461bcd60e51b815260040161018990610b71565b6107a682826107ea565b9095555050505050565b3660006107c06002828587610d28565b915091505b9250929050565b6000828260008181106107db57fe5b90506020020135905092915050565b6000828260018181106107db57fe5b60008083601f84011261080a578182fd5b50813567ffffffffffffffff811115610821578182fd5b60208301915083602080830285010111156107c557600080fd5b60006020828403121561084c578081fd5b8151801515811461085b578182fd5b9392505050565b600060208284031215610873578081fd5b5035919050565b6000806000808486036080811215610890578384fd5b85359450602086013567ffffffffffffffff8111156108ad578485fd5b6108b9888289016107f9565b9095509350506040603f19820112156108d0578182fd5b509295919450926040019150565b6000604082840312156108ef578081fd5b6040516040810181811067ffffffffffffffff8211171561090e578283fd5b604052823581526020928301359281019290925250919050565b60008060006040848603121561093c578283fd5b83359250602084013567ffffffffffffffff811115610959578283fd5b610965868287016107f9565b9497909650939450505050565b60008060008060608587031215610987578384fd5b8435935060208501359250604085013567ffffffffffffffff8111156109ab578283fd5b6109b7878288016107f9565b95989497509550505050565b60006001600160fb1b038311156109d8578081fd5b6020830280838637939093019283525090919050565b60006109fb8284866109c3565b949350505050565b93845260208401929092526040830152606082015260800190565b6000868252856020830152846040830152610a3d6060830184866109c3565b979650505050505050565b6000878252866020830152856040830152846060830152610a6d6080830184866109c3565b98975050505050505050565b6020808252810182905260006001600160fb1b03831115610a98578081fd5b60208302808560408501379190910160400190815292915050565b90815260200190565b6000602080835283518082850152825b81811015610ae857858101830151858201604001528201610acc565b81811115610af95783604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270135154d4d051d157d513d3d7d4d213d495607a1b604082015260600190565b60208082526017908201527f494e56414c49445f53455155454e43455f4e554d424552000000000000000000604082015260600190565b6020808252601590820152741253959053125117d41491559253d554d7d493d3d5605a1b604082015260600190565b6020808252601690820152750929cac82989288bea082b2989e8288be988a9c8ea8960531b604082015260600190565b6020808252601c908201527f494e56414c49445f4d4553534147455f5345474d454e545f53495a4500000000604082015260600190565b60208082526018908201527f535441524b4e45545f4f55545055545f544f4f5f4c4f4e470000000000000000604082015260600190565b60208082526019908201527f535441524b4e45545f4f55545055545f544f4f5f53484f525400000000000000604082015260600190565b60208082526019908201527f5452554e43415445445f4d4553534147455f5041594c4f414400000000000000604082015260600190565b60208082526019908201527f4e4f5f53544154455f5452414e534954494f4e5f50524f4f4600000000000000604082015260600190565b6020808252601a908201527f494e56414c49445f4d4553534147455f544f5f434f4e53554d45000000000000604082015260600190565b918252602082015260400190565b60008085851115610d37578182fd5b83861115610d43578182fd5b505060208302019391909203915056fea26469706673582212205402583629cbb9b29553a8eabce54846cb1e8838dbe8e919650914a1c23825dd64736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0513d56ae0d52afdeba4ce06a1834ebe448ce08ce98f9698a468a1ea69dfe8d5000000000000000000000000ab43ba48c9edf4c2c4bb01237348d1d7b28ef1680000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

-----Decoded View---------------
Arg [0] : programHash_ (uint256): 2296607290550979888899975660058561051472070052848622249136594823237597128917
Arg [1] : verifier_ (address): 0xAB43bA48c9edF4C2C4bB01237348D1D7B28ef168
Arg [2] : initialState (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0513d56ae0d52afdeba4ce06a1834ebe448ce08ce98f9698a468a1ea69dfe8d5
Arg [1] : 000000000000000000000000ab43ba48c9edf4c2c4bb01237348d1d7b28ef168
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff


Deployed Bytecode Sourcemap

839:4778:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5267:348;;;;;;:::i;:::-;;:::i;:::-;;4727:459;;;;;;:::i;:::-;;:::i;1073:49::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3258:1407;;;;;;:::i;:::-;;:::i;2580:93::-;;;:::i;1018:49::-;;;;;;:::i;:::-;;:::i;2737:106::-;;;:::i;2403:118::-;;;:::i;:::-;;;;;;;:::i;5267:348::-;5407:76;;5366:15;;5407:76;;5424:12;;5446:10;;5459:7;;;;;;5407:76;;;:::i;:::-;;;;-1:-1:-1;;5407:76:4;;;;;;;;;5384:109;;5407:76;5384:109;;;;5538:1;5512:23;;;:14;:23;;;;;;5384:109;;-1:-1:-1;5504:66:4;;;;-1:-1:-1;;;5504:66:4;;;;;;;:::i;:::-;;;;;;;;;5580:23;;;;:14;:23;;;;;:28;;-1:-1:-1;;5580:28:4;;;-1:-1:-1;;;5267:348:4:o;4727:459::-;4911:8;4899:10;4887;-1:-1:-1;;;;;4872:57:4;;4921:7;;4872:57;;;;;;;:::i;:::-;;;;;;;;5043:88;;5002:15;;5043:88;;5068:10;;5081;;5093:1;:18;;;5113:8;;5097:7;;;;5043:88;;;:::i;:::-;;;;-1:-1:-1;;5043:88:4;;;;;;;;;5020:121;;5043:88;5020:121;;;;5151:23;;;;:14;:23;;;;;:28;;5178:1;5151:28;;;-1:-1:-1;;;;;4727:459:4:o;1073:49::-;;;;;;;;;;;;;:::o;3258:1407::-;3500:38;3524:13;;3500:23;:38::i;:::-;3549:27;3579:125;3645:13;;3579:125;;;;;;;3672:22;3579:125;:::i;:::-;:52;:125::i;:::-;3549:155;;3714:17;3755:11;;3768:19;3744:44;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3744:44:4;;;;;;;;;;3734:55;;3744:44;3734:55;;;;3807:8;;-1:-1:-1;;;3807:27:4;;3734:55;;-1:-1:-1;;;;;;3807:8:4;;:16;;:27;;3734:55;;3807:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3799:65;;;;-1:-1:-1;;;3799:65:4;;;;;;;:::i;:::-;3879:43;3902:19;3879:43;;;;;;:::i;:::-;;;;;;;;1326:1:3;4046:153:4;4115:4;4133:28;:13;1326:1:3;4133:13:4;;:28;:::i;:::-;4175:14;4046:30;:153::i;:::-;4030:169;4264:154;4333:5;4352:28;:13;4030:169;4352:13;;:28;:::i;:::-;4394:14;4264:30;:154::i;:::-;4248:170;4437:36;;;4429:73;;;;-1:-1:-1;;;4429:73:4;;;;;;;:::i;:::-;4546:43;:5;4559:14;4575:13;;4546:12;:43::i;:::-;4619:5;:16;4637:20;;4604:54;;;;;;4619:16;;4604:54;:::i;:::-;;;;;;;;3258:1407;;;;;;;:::o;2580:93::-;2624:7;2650:16;2580:93;:::o;1018:49::-;;;;;;;;;;;;;:::o;2737:106::-;2816:20;;2737:106;:::o;2403:118::-;2480:34;;;;;;;;;;;;;;;;;2403:118;:::o;1812:151:3:-;1326:1;1894:32;;1886:70;;;;-1:-1:-1;;;1886:70:3;;;;;;;:::i;:::-;1812:151;;:::o;1205:1452:2:-;2151:31;;1357:7;;2081:13;;1357:7;;2151:31;;2081:13;;;;2151:31;;;:::i;:::-;;;;;;;;;;;;;2141:42;;;;;;2111:72;;2247:18;2325:19;2362:18;2398:8;:24;;;2461:8;:24;;;2440:18;:45;2291:208;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;2291:208:2;;;;;;2268:241;;2291:208;2268:241;;;;2648:1;2626:23;;1205:1452;-1:-1:-1;;;;;;;1205:1452:2:o;2595:1753:3:-;2768:7;2787:28;2818:18;;2837:1;2818:21;;;;;;;;;;;;;2787:52;;2880:5;2857:20;:28;2849:69;;;;-1:-1:-1;;;2849:69:3;;;;;;;:::i;:::-;2946:1;2987:29;;;3026:1212;3042:19;3033:6;:28;3026:1212;;;1487:1;3107:36;;3165:47;;;3157:77;;;;-1:-1:-1;;;3157:77:3;;;;;;;:::i;:::-;3249:20;3272:18;;3291:19;3272:39;;;;;;;;;;;;;3249:62;;3348:5;3333:12;:20;3325:55;;;;-1:-1:-1;;;3325:55:3;;;;;;;:::i;:::-;3415:43;;;1533:1;3415:43;3480:38;;;;3472:76;;;;-1:-1:-1;;;3472:76:3;;;;;;;:::i;:::-;3563:19;3612:36;3638:9;3631:6;3612:18;;:36;:::i;:::-;3595:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3585:65;;;;;;3563:87;;3668:8;3664:531;;;3823:18;;1433:1;3842:6;:34;3823:54;;;;;;;;;;;;;-1:-1:-1;;;;;3701:288:3;3737:18;;1381:1;3756:6;:36;3737:56;;;;;;;;;;;;;3701:288;3912:18;;1533:1;3931:6;:28;3912:58;3960:9;3912:58;;;;;;;:::i;:::-;3701:288;;;;;;;:::i;:::-;;;;;;;;4007:21;;;;;;;;;;;:26;;4032:1;4007:26;;;3664:531;;;4104:1;4080:21;;;;;;;;;;;4072:64;;;;-1:-1:-1;;;4072:64:3;;;;;;;:::i;:::-;4154:21;;;;;;;;;;;:26;;-1:-1:-1;;4154:26:3;;;3664:531;-1:-1:-1;4218:9:3;-1:-1:-1;3026:1212:3;;-1:-1:-1;;3026:1212:3;;4265:19;4255:6;:29;4247:70;;;;-1:-1:-1;;;4247:70:3;;;;;;;:::i;:::-;-1:-1:-1;4335:6:3;2595:1753;-1:-1:-1;;;;;;2595:1753:3:o;943:712:5:-;1212:1;1188:20;;;:25;;;;;;;;;1231:38;;1223:74;;;;-1:-1:-1;;;1223:74:5;;;;;;;:::i;:::-;1308:41;;1352:46;1383:14;;1352:30;:46::i;:::-;1308:90;;;;1449:62;1488:22;;1449:38;:62::i;:::-;1429:16;;:82;1408:150;;;;-1:-1:-1;;;1408:150:5;;;;;;;:::i;:::-;1587:61;1625:22;;1587:37;:61::i;:::-;1568:80;;;-1:-1:-1;;;;;943:712:5:o;2072:210:3:-;2176:18;;2217:58;2273:1;2176:18;2217:11;;:58;:::i;:::-;2210:65;;;;2072:210;;;;;;:::o;767:183::-;883:7;913:27;;941:1;913:30;;;;;;;;;;;;;906:37;;767:183;;;;:::o;1015:182::-;1130:7;1160:27;;1188:1;1160:30;;;;;;23:352:-1;;;153:3;146:4;138:6;134:17;130:27;120:2;;-1:-1;;161:12;120:2;-1:-1;191:20;;231:18;220:30;;217:2;;;-1:-1;;253:12;217:2;297:4;289:6;285:17;273:29;;348:3;297:4;;332:6;328:17;289:6;314:32;;311:41;308:2;;;365:1;;355:12;1734:257;;1846:2;1834:9;1825:7;1821:23;1817:32;1814:2;;;-1:-1;;1852:12;1814:2;464:6;458:13;21657:5;20616:13;20609:21;21635:5;21632:32;21622:2;;-1:-1;;21668:12;21622:2;1904:71;1808:183;-1:-1;;;1808:183::o;1998:241::-;;2102:2;2090:9;2081:7;2077:23;2073:32;2070:2;;;-1:-1;;2108:12;2070:2;-1:-1;585:20;;2064:175;-1:-1;2064:175::o;2246:722::-;;;;;2444:9;2435:7;2431:23;2456:3;2431:23;2427:33;2424:2;;;-1:-1;;2463:12;2424:2;734:6;721:20;2515:62;;2642:2;2631:9;2627:18;2614:32;2666:18;2658:6;2655:30;2652:2;;;-1:-1;;2688:12;2652:2;2726:80;2798:7;2789:6;2778:9;2774:22;2726:80;:::i;:::-;2708:98;;-1:-1;2708:98;-1:-1;;2843:2;-1:-1;;957:16;;953:25;950:2;;;-1:-1;;981:12;950:2;-1:-1;2418:550;;;;-1:-1;2418:550;2843:2;2920:22;;-1:-1;2418:550::o;2975:313::-;;3115:2;3103:9;3094:7;3090:23;3086:32;3083:2;;;-1:-1;;3121:12;3083:2;3115;19344:9;3115:2;19380:6;19376:17;19487:6;19475:10;19472:22;19451:18;19439:10;19436:34;19433:62;19430:2;;;-1:-1;;19498:12;19430:2;3115;19517:22;1664:20;;1339:75;;1486:2;1540:22;;;1664:20;1501:16;;;1494:75;;;;-1:-1;1346:16;3077:211;-1:-1;3077:211::o;3295:522::-;;;;3451:2;3439:9;3430:7;3426:23;3422:32;3419:2;;;-1:-1;;3457:12;3419:2;1677:6;1664:20;3509:63;;3637:2;3626:9;3622:18;3609:32;3661:18;3653:6;3650:30;3647:2;;;-1:-1;;3683:12;3647:2;3721:80;3793:7;3784:6;3773:9;3769:22;3721:80;:::i;:::-;3413:404;;3703:98;;-1:-1;3703:98;;-1:-1;;;;3413:404::o;3824:647::-;;;;;3997:2;3985:9;3976:7;3972:23;3968:32;3965:2;;;-1:-1;;4003:12;3965:2;1677:6;1664:20;4055:63;;4155:2;4198:9;4194:22;1664:20;4163:63;;4291:2;4280:9;4276:18;4263:32;4315:18;4307:6;4304:30;4301:2;;;-1:-1;;4337:12;4301:2;4375:80;4447:7;4438:6;4427:9;4423:22;4375:80;:::i;:::-;3959:512;;;;-1:-1;4357:98;-1:-1;;;;3959:512::o;5015:503::-;;-1:-1;;;;;5299:78;;5296:2;;;-1:-1;;5380:12;5296:2;5423:4;5415:6;5411:17;20960:6;20955:3;20950;20937:30;20998:16;;;;20991:27;;;-1:-1;20998:16;;5165:353;-1:-1;5165:353::o;9881:355::-;;10076:135;10207:3;10198:6;10190;10076:135;:::i;:::-;10221:10;10057:179;-1:-1;;;;10057:179::o;10611:670::-;5597:37;;;10920:2;10911:12;;5597:37;;;;11022:12;;;5597:37;11133:12;;;5597:37;11244:12;;;10811:470::o;11288:772::-;;5627:5;5604:3;5597:37;5627:5;11657:2;11652:3;11648:12;5597:37;5627:5;11759:12;11652:3;11759:12;5597:37;11900:135;11870:12;11652:3;11870:12;12022:6;12014;11900:135;:::i;:::-;12045:10;11548:512;-1:-1;;;;;;;11548:512::o;12067:911::-;;5627:5;5604:3;5597:37;5627:5;12464:2;12459:3;12455:12;5597:37;5627:5;12566:12;12459:3;12566:12;5597:37;5627:5;12677:12;12459:3;12677:12;5597:37;12818:135;12788:12;12459:3;12788:12;12940:6;12932;12818:135;:::i;:::-;12963:10;12355:623;-1:-1;;;;;;;;12355:623::o;12985:390::-;13172:2;13186:47;;;13157:18;;19799:19;;;12985:390;-1:-1;;;;;4757:78;;4754:2;;;-1:-1;;4838:12;4754:2;13172;4873:6;4869:17;20960:6;20955:3;19839:14;13161:9;19839:14;20937:30;20998:16;;;;19839:14;20998:16;20991:27;;;20998:16;13143:232;-1:-1;;13143:232::o;13382:222::-;5597:37;;;13509:2;13494:18;;13480:124::o;13836:310::-;;13983:2;;14004:17;13997:47;6067:5;19639:12;19811:6;13983:2;13972:9;13968:18;19799:19;-1:-1;21105:101;21119:6;21116:1;21113:13;21105:101;;;21186:11;;;;;21180:18;21167:11;;;19839:14;21167:11;21160:39;21134:10;;21105:101;;;21221:6;21218:1;21215:13;21212:2;;;-1:-1;19839:14;21277:6;13972:9;21268:16;;21261:27;21212:2;-1:-1;21555:7;21539:14;-1:-1;;21535:28;6225:39;;;;19839:14;6225:39;;13954:192;-1:-1;;;13954:192::o;14153:416::-;14353:2;14367:47;;;6501:2;14338:18;;;19799:19;-1:-1;;;19839:14;;;6517:40;6576:12;;;14324:245::o;14576:416::-;14776:2;14790:47;;;6827:2;14761:18;;;19799:19;6863:25;19839:14;;;6843:46;6908:12;;;14747:245::o;14999:416::-;15199:2;15213:47;;;7159:2;15184:18;;;19799:19;-1:-1;;;19839:14;;;7175:44;7238:12;;;15170:245::o;15422:416::-;15622:2;15636:47;;;7489:2;15607:18;;;19799:19;-1:-1;;;19839:14;;;7505:45;7569:12;;;15593:245::o;15845:416::-;16045:2;16059:47;;;7820:2;16030:18;;;19799:19;7856:30;19839:14;;;7836:51;7906:12;;;16016:245::o;16268:416::-;16468:2;16482:47;;;8157:2;16453:18;;;19799:19;8193:26;19839:14;;;8173:47;8239:12;;;16439:245::o;16691:416::-;16891:2;16905:47;;;8490:2;16876:18;;;19799:19;8526:27;19839:14;;;8506:48;8573:12;;;16862:245::o;17114:416::-;17314:2;17328:47;;;8824:2;17299:18;;;19799:19;8860:27;19839:14;;;8840:48;8907:12;;;17285:245::o;17537:416::-;17737:2;17751:47;;;9158:2;17722:18;;;19799:19;9194:27;19839:14;;;9174:48;9241:12;;;17708:245::o;17960:416::-;18160:2;18174:47;;;9492:2;18145:18;;;19799:19;9528:28;19839:14;;;9508:49;9576:12;;;18131:245::o;18612:333::-;5597:37;;;18931:2;18916:18;;5597:37;18767:2;18752:18;;18738:207::o;20208:335::-;;;20374:8;20362:10;20359:24;20356:2;;;-1:-1;;20386:12;20356:2;20421:6;20411:8;20408:20;20405:2;;;-1:-1;;20431:12;20405:2;-1:-1;;20491:2;20475:19;;20463:32;;20513:25;;;;;-1:-1;20350:193::o

Swarm Source

ipfs://5402583629cbb9b29553a8eabce54846cb1e8838dbe8e919650914a1c23825dd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.