Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multi Chain
Multichain Addresses
N/ALatest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Update State | 5415532 | 757 days 6 hrs ago | IN | 0 ETH | 0.01238071 | ||||
Update State | 5415513 | 757 days 6 hrs ago | IN | 0 ETH | 0.01050137 | ||||
Update State | 5415504 | 757 days 6 hrs ago | IN | 0 ETH | 0.01187929 | ||||
Update State | 5415488 | 757 days 6 hrs ago | IN | 0 ETH | 0.0120118 | ||||
Update State | 5415472 | 757 days 6 hrs ago | IN | 0 ETH | 0.01374689 | ||||
Update State | 5415465 | 757 days 6 hrs ago | IN | 0 ETH | 0.0124345 | ||||
Update State | 5415445 | 757 days 6 hrs ago | IN | 0 ETH | 0.01380961 | ||||
Update State | 5415424 | 757 days 6 hrs ago | IN | 0 ETH | 0.01320589 | ||||
Update State | 5415409 | 757 days 6 hrs ago | IN | 0 ETH | 0.01074125 | ||||
Update State | 5415403 | 757 days 6 hrs ago | IN | 0 ETH | 0.01074527 | ||||
Update State | 5415382 | 757 days 6 hrs ago | IN | 0 ETH | 0.01017136 | ||||
Update State | 5415362 | 757 days 6 hrs ago | IN | 0 ETH | 0.01176095 | ||||
Update State | 5415346 | 757 days 7 hrs ago | IN | 0 ETH | 0.01501902 | ||||
Update State | 5415333 | 757 days 7 hrs ago | IN | 0 ETH | 0.01284616 | ||||
Update State | 5415312 | 757 days 7 hrs ago | IN | 0 ETH | 0.01102731 | ||||
Update State | 5415303 | 757 days 7 hrs ago | IN | 0 ETH | 0.00836706 | ||||
Update State | 5415282 | 757 days 7 hrs ago | IN | 0 ETH | 0.01492857 | ||||
Update State | 5415262 | 757 days 7 hrs ago | IN | 0 ETH | 0.00903175 | ||||
Update State | 5415252 | 757 days 7 hrs ago | IN | 0 ETH | 0.00938566 | ||||
Update State | 5415243 | 757 days 7 hrs ago | IN | 0 ETH | 0.01007633 | ||||
Update State | 5415243 | 757 days 7 hrs ago | IN | 0 ETH | 0.01378114 | ||||
Update State | 5415243 | 757 days 7 hrs ago | IN | 0 ETH | 0.01203149 | ||||
Update State | 5415213 | 757 days 7 hrs ago | IN | 0 ETH | 0.01331591 | ||||
Update State | 5415213 | 757 days 7 hrs ago | IN | 0 ETH | 0.01108686 | ||||
Update State | 5415182 | 757 days 7 hrs ago | IN | 0 ETH | 0.01115981 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
5644156 | 717 days 13 hrs ago | 0 ETH | ||||
5644128 | 717 days 13 hrs ago | 0 ETH | ||||
5643829 | 717 days 14 hrs ago | 0 ETH | ||||
5415532 | 757 days 6 hrs ago | 0 ETH | ||||
5415513 | 757 days 6 hrs ago | 0 ETH | ||||
5415504 | 757 days 6 hrs ago | 0 ETH | ||||
5415488 | 757 days 6 hrs ago | 0 ETH | ||||
5415472 | 757 days 6 hrs ago | 0 ETH | ||||
5415465 | 757 days 6 hrs ago | 0 ETH | ||||
5415445 | 757 days 6 hrs ago | 0 ETH | ||||
5415424 | 757 days 6 hrs ago | 0 ETH | ||||
5415409 | 757 days 6 hrs ago | 0 ETH | ||||
5415403 | 757 days 6 hrs ago | 0 ETH | ||||
5415382 | 757 days 6 hrs ago | 0 ETH | ||||
5415362 | 757 days 6 hrs ago | 0 ETH | ||||
5415346 | 757 days 7 hrs ago | 0 ETH | ||||
5415333 | 757 days 7 hrs ago | 0 ETH | ||||
5415312 | 757 days 7 hrs ago | 0 ETH | ||||
5415303 | 757 days 7 hrs ago | 0 ETH | ||||
5415282 | 757 days 7 hrs ago | 0 ETH | ||||
5415262 | 757 days 7 hrs ago | 0 ETH | ||||
5415252 | 757 days 7 hrs ago | 0 ETH | ||||
5415243 | 757 days 7 hrs ago | 0 ETH | ||||
5415243 | 757 days 7 hrs ago | 0 ETH | ||||
5415243 | 757 days 7 hrs ago | 0 ETH |
Loading...
Loading
Contract Name:
Starknet
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
/* 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; } }
/* 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); }
/* 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); }
/* 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); } }
/* 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; } }
/* 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); } }
[{"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"}]
Contract Creation Code
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
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.