ETH Price: $2,365.12 (-3.96%)

Contract

0x5Dcb742d09ade3Da6461024F91f53518bb309aD5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040168839962023-03-22 15:23:23533 days ago1679498603IN
 Create: ExecutorV2
0 ETH0.0465063232.96240046

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
174415902023-06-09 8:48:11454 days ago1686300491
0x5Dcb742d...8bb309aD5
0 ETH
174414922023-06-09 8:28:23454 days ago1686299303
0x5Dcb742d...8bb309aD5
0 ETH
174388892023-06-08 23:41:23454 days ago1686267683
0x5Dcb742d...8bb309aD5
0 ETH
174356202023-06-08 12:33:47455 days ago1686227627
0x5Dcb742d...8bb309aD5
0 ETH
174352422023-06-08 11:17:35455 days ago1686223055
0x5Dcb742d...8bb309aD5
0 ETH
174350352023-06-08 10:35:35455 days ago1686220535
0x5Dcb742d...8bb309aD5
0 ETH
174346722023-06-08 9:21:35455 days ago1686216095
0x5Dcb742d...8bb309aD5
0 ETH
174333552023-06-08 4:55:23455 days ago1686200123
0x5Dcb742d...8bb309aD5
0 ETH
174307542023-06-07 20:06:59456 days ago1686168419
0x5Dcb742d...8bb309aD5
0 ETH
174270762023-06-07 7:40:23456 days ago1686123623
0x5Dcb742d...8bb309aD5
0 ETH
174243312023-06-06 22:22:11457 days ago1686090131
0x5Dcb742d...8bb309aD5
0 ETH
174242502023-06-06 22:05:35457 days ago1686089135
0x5Dcb742d...8bb309aD5
0 ETH
174219732023-06-06 14:23:35457 days ago1686061415
0x5Dcb742d...8bb309aD5
0 ETH
174219252023-06-06 14:13:47457 days ago1686060827
0x5Dcb742d...8bb309aD5
0 ETH
174217672023-06-06 13:41:23457 days ago1686058883
0x5Dcb742d...8bb309aD5
0 ETH
174214442023-06-06 12:35:47457 days ago1686054947
0x5Dcb742d...8bb309aD5
0 ETH
174203742023-06-06 8:57:35457 days ago1686041855
0x5Dcb742d...8bb309aD5
0 ETH
174201192023-06-06 8:05:35457 days ago1686038735
0x5Dcb742d...8bb309aD5
0 ETH
174198822023-06-06 7:17:59457 days ago1686035879
0x5Dcb742d...8bb309aD5
0 ETH
174147892023-06-05 14:03:59458 days ago1685973839
0x5Dcb742d...8bb309aD5
0 ETH
174142402023-06-05 12:11:47458 days ago1685967107
0x5Dcb742d...8bb309aD5
0 ETH
174137922023-06-05 10:41:23458 days ago1685961683
0x5Dcb742d...8bb309aD5
0 ETH
174136962023-06-05 10:21:35458 days ago1685960495
0x5Dcb742d...8bb309aD5
0 ETH
174132812023-06-05 8:57:47458 days ago1685955467
0x5Dcb742d...8bb309aD5
0 ETH
174130752023-06-05 8:15:47458 days ago1685952947
0x5Dcb742d...8bb309aD5
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ExecutorV2

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 6 : Executorv2.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "./Initializable.sol";
import "./Pausable.sol";
import "./ECDSA.sol";
import "./Mutex.sol";

contract ExecutorV2 is Initializable, Pausable, Mutex {
    uint16 public chainId;
    address public protocolSigner;
    mapping(bytes32 => uint256) public hashes;

    event SignerUpdated(address sender, address oldSigner, address signer);

    function init(
        address admin_,
        uint16 chainId_,
        address signer_
    ) external whenNotInitialized {
        require(admin_ != address(0), "zero address");
        require(signer_ != address(0), "zero address");
        admin = admin_;
        pauser = admin_;
        chainId = chainId_;
        protocolSigner = signer_;
        isInited = true;
    }

    function updateSigner(address signer_) external whenInitialized onlyAdmin {
        require(signer_ != address(0), "zero address");
        emit SignerUpdated(msg.sender, protocolSigner, signer_);
        protocolSigner = signer_;
    }

    function execute(
        uint16 callerChainId_,
        uint16 executionChainId_,
        uint256 nonce_,
        string calldata txHash_,
        address contract_,
        bytes calldata callData_,
        bytes calldata signature_
    ) external whenNotPaused whenInitialized mutex returns (bytes memory) {
        require(chainId == executionChainId_, "uncompatible chain");
        require(contract_ != address(0), "zero address");

        bytes32 data = keccak256(
            abi.encodePacked(
                callerChainId_,
                executionChainId_,
                nonce_,
                bytes(txHash_).length,
                txHash_,
                contract_,
                callData_.length,
                callData_
            )
        );

        require(hashes[data] == 0, "duplicate data");
        require(
            ECDSA.recover(
                keccak256(
                    abi.encodePacked("\x19Ethereum Signed Message:\n32", data)
                ),
                signature_
            ) == protocolSigner,
            "only protocol signer"
        );
        hashes[data] = block.number;

        (bool success_, bytes memory data_) = contract_.call(callData_);
        if (success_) {
            return data_;
        } else {
            if (data_.length > 0) {
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(data_)
                    revert(add(32, data_), returndata_size)
                }
            } else {
                revert("no error");
            }
        }
    }
}

File 2 of 6 : Adminable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Adminable {
    event AdminUpdated(address sender, address oldAdmin, address admin);

    address public admin;

    modifier onlyAdmin() {
        require(admin == msg.sender, "only admin");
        _;
    }

    function updateAdmin(address admin_) external onlyAdmin {
        require(admin_ != address(0), "zero address");
        emit AdminUpdated(msg.sender, admin, admin_);
        admin = admin_;
    }
}

File 3 of 6 : ECDSA.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

library ECDSA {
    function recover(
        bytes32 hash_,
        bytes memory signature_
    ) internal pure returns (address) {
        require(signature_.length == 65, "standart signature only");

        bytes32 r;
        bytes32 s;
        uint8 v;
        assembly {
            r := mload(add(signature_, 32))
            s := mload(add(signature_, 64))
            v := byte(0, mload(add(signature_, 96)))
        }

        if (
            uint256(s) >
            0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0
        ) {
            revert("invalid signature 's' value");
        }
        if (v != 27 && v != 28) {
            revert("invalid signature 'v' value");
        }

        address signer = ecrecover(hash_, v, r, s);
        require(signer != address(0), "invalide signature");
        return signer;
    }
}

File 4 of 6 : Initializable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Initializable {
    bool internal isInited;

    modifier whenInitialized() {
        require(isInited, "not initialized");
        _;
    }

    modifier whenNotInitialized() {
        require(!isInited, "already initialized");
        _;
    }
}

File 5 of 6 : Mutex.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Mutex {
    bool private _lock;

    modifier mutex() {
        require(!_lock, "mutex lock");
        _lock = true;
        _;
        _lock = false;
    }
}

File 6 of 6 : Pausable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "./Adminable.sol";

abstract contract Pausable is Adminable {
    event Paused(address account);
    event Unpaused(address account);
    event PauserUpdated(address sender, address oldPauser, address pauser);

    bool public isPaused;
    address public pauser;

    constructor() {
        isPaused = false;
    }

    modifier whenNotPaused() {
        require(!isPaused, "paused");
        _;
    }

    modifier whenPaused() {
        require(isPaused, "not paused");
        _;
    }

    modifier onlyPauser() {
        require(pauser == msg.sender, "only pauser");
        _;
    }

    function pause() external whenNotPaused onlyPauser {
        isPaused = true;
        emit Paused(msg.sender);
    }

    function unpause() external whenPaused onlyPauser {
        isPaused = false;
        emit Unpaused(msg.sender);
    }

    function updatePauser(address pauser_) external onlyAdmin {
        require(pauser_ != address(0), "zero address");
        emit PauserUpdated(msg.sender, pauser, pauser_);
        pauser = pauser_;
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldPauser","type":"address"},{"indexed":false,"internalType":"address","name":"pauser","type":"address"}],"name":"PauserUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"callerChainId_","type":"uint16"},{"internalType":"uint16","name":"executionChainId_","type":"uint16"},{"internalType":"uint256","name":"nonce_","type":"uint256"},{"internalType":"string","name":"txHash_","type":"string"},{"internalType":"address","name":"contract_","type":"address"},{"internalType":"bytes","name":"callData_","type":"bytes"},{"internalType":"bytes","name":"signature_","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"hashes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"uint16","name":"chainId_","type":"uint16"},{"internalType":"address","name":"signer_","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"}],"name":"updateAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pauser_","type":"address"}],"name":"updatePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer_","type":"address"}],"name":"updateSigner","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506000805460ff60a81b191690556118d88061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80639fd0506d1161008c578063d658d2e911610066578063d658d2e91461020d578063dfd383c91461023b578063e2f273bd1461025b578063f851a4401461026e57600080fd5b80639fd0506d1461017f578063a7ecd37e146101c4578063b187bd26146101d757600080fd5b80637f18311b116100bd5780637f18311b146101145780638456cb591461013d5780639a8a05921461014557600080fd5b80633f4ba83a146100e4578063402a1c4f146100ee578063554bab3c14610101575b600080fd5b6100ec610293565b005b6100ec6100fc3660046115e5565b6103fc565b6100ec61010f366004611628565b610657565b610127610122366004611693565b6107fa565b604051610134919061176e565b60405180910390f35b6100ec610de9565b60015461016c907501000000000000000000000000000000000000000000900461ffff1681565b60405161ffff9091168152602001610134565b60015461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610134565b6100ec6101d2366004611628565b610f60565b6000546101fd907501000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610134565b61022d61021b3660046117da565b60036020526000908152604090205481565b604051908152602001610134565b60025461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ec610269366004611628565b61116f565b60005461019f90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6000547501000000000000000000000000000000000000000000900460ff1661031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207061757365640000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16331461039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60005460ff1615610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff83166104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b600080546001805473ffffffffffffffffffffffffffffffffffffffff9687167fffffffffffffffffff0000ff00000000000000000000000000000000000000009091168117750100000000000000000000000000000000000000000061ffff9790971696909602959095178155600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001694909616939093179094557fffffffffffffffffffffff0000000000000000000000000000000000000000009093166101009092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691909117179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff811661075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6001546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f9b3d82621a55ae56941a49b01b3111acf42e49f89b2af1a6dea8fb9886d3520c9181900360600190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000546060907501000000000000000000000000000000000000000000900460ff1615610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60005460ff166108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b60015474010000000000000000000000000000000000000000900460ff1615610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017908190557501000000000000000000000000000000000000000000900461ffff908116908b1614610a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f756e636f6d70617469626c6520636861696e00000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8616610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b604051600090610ae1908d908d908d908c908e9082908e908d908f9082906020016117f3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915015610b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6475706c696361746520646174610000000000000000000000000000000000006044820152606401610314565b6002546040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810183905273ffffffffffffffffffffffffffffffffffffffff90911690610c3390605c016040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061131c92505050565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c792070726f746f636f6c207369676e65720000000000000000000000006044820152606401610314565b60008181526003602052604080822043905551819073ffffffffffffffffffffffffffffffffffffffff8a1690610cea908a908a90611892565b6000604051808303816000865af19150503d8060008114610d27576040519150601f19603f3d011682016040523d82523d6000602084013e610d2c565b606091505b50915091508115610d41579250610db3915050565b805115610d515780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f206572726f720000000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690559a9950505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff1615610e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016103f2565b60005460ff16610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff81166110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6002546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f138664d729004ff3df437e29920fe415a1c078a8ec492dea367b98e5702070489181900360600190a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6000546040805133815273ffffffffffffffffffffffffffffffffffffffff6101009093048316602082015291831682820152517f9f6130d220a6021d90d78c7ed17b7cfb79f530974405b174fef75f671205513c9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60008151604114611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f7374616e64617274207369676e6174757265206f6e6c790000000000000000006044820152606401610314565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202773272076616c756500000000006044820152606401610314565b8060ff16601b1415801561143d57508060ff16601c14155b156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202776272076616c756500000000006044820152606401610314565b6040805160008082526020820180845289905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156114f8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696465207369676e617475726500000000000000000000000000006044820152606401610314565b9695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ce57600080fd5b919050565b803561ffff811681146115ce57600080fd5b6000806000606084860312156115fa57600080fd5b611603846115aa565b9250611611602085016115d3565b915061161f604085016115aa565b90509250925092565b60006020828403121561163a57600080fd5b611643826115aa565b9392505050565b60008083601f84011261165c57600080fd5b50813567ffffffffffffffff81111561167457600080fd5b60208301915083602082850101111561168c57600080fd5b9250929050565b60008060008060008060008060008060e08b8d0312156116b257600080fd5b6116bb8b6115d3565b99506116c960208c016115d3565b985060408b0135975060608b013567ffffffffffffffff808211156116ed57600080fd5b6116f98e838f0161164a565b909950975087915061170d60808e016115aa565b965060a08d013591508082111561172357600080fd5b61172f8e838f0161164a565b909650945060c08d013591508082111561174857600080fd5b506117558d828e0161164a565b915080935050809150509295989b9194979a5092959850565b600060208083528351808285015260005b8181101561179b5785810183015185820160400152820161177f565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000602082840312156117ec57600080fd5b5035919050565b60007fffff000000000000000000000000000000000000000000000000000000000000808d60f01b168352808c60f01b16600284015250896004830152886024830152868860448401378682017fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b166044820152856058820152838560788301376000930160780192835250909a9950505050505050505050565b818382376000910190815291905056fea2646970667358221220ac2c3fc44705ff4ce136f0dcd62d42f528bbd2156d8e0e275e0b0699b6e13b0164736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80639fd0506d1161008c578063d658d2e911610066578063d658d2e91461020d578063dfd383c91461023b578063e2f273bd1461025b578063f851a4401461026e57600080fd5b80639fd0506d1461017f578063a7ecd37e146101c4578063b187bd26146101d757600080fd5b80637f18311b116100bd5780637f18311b146101145780638456cb591461013d5780639a8a05921461014557600080fd5b80633f4ba83a146100e4578063402a1c4f146100ee578063554bab3c14610101575b600080fd5b6100ec610293565b005b6100ec6100fc3660046115e5565b6103fc565b6100ec61010f366004611628565b610657565b610127610122366004611693565b6107fa565b604051610134919061176e565b60405180910390f35b6100ec610de9565b60015461016c907501000000000000000000000000000000000000000000900461ffff1681565b60405161ffff9091168152602001610134565b60015461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610134565b6100ec6101d2366004611628565b610f60565b6000546101fd907501000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610134565b61022d61021b3660046117da565b60036020526000908152604090205481565b604051908152602001610134565b60025461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ec610269366004611628565b61116f565b60005461019f90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6000547501000000000000000000000000000000000000000000900460ff1661031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207061757365640000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16331461039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60005460ff1615610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff83166104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b600080546001805473ffffffffffffffffffffffffffffffffffffffff9687167fffffffffffffffffff0000ff00000000000000000000000000000000000000009091168117750100000000000000000000000000000000000000000061ffff9790971696909602959095178155600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001694909616939093179094557fffffffffffffffffffffff0000000000000000000000000000000000000000009093166101009092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691909117179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff811661075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6001546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f9b3d82621a55ae56941a49b01b3111acf42e49f89b2af1a6dea8fb9886d3520c9181900360600190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000546060907501000000000000000000000000000000000000000000900460ff1615610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60005460ff166108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b60015474010000000000000000000000000000000000000000900460ff1615610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017908190557501000000000000000000000000000000000000000000900461ffff908116908b1614610a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f756e636f6d70617469626c6520636861696e00000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8616610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b604051600090610ae1908d908d908d908c908e9082908e908d908f9082906020016117f3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915015610b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6475706c696361746520646174610000000000000000000000000000000000006044820152606401610314565b6002546040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810183905273ffffffffffffffffffffffffffffffffffffffff90911690610c3390605c016040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061131c92505050565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c792070726f746f636f6c207369676e65720000000000000000000000006044820152606401610314565b60008181526003602052604080822043905551819073ffffffffffffffffffffffffffffffffffffffff8a1690610cea908a908a90611892565b6000604051808303816000865af19150503d8060008114610d27576040519150601f19603f3d011682016040523d82523d6000602084013e610d2c565b606091505b50915091508115610d41579250610db3915050565b805115610d515780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f206572726f720000000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690559a9950505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff1615610e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016103f2565b60005460ff16610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff81166110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6002546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f138664d729004ff3df437e29920fe415a1c078a8ec492dea367b98e5702070489181900360600190a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6000546040805133815273ffffffffffffffffffffffffffffffffffffffff6101009093048316602082015291831682820152517f9f6130d220a6021d90d78c7ed17b7cfb79f530974405b174fef75f671205513c9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60008151604114611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f7374616e64617274207369676e6174757265206f6e6c790000000000000000006044820152606401610314565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202773272076616c756500000000006044820152606401610314565b8060ff16601b1415801561143d57508060ff16601c14155b156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202776272076616c756500000000006044820152606401610314565b6040805160008082526020820180845289905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156114f8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696465207369676e617475726500000000000000000000000000006044820152606401610314565b9695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ce57600080fd5b919050565b803561ffff811681146115ce57600080fd5b6000806000606084860312156115fa57600080fd5b611603846115aa565b9250611611602085016115d3565b915061161f604085016115aa565b90509250925092565b60006020828403121561163a57600080fd5b611643826115aa565b9392505050565b60008083601f84011261165c57600080fd5b50813567ffffffffffffffff81111561167457600080fd5b60208301915083602082850101111561168c57600080fd5b9250929050565b60008060008060008060008060008060e08b8d0312156116b257600080fd5b6116bb8b6115d3565b99506116c960208c016115d3565b985060408b0135975060608b013567ffffffffffffffff808211156116ed57600080fd5b6116f98e838f0161164a565b909950975087915061170d60808e016115aa565b965060a08d013591508082111561172357600080fd5b61172f8e838f0161164a565b909650945060c08d013591508082111561174857600080fd5b506117558d828e0161164a565b915080935050809150509295989b9194979a5092959850565b600060208083528351808285015260005b8181101561179b5785810183015185820160400152820161177f565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000602082840312156117ec57600080fd5b5035919050565b60007fffff000000000000000000000000000000000000000000000000000000000000808d60f01b168352808c60f01b16600284015250896004830152886024830152868860448401378682017fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b166044820152856058820152838560788301376000930160780192835250909a9950505050505050505050565b818382376000910190815291905056fea2646970667358221220ac2c3fc44705ff4ce136f0dcd62d42f528bbd2156d8e0e275e0b0699b6e13b0164736f6c63430008120033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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