Contract 0xD9e492C3899aC768F67aD9AdC0Ce88aAB5463f60 1

Contract Overview

Balance:
0 MATIC
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xf76da4abbb15baa6ada937252d5ce0dc5e5f89c595d509c96fb78e9d50e3b08b0x60a06040263485812022-05-17 11:12:21313 days 17 mins ago0x5fd7d0d6b91cc4787bcb86ca47e0bd4ea0346d34 IN  Create: Socket0 MATIC0.08174807412 44.010938723
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Socket

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 800 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : Socket.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.4;

import "./interfaces/ISocket.sol";
import "./interfaces/IChannel.sol";
import "./interfaces/IExecutor.sol";
import "./interfaces/IPlug.sol";
import "./interfaces/IProver.sol";

contract Socket is ISocket {
    // localPlug => remoteChain => OutboundConfig
    mapping(address => mapping(uint256 => OutboundConfig)) public outboundConfigs;

    // localPlug => remoteChain => InboundConfig
    mapping(address => mapping(uint256 => InboundConfig)) public inboundConfigs;

    // channel => chainId => root => confimations
    mapping(address => mapping(uint256 => mapping(bytes32 => uint256))) public confirmations;

    // packetId => status
    mapping(bytes32 => bool) public executeStatus;

    // localPlug => remoteChainId => nonce
    mapping(address => mapping(uint256 => uint256)) public nonces;

    // remotePlug => remoteChainId => nonce
    mapping(address => mapping(uint256 => uint256)) public nextNonceToProcess;

    uint256 immutable chainId;
    uint256 public constant RESERVE_GAS = 20000; // should be enough to make plug inbound call and handle error if needed

    constructor(uint256 _chainId) {
        chainId = _chainId;
    }

    function setInboundConfig(
        uint256 remoteChainId,
        address channel,
        address executor,
        address prover,
        uint256 requiredConfs,
        bool isBlocking
    ) external override {
        InboundConfig storage config = inboundConfigs[msg.sender][remoteChainId];
        config.channel = channel;
        config.executor = executor;
        config.prover = prover;
        config.requiredConfs = requiredConfs;
        config.isBlocking = isBlocking;
    }

    function setOutboundConfig(
        uint256 remoteChainId,
        address channel,
        address executor,
        address prover
    ) external override {
        OutboundConfig storage config = outboundConfigs[msg.sender][remoteChainId];
        config.channel = channel;
        config.executor = executor;
        config.prover = prover;
    }

    function outbound(
        uint256 remoteChainId,
        address remotePlug,
        bytes calldata payload
    ) external override {
        uint256 nonce = nonces[msg.sender][remoteChainId]++;
        OutboundConfig memory config = outboundConfigs[msg.sender][remoteChainId];

        Packet memory p = Packet(chainId, msg.sender, address(this), remotePlug, remoteChainId, nonce, payload);
        IProver(config.prover).addPacket(p);

        emit Transmit(p);
        IChannel(config.channel).notify(p);
        IExecutor(config.executor).notify(p);
    }

    function sync(
        bytes32 root,
        uint256 _confirmations,
        uint256 remoteChainId
    ) external override {
        require(confirmations[msg.sender][remoteChainId][root] < _confirmations, "Socket: invalid confirmations");
        confirmations[msg.sender][remoteChainId][root] = _confirmations;
        emit Sync(root, _confirmations, remoteChainId);
    }

    function execute(
        bytes calldata proof,
        Packet calldata packet,
        bytes32 root
    ) external override {
        address plug = packet.dstPlug;
        uint256 remoteChainId = packet.srcChainId;
        InboundConfig memory config = inboundConfigs[plug][remoteChainId];

        require(
            confirmations[config.channel][remoteChainId][root] >= config.requiredConfs,
            "Socket: Need confirmations"
        );
        require(config.executor == msg.sender, "Socket: Invalid executor");

        require(IProver(config.prover).validatePacket(root, packet, proof), "Socket: INVALID_PROOF");

        if (config.isBlocking) {
            require(nextNonceToProcess[packet.srcPlug][packet.srcChainId]++ == packet.nonce, "Socket: INVALID_NONCE");
        }

        bytes32 packetId = keccak256(abi.encode(packet));
        require(!executeStatus[packetId], "Socket: PROCESSED");
        executeStatus[packetId] = true;
        emit Executing(packet);

        try IPlug(plug).inbound{ gas: gasleft() - RESERVE_GAS }(packet.payload) {
            emit ExecutionSuccess(packetId);
        } catch (bytes memory) {
            executeStatus[packetId] = false;
            emit ExecutionFailure(packetId);
        }
    }
}

File 2 of 6 : ISocket.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.4;

interface ISocket {
    // Transmit is emitted when a packet is ready for transmission
    event Transmit(Packet _packet);

    event Sync(bytes32 root, uint256 confirmations, uint256 chainId);

    event Executing(Packet _packet);
    event ExecutionSuccess(bytes32 packetId);
    event ExecutionFailure(bytes32 packetId);

    // Packet is sent across-layers via Socket
    // its encoded on the local Socket
    // and decoded on the remote Socket
    // to execute there
    struct Packet {
        uint256 srcChainId;
        address srcPlug;
        address srcSocket;
        address dstPlug;
        uint256 dstChainId;
        uint256 nonce;
        bytes payload;
    }

    struct InboundConfig {
        address channel;
        address executor;
        address prover;
        uint256 requiredConfs;
        bool isBlocking;
    }

    struct OutboundConfig {
        address channel;
        address executor;
        address prover;
    }

    function setInboundConfig(
        uint256 remoteChainId,
        address channel,
        address executor,
        address prover,
        uint256 requiredConfs,
        bool isBlocking
    ) external;

    function setOutboundConfig(
        uint256 remoteChainId,
        address channel,
        address executor,
        address prover
    ) external;

    // plug
    function outbound(
        uint256 remoteChainId,
        address remotePlug,
        bytes calldata payload
    ) external;

    // channel
    function sync(
        bytes32 root,
        uint256 confs,
        uint256 chainID
    ) external;

    // executor
    // NOTICE
    // relayer will prove payload exits in root
    function execute(
        bytes memory proof,
        Packet memory packet,
        bytes32 root
    ) external;
}

File 3 of 6 : IChannel.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.4;

import "./ISocket.sol";

interface IChannel {
    function notify(ISocket.Packet calldata packet) external;
}

File 4 of 6 : IExecutor.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.4;

import "./ISocket.sol";

interface IExecutor {
    function notify(ISocket.Packet calldata packet) external;
}

File 5 of 6 : IPlug.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.4;

interface IPlug {
    function inbound(bytes calldata payload) external;
}

File 6 of 6 : IProver.sol
// SPDX-License-Identifier: BUSL-1.1

pragma solidity >=0.8.4;
pragma abicoder v2;

import { ISocket } from "./ISocket.sol";

interface IProver {
    //     function validateProof(bytes32 blockData, bytes calldata _data, uint _remoteAddressSize) external returns (Packet memory packet);
    function validatePacket(
        bytes32 root,
        ISocket.Packet calldata packet,
        bytes calldata proof
    ) external returns (bool);

    function addPacket(ISocket.Packet calldata packet) external;
}

Settings
{
  "metadata": {
    "bytecodeHash": "none",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": false,
    "runs": 800
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"srcChainId","type":"uint256"},{"internalType":"address","name":"srcPlug","type":"address"},{"internalType":"address","name":"srcSocket","type":"address"},{"internalType":"address","name":"dstPlug","type":"address"},{"internalType":"uint256","name":"dstChainId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"indexed":false,"internalType":"struct ISocket.Packet","name":"_packet","type":"tuple"}],"name":"Executing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"packetId","type":"bytes32"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"packetId","type":"bytes32"}],"name":"ExecutionSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"root","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"confirmations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"srcChainId","type":"uint256"},{"internalType":"address","name":"srcPlug","type":"address"},{"internalType":"address","name":"srcSocket","type":"address"},{"internalType":"address","name":"dstPlug","type":"address"},{"internalType":"uint256","name":"dstChainId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"indexed":false,"internalType":"struct ISocket.Packet","name":"_packet","type":"tuple"}],"name":"Transmit","type":"event"},{"inputs":[],"name":"RESERVE_GAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"confirmations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"components":[{"internalType":"uint256","name":"srcChainId","type":"uint256"},{"internalType":"address","name":"srcPlug","type":"address"},{"internalType":"address","name":"srcSocket","type":"address"},{"internalType":"address","name":"dstPlug","type":"address"},{"internalType":"uint256","name":"dstChainId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"internalType":"struct ISocket.Packet","name":"packet","type":"tuple"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"executeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"inboundConfigs","outputs":[{"internalType":"address","name":"channel","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"uint256","name":"requiredConfs","type":"uint256"},{"internalType":"bool","name":"isBlocking","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nextNonceToProcess","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"remoteChainId","type":"uint256"},{"internalType":"address","name":"remotePlug","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"outbound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"outboundConfigs","outputs":[{"internalType":"address","name":"channel","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"address","name":"prover","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"remoteChainId","type":"uint256"},{"internalType":"address","name":"channel","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"uint256","name":"requiredConfs","type":"uint256"},{"internalType":"bool","name":"isBlocking","type":"bool"}],"name":"setInboundConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"remoteChainId","type":"uint256"},{"internalType":"address","name":"channel","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"address","name":"prover","type":"address"}],"name":"setOutboundConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"_confirmations","type":"uint256"},{"internalType":"uint256","name":"remoteChainId","type":"uint256"}],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b50604051620021763803806200217683398181016040528101906200003791906200005d565b806080818152505050620000ad565b600081519050620000578162000093565b92915050565b6000602082840312156200007057600080fd5b6000620000808482850162000046565b91505092915050565b6000819050919050565b6200009e8162000089565b8114620000aa57600080fd5b50565b6080516120ad620000c96000396000610cad01526120ad6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063502e1a1611610081578063c3437d771161005b578063c3437d771461022b578063ebb046731461025d578063f694e06514610279576100d4565b8063502e1a16146101af578063917fe03a146101df578063b63ba6b71461020f576100d4565b806325e3beda116100b257806325e3beda1461014157806328db0ce91461015f57806335f186f41461017b576100d4565b806309d3ce82146100d95780630cdb0b29146100f55780630fa461eb14610111575b600080fd5b6100f360048036038101906100ee919061163c565b6102a9565b005b61010f600480360381019061010a9190611555565b6103f4565b005b61012b60048036038101906101269190611429565b610aaa565b6040516101389190611cc8565b60405180910390f35b610149610acf565b6040516101569190611cc8565b60405180910390f35b610179600480360381019061017491906116c5565b610ad5565b005b61019560048036038101906101909190611429565b610f08565b6040516101a6959493929190611a99565b60405180910390f35b6101c960048036038101906101c49190611429565b610fb8565b6040516101d69190611cc8565b60405180910390f35b6101f960048036038101906101f49190611465565b610fdd565b6040516102069190611cc8565b60405180910390f35b610229600480360381019061022491906115d9565b61100f565b005b61024560048036038101906102409190611429565b611132565b60405161025493929190611a62565b60405180910390f35b61027760048036038101906102729190611506565b6111c9565b005b610293600480360381019061028e91906114dd565b611312565b6040516102a09190611aec565b60405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000209050858160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160030181905550818160040160006101000a81548160ff02191690831515021790555050505050505050565b60008260600160208101906104099190611400565b90506000836000013590506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206040518060a00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff1615151515815250509050806060015160026000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000868152602001908152602001600020541015610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90611c64565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16146106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106af90611c44565b60405180910390fd5b806040015173ffffffffffffffffffffffffffffffffffffffff16632dfb8e4385878a8a6040518563ffffffff1660e01b81526004016106fb9493929190611b22565b602060405180830381600087803b15801561071557600080fd5b505af1158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d91906114b4565b61078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078390611c04565b60405180910390fd5b806080015115610857578460a00135600560008760200160208101906107b29190611400565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087600001358152602001908152602001600020600081548092919061081290611ec5565b9190505514610856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084d90611bc4565b60405180910390fd5b5b60008560405160200161086a9190611c84565b6040516020818303038152906040528051906020012090506003600082815260200190815260200160002060009054906101000a900460ff16156108e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108da90611c24565b60405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055507f048718db17ba80f7cb912549f3131b842254ead3970c757ec86010db9a8c94948660405161093e9190611c84565b60405180910390a18373ffffffffffffffffffffffffffffffffffffffff1663d02ce0a9614e205a6109709190611dfd565b888060c001906109809190611ce3565b6040518463ffffffff1660e01b815260040161099d929190611ba0565b600060405180830381600088803b1580156109b757600080fd5b5087f1935050505080156109c9575060015b610a68573d80600081146109f9576040519150601f19603f3d011682016040523d82523d6000602084013e6109fe565b606091505b5060006003600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdbe42d02a4e07d7eeff2874efe172540c93b297d206f6d691c9782a257323e3282604051610a5a9190611b07565b60405180910390a150610aa0565b7fdc29884a71d2bb98d3c53dc09718be05c7bfd142b7773a5c5cf2517629290ac081604051610a979190611b07565b60405180910390a15b5050505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b614e2081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206000815480929190610b3890611ec5565b91905055905060008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905060006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200188815260200184815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152509050816040015173ffffffffffffffffffffffffffffffffffffffff1663b4447c11826040518263ffffffff1660e01b8152600401610db89190611ca6565b600060405180830381600087803b158015610dd257600080fd5b505af1158015610de6573d6000803e3d6000fd5b505050507f5448f0f5a7b0cda6abe54d1f6aefe99c5b975231606fc9e83f38c37e4274ec9881604051610e199190611ca6565b60405180910390a1816000015173ffffffffffffffffffffffffffffffffffffffff166398b1b859826040518263ffffffff1660e01b8152600401610e5e9190611ca6565b600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b50505050816020015173ffffffffffffffffffffffffffffffffffffffff166398b1b859826040518263ffffffff1660e01b8152600401610ecd9190611ca6565b600060405180830381600087803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b5050505050505050505050565b6001602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040160009054906101000a900460ff16905085565b6004602052816000526040600020602052806000526040600020600091509150505481565b600260205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000209050838160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6000602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000858152602001908152602001600020541061126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390611be4565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000858152602001908152602001600020819055507fde3ff08ff95b98c67eeff3f890d8feae4ee5a3bce2ea568929d244155ddfab4983838360405161130593929190611b69565b60405180910390a1505050565b60036020528060005260406000206000915054906101000a900460ff1681565b60008135905061134181612044565b92915050565b6000813590506113568161205b565b92915050565b60008151905061136b8161205b565b92915050565b60008135905061138081612072565b92915050565b60008083601f84011261139857600080fd5b8235905067ffffffffffffffff8111156113b157600080fd5b6020830191508360018202830111156113c957600080fd5b9250929050565b600060e082840312156113e257600080fd5b81905092915050565b6000813590506113fa81612089565b92915050565b60006020828403121561141257600080fd5b600061142084828501611332565b91505092915050565b6000806040838503121561143c57600080fd5b600061144a85828601611332565b925050602061145b858286016113eb565b9150509250929050565b60008060006060848603121561147a57600080fd5b600061148886828701611332565b9350506020611499868287016113eb565b92505060406114aa86828701611371565b9150509250925092565b6000602082840312156114c657600080fd5b60006114d48482850161135c565b91505092915050565b6000602082840312156114ef57600080fd5b60006114fd84828501611371565b91505092915050565b60008060006060848603121561151b57600080fd5b600061152986828701611371565b935050602061153a868287016113eb565b925050604061154b868287016113eb565b9150509250925092565b6000806000806060858703121561156b57600080fd5b600085013567ffffffffffffffff81111561158557600080fd5b61159187828801611386565b9450945050602085013567ffffffffffffffff8111156115b057600080fd5b6115bc878288016113d0565b92505060406115cd87828801611371565b91505092959194509250565b600080600080608085870312156115ef57600080fd5b60006115fd878288016113eb565b945050602061160e87828801611332565b935050604061161f87828801611332565b925050606061163087828801611332565b91505092959194509250565b60008060008060008060c0878903121561165557600080fd5b600061166389828a016113eb565b965050602061167489828a01611332565b955050604061168589828a01611332565b945050606061169689828a01611332565b93505060806116a789828a016113eb565b92505060a06116b889828a01611347565b9150509295509295509295565b600080600080606085870312156116db57600080fd5b60006116e9878288016113eb565b94505060206116fa87828801611332565b935050604085013567ffffffffffffffff81111561171757600080fd5b61172387828801611386565b925092505092959194509250565b61173a81611e31565b82525050565b61174981611e31565b82525050565b61175881611e43565b82525050565b61176781611e4f565b82525050565b60006117798385611d45565b9350611786838584611e83565b61178f83611f3d565b840190509392505050565b60006117a68385611d56565b93506117b3838584611e83565b6117bc83611f3d565b840190509392505050565b60006117d282611d3a565b6117dc8185611d45565b93506117ec818560208601611e92565b6117f581611f3d565b840191505092915050565b600061180d601583611d67565b915061181882611f4e565b602082019050919050565b6000611830601d83611d67565b915061183b82611f77565b602082019050919050565b6000611853601583611d67565b915061185e82611fa0565b602082019050919050565b6000611876601183611d67565b915061188182611fc9565b602082019050919050565b6000611899601883611d67565b91506118a482611ff2565b602082019050919050565b60006118bc601a83611d67565b91506118c78261201b565b602082019050919050565b600060e083016118e56000840184611de6565b6118f26000860182611a44565b506119006020840184611d78565b61190d6020860182611731565b5061191b6040840184611d78565b6119286040860182611731565b506119366060840184611d78565b6119436060860182611731565b506119516080840184611de6565b61195e6080860182611a44565b5061196c60a0840184611de6565b61197960a0860182611a44565b5061198760c0840184611d8f565b85830360c087015261199a83828461176d565b925050508091505092915050565b600060e0830160008301516119c06000860182611a44565b5060208301516119d36020860182611731565b5060408301516119e66040860182611731565b5060608301516119f96060860182611731565b506080830151611a0c6080860182611a44565b5060a0830151611a1f60a0860182611a44565b5060c083015184820360c0860152611a3782826117c7565b9150508091505092915050565b611a4d81611e79565b82525050565b611a5c81611e79565b82525050565b6000606082019050611a776000830186611740565b611a846020830185611740565b611a916040830184611740565b949350505050565b600060a082019050611aae6000830188611740565b611abb6020830187611740565b611ac86040830186611740565b611ad56060830185611a53565b611ae2608083018461174f565b9695505050505050565b6000602082019050611b01600083018461174f565b92915050565b6000602082019050611b1c600083018461175e565b92915050565b6000606082019050611b37600083018761175e565b8181036020830152611b4981866118d2565b90508181036040830152611b5e81848661179a565b905095945050505050565b6000606082019050611b7e600083018661175e565b611b8b6020830185611a53565b611b986040830184611a53565b949350505050565b60006020820190508181036000830152611bbb81848661179a565b90509392505050565b60006020820190508181036000830152611bdd81611800565b9050919050565b60006020820190508181036000830152611bfd81611823565b9050919050565b60006020820190508181036000830152611c1d81611846565b9050919050565b60006020820190508181036000830152611c3d81611869565b9050919050565b60006020820190508181036000830152611c5d8161188c565b9050919050565b60006020820190508181036000830152611c7d816118af565b9050919050565b60006020820190508181036000830152611c9e81846118d2565b905092915050565b60006020820190508181036000830152611cc081846119a8565b905092915050565b6000602082019050611cdd6000830184611a53565b92915050565b60008083356001602003843603038112611cfc57600080fd5b80840192508235915067ffffffffffffffff821115611d1a57600080fd5b602083019250600182023603831315611d3257600080fd5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d876020840184611332565b905092915050565b60008083356001602003843603038112611da857600080fd5b83810192508235915060208301925067ffffffffffffffff821115611dcc57600080fd5b600182023603841315611dde57600080fd5b509250929050565b6000611df560208401846113eb565b905092915050565b6000611e0882611e79565b9150611e1383611e79565b925082821015611e2657611e25611f0e565b5b828203905092915050565b6000611e3c82611e59565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611eb0578082015181840152602081019050611e95565b83811115611ebf576000848401525b50505050565b6000611ed082611e79565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f0357611f02611f0e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f536f636b65743a20494e56414c49445f4e4f4e43450000000000000000000000600082015250565b7f536f636b65743a20696e76616c696420636f6e6669726d6174696f6e73000000600082015250565b7f536f636b65743a20494e56414c49445f50524f4f460000000000000000000000600082015250565b7f536f636b65743a2050524f434553534544000000000000000000000000000000600082015250565b7f536f636b65743a20496e76616c6964206578656375746f720000000000000000600082015250565b7f536f636b65743a204e65656420636f6e6669726d6174696f6e73000000000000600082015250565b61204d81611e31565b811461205857600080fd5b50565b61206481611e43565b811461206f57600080fd5b50565b61207b81611e4f565b811461208657600080fd5b50565b61209281611e79565b811461209d57600080fd5b5056fea164736f6c6343000804000a0000000000000000000000000000000000000000000000000000000000013881

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

0000000000000000000000000000000000000000000000000000000000013881

-----Decoded View---------------
Arg [0] : _chainId (uint256): 80001

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000013881


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading