Contract Overview
ETH Balance: 32.2327 Ether
No Of Transactions: 96 txns
  Latest 25 txns from a total Of 96 transactions View All

TxHash Age From To Value [TxFee]
0x3c93a40e4bb9d484e052a1c79f20c6c6305118a7c4a638d5ea9ab2bb3088ff411 day 22 hrs ago0xf7243a9c508da77f3f1294db82955a3d95b6c0f5  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.010949
0x7c30ad7e8c566abfec0d1d54530f286ec07395bf375c6f4b60c45af467d049071 day 22 hrs ago0xf7243a9c508da77f3f1294db82955a3d95b6c0f5  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0001 Ether0.0114411
0xa15eac0abf63d1875ce1799856e4b7a3127fe9ef3c9b389f960ca71290d61c191 day 23 hrs ago0xf7243a9c508da77f3f1294db82955a3d95b6c0f5  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0 Ether0.00035433
0xee04140e0f3a35e7354f318045afaf2a1ed74a1aaa749d0703569a4933b18df35 days 19 hrs ago0xfc2d72fab70d8624d60ce1a00c20582bc24b2e18  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0 Ether0.0025934
0xceca222a02ac1b46c728eb548ed21e4e413e4f2a8ad11bb6970c6d8042f03ab06 days 14 hrs ago0xf280e6fbfcb1f9c5ba490ba503162d4acc6adafb  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.0021898
0x51007484c5d8d63c0500e277a05b757536e93205ae3d963074224257505004e66 days 14 hrs ago0xf280e6fbfcb1f9c5ba490ba503162d4acc6adafb  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.0021898
0xe5cf9f59653d346579403d6f9144bee835c22932a0477a4445476ee12d74c45f6 days 14 hrs ago0xf280e6fbfcb1f9c5ba490ba503162d4acc6adafb  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.5 Ether0.00225802
0x365d4e7a9a44430b744c5edda55cc2e8e7adff384cd0b3bb5b536192634ebe717 days 2 hrs ago0xf7243a9c508da77f3f1294db82955a3d95b6c0f5  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0004 Ether0.0064834
0x83ea4b75dea256141fb852b38b5bd30007e82c3f63553599f6354ae52081a9a77 days 2 hrs ago0xf7243a9c508da77f3f1294db82955a3d95b6c0f5  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0008 Ether0.003477
0x5573bc92ee6da94fc1e36027b9506a6558a9196e3a20073f37b0899ed28f7c9a7 days 7 hrs ago0x90a2b685e47f7a5d46bc2170ccb407fe90df1b9f  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.0094426
0x41a1dd1d1d072a921ebc3b0a371e897771080686421e67b3ecb259acc8a3e9bb7 days 7 hrs ago0x90a2b685e47f7a5d46bc2170ccb407fe90df1b9f  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.01 Ether0.0114155
0x64c350da14c6576ddcb4f230dc90cfd1b4076ca51973aedbd53746da54e42c6e9 days 16 hrs ago0xdc26ac5c7e98488758ad5222932a69a405304d86  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0 Ether0.00265364
0x2e249fe8c3b581d03611f081b5a16e704441aed722d580215240e8a9c719817e9 days 16 hrs ago0xdc26ac5c7e98488758ad5222932a69a405304d86  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0 Ether0.00265364
0xddfa5acd7cb69fb4f533183cb8cbab1f855c5ba385b1fc59efcc75165483ca9b9 days 22 hrs ago0x2ff7daac5e7c1eddf41a43c2d090c34fb4e546df  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0008 Ether0.00050584
0xffdb13f20d2402b90e6440a69213977d604023e38a8b3c53df8f24bf6fcf3d319 days 22 hrs ago0x2ff7daac5e7c1eddf41a43c2d090c34fb4e546df  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0008 Ether0.0009954
0x48831c03d4b9ef0169b16f473f2cc26106918500acb4e3fea33eb2286d2ed82c9 days 22 hrs ago0xdc26ac5c7e98488758ad5222932a69a405304d86  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0016 Ether0.0006954
0x3defb2f20fa50cc10172c388218cc48e9ff5bdfdff0d092af82003369fea5aba9 days 22 hrs ago0xdc26ac5c7e98488758ad5222932a69a405304d86  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0004 Ether0.0006954
0x8d202401cba9585ad9c958e70808a3b6fea9c2c91590627d90dc402de3baa7649 days 22 hrs ago0xdc26ac5c7e98488758ad5222932a69a405304d86  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0512 Ether0.000398672
0x1c85176716815fe7efff2eb064a2f05ae836c83a2554b6c589125f9019e458a19 days 23 hrs ago0x2ff7daac5e7c1eddf41a43c2d090c34fb4e546df  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0004 Ether0.000259336
0x9f1f390a52be17669115ec7c6a8ef3bda0ab4062e7ebdd118929d4c7ddbaa6649 days 23 hrs ago0x2ff7daac5e7c1eddf41a43c2d090c34fb4e546df  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.000100144
0xcdc878352f6e7852894ff4c3d750954b4bb3d17e8d9788199cd4ff0f872b2bff9 days 23 hrs ago0x80868a9d2899919cd88c815f1ca9b41d6bc60fc8  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.000377704
0x28bac2d23b1fc8be8065696c93c11b79022f7988d2896a16b4e57a803cb016ef9 days 23 hrs ago0x2ff7daac5e7c1eddf41a43c2d090c34fb4e546df  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.01 Ether0.00047162
0x49e5be708411d41ac10177fc3385f811c57f60cf42f8dae01dc5dac9337e870610 days 18 hrs ago0xcc40a066f4f296f494ce30b12ae706bc3fb82884  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c1.6 Ether0.00099668
0x1824fd77465240bca7321d98a46f0c398e316ee7e1294cd8f873448d4b6c031410 days 19 hrs ago0x832045fec86bcf1e3580f0b62ad1100a2ae82c89  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.00100144
0x3885e206b9f4a23cedb4a9d8333b70513c3e3c4f6d7f6e205743213415203c4210 days 19 hrs ago0xfdce8cdf4f258518fec855df26112e134ea69995  IN   0x38ec56b6ee0b31f4c72410daaa3e926daf5bbd9c0.0002 Ether0.0043796
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: RealityCheck
Compiler Version: v0.4.15+commit.bbb8e64f
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.6;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


pragma solidity ^0.4.6;

contract BalanceHolder {

    mapping(address => uint256) public balanceOf;

    event LogWithdraw(
        address indexed user,
        uint256 amount
    );

    function withdraw() 
    public {
        uint256 bal = balanceOf[msg.sender];
        balanceOf[msg.sender] = 0;
        msg.sender.transfer(bal);
        LogWithdraw(msg.sender, bal);
    }

}


contract RealityCheck is BalanceHolder {

    using SafeMath for uint256;

    // finalize_state options. Anything above this is a deadline timestamp.
    uint256 constant UNANSWERED = 0;
    uint256 constant PENDING_ARBITRATION = 1;

    // reveal_state options. Anything above this is a reveal deadline timestamp.
    uint256 constant COMMITMENT_NON_EXISTENT = 0;
    uint256 constant COMMITMENT_REVEALED = 1;

    // Commit->reveal timeout is 1/8 of the question timeout (rounded down).
    uint256 constant COMMITMENT_TIMEOUT_RATIO = 8;

    event LogNewTemplate(
        uint256 indexed template_id,
        address indexed user, 
        string question_text
    );

    event LogNewQuestion(
        bytes32 indexed question_id,
        address arbitrator, 
        uint256 timeout,
        uint256 template_id,
        string question,
        bytes32 indexed content_hash,
        uint256 created,
        address indexed user, 
        uint256 nonce
    );

    event LogNewAnswer(
        bytes32 answer,
        bytes32 indexed question_id,
        bytes32 history_hash,
        address indexed user,
        uint256 bond,
        uint256 ts,
        bool is_commitment
    );

    event LogAnswerReveal(
        bytes32 indexed question_id, 
        address indexed user, 
        bytes32 indexed answer_hash, 
        bytes32 answer, 
        uint256 nonce, 
        uint256 bond
    );

    event LogFundAnswerBounty(
        bytes32 indexed question_id,
        uint256 bounty_added,
        uint256 bounty,
        address indexed user 
    );

    event LogNotifyOfArbitrationRequest(
        bytes32 indexed question_id,
        address indexed user 
    );

    event LogFinalize(
        bytes32 indexed question_id,
        bytes32 indexed answer
    );

    event LogClaim(
        bytes32 indexed question_id,
        address indexed user,
        uint256 amount
    );

    event LogWithdraw(
        address indexed user,
        uint256 amount
    );

    struct Question {
        uint256 finalize_state;
        address arbitrator;
        uint256 timeout;
        bytes32 content_hash;
        uint256 bounty;
        bytes32 best_answer;
        uint256 bond;
        bytes32 history_hash;
    }

    // Stored in a mapping indexed by commitment_id, a hash of commitment hash, question, bond. 
    struct Commitment {
        uint256 reveal_state; // COMMITMENT_REVEALED, or the deadline for the reveal
        bytes32 revealed_answer;
    }

    // Only used when claiming more bonds than fits into a transaction
    // Stored in a mapping indexed by question_id.
    struct Claim {
        address payee;
        uint256 last_bond;
        uint256 take;
    }

    uint256 nextTemplateID = 0;
    mapping(uint256 => uint256) public templates;
    mapping(bytes32 => Question) public questions;
    mapping(bytes32 => Claim) question_claims;
    mapping(bytes32 => Commitment) public commitments;

    modifier onlyArbitrator(bytes32 question_id) {
        require(msg.sender == questions[question_id].arbitrator);
        _;
    }

    modifier stateAny() {
        _;
    }

    modifier stateNotCreated(bytes32 question_id) {
        require(questions[question_id].timeout == 0);
        _;
    }

    modifier stateOpen(bytes32 question_id) {
        require(questions[question_id].timeout > 0); // Check existence
        uint256 finalize_state = questions[question_id].finalize_state;
        require(finalize_state == UNANSWERED || finalize_state > now);
        _;
    }

    modifier statePendingArbitration(bytes32 question_id) {
        require(questions[question_id].finalize_state == PENDING_ARBITRATION);
        _;
    }

    modifier stateFinalized(bytes32 question_id) {
        require(isFinalized(question_id));
        _;
    }

    modifier bondMustDouble(bytes32 question_id, uint256 max_previous) {

        require(msg.value > 0); 

        uint256 bond_to_beat = questions[question_id].bond;

        // You have to double the bond every time
        require(msg.value >= (bond_to_beat * 2));

        // You can specify that you don't want to beat a bond bigger than x
        require(max_previous == 0 || bond_to_beat <= max_previous);

        _;

    }

    modifier bondMustBeZero() {
        require(msg.value == 0);
        _;
    }

    function RealityCheck() {
        createTemplate('{"title": "%s", "type": "bool", "category": "%s"}');
        createTemplate('{"title": "%s", "type": "uint", "decimals": 18, "category": "%s"}');
        createTemplate('{"title": "%s", "type": "int", "decimals": 18, "category": "%s"}');
        createTemplate('{"title": "%s", "type": "single-select", "outcomes": [%s], "category": "%s"}');
        createTemplate('{"title": "%s", "type": "multiple-select", "outcomes": [%s], "category": "%s"}');
    }

    function createTemplate(string content) 
    stateAny()
    public returns (uint256) {
        uint256 id = nextTemplateID;
        templates[id] = block.number;
        LogNewTemplate(id, msg.sender, content);
        nextTemplateID = id.add(1);
        return id;
    }

    function createTemplateAndAskQuestion(
        string content, 
        string question, address arbitrator, uint256 timeout, uint256 nonce) 
    // stateNotCreated is enforced by the internal _askQuestion
    public payable returns (bytes32) {
        uint256 template_id = createTemplate(content);
        return askQuestion(template_id, question, arbitrator, timeout, nonce);
    }

    function askQuestion(uint256 template_id, string question, address arbitrator, uint256 timeout, uint256 nonce) 
    // stateNotCreated is enforced by the internal _askQuestion
    public payable returns (bytes32) {

        require(templates[template_id] > 0);

        bytes32 content_hash = keccak256(template_id, question);
        bytes32 question_id = keccak256(content_hash, arbitrator, timeout, msg.sender, nonce);

        _askQuestion(question_id, content_hash, arbitrator, timeout);
        LogNewQuestion(question_id, arbitrator, timeout, template_id, question, content_hash, now, msg.sender, nonce);

        return question_id;
    }

    function _askQuestion(bytes32 question_id, bytes32 content_hash, address arbitrator, uint256 timeout) 
    stateNotCreated(question_id)
    internal {

        // A timeout of 0 makes no sense, and we will use this to check existence
        require(timeout > 0); 
        require(timeout < 365 days); 
        require(arbitrator != 0x0);

        questions[question_id].arbitrator = arbitrator;
        questions[question_id].timeout = timeout;
        questions[question_id].content_hash = content_hash;
        questions[question_id].bounty = msg.value;

    }

    function fundAnswerBounty(bytes32 question_id) 
    stateOpen(question_id)
    external payable {
        questions[question_id].bounty = questions[question_id].bounty.add(msg.value);
        LogFundAnswerBounty(question_id, msg.value, questions[question_id].bounty, msg.sender);
    }

    function _addAnswerToHistory(bytes32 question_id, bytes32 answer, address answerer, uint256 bond, bool is_commitment) 
    internal 
    {
        bytes32 new_state = keccak256(questions[question_id].history_hash, answer, bond, answerer, is_commitment);

        questions[question_id].bond = bond;
        questions[question_id].history_hash = new_state;

        LogNewAnswer(answer, question_id, new_state, answerer, bond, now, is_commitment);
    }

    function _updateCurrentAnswer(bytes32 question_id, bytes32 answer, uint256 timeout_secs)
    internal {
        questions[question_id].best_answer = answer;
        questions[question_id].finalize_state = now.add(timeout_secs);
    }


    function submitAnswer(bytes32 question_id, bytes32 answer, uint256 max_previous) 
    stateOpen(question_id)
    bondMustDouble(question_id, max_previous)
    external payable {
        _addAnswerToHistory(question_id, answer, msg.sender, msg.value, false);
        _updateCurrentAnswer(question_id, answer, questions[question_id].timeout);
    }

    // To prevent front-running, you can replace submitAnswer with submitAnswerCommitment -> submitAnswerReveal
    // The result is the same assuming you reveal. If you don't reveal in time, we just assume you're wrong. 
    function submitAnswerCommitment(bytes32 question_id, bytes32 answer_hash, uint256 max_previous) 
    stateOpen(question_id)
    bondMustDouble(question_id, max_previous)
    external payable {

        bytes32 commitment_id = keccak256(question_id, answer_hash, msg.value);

        require(commitments[commitment_id].reveal_state == COMMITMENT_NON_EXISTENT);

        uint256 commitment_timeout = questions[question_id].timeout.div(COMMITMENT_TIMEOUT_RATIO);
        commitments[commitment_id].reveal_state = now.add(commitment_timeout);

        _addAnswerToHistory(question_id, commitment_id, msg.sender, msg.value, true);
        // We don't call _updateCurrentAnswer, this is left until the reveal

    }

    function submitAnswerReveal(bytes32 question_id, bytes32 answer, uint256 nonce, uint256 bond) 
    stateOpen(question_id)
    external {

        bytes32 answer_hash = keccak256(answer, nonce);
        bytes32 commitment_id = keccak256(question_id, answer_hash, bond);

        uint256 reveal_state = commitments[commitment_id].reveal_state;
        require(reveal_state > COMMITMENT_REVEALED); // Commitment must exist, and not be in already-answered state
        require(reveal_state > now); // Reveal deadline must not have passed

        commitments[commitment_id].revealed_answer = answer;
        commitments[commitment_id].reveal_state = COMMITMENT_REVEALED;

        if (bond == questions[question_id].bond) {
            _updateCurrentAnswer(question_id, answer, questions[question_id].timeout);
        }

        LogAnswerReveal(question_id, msg.sender, answer_hash, answer, nonce, bond);

    }

    function notifyOfArbitrationRequest(bytes32 question_id, address requester) 
    onlyArbitrator(question_id)
    stateOpen(question_id)
    external returns (bool) {
        questions[question_id].finalize_state = PENDING_ARBITRATION;
        LogNotifyOfArbitrationRequest(question_id, requester);
    }

    // Answer sent by the arbitrator contract, without a bond.
    // We don't check the answerer, but for incentives to work right it should be:
    // - the person who submitted the current final answer if they were right.
    // - the person who paid for arbitration if the current final answer is wrong.
    function submitAnswerByArbitrator(bytes32 question_id, bytes32 answer, address answerer) 
    onlyArbitrator(question_id)
    statePendingArbitration(question_id)
    bondMustBeZero
    external returns (bytes32) {

        require(answerer != 0x0);
        LogFinalize(question_id, answer);

        _addAnswerToHistory(question_id, answer, answerer, 0, false);
        _updateCurrentAnswer(question_id, answer, 0);

    }

    function isFinalized(bytes32 question_id) 
    constant public returns (bool) {
        uint256 finalize_state = questions[question_id].finalize_state;
        return ( (finalize_state > PENDING_ARBITRATION) && (finalize_state <= now) );
    }

    function getFinalAnswer(bytes32 question_id) 
    stateFinalized(question_id)
    external constant returns (bytes32) {
        return questions[question_id].best_answer;
    }

    function getFinalAnswerIfMatches(bytes32 question_id, bytes32 content_hash, address arbitrator, uint256 min_timeout, uint256 min_bond) 
    stateFinalized(question_id)
    external constant returns (bytes32) {
        require(content_hash == questions[question_id].content_hash);
        require(arbitrator == questions[question_id].arbitrator);
        require(min_timeout <= questions[question_id].timeout);
        require(min_bond <= questions[question_id].bond);
        return questions[question_id].best_answer;
    }

    function _payPayee(bytes32 question_id, address payee, uint256 take) 
    internal
    {
        balanceOf[payee] = balanceOf[payee].add(take);
        LogClaim(question_id, payee, take);
    }

    function _applyPayeeChanges(
        bytes32 question_id, bytes32 best_answer, 
        uint256 take, address payee, 
        address addr, uint256 bond, bytes32 answer, bool is_commitment)
    internal returns (uint256, address)
    {

        // For commit-and-reveal, the answer history holds the commitment ID instead of the answer.
        // We look at the referenced commitment ID and switch in the actual answer.
        if (is_commitment) {
            bytes32 commitment_id = answer;
            // If it's a commit but it hasn't been revealed, it will always be considered wrong.
            if (commitments[commitment_id].reveal_state != COMMITMENT_REVEALED) {
                delete commitments[commitment_id];
                return (take, payee);
            } else {
                answer = commitments[commitment_id].revealed_answer;
                delete commitments[commitment_id];
            }
        }

        if (answer == best_answer) {

            if (payee == 0x0) {

                // The first payee we come to, ie the winner. They get the question bounty.
                payee = addr;
                take = take.add(questions[question_id].bounty);
                questions[question_id].bounty = 0;

            } else if (addr != payee) {

                // Answerer has changed, ie we found someone lower down who needs to be paid

                // The lower answerer will take over receiving bonds from higher answerer.
                // They should also be paid the takeover fee, which is set at a rate equivalent to their bond. 
                // (This is our arbitrary rule, to give consistent right-answerers a defence against high-rollers.)

                // There should be enough for the fee, but if not, take what we have.
                // There's an edge case involving weird arbitrator behaviour where we may be short.
                uint256 answer_takeover_fee = (take >= bond) ? bond : take;

                // Settle up with the old payee
                _payPayee(question_id, payee, take.sub(answer_takeover_fee));

                // Now start take again for the new payee
                payee = addr;
                take = answer_takeover_fee;

            }

        }

        return (take, payee);

    }

    // Assigns the winnings (bounty and bonds) to the people who gave the final accepted answer.
    // The caller must provide the answer history, in reverse order.
    // We work up the chain and assign bonds to the person who gave the right answer
    // If someone gave the winning answer earlier, they must get paid from the higher bond
    // That means we can't pay out the bond added at n until we have looked at n-1
    //
    // The first answer is authenticated by checking against the stored history_hash.
    // One of the inputs to history_hash is the history_hash before it, so we use that to authenticate the next entry, etc
    // Once we get to a null hash we'll know we're done and there are no more answers.
    //
    // Usually you would call the whole thing in a single transaction.
    // But in theory the chain of answers can be arbitrarily long, so you may run out of gas.
    // If you only supply part of chain then the data we need to pick up again later will be stored:
    // * Question holds the history_hash. It'll be zeroed once everything has been claimed.
    // * The rest goes in a dedicated Claim struct. This is only filled if you stop a claim before the end.
    //
    function claimWinnings(
        bytes32 question_id, 
        bytes32[] history_hashes, address[] addrs, uint256[] bonds, bytes32[] answers) 
    stateFinalized(question_id)
    public {

        require(history_hashes.length > 0);

        // These are only set if we split our claim over multiple transactions.
        address payee = question_claims[question_id].payee; 
        uint256 last_bond = question_claims[question_id].last_bond; 
        uint256 take = question_claims[question_id].take; 

        // Starts as the hash of the final answer submitted. It'll be cleared when we're done.
        // If we're splitting the claim over multiple transactions, it'll be the hash where we left off last time
        bytes32 last_history_hash = questions[question_id].history_hash;

        bytes32 best_answer = questions[question_id].best_answer;

        uint256 i;
        for (i=0; i<history_hashes.length; i++) {

            // is_commitment is 1 of only 2 options, so try them both rather than making the user pass in a parameter
            bool is_commitment; 
            if (last_history_hash == keccak256(history_hashes[i], answers[i], bonds[i], addrs[i], true)) {
                is_commitment = true;
            } else if (last_history_hash == keccak256(history_hashes[i], answers[i], bonds[i], addrs[i], false)){
                is_commitment = false;
            } else {
                // Params don't recreate data stored by submitAnswer() / submitAnswerCommitment() at this point in the history.
                revert();
            }

            take = take.add(last_bond); 

            (take, payee) = _applyPayeeChanges(question_id, best_answer, take, payee, addrs[i], bonds[i], answers[i], is_commitment);
 
            // Line the bond up for next time, when it will be added to somebody's take
            last_bond = bonds[i];
            last_history_hash = history_hashes[i];

        }
 
        if (last_history_hash != "") {
            // We haven't yet got to the null hash (1st answer), ie the caller didn't supply the full answer chain.
            // Persist the details so we can pick up later where we left off later.

            // If we know who to pay we can go ahead and pay them out, only keeping back last_bond
            // (We always know who to pay unless all we saw were unrevealed commits)
            if (payee != 0x0) {
                _payPayee(question_id, payee, take);
                take = 0;
            }

            question_claims[question_id].payee = payee;
            question_claims[question_id].last_bond = last_bond;
            question_claims[question_id].take = take;
        } else {
            // There is nothing left below us so the payee can keep what remains
            _payPayee(question_id, payee, take.add(last_bond));
            delete question_claims[question_id];
        }

        questions[question_id].history_hash = last_history_hash;

    }

    // Convenience function to claim for multiple questions in one go, then withdraw all funds.
    // question_ids are the question_ids, lengths are the number of history items for each.
    // The rest of the arguments are all the history item arrays stuck together
    function claimMultipleAndWithdrawBalance(bytes32[] question_ids, uint256[] lengths, bytes32[] hist_hashes, address[] addrs, uint256[] bonds, bytes32[] answers) 
    stateAny() // The finalization checks are done in the claimWinnings function
    public {
        
        uint256 qi;
        uint256 i;
        for(qi=0; qi<question_ids.length; qi++) {
            bytes32 qid = question_ids[qi];
            uint256 l = lengths[qi];
            bytes32[] memory hh = new bytes32[](l);
            address[] memory ad = new address[](l);
            uint256[] memory bo = new uint256[](l);
            bytes32[] memory an = new bytes32[](l);
            uint256 j;
            for(j=0; j<l; j++) {
                hh[j] = hist_hashes[i];
                ad[j] = addrs[i];
                bo[j] = bonds[i];
                an[j] = answers[i];
                i++;
            }
            claimWinnings(qid, hh, ad, bo, an);
        }
        withdraw();
    }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"history_hashes","type":"bytes32[]"},{"name":"addrs","type":"address[]"},{"name":"bonds","type":"uint256[]"},{"name":"answers","type":"bytes32[]"}],"name":"claimWinnings","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"question_ids","type":"bytes32[]"},{"name":"lengths","type":"uint256[]"},{"name":"hist_hashes","type":"bytes32[]"},{"name":"addrs","type":"address[]"},{"name":"bonds","type":"uint256[]"},{"name":"answers","type":"bytes32[]"}],"name":"claimMultipleAndWithdrawBalance","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"requester","type":"address"}],"name":"notifyOfArbitrationRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"answer","type":"bytes32"},{"name":"nonce","type":"uint256"},{"name":"bond","type":"uint256"}],"name":"submitAnswerReveal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"}],"name":"fundAnswerBounty","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"answer_hash","type":"bytes32"},{"name":"max_previous","type":"uint256"}],"name":"submitAnswerCommitment","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"answer","type":"bytes32"},{"name":"max_previous","type":"uint256"}],"name":"submitAnswer","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"content_hash","type":"bytes32"},{"name":"arbitrator","type":"address"},{"name":"min_timeout","type":"uint256"},{"name":"min_bond","type":"uint256"}],"name":"getFinalAnswerIfMatches","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"question_id","type":"bytes32"}],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"commitments","outputs":[{"name":"reveal_state","type":"uint256"},{"name":"revealed_answer","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"content","type":"string"}],"name":"createTemplate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"template_id","type":"uint256"},{"name":"question","type":"string"},{"name":"arbitrator","type":"address"},{"name":"timeout","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"askQuestion","outputs":[{"name":"","type":"bytes32"}],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"questions","outputs":[{"name":"finalize_state","type":"uint256"},{"name":"arbitrator","type":"address"},{"name":"timeout","type":"uint256"},{"name":"content_hash","type":"bytes32"},{"name":"bounty","type":"uint256"},{"name":"best_answer","type":"bytes32"},{"name":"bond","type":"uint256"},{"name":"history_hash","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"question_id","type":"bytes32"}],"name":"getFinalAnswer","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"templates","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"content","type":"string"},{"name":"question","type":"string"},{"name":"arbitrator","type":"address"},{"name":"timeout","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"createTemplateAndAskQuestion","outputs":[{"name":"","type":"bytes32"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"question_id","type":"bytes32"},{"name":"answer","type":"bytes32"},{"name":"answerer","type":"address"}],"name":"submitAnswerByArbitrator","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"template_id","type":"uint256"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"question_text","type":"string"}],"name":"LogNewTemplate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":false,"name":"arbitrator","type":"address"},{"indexed":false,"name":"timeout","type":"uint256"},{"indexed":false,"name":"template_id","type":"uint256"},{"indexed":false,"name":"question","type":"string"},{"indexed":true,"name":"content_hash","type":"bytes32"},{"indexed":false,"name":"created","type":"uint256"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"LogNewQuestion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"answer","type":"bytes32"},{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":false,"name":"history_hash","type":"bytes32"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"bond","type":"uint256"},{"indexed":false,"name":"ts","type":"uint256"},{"indexed":false,"name":"is_commitment","type":"bool"}],"name":"LogNewAnswer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"answer_hash","type":"bytes32"},{"indexed":false,"name":"answer","type":"bytes32"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"bond","type":"uint256"}],"name":"LogAnswerReveal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":false,"name":"bounty_added","type":"uint256"},{"indexed":false,"name":"bounty","type":"uint256"},{"indexed":true,"name":"user","type":"address"}],"name":"LogFundAnswerBounty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":true,"name":"user","type":"address"}],"name":"LogNotifyOfArbitrationRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":true,"name":"answer","type":"bytes32"}],"name":"LogFinalize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"question_id","type":"bytes32"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdraw","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600060015534156200001557600080fd5b5b6200008a60606040519081016040908152603182527f7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c2060208301527f2263617465676f7279223a20222573227d00000000000000000000000000000090820152640100000000620013a0620002d782021704565b506200012560806040519081016040908152604182527f7b227469746c65223a20222573222c202274797065223a202275696e74222c2060208301527f22646563696d616c73223a2031382c202263617465676f7279223a2022257322908201527f7d000000000000000000000000000000000000000000000000000000000000006060820152640100000000620013a0620002d782021704565b5062000199606060405190810160409081528082527f7b227469746c65223a20222573222c202274797065223a2022696e74222c202260208301527f646563696d616c73223a2031382c202263617465676f7279223a20222573227d90820152640100000000620013a0620002d782021704565b506200023460806040519081016040908152604c82527f7b227469746c65223a20222573222c202274797065223a202273696e676c652d60208301527f73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465908201527f676f7279223a20222573227d00000000000000000000000000000000000000006060820152640100000000620013a0620002d782021704565b50620002cf60806040519081016040908152604e82527f7b227469746c65223a20222573222c202274797065223a20226d756c7469706c60208301527f652d73656c656374222c20226f7574636f6d6573223a205b25735d2c20226361908201527f7465676f7279223a20222573227d0000000000000000000000000000000000006060820152640100000000620013a0620002d782021704565b505b620003dc565b600154600081815260026020526040808220439055909190600160a060020a0333169082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49086905160208082528190810183818151815260200191508051906020019080838360005b838110156200035d5780820151818401525b60200162000342565b50505050905090810190601f1680156200038b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a3620003b3816001640100000000620017c6620003c182021704565b6001559050805b5b50919050565b600082820183811015620003d157fe5b8091505b5092915050565b611bee80620003ec6000396000f300606060405236156101045763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631101a0fd811461010957806328828b1e1461021f5780633ccfd60b146103b05780633e4e0432146103c55780634dc266b4146103fb57806359245ff31461041c5780636f49ff831461042957806370a082311461043c57806377f325df1461046d57806379c3fdaf146104805780637f8d429e146104bd578063839df945146104e757806383bf4609146105155780638d5ff5d01461057857806395addb90146105eb578063a462fb7b14610650578063bc52565214610678578063ec5d4bba146106a0578063fe92049d14610750575b600080fd5b341561011457600080fd5b61021d6004803590604460248035908101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061078795505050505050565b005b341561022a57600080fd5b61021d60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610b0295505050505050565b005b34156103bb57600080fd5b61021d610cfc565b005b34156103d057600080fd5b6103e7600435600160a060020a0360243516610d85565b604051901515815260200160405180910390f35b341561040657600080fd5b61021d600435602435604435606435610e51565b005b61021d600435610fbd565b005b61021d60043560243560443561108a565b005b341561044757600080fd5b61045b600160a060020a03600435166111c5565b60405190815260200160405180910390f35b61021d6004356024356044356111d7565b005b341561048b57600080fd5b61045b600435602435600160a060020a03604435166064356084356112a5565b60405190815260200160405180910390f35b34156104c857600080fd5b6103e760043561135f565b604051901515815260200160405180910390f35b34156104f257600080fd5b6104fd600435611387565b60405191825260208201526040908101905180910390f35b341561052057600080fd5b61045b60046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506113a095505050505050565b60405190815260200160405180910390f35b61045b600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050600160a060020a03853516946020810135945060400135925061147d915050565b60405190815260200160405180910390f35b34156105f657600080fd5b61060160043561164b565b604051978852600160a060020a0390961660208801526040808801959095526060870193909352608086019190915260a085015260c084015260e0830191909152610100909101905180910390f35b341561065b57600080fd5b61045b60043561169b565b60405190815260200160405180910390f35b341561068357600080fd5b61045b6004356116ce565b60405190815260200160405180910390f35b61045b60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385351694602081013594506040013592506116e0915050565b60405190815260200160405180910390f35b341561075b57600080fd5b61045b600435602435600160a060020a0360443516611708565b60405190815260200160405180910390f35b60008060008060008060008b61079c8161135f565b15156107a757600080fd5b60008c51116107b557600080fd5b60008d81526004602090815260408083208054600182015460029092015460039094529184206007810154600590910154600160a060020a039093169c50909a50919850909650945092505b8b51831015610a23578b838151811061081657fe5b9060200190602002015189848151811061082c57fe5b906020019060200201518b858151811061084257fe5b906020019060200201518d868151811061085857fe5b9060200190602002015160016040519485526020850193909352604080850192909252600160a060020a03166c0100000000000000000000000002606084015290151560f860020a026074830152607590910190519081900390208514156108c35760019150610981565b8b83815181106108cf57fe5b906020019060200201518984815181106108e557fe5b906020019060200201518b85815181106108fb57fe5b906020019060200201518d868151811061091157fe5b9060200190602002015160006040519485526020850193909352604080850192909252600160a060020a03166c0100000000000000000000000002606084015290151560f860020a026074830152607590910190519081900390208514156101045760009150610981565b600080fd5b5b610992868863ffffffff6117c616565b95506109e38d85888b8f88815181106109a757fe5b906020019060200201518f89815181106109bd57fe5b906020019060200201518f8a815181106109d357fe5b90602001906020020151896117e0565b985095508983815181106109f357fe5b9060200190602002015196508b8381518110610a0b57fe5b9060200190602002015194505b600190920191610801565b8415610a8e57600160a060020a03881615610a4857610a438d89886118fc565b600095505b60008d8152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a1617815560018101889055600201869055610add565b610aa88d89610aa3898b63ffffffff6117c616565b6118fc565b60008d8152600460205260408120805473ffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201555b60008d81526003602052604090206007018590555b5b50505050505050505050505050565b600080600080610b10611b8c565b610b18611b8c565b610b20611b8c565b610b28611b8c565b60008098505b8e51891015610ce1578e8981518110610b4357fe5b9060200190602002015196508d8981518110610b5b57fe5b90602001906020020151955085604051805910610b755750595b908082528060200260200182016040525b50945085604051805910610b975750595b908082528060200260200182016040525b50935085604051805910610bb95750595b908082528060200260200182016040525b50925085604051805910610bdb5750595b908082528060200260200182016040525b509150600090505b85811015610cc8578c8881518110610c0857fe5b90602001906020020151858281518110610c1e57fe5b602090810290910101528b8881518110610c3457fe5b90602001906020020151848281518110610c4a57fe5b600160a060020a039092166020928302909101909101528a8881518110610c6d57fe5b90602001906020020151838281518110610c8357fe5b60209081029091010152898881518110610c9957fe5b90602001906020020151828281518110610caf57fe5b602090810290910101526001909701965b600101610bf4565b610cd58786868686610787565b5b600190980197610b2e565b610ce9610cfc565b5b5b505050505050505050505050505050565b600160a060020a033316600081815260208190526040808220805492905590919082156108fc0290839051600060405180830381858888f193505050501515610d4457600080fd5b33600160a060020a03167f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7088260405190815260200160405180910390a25b50565b600082815260036020526040812060010154839033600160a060020a03908116911614610db157600080fd5b600084815260036020526040812060020154859190819011610dd257600080fd5b50600081815260036020526040902054801580610dee57504281115b1515610df957600080fd5b6000868152600360205260409081902060019055600160a060020a0386169087907f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b4762905160405180910390a35b5b50505b5092915050565b6000848152600360205260408120600201548190819087908290819011610e7757600080fd5b50600081815260036020526040902054801580610e9357504281115b1515610e9e57600080fd5b878760405191825260208201526040908101905180910390209450888587604051928352602083019190915260408083019190915260609091019051908190039020600081815260056020526040902054909450925060018311610f0157600080fd5b428311610f0d57600080fd5b600084815260056020908152604080832060018082018d905590558b83526003909152902060060154861415610f5c57600089815260036020526040902060020154610f5c908a908a9061197f565b5b84600160a060020a0333168a7fa7b2d313bc7a062e30b2c3b811aa4c9faf09755a6b4ea3bf42deff920944332f8b8b8b60405192835260208301919091526040808301919091526060909101905180910390a45b5b505050505050505050565b600081815260036020526040812060020154829190819011610fde57600080fd5b50600081815260036020526040902054801580610ffa57504281115b151561100557600080fd5b600083815260036020526040902060040154611027903463ffffffff6117c616565b60008481526003602052604090819020600401829055600160a060020a0333169185917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669134915191825260208201526040908101905180910390a35b5b505050565b6000838152600360205260408120600201548190859082908190116110ae57600080fd5b506000818152600360205260409020548015806110ca57504281115b15156110d557600080fd5b86856000348190116110e657600080fd5b506000828152600360205260409020600601546002810234101561110957600080fd5b8115806111165750818111155b151561112157600080fd5b8989346040519283526020830191909152604080830191909152606090910190519081900390206000818152600560205260409020549097501561116457600080fd5b60008a81526003602052604090206002015461118790600863ffffffff6119b816565b9550611199428763ffffffff6117c616565b6000888152600560205260409020556111b68a88333460016119d4565b5b5b5050505b50505050505050565b60006020819052908152604090205481565b6000838152600360205260408120600201548491908190116111f857600080fd5b5060008181526003602052604090205480158061121457504281115b151561121f57600080fd5b848360003481901161123057600080fd5b506000828152600360205260409020600601546002810234101561125357600080fd5b8115806112605750818111155b151561126b57600080fd5b6112798888333460006119d4565b600088815260036020526040902060020154611298908990899061197f565b5b5b5050505b5050505050565b6000856112b18161135f565b15156112bc57600080fd5b6000878152600360208190526040909120015486146112da57600080fd5b600087815260036020526040902060010154600160a060020a0386811691161461130357600080fd5b60008781526003602052604090206002015484111561132157600080fd5b60008781526003602052604090206006015483111561133f57600080fd5b60008781526003602052604090206005015491505b5b5095945050505050565b60008181526003602052604081205460018111801561137e5750428111155b91505b50919050565b6005602052600090815260409020805460019091015482565b600154600081815260026020526040808220439055909190600160a060020a0333169082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49086905160208082528190810183818151815260200191508051906020019080838360005b838110156114245780820151818401525b60200161140b565b50505050905090810190601f1680156114515780820380516001836020036101000a031916815260200191505b509250505060405180910390a361146f81600163ffffffff6117c616565b6001559050805b5b50919050565b6000858152600260205260408120548190819081901161149c57600080fd5b87876040518083815260200182805190602001908083835b602083106114d457805182525b601f1990920191602091820191016114b4565b6001836020036101000a0380198251168184511617909252505050919091019350604092505050518091039020915081868633876040519485526c01000000000000000000000000600160a060020a03948516810260208701526034860193909352921602605483015260688201526088016040518091039020905061155c81838888611acd565b600160a060020a03331682827f6692d93d1efa542109d7fe013ad560aaddf11527e0cc829e93be2363396c446389898d8d428c6040518087600160a060020a0316600160a060020a0316815260200186815260200185815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156115fd5780820151818401525b6020016115e4565b50505050905090810190601f16801561162a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a48092505b505095945050505050565b6003602081905260009182526040909120805460018201546002830154938301546004840154600585015460068601546007909601549496600160a060020a039094169593949293919290919088565b6000816116a78161135f565b15156116b257600080fd5b60008381526003602052604090206005015491505b5b50919050565b60026020526000908152604090205481565b6000806116ec876113a0565b90506116fb818787878761147d565b91505b5095945050505050565b600083815260036020526040812060010154849033600160a060020a0390811691161461173457600080fd5b600085815260036020526040902054859060011461175157600080fd5b341561175c57600080fd5b600160a060020a038416151561177157600080fd5b84867f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f9760405160405180910390a36117ad8686866000806119d4565b6117b98686600061197f565b5b5b5b505b509392505050565b6000828201838110156117d557fe5b8091505b5092915050565b600080600080841561184457600086815260056020526040902054869250600114611825576000828152600560205260408120818155600101558993508892506118ed565b6000828152600560205260408120600181018054918390559190915595505b5b858b14156118e457600160a060020a038916151561189e5760008c8152600360205260409020600401549798508897611885908b9063ffffffff6117c616565b60008d81526003602052604081206004015599506118e4565b600160a060020a03888116908a16146118e457868a10156118bf57896118c1565b865b90506118dd8c8a610aa38d8563ffffffff611b7516565b6118fc565b8798508099505b5b5b8989935093505b50509850989650505050505050565b600160a060020a038216600090815260208190526040902054611925908263ffffffff6117c616565b600160a060020a03831660008181526020819052604090819020929092559084907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69084905190815260200160405180910390a35b505050565b60008381526003602052604090206005018290556119a3428263ffffffff6117c616565b6000848152600360205260409020555b505050565b60008082848115156119c657fe5b0490508091505b5092915050565b60008581526003602052604080822060070154908690859087908690519485526020850193909352604080850192909252600160a060020a03166c0100000000000000000000000002606084015290151560f860020a026074830152607590910190519081900390206000878152600360205260409081902060068101869055600701829055909150600160a060020a0385169087907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e622190889085908890429089905194855260208501939093526040808501929092526060840152901515608083015260a0909101905180910390a35b505050505050565b600084815260036020526040902060020154849015611aeb57600080fd5b60008211611af857600080fd5b6301e133808210611b0857600080fd5b600160a060020a0383161515611b1d57600080fd5b600085815260036020819052604090912060018101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03871617905560028101849055908101859055346004909101555b5b5050505050565b600082821115611b8157fe5b508082035b92915050565b60206040519081016040526000815290565b60206040519081016040526000815290565b602060405190810160405260008152905600a165627a7a723058208eb17300ee50cec59e8489981023896cd5707441756709be694f1cb31dba118a0029

   Swarm Source:
bzzr://8eb17300ee50cec59e8489981023896cd5707441756709be694f1cb31dba118a
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward