Contract 0x0Ab2c9e20Aa31fd3a3728a86F2526CCA06A2B76D

 

TxHash Block Age From To Value [TxFee]
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0003630757
0xc8dfb636b01637da3c8135bd28ee0e6ca99512fb74dadd88922007fc0b66d513723067454 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.000126108
0xc02def99aa5f345c9ae0c5635022854ff3955a269a87b1f873b8889a8e63544e72305001 hr 56 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001222036
0x7313c3b6819c2e6881b8786ace280178b10b954fa5f614764b4d205c421a5b3f72303732 hrs 40 mins ago0xd89a9e656ba32f2464c8a4500991a57da2f9addf  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001222036
0xd3017fbecf14582d33f4b9470455d749bd4d5ebe1690bc056e85d321033d844572302183 hrs 32 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0000637584
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0005051488
0x70fc3b296ce215958744d33356f7c7fe4ee742ca5282c3294e2ec61274c3547b72299265 hrs 11 mins ago0xd89a9e656ba32f2464c8a4500991a57da2f9addf  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0004035456
0xf976c911b2bfe6ff7f94d49c006e13487d024c26a28d834571e03bdef0a52df472297766 hrs 9 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001115772
0x85a911821dc9a7d8495eca344108dc3ad9c0b93e4815c1e930be75319a0cd3df72296027 hrs 1 min ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0000956376
0xd7daf199f35615347762163ec2899063d629b568b87f02e0283388005659741c72294098 hrs 7 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0000956376
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0002999321
0x22a7cece3529b9c5c4bce7cacdbfaa73186ae36d76c096c910e53f236325e45e72291319 hrs 42 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001429224
0x7c726ad4b53e31f3653f6123f20f708222ee3e0b70b3e9760a8f6186126400b0722900410 hrs 28 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001115772
0xbf1f3bd0c7d3105ce673194ff5cf0a8263f010a1627b51e8895855c887837300722888911 hrs 2 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001381432
0x5a7af3fcdee724cce6dfebf1b2cdd0dd38495a3c63c2ede6df65c8d47e0bef58722872511 hrs 57 mins ago0xd89a9e656ba32f2464c8a4500991a57da2f9addf  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001700224
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0005051488
0x78aa10dee0c6d511de8f93fe35cd73229753ffb66e44e084718fd5fbeb267c3c722849413 hrs 21 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0003951384
0xea372a96ed355769b2f02c09c9855e0e366c95bc2d7d7aa02e0ffd3b0195d918722832614 hrs 17 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001700224
0xcc8cf3f25240a38809eaf4f05450a798854d2659c272cd988ce5ce89be084d46722819215 hrs 2 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.000185962
0x274adbc11f83bdc88b552f27bb601ef8e9cb92912dbc18f9b01fdb8c21b1fd76722807315 hrs 44 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001700224
0x03ad27fc327ba927714db78cd4c5ab5aee70f2135a5572ceff306200cfffe87c722796016 hrs 22 mins ago0xd89a9e656ba32f2464c8a4500991a57da2f9addf  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0003946475
0xcc59e936710daf448a4f528b64c5fb2e017b21f1920189da8be88082528adc41722784616 hrs 57 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0002690304
0xabde0595987e8623f28821ef2c5efa11d2bfb443448be4d0ceed22d97ffa0479722775017 hrs 33 mins ago0x1d4634bc6815ee56c242248babb1df37f5b2e1c2  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001222036
0xa4287b35a1f2cb8c8aa7326789243ba874747b2ba457bc06e3f5c0e31ca0bd5c722762418 hrs 14 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001115772
0x1de0264248930feaf7550200da4f1b2f262d7a8c104721e9730615d2e31a41be722742319 hrs 13 mins ago0x591c583ba9d06bda07b0f8ed5e3d0b88e453d712  IN   0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0.01 Ether0.0001700224
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xda149b17c154e964456553c749b7b4998c152c9e0.0005 Ether
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xdb058d036768cfa9a94963f99161e3c94ad6f5da0.0005 Ether
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x591c583ba9d06bda07b0f8ed5e3d0b88e453d7120.012 Ether
0x48976b7eaf60ed4eaf25bf73aa9ccc4fc9b907cba60b913e359b386e8e64900a723078912 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xda149b17c154e964456553c749b7b4998c152c9e0.0005 Ether
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xdb058d036768cfa9a94963f99161e3c94ad6f5da0.0005 Ether
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x591c583ba9d06bda07b0f8ed5e3d0b88e453d7120.012 Ether
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x591c583ba9d06bda07b0f8ed5e3d0b88e453d7120.012 Ether
0x1e3eaa69595a5f9fc1e40bf2ef621599972a1ffcfeb327da9d45ab414db9a7b572300634 hrs 21 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x591c583ba9d06bda07b0f8ed5e3d0b88e453d7120.012 Ether
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xda149b17c154e964456553c749b7b4998c152c9e0.0005 Ether
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xdb058d036768cfa9a94963f99161e3c94ad6f5da0.0005 Ether
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x591c583ba9d06bda07b0f8ed5e3d0b88e453d7120.012 Ether
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xd89a9e656ba32f2464c8a4500991a57da2f9addf0.012 Ether
0x25db3e46ac463a6b947516f213b9158bc2a3daba9e43d91fc7fcb92b01497cb372292579 hrs 3 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xda149b17c154e964456553c749b7b4998c152c9e0.0005 Ether
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xdb058d036768cfa9a94963f99161e3c94ad6f5da0.0005 Ether
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0x1d4634bc6815ee56c242248babb1df37f5b2e1c20.012 Ether
0x01fb47b26cf9ac9f77d79a531011202c26a3756dfab63e643540c1e50411aafb722863312 hrs 36 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xd89a9e656ba32f2464c8a4500991a57da2f9addf0.012 Ether
0x03ad27fc327ba927714db78cd4c5ab5aee70f2135a5572ceff306200cfffe87c722796016 hrs 22 mins ago0x0ab2c9e20aa31fd3a3728a86f2526cca06a2b76d0xda149b17c154e964456553c749b7b4998c152c9e0.0005 Ether
[ Download CSV Export 
Contract Source Code Verified (Exact Match)
Contract Name: RussianRoulette
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.25;


/** 
Russian Roulette: the fair game for ether on smart contract.

You and 4 other people place their bets. Placing
the bet you load a cartridge into the revolver cylinder -
currently unknown whether it is blank or live.

The cylinder revolves, the revolver shoots players one
by one and the unlucky one who gets live cartridge gets killed,
others win 120% of their bets.

Still the unlucky one has a chance for a jackpot.

The game uses fair random number generator based on 
future block, so nobody, nor players nor developers can guess its results.

Join the game and win: https://multi.today
*/


library Random {
    struct Data {
        uint blockNumber;
        bytes32 hash;
    }

    function random(Data memory d, uint max) internal view returns (uint) {
        if(d.hash == 0){
            //Use simplified entropy
            d.hash = keccak256(abi.encodePacked(now, block.difficulty, block.number, blockhash(block.number - 1)));
        }else{
            //Use entropy based on blockhash at which transaction has been confirmed
            d.hash = keccak256(abi.encodePacked(d.hash));
        }

        return uint(d.hash)%max;
    }

    function init(Data memory d, uint blockNumber) internal view {
        if(blockNumber != d.blockNumber){
            //We have Random for different block. So we must reinit it
            //If, in the unlikely case, the block is too far away, then the blockhash
            //will return 0 and we will use simplified entropy.
            //It is highly unlikely because nor players, nor administration are interested in it
            d.hash = blockhash(blockNumber);
            d.blockNumber = blockNumber;
        }
    }
}


library Cylinder {
    using Random for Random.Data;

    uint constant CYLINDER_CAPACITY = 5;
    uint constant MULTIPLIER_PERCENT = 120;
    uint constant WITHDRAW_PERCENT = 99;
    uint constant JACKPOT_PERCENT = 2;
    uint constant SERVICE_PERCENT = 1;
    uint constant PROMO_PERCENT = 1;

    //Jackpot chances - once in a number of games
    uint constant HALF_JACKPOT_CHANCE = 100;
    uint constant FULL_JACKPOT_CHANCE = 1000;

    address constant SERVICE = 0xDb058D036768Cfa9a94963f99161e3c94aD6f5dA;
    address constant PROMO = 0xdA149b17C154e964456553C749B7B4998c152c9E;

    //The deposit structure holds all the info about the deposit made
    struct Deposit {
        address depositor; //The depositor address
        uint64 timeAt; //When the deposit was made
    }

    //The result of the game. Always stored at height%CYLINDER_CAPACITY index
    struct GameResult{
        uint48 timeAt;  //Time of finalization
        uint48 blockAt;  //Block number of finalization
        uint48 height;  //Height of the cylinder slots
        uint8 unlucky;  //index of the unlucky one in slots relative to height
        uint96 jackpot; //The jackpot won (if not 0)
        bool full;      //Full jackpot won
    }

    struct Data{
        uint dep;
        Deposit[] slots;
        GameResult[] results;
        uint currentCylinderHeight;
        uint jackpot;
    }

    function checkPercentConsistency() pure internal {
        //All the percent should be consistent with each other
        assert(100 * CYLINDER_CAPACITY == MULTIPLIER_PERCENT * (CYLINDER_CAPACITY-1) + (JACKPOT_PERCENT + SERVICE_PERCENT + PROMO_PERCENT)*CYLINDER_CAPACITY);
        assert(WITHDRAW_PERCENT <= 100);
    }

    function addDep(Cylinder.Data storage c, address depositor) internal returns (bool){
        c.slots.push(Deposit(depositor, uint64(now)));
        if(c.slots.length % CYLINDER_CAPACITY == 0) {
            //Indicate that we need to put the game to the list of ready to finish games
            c.currentCylinderHeight += CYLINDER_CAPACITY;
            return true; //The game should be finished
        }else{
            return false; //The game continues
        }
    }

    function finish(Cylinder.Data storage c, uint height, Random.Data memory r) internal {
        GameResult memory gr = computeGameResult(c, height, r);

        uint dep = c.dep;
        uint unlucky = gr.unlucky; //The loser index
        uint reward = dep*MULTIPLIER_PERCENT/100;
        uint length = height + CYLINDER_CAPACITY;

        uint total = dep*CYLINDER_CAPACITY;
        uint jackAmount = c.jackpot;
        uint jackWon = gr.jackpot;

        for(uint i=height; i<length; ++i){
            if(i-height != unlucky){ //Winners
                Deposit storage d = c.slots[i];
                if(!d.depositor.send(reward)) //If we can not send the money (it may be malicious contract)
                    jackAmount += reward;     //add it to jackpot
            }
        }

        if(jackWon > 0){
            //Jackpot won!!! Send it to (un)lucky one
            Deposit storage win = c.slots[height + unlucky];
            if(win.depositor.send(jackWon))
                jackAmount -= jackWon; //jackWon is always <= jackAmount
        }

        c.jackpot = jackAmount + total*JACKPOT_PERCENT/100;

        c.results.push(gr);

        SERVICE.transfer(total*(SERVICE_PERCENT)/100);
        PROMO.transfer(total*PROMO_PERCENT/100);
    }

    function computeGameResult(Cylinder.Data storage c, uint height, Random.Data memory r) internal view returns (GameResult memory) {
        assert(height + CYLINDER_CAPACITY <= c.currentCylinderHeight);

        uint unlucky = r.random(CYLINDER_CAPACITY); //The loser index
        uint jackAmount = c.jackpot;
        uint jackWon = 0;
        bool fullJack = false;

        uint jpchance = r.random(FULL_JACKPOT_CHANCE);
        if(jpchance % HALF_JACKPOT_CHANCE == 0){
            //Jackpot won!!!
            if(jpchance == 0){
                //Once in FULL_JACKPOT_CHANCE the unlucky one gets full jackpot
                fullJack = true;
                jackWon = jackAmount;
            }else{
                //Once in HALF_JACKPOT_CHANCE the unlucky one gets half of jackpot
                jackWon = jackAmount/2;
            }
            //jackWon is always not more than c.jackpot
        }

        return GameResult(uint48(now), uint48(block.number), uint48(height), uint8(unlucky), uint96(jackWon), fullJack);
    }

    function withdraw(Cylinder.Data storage c, address addr) internal returns (bool){
        uint length = c.slots.length;
        uint dep = c.dep;
        for(uint i=c.currentCylinderHeight; i<length; ++i){
            Deposit storage deposit = c.slots[i];
            if(deposit.depositor == addr){ //Return dep
                uint ret = dep*WITHDRAW_PERCENT/100;
                deposit.depositor.transfer(msg.value + ret);
                SERVICE.transfer(dep - ret);

                --length; //We need only length-1 further on
                if(i < length){
                    c.slots[i] = c.slots[length];
                }

                c.slots.length = length;
                return true;
            }
        }
    }

    function getCylinder(Cylinder.Data storage c, uint idx) internal view returns (uint96 dep, uint64 index, address[] deps, uint8 unlucky, int96 jackpot, uint64 lastDepTime){
        dep = uint96(c.dep);
        index = uint64(idx);
        require(idx <= c.slots.length/CYLINDER_CAPACITY, "Wrong cylinder index");

        if(uint(index) >= c.results.length){
            uint size = c.slots.length - index*CYLINDER_CAPACITY;
            if(size > CYLINDER_CAPACITY)
                size = CYLINDER_CAPACITY;

            deps = new address[](size);
        }else{
            deps = new address[](CYLINDER_CAPACITY);

            Cylinder.GameResult storage gr = c.results[index];
            unlucky = gr.unlucky;
            jackpot = gr.full ? -int96(gr.jackpot) : int96(gr.jackpot);
            lastDepTime = gr.timeAt;
        }

        for(uint i=0; i<deps.length; ++i){
            Deposit storage d = c.slots[index*CYLINDER_CAPACITY + i];
            deps[i] = d.depositor;
            if(lastDepTime < uint(d.timeAt))
                lastDepTime = d.timeAt;
        }
    }

    function getCapacity() internal pure returns (uint) {
        return CYLINDER_CAPACITY;
    }
}


contract RussianRoulette {
    using Cylinder for Cylinder.Data;
    using Random for Random.Data;

    uint[14] public BETS = [
        0.01 ether,
        0.05 ether,
        0.1  ether,
        0.2  ether,
        0.3  ether,
        0.5  ether,
        0.7  ether,
        1    ether,
        1.5  ether,
        2    ether,
        3    ether,
        5    ether,
        7    ether,
        10   ether
    ];

    struct GameToFinish{
        uint8 game;
        uint64 blockNumber;
        uint64 height;
    }

    Cylinder.Data[] private games;
    GameToFinish[] private gtf; //Games that are waiting to be finished
    uint private gtfStart = 0; //Starting index of games to finish queue

    constructor() public {
        Cylinder.checkPercentConsistency();
        //Initialize games for different bets
        games.length = BETS.length;
    }

    function() public payable {
        //first choose the game on the basis of the bets table
        for(int i=int(BETS.length)-1; i>=0; i--){
            uint bet = BETS[uint(i)];
            if(msg.value >= bet){
                //Finish the games if there are any waiting
                finishGames();

                if(msg.value > bet) //return change
                    msg.sender.transfer(msg.value - bet);

                Cylinder.Data storage game = games[uint(i)];
                if(game.dep == 0){ //Initialize game data on first deposit
                    game.dep = bet;
                }

                uint height = game.currentCylinderHeight;
                if(game.addDep(msg.sender)){
                    //The game is ready to be finished
                    //Put it to finish queue
                    gtf.push(GameToFinish(uint8(i), uint64(block.number), uint64(height)));
                }
                return;
            }
        }

        if(msg.value == 0.00000112 ether){
            withdraw();
            return;
        }

        if(msg.value == 0){
            finishGames();
            return;
        }

        revert("Deposit is too small");
    }

    function withdrawFrom(uint game) public {
        require(game < BETS.length);
        require(games[game].withdraw(msg.sender), "You are not betting in this game");

        //Finish the games if there are any waiting
        finishGames();
    }

    function withdraw() public {
        uint length = BETS.length;
        for(uint i=0; i<length; ++i){
            if(games[i].withdraw(msg.sender)){
                //Finish the games if there are any waiting
                finishGames();
                return;
            }
        }

        revert("You are not betting in any game");
    }

    function finishGames() private {
        Random.Data memory r;
        uint length = gtf.length;
        for(uint i=gtfStart; i<length; ++i){
            GameToFinish memory g = gtf[i];
            uint bn = g.blockNumber;
            if(bn == block.number)
                break; //We can not finish the game in the same block

            r.init(bn);

            Cylinder.Data storage c = games[g.game];
            c.finish(g.height, r);

            delete gtf[i];
        }

        if(i > gtfStart)
            gtfStart = i;
    }

    function getGameState(uint game) public view returns (uint64 blockNumber, bytes32 blockHash, uint96 dep, uint64 slotsCount, uint64 resultsCount, uint64 currentCylinderIndex, uint96 jackpot){
        Cylinder.Data storage c = games[game];
        dep = uint96(c.dep);
        slotsCount = uint64(c.slots.length);
        resultsCount = uint64(c.results.length);
        currentCylinderIndex = uint64(c.currentCylinderHeight/Cylinder.getCapacity());
        jackpot = uint96(c.jackpot);
        blockNumber = uint64(block.number-1);
        blockHash = blockhash(block.number-1);
    }

    function getGameStates() public view returns (uint64 blockNumber, bytes32 blockHash, uint96[] dep, uint64[] slotsCount, uint64[] resultsCount, uint64[] currentCylinderIndex, uint96[] jackpot){
        dep = new uint96[](BETS.length);
        slotsCount = new uint64[](BETS.length);
        resultsCount = new uint64[](BETS.length);
        currentCylinderIndex = new uint64[](BETS.length);
        jackpot = new uint96[](BETS.length);

        for(uint i=0; i<BETS.length; ++i){
            (blockNumber, blockHash, dep[i], slotsCount[i], resultsCount[i], currentCylinderIndex[i], jackpot[i]) = getGameState(i);
        }
    }

    function getCylinder(uint game, int _idx) public view returns (uint64 blockNumber, bytes32 blockHash, uint96 dep, uint64 index, address[] deps, uint8 unlucky, int96 jackpot, uint64 lastDepTime, uint8 status){
        Cylinder.Data storage c = games[game];
        index = uint64(_idx < 0 ? c.slots.length/Cylinder.getCapacity() : uint(_idx));

        (dep, index, deps, unlucky, jackpot, lastDepTime) = c.getCylinder(index);
        blockNumber = uint64(block.number-1);
        blockHash = blockhash(block.number-1);
        //status = 0; //The game is running

        uint8 _unlucky;
        int96 _jackpot;

        //We will try to get preliminary results of the ready to be finished game
        (_unlucky, _jackpot, status) = _getGameResults(game, index);
        if(status == 2){
            unlucky = _unlucky;
            jackpot = _jackpot;
        }
    }

    function _getGameResults(uint game, uint index) private view returns (uint8 unlucky, int96 jackpot, uint8 status){
        Cylinder.Data storage c = games[game];
        if(index < c.results.length){
            status = 3; //Finished and has finalized results
        }else if(c.slots.length >= (index+1)*Cylinder.getCapacity()){
            status = 1; //Closed, but no results yet
            //This game needs finishing, so try to find out who wins
            Random.Data memory r;
            uint length = gtf.length;
            for(uint i=gtfStart; i<length; ++i){
                GameToFinish memory g = gtf[i];
                uint bn = g.blockNumber;
                if(blockhash(bn) == 0)
                    break; //We either on the same block or too far from this block

                r.init(bn);

                Cylinder.GameResult memory gr = games[g.game].computeGameResult(g.height, r);

                if(uint(g.height) == index*Cylinder.getCapacity() && uint(g.game) == game){
                    //We have found our game so just fill the results
                    unlucky = gr.unlucky;
                    jackpot = gr.full ? -int96(gr.jackpot) : int96(gr.jackpot); //The jackpot amount may be inaccurate
                    status = 2; //Closed and has preliminary results
                    break;
                }
            }
        }
    }

    function getCylinders(uint game, uint idxFrom, uint idxTo) public view returns (uint blockNumber, bytes32 blockHash, uint96 dep, uint64[] index, address[] deps, uint8[] unlucky, int96[] jackpot, uint64[] lastDepTime, uint8[] status){
        Cylinder.Data storage c = games[game];
        uint lastCylinderIndex = c.slots.length/Cylinder.getCapacity();
        blockNumber = block.number-1;
        blockHash = blockhash(block.number-1);
        dep = uint96(c.dep);

        require(idxFrom <= lastCylinderIndex && idxFrom <= idxTo, "Wrong cylinder index range");

        if(idxTo > lastCylinderIndex)
            idxTo = lastCylinderIndex;

        uint count = idxTo - idxFrom + 1;

        index = new uint64[](count);
        deps = new address[](count*Cylinder.getCapacity());
        unlucky = new uint8[](count);
        jackpot = new int96[](count);
        lastDepTime = new uint64[](count);
        status = new uint8[](count);

        _putCylindersToArrays(game, idxFrom, count, index, deps, unlucky, jackpot, lastDepTime, status);
    }

    function _putCylindersToArrays(uint game, uint idxFrom, uint count, uint64[] index, address[] deps, uint8[] unlucky, int96[] jackpot, uint64[] lastDepTime, uint8[] status) private view {
        for(uint i=0; i<count; ++i){
            address[] memory _deps;
            (, , , index[i], _deps, unlucky[i], jackpot[i], lastDepTime[i], status[i]) = getCylinder(game, int(idxFrom + i));
            _copyDeps(i*Cylinder.getCapacity(), deps, _deps);
        }
    }

    function _copyDeps(uint start, address[] deps, address[] memory _deps) private pure {
        for(uint j=0; j<_deps.length; ++j){
            deps[start + j] = _deps[j];
        }
    }

    function getUnfinishedCount() public view returns (uint) {
        return gtf.length - gtfStart;
    }

    function getUnfinished(uint i) public view returns (uint game, uint blockNumber, uint cylinder) {
        game = gtf[gtfStart + i].game;
        blockNumber = gtf[gtfStart + i].blockNumber;
        cylinder = gtf[gtfStart + i].height/Cylinder.getCapacity();
    }

    function getTotalCylindersCount() public view returns (uint) {
        return gtf.length;
    }

    function testRandom() public view returns (uint[] numbers) {
        numbers = new uint[](32);
        Random.Data memory r;
        for(uint i=0; i<256; i+=8){
            numbers[i/8] = Random.random(r, 10);
        }
    }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"getGameStates","outputs":[{"name":"blockNumber","type":"uint64"},{"name":"blockHash","type":"bytes32"},{"name":"dep","type":"uint96[]"},{"name":"slotsCount","type":"uint64[]"},{"name":"resultsCount","type":"uint64[]"},{"name":"currentCylinderIndex","type":"uint64[]"},{"name":"jackpot","type":"uint96[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"getUnfinished","outputs":[{"name":"game","type":"uint256"},{"name":"blockNumber","type":"uint256"},{"name":"cylinder","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalCylindersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"BETS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getUnfinishedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"game","type":"uint256"},{"name":"idxFrom","type":"uint256"},{"name":"idxTo","type":"uint256"}],"name":"getCylinders","outputs":[{"name":"blockNumber","type":"uint256"},{"name":"blockHash","type":"bytes32"},{"name":"dep","type":"uint96"},{"name":"index","type":"uint64[]"},{"name":"deps","type":"address[]"},{"name":"unlucky","type":"uint8[]"},{"name":"jackpot","type":"int96[]"},{"name":"lastDepTime","type":"uint64[]"},{"name":"status","type":"uint8[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"game","type":"uint256"}],"name":"withdrawFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"game","type":"uint256"},{"name":"_idx","type":"int256"}],"name":"getCylinder","outputs":[{"name":"blockNumber","type":"uint64"},{"name":"blockHash","type":"bytes32"},{"name":"dep","type":"uint96"},{"name":"index","type":"uint64"},{"name":"deps","type":"address[]"},{"name":"unlucky","type":"uint8"},{"name":"jackpot","type":"int96"},{"name":"lastDepTime","type":"uint64"},{"name":"status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"testRandom","outputs":[{"name":"numbers","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"game","type":"uint256"}],"name":"getGameState","outputs":[{"name":"blockNumber","type":"uint64"},{"name":"blockHash","type":"bytes32"},{"name":"dep","type":"uint96"},{"name":"slotsCount","type":"uint64"},{"name":"resultsCount","type":"uint64"},{"name":"currentCylinderIndex","type":"uint64"},{"name":"jackpot","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

Contract Creation Code
610240604052662386f26fc10000608090815266b1a2bc2ec5000060a05267016345785d8a000060c0526702c68af0bb14000060e052670429d069189e0000610100526706f05b59d3b20000610120526709b6e64a8ec6000061014052670de0b6b3a7640000610160526714d1120d7b16000061018052671bc16d674ec800006101a0526729a2241af62c00006101c052674563918244f400006101e052676124fee993bc000061020052678ac7230489e8000061022052620000c790600090600e6200010a565b506000601055348015620000da57600080fd5b50620000f364010000000062001fda6200010882021704565b600e62000101818062000159565b506200027b565b565b82600e810192821562000147579160200282015b8281111562000147578251829067ffffffffffffffff169055916020019190600101906200011e565b50620001559291506200018d565b5090565b8154818355818111156200018857600502816005028360005260206000209182019101620001889190620001ad565b505050565b620001aa91905b8082111562000155576000815560010162000194565b90565b620001aa91905b8082111562000155576000808255620001d16001830182620001f9565b620001e16002830160006200021c565b506000600382018190556004820155600501620001b4565b50805460008255906000526020600020908101906200021991906200023c565b50565b50805460008255906000526020600020908101906200021991906200018d565b620001aa91905b80821115620001555780547fffffffff0000000000000000000000000000000000000000000000000000000016815560010162000243565b612008806200028b6000396000f3006080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630abcdf9481146102aa5780633c7af096146104515780633ccfd60b1461048757806364ed74cf1461049e57806392d5a1ae146104c5578063adcbafe7146104dd578063d34dfc68146104f2578063e6dad824146106f6578063ec284e0a1461070e578063fbddd14b146107e5578063ffde0c741461084a575b600d600080805b6000841261022f57600084600e81106100ca57fe5b01549250348311610223576100dd6108bb565b823411156101165760405133903485900380156108fc02916000818181858888f19350505050158015610114573d6000803e3d6000fd5b505b600e80548590811061012457fe5b90600052602060002090600502019150816000015460001415610145578282555b50600381015461015b823363ffffffff6109f916565b1561021e576040805160608101825260ff808716825267ffffffffffffffff43811660208401908152858216948401948552600f805460018101825560009190915293517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802909401805491519551831669010000000000000000000270ffffffffffffffff00000000000000000019969093166101000268ffffffffffffffff00199590941660ff19909216919091179390931691909117929092169190911790555b6102a4565b600019909301926100b5565b34650104c533c00014156102455761021e610acd565b3415156102545761021e6108bb565b6040805160e560020a62461bcd02815260206004820152601460248201527f4465706f73697420697320746f6f20736d616c6c000000000000000000000000604482015290519081900360640190fd5b50505050005b3480156102b657600080fd5b506102bf610b77565b604051808867ffffffffffffffff1667ffffffffffffffff1681526020018760001916600019168152602001806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561033757818101518382015260200161031f565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561037657818101518382015260200161035e565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103b557818101518382015260200161039d565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156103f45781810151838201526020016103dc565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561043357818101518382015260200161041b565b505050509050019c5050505050505050505050505060405180910390f35b34801561045d57600080fd5b50610469600435610d11565b60408051938452602084019290925282820152519081900360600190f35b34801561049357600080fd5b5061049c610acd565b005b3480156104aa57600080fd5b506104b3610dbe565b60408051918252519081900360200190f35b3480156104d157600080fd5b506104b3600435610dc5565b3480156104e957600080fd5b506104b3610dd9565b3480156104fe57600080fd5b50610510600435602435604435610de3565b604051808a81526020018960001916600019168152602001886bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200180602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b8381101561059a578181015183820152602001610582565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b838110156105d95781810151838201526020016105c1565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b83811015610618578181015183820152602001610600565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b8381101561065757818101518382015260200161063f565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561069657818101518382015260200161067e565b50505050905001878103825288818151815260200191508051906020019060200280838360005b838110156106d55781810151838201526020016106bd565b505050509050019f5050505050505050505050505050505060405180910390f35b34801561070257600080fd5b5061049c600435610ff1565b34801561071a57600080fd5b50610729600435602435611072565b6040805167ffffffffffffffff808c16825260208083018c90526bffffffffffffffffffffffff8b1693830193909352888116606083015260ff80881660a0840152600b87810b900b60c084015290851660e0830152831661010082015261012060808201818152885191830191909152875191929091610140840191898101910280838360005b838110156107c95781810151838201526020016107b1565b505050509050019a505050505050505050505060405180910390f35b3480156107f157600080fd5b506107fa611149565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561083657818101518382015260200161081e565b505050509050019250505060405180910390f35b34801561085657600080fd5b506108626004356111b9565b6040805167ffffffffffffffff988916815260208101979097526bffffffffffffffffffffffff958616878201529387166060870152918616608086015290941660a0840152921660c082015290519081900360e00190f35b6108c3611f05565b6000806108ce611f1c565b600f5460105490935091506000805b848410156109e157600f8054859081106108f357fe5b600091825260209182902060408051606081018252929091015460ff8116835267ffffffffffffffff6101008204811694840185905269010000000000000000009091041690820152935091504382141561094d576109e1565b61095d868363ffffffff61123116565b8251600e8054909160ff1690811061097157fe5b906000526020600020906005020190506109a4836040015167ffffffffffffffff1687836112449092919063ffffffff16565b600f8054859081106109b257fe5b6000918252602090912001805470ffffffffffffffffffffffffffffffffff19169055600193909301926108dd565b6010548411156109f15760108490555b505050505050565b60408051808201909152600160a060020a03808316825267ffffffffffffffff428116602080850191825260018088018054918201815560008181529283209651969091018054935190941674010000000000000000000000000000000000000000027bffffffffffffffff0000000000000000000000000000000000000000199690951673ffffffffffffffffffffffffffffffffffffffff19909316929092179490941692909217905554600590061515610ac3575060038201805460050190556001610ac7565b5060005b92915050565b600e60005b81811015610b2357610b0933600e83815481101515610aed57fe5b906000526020600020906005020161155590919063ffffffff16565b15610b1b57610b166108bb565b610b73565b600101610ad2565b6040805160e560020a62461bcd02815260206004820152601f60248201527f596f7520617265206e6f742062657474696e6720696e20616e792067616d6500604482015290519081900360640190fd5b5050565b60008060608060608060606000600e604051908082528060200260200182016040528015610baf578160200160208202803883390190505b5060408051600e8082526101e08201909252919750602082016101c080388339505060408051600e8082526101e082019092529297509050602082016101c080388339505060408051600e8082526101e082019092529296509050602082016101c080388339505060408051600e8082526101e082019092529295509050602082016101c080388339019050509150600090505b600e811015610d0757610c55816111b9565b8c88815181101515610c6357fe5b9060200190602002018c89815181101515610c7a57fe5b9060200190602002018c8a815181101515610c9157fe5b9060200190602002018c8b815181101515610ca857fe5b9060200190602002018c8c815181101515610cbf57fe5b6bffffffffffffffffffffffff9687166020918202909201015267ffffffffffffffff9586169052948416909452939091169091529190911690529098509650600101610c43565b5090919293949596565b6000806000600f8460105401815481101515610d2957fe5b600091825260209091200154601054600f805460ff909316955091908601908110610d5057fe5b600091825260209091200154610100900467ffffffffffffffff169150610d7561171c565b600f8560105401815481101515610d8857fe5b6000918252602090912001546901000000000000000000900467ffffffffffffffff16811515610db457fe5b0490509193909250565b600f545b90565b600081600e8110610dd257fe5b0154905081565b601054600f540390565b60008060006060806060806060806000806000600e8f815481101515610e0557fe5b90600052602060002090600502019250610e1d61171c565b6001840154811515610e2b57fe5b845460001943019e508e409d509b50049150818e11801590610e4d57508c8e11155b1515610ea3576040805160e560020a62461bcd02815260206004820152601a60248201527f57726f6e672063796c696e64657220696e6465782072616e6765000000000000604482015290519081900360640190fd5b818d1115610eaf57819c505b8d8d03600101905080604051908082528060200260200182016040528015610ee1578160200160208202803883390190505b509850610eec61171c565b8102604051908082528060200260200182016040528015610f17578160200160208202803883390190505b50975080604051908082528060200260200182016040528015610f44578160200160208202803883390190505b50965080604051908082528060200260200182016040528015610f71578160200160208202803883390190505b50955080604051908082528060200260200182016040528015610f9e578160200160208202803883390190505b50945080604051908082528060200260200182016040528015610fcb578160200160208202803883390190505b509350610fdf8f8f838c8c8c8c8c8c611721565b50505093979b92969a50939750939750565b600e8110610ffe57600080fd5b61101133600e83815481101515610aed57fe5b1515611067576040805160e560020a62461bcd02815260206004820181905260248201527f596f7520617265206e6f742062657474696e6720696e20746869732067616d65604482015290519081900360640190fd5b61106f6108bb565b50565b60008060008060606000806000806000806000600e8e81548110151561109457fe5b9060005260206000209060050201925060008d126110b2578c6110ca565b6110ba61171c565b60018401548115156110c857fe5b045b98506110e68367ffffffffffffffff8b1663ffffffff61181e16565b809a50819b50829c50839d50849e50859f50505050505050600143039b5060014303409a5061111f8e8a67ffffffffffffffff16611ad4565b95509092509050600260ff85161415611139578196508095505b5050509295985092959850929598565b6060611153611f05565b604080516020808252610420820190925260009180820161040080388339019050509250600090505b6101008110156111b45761119182600a611c96565b83600883048151811015156111a257fe5b6020908102909101015260080161117c565b505090565b600080600080600080600080600e898154811015156111d457fe5b6000918252602090912060059091020180546001820154600283015491985096509450905061120161171c565b816003015481151561120f57fe5b60049092015460001943019b8c409b5097995095975093959390049392915050565b81518114610b7357804060208301529052565b61124c611f3c565b6000806000806000806000806000806112668e8e8e611ddb565b8e546060820151919c509a5060ff169850606460788b0204975060058d01965060058a0295508d6004015494508a608001516bffffffffffffffffffffffff1693508c92505b86831015611314578c830389146113095760018e018054849081106112cd57fe5b600091825260208220018054604051919450600160a060020a0316918a156108fc02918b91818181858888f19350505050151561130957938701935b8260010192506112ac565b600084111561136b5760018e0180548e8b0190811061132f57fe5b600091825260208220018054604051919350600160a060020a03169186156108fc02918791818181858888f193505050501561136b5783850394505b6064600287020485018e600401819055508d6002018b90806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548165ffffffffffff021916908365ffffffffffff16021790555060608201518160000160126101000a81548160ff021916908360ff16021790555060808201518160000160136101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600001601f6101000a81548160ff02191690831515021790555050505073db058d036768cfa9a94963f99161e3c94ad6f5da600160a060020a03166108fc6064600189028115156114d457fe5b049081150290604051600060405180830381858888f19350505050158015611500573d6000803e3d6000fd5b5060405173da149b17c154e964456553c749b7b4998c152c9e906064880480156108fc02916000818181858888f19350505050158015611544573d6000803e3d6000fd5b505050505050505050505050505050565b600182015482546003840154600092919083805b84831015611711576001880180548490811061158157fe5b60009182526020909120018054909250600160a060020a0388811691161415611706576064606385028354604051929091049250600160a060020a03169034830180156108fc02916000818181858888f193505050501580156115e8573d6000803e3d6000fd5b5060405173db058d036768cfa9a94963f99161e3c94ad6f5da9082860380156108fc02916000818181858888f1935050505015801561162b573d6000803e3d6000fd5b5060001990940193848310156116ee576001880180548690811061164b57fe5b90600052602060002001886001018481548110151561166657fe5b6000918252602090912082549101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117808255915467ffffffffffffffff740100000000000000000000000000000000000000009182900416027bffffffffffffffff0000000000000000000000000000000000000000199092169190911790555b846116fc60018a0182611f71565b5060019550611711565b826001019250611569565b505050505092915050565b600590565b600060605b888210156118115761173a8b838c01611072565b9091929394959697509091929394959650909192939495508d8881518110151561176057fe5b9060200190602002018c8981518110151561177757fe5b9060200190602002018c8a81518110151561178e57fe5b9060200190602002018c8b8151811015156117a557fe5b9060200190602002018c8c8151811015156117bc57fe5b60ff9687166020918202909201015267ffffffffffffffff9586169052600b95860b90950b90945293169091529290921690915290506118066117fd61171c565b83028883611eac565b816001019150611726565b5050505050505050505050565b815460018301548290606090600090819081908190819081908190600590048b1115611894576040805160e560020a62461bcd02815260206004820152601460248201527f57726f6e672063796c696e64657220696e646578000000000000000000000000604482015290519081900360640190fd5b60028c015467ffffffffffffffff8a16106119025760058967ffffffffffffffff16028c6001018054905003935060058411156118d057600593505b836040519080825280602002602001820160405280156118fa578160200160208202803883390190505b5097506119f9565b60408051600580825260c08201909252906020820160a0803883390190505097508b6002018967ffffffffffffffff1681548110151561193e57fe5b6000918252602090912001805460ff72010000000000000000000000000000000000008204811699509194507f01000000000000000000000000000000000000000000000000000000000000009004166119be57825473010000000000000000000000000000000000000090046bffffffffffffffffffffffff166119e9565b825473010000000000000000000000000000000000000090046bffffffffffffffffffffffff166000035b835490965065ffffffffffff1694505b600091505b8751821015611ac65760018c01805467ffffffffffffffff8b166005028401908110611a2657fe5b600091825260209091200180548951919250600160a060020a031690899084908110611a4e57fe5b600160a060020a03909216602092830290910190910152805467ffffffffffffffff7401000000000000000000000000000000000000000090910481169086161015611abb57805474010000000000000000000000000000000000000000900467ffffffffffffffff1694505b8160010191506119fe565b505050509295509295509295565b600080600080611ae2611f05565b600080611aed611f1c565b6000611af7611f3c565b600e80548d908110611b0557fe5b9060005260206000209060050201965086600201805490508b1015611b2d5760039750611c88565b611b3561171c565b8b600101028760010180549050101515611c8857600f546010546001995090955093505b84841015611c8857600f805485908110611b6f57fe5b600091825260209182902060408051606081018252929091015460ff8116835267ffffffffffffffff61010082048116948401859052690100000000000000000090910416908201529350915081401515611bc957611c88565b611bd9868363ffffffff61123116565b611c1f836040015167ffffffffffffffff1687600e866000015160ff16815481101515611c0257fe5b9060005260206000209060050201611ddb9092919063ffffffff16565b9050611c2961171c565b8b02836040015167ffffffffffffffff16148015611c4a5750825160ff168c145b15611c7d57806060015199508060a00151611c69578060800151611c72565b80608001516000035b985060029750611c88565b836001019350611b59565b505050505050509250925092565b60208201516000901515611d435760408051426020808301919091524482840152436060830181905260001901406080808401919091528351808403909101815260a090920192839052815191929182918401908083835b60208310611d0d5780518252601f199092019160209182019101611cee565b51815160209384036101000a60001901801990921691161790526040519190930181900390209187019190915250611dc3915050565b60208084015160408051808401929092528051808303840181529181019081905281519192909182918401908083835b60208310611d925780518252601f199092019160209182019101611d73565b51815160209384036101000a6000190180199092169116179052604051919093018190039020918701919091525050505b60208301518290811515611dd357fe5b069392505050565b611de3611f3c565b600080600080600088600301546005890111151515611dfe57fe5b611e0f87600563ffffffff611c9616565b60048a0154909550935060009250829150611e32876103e863ffffffff611c9616565b9050606481061515611e5857801515611e515760019150839250611e58565b6002840492505b506040805160c08101825265ffffffffffff42811682524381166020830152989098169088015260ff90931660608701526bffffffffffffffffffffffff16608086015250151560a0840152509092915050565b60005b8151811015611eff578181815181101515611ec657fe5b9060200190602002015183828601815181101515611ee057fe5b600160a060020a03909216602092830290910190910152600101611eaf565b50505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b815481835581811115611f9557600083815260209020611f95918101908301611f9a565b505050565b610dc291905b80821115611fd65780547fffffffff00000000000000000000000000000000000000000000000000000000168155600101611fa0565b5090565b5600a165627a7a72305820b0c2318bd4c59f0cc84cf9fa99a529d5ed876c17e49a3df7c8948b852ae607360029


   Swarm Source:
bzzr://b0c2318bd4c59f0cc84cf9fa99a529d5ed876c17e49a3df7c8948b852ae60736
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.