ETH Price: $1,898.13 (-0.78%)

Contract

0xca726096f4077D65620C115E27538e040EdB61A2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw All121161862021-03-26 18:11:281468 days ago1616782288IN
0xca726096...40EdB61A2
0 ETH0.00441342180
Submit Claim121153592021-03-26 15:09:481468 days ago1616771388IN
0xca726096...40EdB61A2
0 ETH0.00510088156
Submit Claim121153362021-03-26 15:05:001468 days ago1616771100IN
0xca726096...40EdB61A2
0 ETH0.02057649292.5
Deposit And Lock121092702021-03-25 16:51:371469 days ago1616691097IN
0xca726096...40EdB61A2
1 ETH0.00702343206.25
Deposit And Lock121091402021-03-25 16:25:541469 days ago1616689554IN
0xca726096...40EdB61A2
5 ETH0.02089729326.25
Whitelist Mining...120499222021-03-16 13:34:021478 days ago1615901642IN
0xca726096...40EdB61A2
0 ETH0.0064411148.00000145

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-121161862021-03-26 18:11:281468 days ago1616782288
0xca726096...40EdB61A2
1.86293477 ETH
-121153362021-03-26 15:05:001468 days ago1616771100
0xca726096...40EdB61A2
4.13706522 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LogOfClaimedMEVBlocks

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-03-16
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// In the first version, claimed block nonce / mixDigest IS NOT VERIFIED
// This contract assumes that MEV block template producer completely TRUSTS pool operator that received the signed work order.
// This contract !DOES NOT VERIFY! that block nonce / mixDigest is valid or that it was broadcasted without delay
// In the next version we're planning to introduce trustless approach to verify submited block nonce on-chain(see smartpool) and verify delay in seconds for share submission(using oracles)
contract LogOfClaimedMEVBlocks is Ownable {
    uint256 internal constant FLAG_BLOCK_NONCE_LIMIT = 0x10000000000000000;
    mapping (address => uint) public timestampOfPossibleExit;
    mapping (address => uint) public depositedEther;

    mapping (address => address) public blockSubmissionsOperator;
    mapping (bytes32 => uint) public claimedBlockNonce;
    mapping (bytes32 => bytes32) public claimedBlockMixDigest;

    event Deposit(address user, uint amount);
    event Withdraw(address user, uint amount);
    event BlockClaimed(bytes32 blockHeader, bytes32 seedHash, bytes32 target, uint blockNumber, uint blockPayment, address miningPoolAddress, address mevProducerAddress, uint blockNonce, bytes32 mixDigest);


    // Add another mining pool to mining DAO which will receive signed work orders directly from mev producers
    function whitelistMiningPool(address miningPoolAddress) onlyOwner external {
        assert(msg.data.length == 36);
        blockSubmissionsOperator[miningPoolAddress] = miningPoolAddress;
    }

    function setBlockSubmissionsOperator(address newBlockSubmissionsOperator) external {
        assert(msg.data.length == 36);
        // This mining pool was already whitelisted
        require(blockSubmissionsOperator[msg.sender] != 0x0000000000000000000000000000000000000000);
        blockSubmissionsOperator[msg.sender] = newBlockSubmissionsOperator;
    }

    function depositAndLock(uint depositAmount, uint depositDuration) public payable {
        require(depositAmount == msg.value);
        // Enforcing min and max lockup durations
        require(depositDuration >= 24 * 60 * 60 && depositDuration < 365 * 24 * 60 * 60);
        timestampOfPossibleExit[msg.sender] = block.timestamp + depositDuration;
        if (msg.value > 0) {
            depositedEther[msg.sender] += msg.value;
        }
        emit Deposit(msg.sender, msg.value);
    }
    fallback () external payable {
        depositAndLock(msg.value, 24 * 60 * 60);
    }


    function withdrawEtherInternal(uint etherAmount) internal {
        // User previously deposited into contract
        require(depositedEther[msg.sender] > 0);
        // Deposit lockup period is over
        require(block.timestamp > timestampOfPossibleExit[msg.sender]);
        if (depositedEther[msg.sender] < etherAmount)
            etherAmount = depositedEther[msg.sender];
        depositedEther[msg.sender] -= etherAmount;
        msg.sender.transfer(etherAmount);
        emit Withdraw(msg.sender, etherAmount);
    }

    function withdrawAll() external {
        withdrawEtherInternal((uint)(-1));
    }
    function withdraw(uint etherAmount) external {
        withdrawEtherInternal(etherAmount);
    }


    function submitClaim(
        bytes32 blockHeader,
        bytes32 seedHash,
        bytes32 target,
        uint blockNumber,
        uint blockPayment,
        address payable miningPoolAddress,
        address mevProducerAddress,
        uint8 v,
        bytes32 r,
        bytes32 s,
        uint blockNonce,
        bytes32 mixDigest
    ) external {
        require(msg.sender == blockSubmissionsOperator[miningPoolAddress]);
        bytes32 hash = keccak256(abi.encodePacked(blockHeader, seedHash, target, blockNumber, blockPayment, miningPoolAddress));
        if (claimedBlockNonce[hash] == 0 && blockNonce < FLAG_BLOCK_NONCE_LIMIT) {
            if (ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == mevProducerAddress) {
                require(depositedEther[mevProducerAddress] >= blockPayment);
                claimedBlockNonce[hash] = FLAG_BLOCK_NONCE_LIMIT + blockNonce;
                claimedBlockMixDigest[hash] = mixDigest;
                depositedEther[mevProducerAddress] -= blockPayment;
                miningPoolAddress.transfer(blockPayment);
                emit BlockClaimed(blockHeader, seedHash, target, blockNumber, blockPayment, miningPoolAddress, mevProducerAddress, blockNonce, mixDigest);
            }
        }
    }

    function checkValidityOfGetWork(
        bytes32 blockHeader,
        bytes32 seedHash,
        bytes32 target,
        uint blockNumber,
        uint blockPayment,
        address miningPoolAddress,
        address mevProducerAddress,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public view returns (bool isWorkSignatureCorrect, uint remainingDuration) {
        bytes32 hash = keccak256(abi.encodePacked(blockHeader, seedHash, target, blockNumber, blockPayment, miningPoolAddress));
        if (claimedBlockNonce[hash] == 0) {
            if (ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == mevProducerAddress) {
                isWorkSignatureCorrect = true;
                if (depositedEther[mevProducerAddress] >= blockPayment && timestampOfPossibleExit[mevProducerAddress] >  block.timestamp) {
                    remainingDuration = timestampOfPossibleExit[mevProducerAddress] - block.timestamp;
                }
            }
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"blockHeader","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"seedHash","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"target","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockPayment","type":"uint256"},{"indexed":false,"internalType":"address","name":"miningPoolAddress","type":"address"},{"indexed":false,"internalType":"address","name":"mevProducerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"blockNonce","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"mixDigest","type":"bytes32"}],"name":"BlockClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blockSubmissionsOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"blockHeader","type":"bytes32"},{"internalType":"bytes32","name":"seedHash","type":"bytes32"},{"internalType":"bytes32","name":"target","type":"bytes32"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"blockPayment","type":"uint256"},{"internalType":"address","name":"miningPoolAddress","type":"address"},{"internalType":"address","name":"mevProducerAddress","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"checkValidityOfGetWork","outputs":[{"internalType":"bool","name":"isWorkSignatureCorrect","type":"bool"},{"internalType":"uint256","name":"remainingDuration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimedBlockMixDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimedBlockNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"depositAmount","type":"uint256"},{"internalType":"uint256","name":"depositDuration","type":"uint256"}],"name":"depositAndLock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedEther","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newBlockSubmissionsOperator","type":"address"}],"name":"setBlockSubmissionsOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"blockHeader","type":"bytes32"},{"internalType":"bytes32","name":"seedHash","type":"bytes32"},{"internalType":"bytes32","name":"target","type":"bytes32"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"blockPayment","type":"uint256"},{"internalType":"address payable","name":"miningPoolAddress","type":"address"},{"internalType":"address","name":"mevProducerAddress","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"uint256","name":"blockNonce","type":"uint256"},{"internalType":"bytes32","name":"mixDigest","type":"bytes32"}],"name":"submitClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"timestampOfPossibleExit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miningPoolAddress","type":"address"}],"name":"whitelistMiningPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"etherAmount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610dec8061007d6000396000f3fe6080604052600436106100e85760003560e01c8063853828b61161008a578063b1df402f11610059578063b1df402f1461038a578063bfc10279146103bd578063efd874af146103e0578063f2fde38b14610413576100e8565b8063853828b6146102355780638da5cb5b1461024a5780638f0c18251461027b578063954648b3146102fc576100e8565b8063399ff3dd116100c6578063399ff3dd14610199578063482ed2a2146101c3578063715018a6146101f6578063742d94ed1461020b576100e8565b8063044c5769146100f757806319d40c101461013c5780632e1a7d4d1461016f575b6100f53462015180610446565b005b34801561010357600080fd5b5061012a6004803603602081101561011a57600080fd5b50356001600160a01b03166104df565b60408051918252519081900360200190f35b34801561014857600080fd5b506100f56004803603602081101561015f57600080fd5b50356001600160a01b03166104f1565b34801561017b57600080fd5b506100f56004803603602081101561019257600080fd5b5035610559565b3480156101a557600080fd5b5061012a600480360360208110156101bc57600080fd5b5035610565565b3480156101cf57600080fd5b5061012a600480360360208110156101e657600080fd5b50356001600160a01b0316610577565b34801561020257600080fd5b506100f5610589565b34801561021757600080fd5b5061012a6004803603602081101561022e57600080fd5b5035610654565b34801561024157600080fd5b506100f5610666565b34801561025657600080fd5b5061025f610673565b604080516001600160a01b039092168252519081900360200190f35b34801561028757600080fd5b506100f5600480360361018081101561029f57600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e082013516906101008101359061012081013590610140810135906101600135610682565b34801561030857600080fd5b5061036f600480360361014081101561032057600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e0820135169061010081013590610120013561090f565b60408051921515835260208301919091528051918290030190f35b34801561039657600080fd5b506100f5600480360360208110156103ad57600080fd5b50356001600160a01b0316610ac0565b6100f5600480360360408110156103d357600080fd5b5080359060200135610446565b3480156103ec57600080fd5b5061025f6004803603602081101561040357600080fd5b50356001600160a01b0316610b75565b34801561041f57600080fd5b506100f56004803603602081101561043657600080fd5b50356001600160a01b0316610b90565b34821461045257600080fd5b62015180811015801561046857506301e1338081105b61047157600080fd5b336000908152600160205260409020428201905534156104a1573360009081526002602052604090208054340190555b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15050565b60016020526000908152604090205481565b602436146104fb57fe5b336000908152600360205260409020546001600160a01b031661051d57600080fd5b336000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61056281610cb1565b50565b60046020526000908152604090205481565b60026020526000908152604090205481565b610591610d8c565b6001600160a01b03166105a2610673565b6001600160a01b0316146105fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60056020526000908152604090205481565b610671600019610cb1565b565b6000546001600160a01b031690565b6001600160a01b038781166000908152600360205260409020541633146106a857600080fd5b6040805160208082018f90528183018e905260608083018e9052608083018d905260a083018c90528a901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529190205415801561072457506801000000000000000083105b1561090057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156107db573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610900576001600160a01b03871660009081526002602052604090205489111561081957600080fd5b60008181526004602090815260408083206801000000000000000087019055600582528083208590556001600160a01b03808b168452600290925280832080548d9003905551908a16918b156108fc02918c91818181858888f19350505050158015610889573d6000803e3d6000fd5b50604080518e8152602081018e90528082018d9052606081018c9052608081018b90526001600160a01b03808b1660a0830152891660c082015260e08101859052610100810184905290517f3da6c93964cc5a2d7155868e6efef7f5c61022c4b932b267b92f808501635755918190036101200190a15b50505050505050505050505050565b6040805160208082018d90528183018c905260608083018c9052608083018b905260a083018a905288901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529181205490918291610ab057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a30573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610ab0576001600160a01b038716600090815260026020526040902054600193508911801590610a8c57506001600160a01b03871660009081526001602052604090205442105b15610ab0576001600160a01b03871660009081526001602052604090205442900391505b509a509a98505050505050505050565b610ac8610d8c565b6001600160a01b0316610ad9610673565b6001600160a01b031614610b34576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60243614610b3e57fe5b6001600160a01b03166000818152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6003602052600090815260409020546001600160a01b031681565b610b98610d8c565b6001600160a01b0316610ba9610673565b6001600160a01b031614610c04576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610c495760405162461bcd60e51b8152600401808060200182810382526026815260200180610d916026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b33600090815260026020526040902054610cca57600080fd5b336000908152600160205260409020544211610ce557600080fd5b33600090815260026020526040902054811115610d0e5750336000908152600260205260409020545b33600081815260026020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610d4d573d6000803e3d6000fd5b50604080513381526020810183905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220eb07fa553f7959c5461edaecd3a34a5bed49c61a457a871132515330496136c864736f6c63430007040033

Deployed Bytecode

0x6080604052600436106100e85760003560e01c8063853828b61161008a578063b1df402f11610059578063b1df402f1461038a578063bfc10279146103bd578063efd874af146103e0578063f2fde38b14610413576100e8565b8063853828b6146102355780638da5cb5b1461024a5780638f0c18251461027b578063954648b3146102fc576100e8565b8063399ff3dd116100c6578063399ff3dd14610199578063482ed2a2146101c3578063715018a6146101f6578063742d94ed1461020b576100e8565b8063044c5769146100f757806319d40c101461013c5780632e1a7d4d1461016f575b6100f53462015180610446565b005b34801561010357600080fd5b5061012a6004803603602081101561011a57600080fd5b50356001600160a01b03166104df565b60408051918252519081900360200190f35b34801561014857600080fd5b506100f56004803603602081101561015f57600080fd5b50356001600160a01b03166104f1565b34801561017b57600080fd5b506100f56004803603602081101561019257600080fd5b5035610559565b3480156101a557600080fd5b5061012a600480360360208110156101bc57600080fd5b5035610565565b3480156101cf57600080fd5b5061012a600480360360208110156101e657600080fd5b50356001600160a01b0316610577565b34801561020257600080fd5b506100f5610589565b34801561021757600080fd5b5061012a6004803603602081101561022e57600080fd5b5035610654565b34801561024157600080fd5b506100f5610666565b34801561025657600080fd5b5061025f610673565b604080516001600160a01b039092168252519081900360200190f35b34801561028757600080fd5b506100f5600480360361018081101561029f57600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e082013516906101008101359061012081013590610140810135906101600135610682565b34801561030857600080fd5b5061036f600480360361014081101561032057600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e0820135169061010081013590610120013561090f565b60408051921515835260208301919091528051918290030190f35b34801561039657600080fd5b506100f5600480360360208110156103ad57600080fd5b50356001600160a01b0316610ac0565b6100f5600480360360408110156103d357600080fd5b5080359060200135610446565b3480156103ec57600080fd5b5061025f6004803603602081101561040357600080fd5b50356001600160a01b0316610b75565b34801561041f57600080fd5b506100f56004803603602081101561043657600080fd5b50356001600160a01b0316610b90565b34821461045257600080fd5b62015180811015801561046857506301e1338081105b61047157600080fd5b336000908152600160205260409020428201905534156104a1573360009081526002602052604090208054340190555b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15050565b60016020526000908152604090205481565b602436146104fb57fe5b336000908152600360205260409020546001600160a01b031661051d57600080fd5b336000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61056281610cb1565b50565b60046020526000908152604090205481565b60026020526000908152604090205481565b610591610d8c565b6001600160a01b03166105a2610673565b6001600160a01b0316146105fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60056020526000908152604090205481565b610671600019610cb1565b565b6000546001600160a01b031690565b6001600160a01b038781166000908152600360205260409020541633146106a857600080fd5b6040805160208082018f90528183018e905260608083018e9052608083018d905260a083018c90528a901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529190205415801561072457506801000000000000000083105b1561090057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156107db573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610900576001600160a01b03871660009081526002602052604090205489111561081957600080fd5b60008181526004602090815260408083206801000000000000000087019055600582528083208590556001600160a01b03808b168452600290925280832080548d9003905551908a16918b156108fc02918c91818181858888f19350505050158015610889573d6000803e3d6000fd5b50604080518e8152602081018e90528082018d9052606081018c9052608081018b90526001600160a01b03808b1660a0830152891660c082015260e08101859052610100810184905290517f3da6c93964cc5a2d7155868e6efef7f5c61022c4b932b267b92f808501635755918190036101200190a15b50505050505050505050505050565b6040805160208082018d90528183018c905260608083018c9052608083018b905260a083018a905288901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529181205490918291610ab057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a30573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610ab0576001600160a01b038716600090815260026020526040902054600193508911801590610a8c57506001600160a01b03871660009081526001602052604090205442105b15610ab0576001600160a01b03871660009081526001602052604090205442900391505b509a509a98505050505050505050565b610ac8610d8c565b6001600160a01b0316610ad9610673565b6001600160a01b031614610b34576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60243614610b3e57fe5b6001600160a01b03166000818152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6003602052600090815260409020546001600160a01b031681565b610b98610d8c565b6001600160a01b0316610ba9610673565b6001600160a01b031614610c04576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610c495760405162461bcd60e51b8152600401808060200182810382526026815260200180610d916026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b33600090815260026020526040902054610cca57600080fd5b336000908152600160205260409020544211610ce557600080fd5b33600090815260026020526040902054811115610d0e5750336000908152600260205260409020545b33600081815260026020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610d4d573d6000803e3d6000fd5b50604080513381526020810183905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220eb07fa553f7959c5461edaecd3a34a5bed49c61a457a871132515330496136c864736f6c63430007040033

Deployed Bytecode Sourcemap

2662:5139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4638:39;4653:9;4664:12;4638:14;:39::i;:::-;2662:5139;2788:56;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:56:0;-1:-1:-1;;;;;2788:56:0;;:::i;:::-;;;;;;;;;;;;;;;;3721:363;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3721:363:0;-1:-1:-1;;;;;3721:363:0;;:::i;5330:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5330:98:0;;:::i;2974:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2974:50:0;;:::i;2851:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2851:47:0;-1:-1:-1;;;;;2851:47:0;;:::i;1601:148::-;;;;;;;;;;;;;:::i;3031:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3031:57:0;;:::i;5240:84::-;;;;;;;;;;;;;:::i;950:87::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;950:87:0;;;;;;;;;;;;;;5438:1321;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5438:1321:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5438:1321:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6767:1031::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6767:1031:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6767:1031:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3516:197;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3516:197:0;-1:-1:-1;;;;;3516:197:0;;:::i;4092:500::-;;;;;;;;;;;;;;;;-1:-1:-1;4092:500:0;;;;;;;:::i;2907:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:60:0;-1:-1:-1;;;;;2907:60:0;;:::i;1904:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1904:244:0;-1:-1:-1;;;;;1904:244:0;;:::i;4092:500::-;4209:9;4192:13;:26;4184:35;;;;;;4308:12;4289:15;:31;;:71;;;;;4342:18;4324:15;:36;4289:71;4281:80;;;;;;4396:10;4372:35;;;;:23;:35;;;;;4410:15;:33;;4372:71;;4458:9;:13;4454:85;;4503:10;4488:26;;;;:14;:26;;;;;:39;;4518:9;4488:39;;;4454:85;4554:30;;;4562:10;4554:30;;4574:9;4554:30;;;;;;;;;;;;;;;;;4092:500;;:::o;2788:56::-;;;;;;;;;;;;;:::o;3721:363::-;3841:2;3822:8;:21;3815:29;;;;3941:10;3916:36;;;;:24;:36;;;;;;-1:-1:-1;;;;;3916:36:0;3908:91;;;;;;4035:10;4010:36;;;;:24;:36;;;;;:66;;-1:-1:-1;;4010:66:0;-1:-1:-1;;;;;4010:66:0;;;;;;;;;;3721:363::o;5330:98::-;5386:34;5408:11;5386:21;:34::i;:::-;5330:98;:::o;2974:50::-;;;;;;;;;;;;;:::o;2851:47::-;;;;;;;;;;;;;:::o;1601:148::-;1181:12;:10;:12::i;:::-;-1:-1:-1;;;;;1170:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1170:23:0;;1162:68;;;;;-1:-1:-1;;;1162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:1:::1;1692:6:::0;;1671:40:::1;::::0;-1:-1:-1;;;;;1692:6:0;;::::1;::::0;1671:40:::1;::::0;1708:1;;1671:40:::1;1739:1;1722:19:::0;;-1:-1:-1;;1722:19:0::1;::::0;;1601:148::o;3031:57::-;;;;;;;;;;;;;:::o;5240:84::-;5283:33;-1:-1:-1;;5283:21:0;:33::i;:::-;5240:84::o;950:87::-;996:7;1023:6;-1:-1:-1;;;;;1023:6:0;950:87;:::o;5438:1321::-;-1:-1:-1;;;;;5838:43:0;;;;;;;:24;:43;;;;;;;5824:10;:57;5816:66;;;;;;5918:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5918:93:0;;;;;;;;;;;;;;;;;;;;5908:104;;;;;;;;;-1:-1:-1;6027:23:0;;;:17;:23;;;;;;;:28;:67;;;;;2762:19;6059:10;:35;6027:67;6023:729;;;6205:18;-1:-1:-1;;;;;6115:108:0;:86;6188:4;6135:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6125:69;;;;;;6195:1;6197;6199;6115:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6115:108:0;;6111:630;;;-1:-1:-1;;;;;6252:34:0;;;;;;:14;:34;;;;;;:50;-1:-1:-1;6252:50:0;6244:59;;;;;;6322:23;;;;:17;:23;;;;;;;;2762:19;6348:35;;6322:61;;6402:21;:27;;;;;:39;;;-1:-1:-1;;;;;6460:34:0;;;;;:14;:34;;;;;;:50;;;;;;;6529:40;:26;;;;:40;;;;;6498:12;;6529:40;6322:23;6529:40;6498:12;6529:26;:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6593:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6593:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6111:630;5438:1321;;;;;;;;;;;;;:::o;6767:1031::-;7184:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7184:93:0;;;;;;;;;;;;;;;;;;;;7174:104;;;;;;;;;-1:-1:-1;7293:23:0;;;:17;:23;;;;;;;-1:-1:-1;;;;7289:502:0;;7432:18;-1:-1:-1;;;;;7342:108:0;:86;7415:4;7362:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:69;;;;;;7422:1;7424;7426;7342:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7342:108:0;;7338:442;;;-1:-1:-1;;;;;7523:34:0;;;;;;:14;:34;;;;;;7496:4;;-1:-1:-1;7523:50:0;-1:-1:-1;7523:50:0;;;:116;;-1:-1:-1;;;;;;7577:43:0;;;;;;:23;:43;;;;;;7624:15;-1:-1:-1;7523:116:0;7519:246;;;-1:-1:-1;;;;;7684:43:0;;;;;;:23;:43;;;;;;7730:15;7684:61;;;-1:-1:-1;7519:246:0;6767:1031;;;;;;;;;;;;;;:::o;3516:197::-;1181:12;:10;:12::i;:::-;-1:-1:-1;;;;;1170:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1170:23:0;;1162:68;;;;;-1:-1:-1;;;1162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3628:2:::1;3609:8;:21;3602:29;;;;-1:-1:-1::0;;;;;3642:43:0::1;;::::0;;;:24:::1;:43;::::0;;;;:63;;-1:-1:-1;;3642:63:0::1;::::0;;::::1;::::0;;3516:197::o;2907:60::-;;;;;;;;;;;;-1:-1:-1;;;;;2907:60:0;;:::o;1904:244::-;1181:12;:10;:12::i;:::-;-1:-1:-1;;;;;1170:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1170:23:0;;1162:68;;;;;-1:-1:-1;;;1162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1993:22:0;::::1;1985:73;;;;-1:-1:-1::0;;;1985:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2095:6;::::0;;2074:38:::1;::::0;-1:-1:-1;;;;;2074:38:0;;::::1;::::0;2095:6;::::1;::::0;2074:38:::1;::::0;::::1;2123:6;:17:::0;;-1:-1:-1;;2123:17:0::1;-1:-1:-1::0;;;;;2123:17:0;;;::::1;::::0;;;::::1;::::0;;1904:244::o;4695:537::-;4839:10;4853:1;4824:26;;;:14;:26;;;;;;4816:39;;;;;;4958:10;4934:35;;;;:23;:35;;;;;;4916:15;:53;4908:62;;;;;;5000:10;4985:26;;;;:14;:26;;;;;;:40;-1:-1:-1;4981:99:0;;;-1:-1:-1;5069:10:0;5054:26;;;;:14;:26;;;;;;4981:99;5106:10;5091:26;;;;:14;:26;;;;;;:41;;;;;;;5143:32;;;;;;5121:11;;5143:32;;5091:26;5143:32;5121:11;5106:10;5143:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5191:33:0;;;5200:10;5191:33;;;;;;;;;;;;;;;;;;;;;4695:537;:::o;101:98::-;181:10;101:98;:::o

Swarm Source

ipfs://eb07fa553f7959c5461edaecd3a34a5bed49c61a457a871132515330496136c8

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
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.