ETH Price: $1,866.83 (+2.97%)

Contract

0x6F98F961d15E6eb22cAa1B8d63FB99EcE9CA104c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim116535992021-01-14 13:54:261537 days ago1610632466IN
0x6F98F961...cE9CA104c
0 ETH0.00604787125
Claim116535622021-01-14 13:45:441537 days ago1610631944IN
0x6F98F961...cE9CA104c
0 ETH0.0029682990
Transfer*89219172019-11-12 18:31:031966 days ago1573583463IN
0x6F98F961...cE9CA104c
0.22 ETH0.0010090412

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
-116535622021-01-14 13:45:441537 days ago1610631944
0x6F98F961...cE9CA104c
0.22 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x4A6DB16A...bc0FE4725
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
CharityChallenge

Compiler Version
v0.5.2+commit.1df8f40c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: CharityChallenge.sol
pragma solidity ^0.5.2;

import "./IRealityCheck.sol";
import "./SafeMath.sol";

contract CharityChallenge {
    using SafeMath for uint256;
    using SafeMath for uint8;

    event Received(address indexed sender, uint256 value);

    event Donated(address indexed npo, uint256 value);

    event Failed();

    event Fee(address indexed maker, uint256 value);

    event Claimed(address indexed claimer, uint256 value);

    event SafetyHatchClaimed(address indexed claimer, uint256 value);

    string public constant VERSION = "0.4.1";

    address payable public contractOwner;

    // key is npo address, value is ratio
    mapping(address => uint8) public npoRatios;

    uint8 sumRatio;

    address payable[] public npoAddresses;

    uint8 public npoLength;

    address public marketAddress;

    bool public unlockOnNo;

    IRealityCheck realityCheck;

    string public question;

    address public arbitrator;

    uint256 public timeout;

    bytes32 public questionId;

    uint256 public challengeEndTime;

    // For a fee of 10.5%, pass 1050
    uint256 public makerFee;

    uint256 public challengeSafetyHatchTime1;

    uint256 public challengeSafetyHatchTime2;

    // Valid outcomes are 'YES', 'NO' and 'INVALID'
    bool public isEventFinalized;

    // hasChallengeAccomplished will be set to true if we got the expected
    // result that allow to unlock the funds.
    bool public hasChallengeAccomplished;

    bool private safetyHatchClaimSucceeded;

    mapping(address => uint256) public donorBalances;

    uint256 public donorCount;

    uint256 public contributedAmount;

    // We use a divider of 10000 instead of 100 to have more granularity for
    // the maker fee
    uint256 constant feeDivider = 10000;

    bool private mReentrancyLock = false;
    modifier nonReentrant() {
        require(!mReentrancyLock);
        mReentrancyLock = true;
        _;
        mReentrancyLock = false;
    }

    constructor(
        address payable _contractOwner,
        address payable[] memory _npoAddresses,
        uint8[] memory _ratios,
        address _marketAddress,
        string memory _question,
        address _arbitrator,
        uint256 _timeout,
        uint256 _challengeEndTime,
        uint256 _makerFee,
        bool _unlockOnNo
    ) public
    {
        require(_npoAddresses.length == _ratios.length);
        require(makerFee < feeDivider);
        npoLength = uint8(_npoAddresses.length);
        for (uint8 i = 0; i < npoLength; i++) {
            address payable npo = _npoAddresses[i];
            npoAddresses.push(npo);
            require(_ratios[i] > 0, "Ratio must be a positive number");
            npoRatios[npo] = _ratios[i];
            sumRatio += _ratios[i];
        }
        contractOwner = _contractOwner;
        marketAddress = _marketAddress;
        realityCheck = IRealityCheck(_marketAddress);
        question = _question;
        arbitrator = _arbitrator;
        timeout = _timeout;
        challengeEndTime = _challengeEndTime;
        makerFee = _makerFee;
        questionId = realityCheck.askQuestion(0, question, arbitrator, uint32(timeout), uint32(challengeEndTime), 0);
        unlockOnNo = _unlockOnNo;
        challengeSafetyHatchTime1 = challengeEndTime + 26 weeks;
        challengeSafetyHatchTime2 = challengeSafetyHatchTime1 + 52 weeks;
        isEventFinalized = false;
        hasChallengeAccomplished = false;
    }

    function() external payable {
        require(now <= challengeEndTime);
        require(msg.value > 0);
        if (donorBalances[msg.sender] == 0 && msg.value > 0) {
            donorCount++;
        }
        donorBalances[msg.sender] += msg.value;
        contributedAmount += msg.value;
        emit Received(msg.sender, msg.value);
    }

    function balanceOf(address _donorAddress) public view returns (uint256) {
        if (safetyHatchClaimSucceeded) {
            return 0;
        }
        return donorBalances[_donorAddress];
    }

    function finalize() nonReentrant external {
        require(now > challengeEndTime);
        require(now <= challengeSafetyHatchTime1);
        require(!isEventFinalized);
        doFinalize();
    }

    function doFinalize() private {
        bool hasError;
        (hasChallengeAccomplished, hasError) = checkRealitio();
        if (!hasError) {
            isEventFinalized = true;
            if (hasChallengeAccomplished) {
                uint length = npoAddresses.length;
                if (makerFee > 0) {
                    uint256 amount = address(this).balance.mul(makerFee).div(feeDivider);
                    contractOwner.transfer(amount);
                    emit Fee(contractOwner, amount);
                }
                for (uint i = 0; i < length - 1; i++) {
                    address payable npo = npoAddresses[i];
                    uint8 ratio = npoRatios[npo];
                    uint256 amount = address(this).balance.mul(ratio).div(sumRatio);
                    npo.transfer(amount);
                    emit Donated(npo, amount);
                }
                // Don't want to keep any amount in the contract
                uint256 amount = address(this).balance;
                address payable npo = npoAddresses[length - 1];
                npo.transfer(amount);
                emit Donated(npo, amount);
            } else {
                emit Failed();
            }
        }
    }

    function getExpectedDonationAmount(address payable _npo) view external returns (uint256) {
        require(npoRatios[_npo] > 0);
        uint256 amountForNPO = address(this).balance.sub(address(this).balance.mul(makerFee).div(feeDivider));
        uint8 ratio = npoRatios[_npo];
        return amountForNPO.mul(ratio).div(sumRatio);
    }

    function claim() nonReentrant external {
        require(now > challengeEndTime);
        require(isEventFinalized || now > challengeSafetyHatchTime1);
        require(!hasChallengeAccomplished || now > challengeSafetyHatchTime1);
        require(balanceOf(msg.sender) > 0);

        uint256 claimedAmount = balanceOf(msg.sender);
        donorBalances[msg.sender] = 0;
        msg.sender.transfer(claimedAmount);
        emit Claimed(msg.sender, claimedAmount);
    }

    function safetyHatchClaim() external {
        require(now > challengeSafetyHatchTime2);
        require(msg.sender == contractOwner);

        uint totalContractBalance = address(this).balance;
        safetyHatchClaimSucceeded = true;
        contractOwner.transfer(address(this).balance);
        emit SafetyHatchClaimed(contractOwner, totalContractBalance);
    }

    function checkRealitio() public view returns (bool happened, bool errored) {
        if (realityCheck.isFinalized(questionId)) {
            bytes32 answer = realityCheck.getFinalAnswer(questionId);
            if (answer == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) {
                // Treat 'invalid' outcome as 'no'
                // because 'invalid' is one of the valid outcomes
                return (false, false);
            } else {
                if (unlockOnNo) {
                    return (answer == 0x0000000000000000000000000000000000000000000000000000000000000000, false);
                }
                return (answer == 0x0000000000000000000000000000000000000000000000000000000000000001, false);
            }
        } else {
            return (false, true);
        }
    }
}

File 2 of 3: IRealityCheck.sol
pragma solidity ^0.5.2;

// RealityCheck API used to interract with realit.io, we only need to describe the
// functions we'll be using.
// cf https://raw.githubusercontent.com/realitio/realitio-dapp/master/truffle/contracts/RealityCheck.sol
interface IRealityCheck {
    function askQuestion(
        uint256 template_id, string calldata question,
        address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external returns (bytes32);
    function isFinalized(bytes32 question_id) external view returns (bool);
    function getFinalAnswer(bytes32 question_id) external view returns (bytes32);
    function getOpeningTS(bytes32 question_id) external view returns(uint32);
}

File 3 of 3: SafeMath.sol
pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"safetyHatchClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"npoAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasChallengeAccomplished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"question","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"npoLength","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"npoRatios","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_npo","type":"address"}],"name":"getExpectedDonationAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"arbitrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_donorAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"donorBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeSafetyHatchTime1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkRealitio","outputs":[{"name":"happened","type":"bool"},{"name":"errored","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"questionId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isEventFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unlockOnNo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"donorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeSafetyHatchTime2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contributedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"makerFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_contractOwner","type":"address"},{"name":"_npoAddresses","type":"address[]"},{"name":"_ratios","type":"uint8[]"},{"name":"_marketAddress","type":"address"},{"name":"_question","type":"string"},{"name":"_arbitrator","type":"address"},{"name":"_timeout","type":"uint256"},{"name":"_challengeEndTime","type":"uint256"},{"name":"_makerFee","type":"uint256"},{"name":"_unlockOnNo","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"npo","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Donated","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"maker","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"claimer","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"claimer","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"SafetyHatchClaimed","type":"event"}]

Deployed Bytecode

0x60806040526004361061019e576000357c01000000000000000000000000000000000000000000000000000000009004806387730309116100ee578063bc3fde4e116100a7578063d87a328a11610081578063d87a328a14610890578063db1a6eaa146108bb578063fc741c7c146108e6578063ffa1ad74146109115761019e565b8063bc3fde4e146107e3578063c407670f1461080e578063ce606ee0146108395761019e565b8063877303091461069e57806395623641146106c9578063a6a205c014610720578063b06a5c521461075a578063b77309d614610785578063ba7fd2fb146107b45761019e565b806353240f641161015b5780636cc6cde1116101355780636cc6cde11461055257806370a08231146105a957806370dea79a1461060e5780637b8c8de1146106395761019e565b806353240f64146104515780635ead3d4b146104825780635f95eb4d146104ed5761019e565b806307171d7f146102d25780630ed7e499146102e9578063306a7ce0146103645780633fad9ae0146103935780634bb278f3146104235780634e71d92d1461043a575b600a5442111515156101af57600080fd5b6000341115156101be57600080fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561020d5750600034115b15610225576010600081548092919060010191905055505b34600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550346011600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874346040518082815260200191505060405180910390a2005b3480156102de57600080fd5b506102e76109a1565b005b3480156102f557600080fd5b506103226004803603602081101561030c57600080fd5b8101908080359060200190929190505050610b34565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037057600080fd5b50610379610b72565b604051808215151515815260200191505060405180910390f35b34801561039f57600080fd5b506103a8610b85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e85780820151818401526020810190506103cd565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042f57600080fd5b50610438610c23565b005b34801561044657600080fd5b5061044f610cbc565b005b34801561045d57600080fd5b50610466610e6e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048e57600080fd5b506104d1600480360360208110156104a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e81565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104f957600080fd5b5061053c6004803603602081101561051057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea1565b6040518082815260200191505060405180910390f35b34801561055e57600080fd5b50610567611001565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105b557600080fd5b506105f8600480360360208110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611027565b6040518082815260200191505060405180910390f35b34801561061a57600080fd5b5061062361108f565b6040518082815260200191505060405180910390f35b34801561064557600080fd5b506106886004803603602081101561065c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611095565b6040518082815260200191505060405180910390f35b3480156106aa57600080fd5b506106b36110ad565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de6110b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072c57600080fd5b506107356110d9565b6040518083151515158152602001821515151581526020019250505060405180910390f35b34801561076657600080fd5b5061076f6112fc565b6040518082815260200191505060405180910390f35b34801561079157600080fd5b5061079a611302565b604051808215151515815260200191505060405180910390f35b3480156107c057600080fd5b506107c9611315565b604051808215151515815260200191505060405180910390f35b3480156107ef57600080fd5b506107f8611328565b6040518082815260200191505060405180910390f35b34801561081a57600080fd5b5061082361132e565b6040518082815260200191505060405180910390f35b34801561084557600080fd5b5061084e611334565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089c57600080fd5b506108a5611359565b6040518082815260200191505060405180910390f35b3480156108c757600080fd5b506108d061135f565b6040518082815260200191505060405180910390f35b3480156108f257600080fd5b506108fb611365565b6040518082815260200191505060405180910390f35b34801561091d57600080fd5b5061092661136b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561096657808201518184015260208101905061094b565b50505050905090810190601f1680156109935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600d54421115156109b157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0c57600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190506001600e60026101000a81548160ff0219169083151502179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610ac1573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1ac1e39f5a410afcc9fd213aab1b92287e00cf00e216f3776f352ab328d124f9826040518082815260200191505060405180910390a250565b600381815481101515610b4357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c1b5780601f10610bf057610100808354040283529160200191610c1b565b820191906000526020600020905b815481529060010190602001808311610bfe57829003601f168201915b505050505081565b601260009054906101000a900460ff16151515610c3f57600080fd5b6001601260006101000a81548160ff021916908315150217905550600a5442111515610c6a57600080fd5b600c544211151515610c7b57600080fd5b600e60009054906101000a900460ff16151515610c9757600080fd5b610c9f6113a4565b6000601260006101000a81548160ff021916908315150217905550565b601260009054906101000a900460ff16151515610cd857600080fd5b6001601260006101000a81548160ff021916908315150217905550600a5442111515610d0357600080fd5b600e60009054906101000a900460ff1680610d1f5750600c5442115b1515610d2a57600080fd5b600e60019054906101000a900460ff161580610d475750600c5442115b1515610d5257600080fd5b6000610d5d33611027565b111515610d6957600080fd5b6000610d7433611027565b90506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e01573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040518082815260200191505060405180910390a2506000601260006101000a81548160ff021916908315150217905550565b600460009054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16111515610f0057600080fd5b6000610f6b610f45612710610f37600b543073ffffffffffffffffffffffffffffffffffffffff16316117fe90919063ffffffff16565b61188890919063ffffffff16565b3073ffffffffffffffffffffffffffffffffffffffff163161191b90919063ffffffff16565b90506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050610ff8600260009054906101000a900460ff1660ff16610fea8360ff16856117fe90919063ffffffff16565b61188890919063ffffffff16565b92505050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e60029054906101000a900460ff1615611047576000905061108a565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60085481565b600f6020528060005260406000206000915090505481565b600c5481565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f8d429e6009546040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561116d57600080fd5b505afa158015611181573d6000803e3d6000fd5b505050506040513d602081101561119757600080fd5b8101908080519060200190929190505050156112ef576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a462fb7b6009546040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561124057600080fd5b505afa158015611254573d6000803e3d6000fd5b505050506040513d602081101561126a57600080fd5b810190808051906020019092919050505090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001028114156112b55760008092509250506112f8565b600460159054906101000a900460ff16156112dd5760006001028114600092509250506112f8565b600180028114600092509250506112f8565b60006001915091505b9091565b60095481565b600e60009054906101000a900460ff1681565b600460159054906101000a900460ff1681565b600a5481565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60115481565b600b5481565b6040805190810160405280600581526020017f302e342e3100000000000000000000000000000000000000000000000000000081525081565b60006113ae6110d9565b600e60018294508391906101000a81548160ff02191690831515021790555050508015156117fb576001600e60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156117cd57600060038054905090506000600b54111561153857600061145d61271061144f600b543073ffffffffffffffffffffffffffffffffffffffff16316117fe90919063ffffffff16565b61188890919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114c6573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d826040518082815260200191505060405180910390a2505b60008090505b600182038110156116d257600060038281548110151561155a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050600061162b600260009054906101000a900460ff1660ff1661161d8460ff163073ffffffffffffffffffffffffffffffffffffffff16316117fe90919063ffffffff16565b61188890919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611673573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e543826040518082815260200191505060405180910390a2505050808060010191505061153e565b5060003073ffffffffffffffffffffffffffffffffffffffff16319050600060036001840381548110151561170357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611776573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff167f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e543836040518082815260200191505060405180910390a25050506117fa565b7f625a40e68d9554793bf647bf32e4885e7f15bd1bfac262906cc7d26f376f20a260405160405180910390a15b5b50565b6000808314156118115760009050611882565b6000828402905082848281151561182457fe5b0414151561187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119a76021913960400191505060405180910390fd5b809150505b92915050565b60008082111515611901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481151561190e57fe5b0490508091505092915050565b6000828211151515611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b60008284039050809150509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a723058200ff5c62840038d257353c0f8fda36e5736f35493e4b42caaa4b683ad56f4fa780029

Deployed Bytecode Sourcemap

81:7354:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3476:16;;3469:3;:23;;3461:32;;;;;;;;3523:1;3511:9;:13;3503:22;;;;;;;;3568:1;3539:13;:25;3553:10;3539:25;;;;;;;;;;;;;;;;:30;:47;;;;;3585:1;3573:9;:13;3539:47;3535:90;;;3602:10;;:12;;;;;;;;;;;;;3535:90;3663:9;3634:13;:25;3648:10;3634:25;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3703:9;3682:17;;:30;;;;;;;;;;;3736:10;3727:31;;;3748:9;3727:31;;;;;;;;;;;;;;;;;;81:7354;6232:367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6232:367:0;;;:::i;:::-;;700:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;700:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;700:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1399:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1399:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;870:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;870:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;870:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3974:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3974:199:0;;;:::i;:::-;;5758:468;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5758:468:0;;;:::i;:::-;;744:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;744:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;630:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;630:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5414:338;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5414:338:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5414:338:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;899:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3771:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3771:197:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3771:197:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;931:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;931:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1487:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1487:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1487:48:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1097:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1097:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;773:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;773:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6605:828;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6605:828:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1243:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1243:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;808:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;808:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;992:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;992:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1542:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1542:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;545:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;545:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1144:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1144:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1574:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1574:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1067:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1067:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;498:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;498:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6232:367;6293:25;;6287:3;:31;6279:40;;;;;;;;6351:13;;;;;;;;;;;6337:27;;:10;:27;;;6329:36;;;;;;;;6376:25;6412:4;6404:21;;;6376:49;;6463:4;6435:25;;:32;;;;;;;;;;;;;;;;;;6477:13;;;;;;;;;;;:22;;:45;6508:4;6500:21;;;6477:45;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6477:45:0;6556:13;;;;;;;;;;;6537:55;;;6571:20;6537:55;;;;;;;;;;;;;;;;;;6232:367;:::o;700:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1399:36::-;;;;;;;;;;;;;:::o;870:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3974:199::-;1838:15;;;;;;;;;;;1837:16;1829:25;;;;;;;;1882:4;1864:15;;:22;;;;;;;;;;;;;;;;;;4040:16;;4034:3;:22;4026:31;;;;;;;;4082:25;;4075:3;:32;;4067:41;;;;;;;;4127:16;;;;;;;;;;;4126:17;4118:26;;;;;;;;4154:12;:10;:12::i;:::-;1925:5;1907:15;;:23;;;;;;;;;;;;;;;;;;3974:199::o;5758:468::-;1838:15;;;;;;;;;;;1837:16;1829:25;;;;;;;;1882:4;1864:15;;:22;;;;;;;;;;;;;;;;;;5821:16;;5815:3;:22;5807:31;;;;;;;;5856:16;;;;;;;;;;;:51;;;;5882:25;;5876:3;:31;5856:51;5848:60;;;;;;;;5927:24;;;;;;;;;;;5926:25;:60;;;;5961:25;;5955:3;:31;5926:60;5918:69;;;;;;;;6029:1;6005:21;6015:10;6005:9;:21::i;:::-;:25;5997:34;;;;;;;;6042:21;6066;6076:10;6066:9;:21::i;:::-;6042:45;;6125:1;6097:13;:25;6111:10;6097:25;;;;;;;;;;;;;;;:29;;;;6136:10;:19;;:34;6156:13;6136:34;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6136:34:0;6193:10;6185:34;;;6205:13;6185:34;;;;;;;;;;;;;;;;;;1896:1;1925:5;1907:15;;:23;;;;;;;;;;;;;;;;;;5758:468::o;744:22::-;;;;;;;;;;;;;:::o;630:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5414:338::-;5494:7;5539:1;5521:9;:15;5531:4;5521:15;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;5513:28;;;;;;;;5551:20;5574:78;5600:51;1741:5;5600:35;5626:8;;5608:4;5600:21;;;:25;;:35;;;;:::i;:::-;:39;;:51;;;;:::i;:::-;5582:4;5574:21;;;:25;;:78;;;;:::i;:::-;5551:101;;5662:11;5676:9;:15;5686:4;5676:15;;;;;;;;;;;;;;;;;;;;;;;;;5662:29;;5708:37;5736:8;;;;;;;;;;;5708:37;;:23;5725:5;5708:23;;:12;:16;;:23;;;;:::i;:::-;:27;;:37;;;;:::i;:::-;5701:44;;;;5414:338;;;:::o;899:25::-;;;;;;;;;;;;;:::o;3771:197::-;3834:7;3857:25;;;;;;;;;;;3853:64;;;3905:1;3898:8;;;;3853:64;3933:13;:28;3947:13;3933:28;;;;;;;;;;;;;;;;3926:35;;3771:197;;;;:::o;931:22::-;;;;:::o;1487:48::-;;;;;;;;;;;;;;;;;:::o;1097:40::-;;;;:::o;773:28::-;;;;;;;;;;;;;:::o;6605:828::-;6651:13;6666:12;6694;;;;;;;;;;;:24;;;6719:10;;6694:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6694:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6694:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6694:36:0;;;;;;;;;;;;;;;;6690:737;;;6746:14;6763:12;;;;;;;;;;;:27;;;6791:10;;6763:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6763:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6763:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6763:39:0;;;;;;;;;;;;;;;;6746:56;;6830:66;6820:76;;:6;:76;6816:550;;;7041:5;7048;7033:21;;;;;;;6816:550;7097:10;;;;;;;;;;;7093:149;;;7149:66;7139:76;;:6;:76;7217:5;7131:92;;;;;;;7093:149;7277:66;7267:76;;:6;:76;7345:5;7259:92;;;;;;;6690:737;7404:5;7411:4;7396:20;;;;6605:828;;;:::o;960:25::-;;;;:::o;1243:28::-;;;;;;;;;;;;;:::o;808:22::-;;;;;;;;;;;;;:::o;992:31::-;;;;:::o;1542:25::-;;;;:::o;545:36::-;;;;;;;;;;;;;:::o;1144:40::-;;;;:::o;1574:32::-;;;;:::o;1067:23::-;;;;:::o;498:40::-;;;;;;;;;;;;;;;;;;;;:::o;4179:1229::-;4219:13;4281:15;:13;:15::i;:::-;4243:24;;4242:54;;;;;;;;;;;;;;;;;;;;;;;;;;4311:8;4310:9;4306:1096;;;4354:4;4335:16;;:23;;;;;;;;;;;;;;;;;;4376:24;;;;;;;;;;;4372:1020;;;4420:11;4434:12;:19;;;;4420:33;;4486:1;4475:8;;:12;4471:232;;;4511:14;4528:51;1741:5;4528:35;4554:8;;4536:4;4528:21;;;:25;;:35;;;;:::i;:::-;:39;;:51;;;;:::i;:::-;4511:68;;4601:13;;;;;;;;;;;:22;;:30;4624:6;4601:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4601:30:0;4662:13;;;;;;;;;;;4658:26;;;4677:6;4658:26;;;;;;;;;;;;;;;;;;4471:232;;4725:6;4734:1;4725:10;;4720:340;4750:1;4741:6;:10;4737:1;:14;4720:340;;;4780:19;4802:12;4815:1;4802:15;;;;;;;;;;;;;;;;;;;;;;;;;;;4780:37;;4839:11;4853:9;:14;4863:3;4853:14;;;;;;;;;;;;;;;;;;;;;;;;;4839:28;;4889:14;4906:46;4943:8;;;;;;;;;;;4906:46;;:32;4932:5;4906:32;;4914:4;4906:21;;;:25;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;4889:63;;4974:3;:12;;:20;4987:6;4974:20;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4974:20:0;5029:3;5021:20;;;5034:6;5021:20;;;;;;;;;;;;;;;;;;4720:340;;;4753:3;;;;;;;4720:340;;;;5142:14;5167:4;5159:21;;;5142:38;;5198:19;5220:12;5242:1;5233:6;:10;5220:24;;;;;;;;;;;;;;;;;;;;;;;;;;;5198:46;;5262:3;:12;;:20;5275:6;5262:20;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5262:20:0;5313:3;5305:20;;;5318:6;5305:20;;;;;;;;;;;;;;;;;;4372:1020;;;;;;5369:8;;;;;;;;;;4372:1020;4306:1096;4179:1229;:::o;1693:458:2:-;1751:7;1996:1;1991;:6;1987:45;;;2020:1;2013:8;;;;1987:45;2042:9;2058:1;2054;:5;2042:17;;2086:1;2081;2077;:5;;;;;;;;:10;2069:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;2136:8;;;1693:458;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;;2803:17;;2924:1;2917:8;;;2606:326;;;;:::o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;1426:1;1422;:5;1410:17;;1445:1;1438:8;;;1274:179;;;;:::o

Swarm Source

bzzr://0ff5c62840038d257353c0f8fda36e5736f35493e4b42caaa4b683ad56f4fa78

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  ]
[ 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.