ETH Price: $3,112.21 (+1.35%)
Gas: 4 Gwei

Contract

0x0Ab2c9e20Aa31fd3a3728a86F2526CCA06A2B76D
 

Overview

ETH Balance

0.6916484375 ETH

Eth Value

$2,152.56 (@ $3,112.21/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Withdraw180566032023-09-03 14:36:59310 days ago1693751819IN
0x0Ab2c9e2...A06A2B76D
0 ETH0.0019009717.22049614
0x24f00e42180564932023-09-03 14:14:23310 days ago1693750463IN
0x0Ab2c9e2...A06A2B76D
2.6 ETH0.002273919.68324711
Transfer142424322022-02-20 10:32:53870 days ago1645353173IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0048706140.87048732
Transfer142424212022-02-20 10:29:48870 days ago1645352988IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0024622528.94357567
Transfer142424172022-02-20 10:29:01870 days ago1645352941IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0027997830.85774643
Transfer142424122022-02-20 10:28:18870 days ago1645352898IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0027575930.39278743
Transfer142424042022-02-20 10:26:54870 days ago1645352814IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0026972429.72765847
Transfer142423742022-02-20 10:23:26870 days ago1645352606IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0038026241.91047093
Transfer96405382020-03-10 0:41:071583 days ago1583800867IN
0x0Ab2c9e2...A06A2B76D
0.00000112 ETH0.0001055
Transfer90333012019-12-01 16:22:071682 days ago1575217327IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0005313210
Transfer90332252019-12-01 16:01:391682 days ago1575216099IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0005313210
Transfer90332252019-12-01 16:01:391682 days ago1575216099IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0005313210
Transfer90332242019-12-01 16:01:131682 days ago1575216073IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0005844511
Transfer90331752019-12-01 15:47:261682 days ago1575215246IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0010626420
Transfer88735612019-11-04 20:59:541709 days ago1572901194IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.000039621
Transfer88735612019-11-04 20:59:541709 days ago1572901194IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.000039621
Transfer88735612019-11-04 20:59:541709 days ago1572901194IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.000039621
Transfer88735612019-11-04 20:59:541709 days ago1572901194IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.000039621
Transfer88735612019-11-04 20:59:541709 days ago1572901194IN
0x0Ab2c9e2...A06A2B76D
0.01 ETH0.0000211
Transfer87031242019-10-08 19:09:461736 days ago1570561786IN
0x0Ab2c9e2...A06A2B76D
0 ETH0.000131141
Transfer87029202019-10-08 18:28:551736 days ago1570559335IN
0x0Ab2c9e2...A06A2B76D
0.05 ETH0.000083761
Transfer87029112019-10-08 18:26:331736 days ago1570559193IN
0x0Ab2c9e2...A06A2B76D
0.05 ETH0.000052821
Transfer87029102019-10-08 18:25:571736 days ago1570559157IN
0x0Ab2c9e2...A06A2B76D
0.05 ETH0.000052821
Transfer87029102019-10-08 18:25:571736 days ago1570559157IN
0x0Ab2c9e2...A06A2B76D
0.05 ETH0.000052821
Transfer87029032019-10-08 18:25:301736 days ago1570559130IN
0x0Ab2c9e2...A06A2B76D
0.05 ETH0.000157541
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
180566032023-09-03 14:36:59310 days ago1693751819
0x0Ab2c9e2...A06A2B76D
0.02 ETH
180566032023-09-03 14:36:59310 days ago1693751819
0x0Ab2c9e2...A06A2B76D
1.98 ETH
180564932023-09-03 14:14:23310 days ago1693750463
0x0Ab2c9e2...A06A2B76D
0.6 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.015 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.015 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.345 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.36 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.36 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.36 ETH
180308232023-08-30 23:56:23314 days ago1693439783
0x0Ab2c9e2...A06A2B76D
0.36 ETH
180292342023-08-30 18:35:35314 days ago1693420535
0x0Ab2c9e2...A06A2B76D
0.3 ETH
180292342023-08-30 18:35:35314 days ago1693420535
0x0Ab2c9e2...A06A2B76D
0.3 ETH
180292342023-08-30 18:35:35314 days ago1693420535
0x0Ab2c9e2...A06A2B76D
0.3 ETH
180292342023-08-30 18:35:35314 days ago1693420535
0x0Ab2c9e2...A06A2B76D
0.3 ETH
180292342023-08-30 18:35:35314 days ago1693420535
0x0Ab2c9e2...A06A2B76D
0.3 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.01 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.01 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.25 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.24 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.24 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.24 ETH
180291472023-08-30 18:18:11314 days ago1693419491
0x0Ab2c9e2...A06A2B76D
0.24 ETH
180200802023-08-29 11:49:11315 days ago1693309751
0x0Ab2c9e2...A06A2B76D
0.2 ETH
180200802023-08-29 11:49:11315 days ago1693309751
0x0Ab2c9e2...A06A2B76D
0.2 ETH
180200802023-08-29 11:49:11315 days ago1693309751
0x0Ab2c9e2...A06A2B76D
0.2 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RussianRoulette

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-12-13
*/

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 Security Audit

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"}]

610240604052662386f26fc10000608090815266b1a2bc2ec5000060a05267016345785d8a000060c0526702c68af0bb14000060e052670429d069189e0000610100526706f05b59d3b20000610120526709b6e64a8ec6000061014052670de0b6b3a7640000610160526714d1120d7b16000061018052671bc16d674ec800006101a0526729a2241af62c00006101c052674563918244f400006101e052676124fee993bc000061020052678ac7230489e8000061022052620000c790600090600e6200010a565b506000601055348015620000da57600080fd5b50620000f364010000000062001fda6200010882021704565b600e62000101818062000159565b506200027b565b565b82600e810192821562000147579160200282015b8281111562000147578251829067ffffffffffffffff169055916020019190600101906200011e565b50620001559291506200018d565b5090565b8154818355818111156200018857600502816005028360005260206000209182019101620001889190620001ad565b505050565b620001aa91905b8082111562000155576000815560010162000194565b90565b620001aa91905b8082111562000155576000808255620001d16001830182620001f9565b620001e16002830160006200021c565b506000600382018190556004820155600501620001b4565b50805460008255906000526020600020908101906200021991906200023c565b50565b50805460008255906000526020600020908101906200021991906200018d565b620001aa91905b80821115620001555780547fffffffff0000000000000000000000000000000000000000000000000000000016815560010162000243565b612008806200028b6000396000f3006080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630abcdf9481146102aa5780633c7af096146104515780633ccfd60b1461048757806364ed74cf1461049e57806392d5a1ae146104c5578063adcbafe7146104dd578063d34dfc68146104f2578063e6dad824146106f6578063ec284e0a1461070e578063fbddd14b146107e5578063ffde0c741461084a575b600d600080805b6000841261022f57600084600e81106100ca57fe5b01549250348311610223576100dd6108bb565b823411156101165760405133903485900380156108fc02916000818181858888f19350505050158015610114573d6000803e3d6000fd5b505b600e80548590811061012457fe5b90600052602060002090600502019150816000015460001415610145578282555b50600381015461015b823363ffffffff6109f916565b1561021e576040805160608101825260ff808716825267ffffffffffffffff43811660208401908152858216948401948552600f805460018101825560009190915293517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802909401805491519551831669010000000000000000000270ffffffffffffffff00000000000000000019969093166101000268ffffffffffffffff00199590941660ff19909216919091179390931691909117929092169190911790555b6102a4565b600019909301926100b5565b34650104c533c00014156102455761021e610acd565b3415156102545761021e6108bb565b6040805160e560020a62461bcd02815260206004820152601460248201527f4465706f73697420697320746f6f20736d616c6c000000000000000000000000604482015290519081900360640190fd5b50505050005b3480156102b657600080fd5b506102bf610b77565b604051808867ffffffffffffffff1667ffffffffffffffff1681526020018760001916600019168152602001806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561033757818101518382015260200161031f565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561037657818101518382015260200161035e565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103b557818101518382015260200161039d565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156103f45781810151838201526020016103dc565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561043357818101518382015260200161041b565b505050509050019c5050505050505050505050505060405180910390f35b34801561045d57600080fd5b50610469600435610d11565b60408051938452602084019290925282820152519081900360600190f35b34801561049357600080fd5b5061049c610acd565b005b3480156104aa57600080fd5b506104b3610dbe565b60408051918252519081900360200190f35b3480156104d157600080fd5b506104b3600435610dc5565b3480156104e957600080fd5b506104b3610dd9565b3480156104fe57600080fd5b50610510600435602435604435610de3565b604051808a81526020018960001916600019168152602001886bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200180602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b8381101561059a578181015183820152602001610582565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b838110156105d95781810151838201526020016105c1565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b83811015610618578181015183820152602001610600565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b8381101561065757818101518382015260200161063f565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561069657818101518382015260200161067e565b50505050905001878103825288818151815260200191508051906020019060200280838360005b838110156106d55781810151838201526020016106bd565b505050509050019f5050505050505050505050505050505060405180910390f35b34801561070257600080fd5b5061049c600435610ff1565b34801561071a57600080fd5b50610729600435602435611072565b6040805167ffffffffffffffff808c16825260208083018c90526bffffffffffffffffffffffff8b1693830193909352888116606083015260ff80881660a0840152600b87810b900b60c084015290851660e0830152831661010082015261012060808201818152885191830191909152875191929091610140840191898101910280838360005b838110156107c95781810151838201526020016107b1565b505050509050019a505050505050505050505060405180910390f35b3480156107f157600080fd5b506107fa611149565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561083657818101518382015260200161081e565b505050509050019250505060405180910390f35b34801561085657600080fd5b506108626004356111b9565b6040805167ffffffffffffffff988916815260208101979097526bffffffffffffffffffffffff958616878201529387166060870152918616608086015290941660a0840152921660c082015290519081900360e00190f35b6108c3611f05565b6000806108ce611f1c565b600f5460105490935091506000805b848410156109e157600f8054859081106108f357fe5b600091825260209182902060408051606081018252929091015460ff8116835267ffffffffffffffff6101008204811694840185905269010000000000000000009091041690820152935091504382141561094d576109e1565b61095d868363ffffffff61123116565b8251600e8054909160ff1690811061097157fe5b906000526020600020906005020190506109a4836040015167ffffffffffffffff1687836112449092919063ffffffff16565b600f8054859081106109b257fe5b6000918252602090912001805470ffffffffffffffffffffffffffffffffff19169055600193909301926108dd565b6010548411156109f15760108490555b505050505050565b60408051808201909152600160a060020a03808316825267ffffffffffffffff428116602080850191825260018088018054918201815560008181529283209651969091018054935190941674010000000000000000000000000000000000000000027bffffffffffffffff0000000000000000000000000000000000000000199690951673ffffffffffffffffffffffffffffffffffffffff19909316929092179490941692909217905554600590061515610ac3575060038201805460050190556001610ac7565b5060005b92915050565b600e60005b81811015610b2357610b0933600e83815481101515610aed57fe5b906000526020600020906005020161155590919063ffffffff16565b15610b1b57610b166108bb565b610b73565b600101610ad2565b6040805160e560020a62461bcd02815260206004820152601f60248201527f596f7520617265206e6f742062657474696e6720696e20616e792067616d6500604482015290519081900360640190fd5b5050565b60008060608060608060606000600e604051908082528060200260200182016040528015610baf578160200160208202803883390190505b5060408051600e8082526101e08201909252919750602082016101c080388339505060408051600e8082526101e082019092529297509050602082016101c080388339505060408051600e8082526101e082019092529296509050602082016101c080388339505060408051600e8082526101e082019092529295509050602082016101c080388339019050509150600090505b600e811015610d0757610c55816111b9565b8c88815181101515610c6357fe5b9060200190602002018c89815181101515610c7a57fe5b9060200190602002018c8a815181101515610c9157fe5b9060200190602002018c8b815181101515610ca857fe5b9060200190602002018c8c815181101515610cbf57fe5b6bffffffffffffffffffffffff9687166020918202909201015267ffffffffffffffff9586169052948416909452939091169091529190911690529098509650600101610c43565b5090919293949596565b6000806000600f8460105401815481101515610d2957fe5b600091825260209091200154601054600f805460ff909316955091908601908110610d5057fe5b600091825260209091200154610100900467ffffffffffffffff169150610d7561171c565b600f8560105401815481101515610d8857fe5b6000918252602090912001546901000000000000000000900467ffffffffffffffff16811515610db457fe5b0490509193909250565b600f545b90565b600081600e8110610dd257fe5b0154905081565b601054600f540390565b60008060006060806060806060806000806000600e8f815481101515610e0557fe5b90600052602060002090600502019250610e1d61171c565b6001840154811515610e2b57fe5b845460001943019e508e409d509b50049150818e11801590610e4d57508c8e11155b1515610ea3576040805160e560020a62461bcd02815260206004820152601a60248201527f57726f6e672063796c696e64657220696e6465782072616e6765000000000000604482015290519081900360640190fd5b818d1115610eaf57819c505b8d8d03600101905080604051908082528060200260200182016040528015610ee1578160200160208202803883390190505b509850610eec61171c565b8102604051908082528060200260200182016040528015610f17578160200160208202803883390190505b50975080604051908082528060200260200182016040528015610f44578160200160208202803883390190505b50965080604051908082528060200260200182016040528015610f71578160200160208202803883390190505b50955080604051908082528060200260200182016040528015610f9e578160200160208202803883390190505b50945080604051908082528060200260200182016040528015610fcb578160200160208202803883390190505b509350610fdf8f8f838c8c8c8c8c8c611721565b50505093979b92969a50939750939750565b600e8110610ffe57600080fd5b61101133600e83815481101515610aed57fe5b1515611067576040805160e560020a62461bcd02815260206004820181905260248201527f596f7520617265206e6f742062657474696e6720696e20746869732067616d65604482015290519081900360640190fd5b61106f6108bb565b50565b60008060008060606000806000806000806000600e8e81548110151561109457fe5b9060005260206000209060050201925060008d126110b2578c6110ca565b6110ba61171c565b60018401548115156110c857fe5b045b98506110e68367ffffffffffffffff8b1663ffffffff61181e16565b809a50819b50829c50839d50849e50859f50505050505050600143039b5060014303409a5061111f8e8a67ffffffffffffffff16611ad4565b95509092509050600260ff85161415611139578196508095505b5050509295985092959850929598565b6060611153611f05565b604080516020808252610420820190925260009180820161040080388339019050509250600090505b6101008110156111b45761119182600a611c96565b83600883048151811015156111a257fe5b6020908102909101015260080161117c565b505090565b600080600080600080600080600e898154811015156111d457fe5b6000918252602090912060059091020180546001820154600283015491985096509450905061120161171c565b816003015481151561120f57fe5b60049092015460001943019b8c409b5097995095975093959390049392915050565b81518114610b7357804060208301529052565b61124c611f3c565b6000806000806000806000806000806112668e8e8e611ddb565b8e546060820151919c509a5060ff169850606460788b0204975060058d01965060058a0295508d6004015494508a608001516bffffffffffffffffffffffff1693508c92505b86831015611314578c830389146113095760018e018054849081106112cd57fe5b600091825260208220018054604051919450600160a060020a0316918a156108fc02918b91818181858888f19350505050151561130957938701935b8260010192506112ac565b600084111561136b5760018e0180548e8b0190811061132f57fe5b600091825260208220018054604051919350600160a060020a03169186156108fc02918791818181858888f193505050501561136b5783850394505b6064600287020485018e600401819055508d6002018b90806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548165ffffffffffff021916908365ffffffffffff16021790555060608201518160000160126101000a81548160ff021916908360ff16021790555060808201518160000160136101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600001601f6101000a81548160ff02191690831515021790555050505073db058d036768cfa9a94963f99161e3c94ad6f5da600160a060020a03166108fc6064600189028115156114d457fe5b049081150290604051600060405180830381858888f19350505050158015611500573d6000803e3d6000fd5b5060405173da149b17c154e964456553c749b7b4998c152c9e906064880480156108fc02916000818181858888f19350505050158015611544573d6000803e3d6000fd5b505050505050505050505050505050565b600182015482546003840154600092919083805b84831015611711576001880180548490811061158157fe5b60009182526020909120018054909250600160a060020a0388811691161415611706576064606385028354604051929091049250600160a060020a03169034830180156108fc02916000818181858888f193505050501580156115e8573d6000803e3d6000fd5b5060405173db058d036768cfa9a94963f99161e3c94ad6f5da9082860380156108fc02916000818181858888f1935050505015801561162b573d6000803e3d6000fd5b5060001990940193848310156116ee576001880180548690811061164b57fe5b90600052602060002001886001018481548110151561166657fe5b6000918252602090912082549101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117808255915467ffffffffffffffff740100000000000000000000000000000000000000009182900416027bffffffffffffffff0000000000000000000000000000000000000000199092169190911790555b846116fc60018a0182611f71565b5060019550611711565b826001019250611569565b505050505092915050565b600590565b600060605b888210156118115761173a8b838c01611072565b9091929394959697509091929394959650909192939495508d8881518110151561176057fe5b9060200190602002018c8981518110151561177757fe5b9060200190602002018c8a81518110151561178e57fe5b9060200190602002018c8b8151811015156117a557fe5b9060200190602002018c8c8151811015156117bc57fe5b60ff9687166020918202909201015267ffffffffffffffff9586169052600b95860b90950b90945293169091529290921690915290506118066117fd61171c565b83028883611eac565b816001019150611726565b5050505050505050505050565b815460018301548290606090600090819081908190819081908190600590048b1115611894576040805160e560020a62461bcd02815260206004820152601460248201527f57726f6e672063796c696e64657220696e646578000000000000000000000000604482015290519081900360640190fd5b60028c015467ffffffffffffffff8a16106119025760058967ffffffffffffffff16028c6001018054905003935060058411156118d057600593505b836040519080825280602002602001820160405280156118fa578160200160208202803883390190505b5097506119f9565b60408051600580825260c08201909252906020820160a0803883390190505097508b6002018967ffffffffffffffff1681548110151561193e57fe5b6000918252602090912001805460ff72010000000000000000000000000000000000008204811699509194507f01000000000000000000000000000000000000000000000000000000000000009004166119be57825473010000000000000000000000000000000000000090046bffffffffffffffffffffffff166119e9565b825473010000000000000000000000000000000000000090046bffffffffffffffffffffffff166000035b835490965065ffffffffffff1694505b600091505b8751821015611ac65760018c01805467ffffffffffffffff8b166005028401908110611a2657fe5b600091825260209091200180548951919250600160a060020a031690899084908110611a4e57fe5b600160a060020a03909216602092830290910190910152805467ffffffffffffffff7401000000000000000000000000000000000000000090910481169086161015611abb57805474010000000000000000000000000000000000000000900467ffffffffffffffff1694505b8160010191506119fe565b505050509295509295509295565b600080600080611ae2611f05565b600080611aed611f1c565b6000611af7611f3c565b600e80548d908110611b0557fe5b9060005260206000209060050201965086600201805490508b1015611b2d5760039750611c88565b611b3561171c565b8b600101028760010180549050101515611c8857600f546010546001995090955093505b84841015611c8857600f805485908110611b6f57fe5b600091825260209182902060408051606081018252929091015460ff8116835267ffffffffffffffff61010082048116948401859052690100000000000000000090910416908201529350915081401515611bc957611c88565b611bd9868363ffffffff61123116565b611c1f836040015167ffffffffffffffff1687600e866000015160ff16815481101515611c0257fe5b9060005260206000209060050201611ddb9092919063ffffffff16565b9050611c2961171c565b8b02836040015167ffffffffffffffff16148015611c4a5750825160ff168c145b15611c7d57806060015199508060a00151611c69578060800151611c72565b80608001516000035b985060029750611c88565b836001019350611b59565b505050505050509250925092565b60208201516000901515611d435760408051426020808301919091524482840152436060830181905260001901406080808401919091528351808403909101815260a090920192839052815191929182918401908083835b60208310611d0d5780518252601f199092019160209182019101611cee565b51815160209384036101000a60001901801990921691161790526040519190930181900390209187019190915250611dc3915050565b60208084015160408051808401929092528051808303840181529181019081905281519192909182918401908083835b60208310611d925780518252601f199092019160209182019101611d73565b51815160209384036101000a6000190180199092169116179052604051919093018190039020918701919091525050505b60208301518290811515611dd357fe5b069392505050565b611de3611f3c565b600080600080600088600301546005890111151515611dfe57fe5b611e0f87600563ffffffff611c9616565b60048a0154909550935060009250829150611e32876103e863ffffffff611c9616565b9050606481061515611e5857801515611e515760019150839250611e58565b6002840492505b506040805160c08101825265ffffffffffff42811682524381166020830152989098169088015260ff90931660608701526bffffffffffffffffffffffff16608086015250151560a0840152509092915050565b60005b8151811015611eff578181815181101515611ec657fe5b9060200190602002015183828601815181101515611ee057fe5b600160a060020a03909216602092830290910190910152600101611eaf565b50505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b815481835581811115611f9557600083815260209020611f95918101908301611f9a565b505050565b610dc291905b80821115611fd65780547fffffffff00000000000000000000000000000000000000000000000000000000168155600101611fa0565b5090565b5600a165627a7a72305820b0c2318bd4c59f0cc84cf9fa99a529d5ed876c17e49a3df7c8948b852ae607360029

Deployed Bytecode

0x6080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630abcdf9481146102aa5780633c7af096146104515780633ccfd60b1461048757806364ed74cf1461049e57806392d5a1ae146104c5578063adcbafe7146104dd578063d34dfc68146104f2578063e6dad824146106f6578063ec284e0a1461070e578063fbddd14b146107e5578063ffde0c741461084a575b600d600080805b6000841261022f57600084600e81106100ca57fe5b01549250348311610223576100dd6108bb565b823411156101165760405133903485900380156108fc02916000818181858888f19350505050158015610114573d6000803e3d6000fd5b505b600e80548590811061012457fe5b90600052602060002090600502019150816000015460001415610145578282555b50600381015461015b823363ffffffff6109f916565b1561021e576040805160608101825260ff808716825267ffffffffffffffff43811660208401908152858216948401948552600f805460018101825560009190915293517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802909401805491519551831669010000000000000000000270ffffffffffffffff00000000000000000019969093166101000268ffffffffffffffff00199590941660ff19909216919091179390931691909117929092169190911790555b6102a4565b600019909301926100b5565b34650104c533c00014156102455761021e610acd565b3415156102545761021e6108bb565b6040805160e560020a62461bcd02815260206004820152601460248201527f4465706f73697420697320746f6f20736d616c6c000000000000000000000000604482015290519081900360640190fd5b50505050005b3480156102b657600080fd5b506102bf610b77565b604051808867ffffffffffffffff1667ffffffffffffffff1681526020018760001916600019168152602001806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561033757818101518382015260200161031f565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561037657818101518382015260200161035e565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103b557818101518382015260200161039d565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156103f45781810151838201526020016103dc565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561043357818101518382015260200161041b565b505050509050019c5050505050505050505050505060405180910390f35b34801561045d57600080fd5b50610469600435610d11565b60408051938452602084019290925282820152519081900360600190f35b34801561049357600080fd5b5061049c610acd565b005b3480156104aa57600080fd5b506104b3610dbe565b60408051918252519081900360200190f35b3480156104d157600080fd5b506104b3600435610dc5565b3480156104e957600080fd5b506104b3610dd9565b3480156104fe57600080fd5b50610510600435602435604435610de3565b604051808a81526020018960001916600019168152602001886bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200180602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b8381101561059a578181015183820152602001610582565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b838110156105d95781810151838201526020016105c1565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b83811015610618578181015183820152602001610600565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b8381101561065757818101518382015260200161063f565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561069657818101518382015260200161067e565b50505050905001878103825288818151815260200191508051906020019060200280838360005b838110156106d55781810151838201526020016106bd565b505050509050019f5050505050505050505050505050505060405180910390f35b34801561070257600080fd5b5061049c600435610ff1565b34801561071a57600080fd5b50610729600435602435611072565b6040805167ffffffffffffffff808c16825260208083018c90526bffffffffffffffffffffffff8b1693830193909352888116606083015260ff80881660a0840152600b87810b900b60c084015290851660e0830152831661010082015261012060808201818152885191830191909152875191929091610140840191898101910280838360005b838110156107c95781810151838201526020016107b1565b505050509050019a505050505050505050505060405180910390f35b3480156107f157600080fd5b506107fa611149565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561083657818101518382015260200161081e565b505050509050019250505060405180910390f35b34801561085657600080fd5b506108626004356111b9565b6040805167ffffffffffffffff988916815260208101979097526bffffffffffffffffffffffff958616878201529387166060870152918616608086015290941660a0840152921660c082015290519081900360e00190f35b6108c3611f05565b6000806108ce611f1c565b600f5460105490935091506000805b848410156109e157600f8054859081106108f357fe5b600091825260209182902060408051606081018252929091015460ff8116835267ffffffffffffffff6101008204811694840185905269010000000000000000009091041690820152935091504382141561094d576109e1565b61095d868363ffffffff61123116565b8251600e8054909160ff1690811061097157fe5b906000526020600020906005020190506109a4836040015167ffffffffffffffff1687836112449092919063ffffffff16565b600f8054859081106109b257fe5b6000918252602090912001805470ffffffffffffffffffffffffffffffffff19169055600193909301926108dd565b6010548411156109f15760108490555b505050505050565b60408051808201909152600160a060020a03808316825267ffffffffffffffff428116602080850191825260018088018054918201815560008181529283209651969091018054935190941674010000000000000000000000000000000000000000027bffffffffffffffff0000000000000000000000000000000000000000199690951673ffffffffffffffffffffffffffffffffffffffff19909316929092179490941692909217905554600590061515610ac3575060038201805460050190556001610ac7565b5060005b92915050565b600e60005b81811015610b2357610b0933600e83815481101515610aed57fe5b906000526020600020906005020161155590919063ffffffff16565b15610b1b57610b166108bb565b610b73565b600101610ad2565b6040805160e560020a62461bcd02815260206004820152601f60248201527f596f7520617265206e6f742062657474696e6720696e20616e792067616d6500604482015290519081900360640190fd5b5050565b60008060608060608060606000600e604051908082528060200260200182016040528015610baf578160200160208202803883390190505b5060408051600e8082526101e08201909252919750602082016101c080388339505060408051600e8082526101e082019092529297509050602082016101c080388339505060408051600e8082526101e082019092529296509050602082016101c080388339505060408051600e8082526101e082019092529295509050602082016101c080388339019050509150600090505b600e811015610d0757610c55816111b9565b8c88815181101515610c6357fe5b9060200190602002018c89815181101515610c7a57fe5b9060200190602002018c8a815181101515610c9157fe5b9060200190602002018c8b815181101515610ca857fe5b9060200190602002018c8c815181101515610cbf57fe5b6bffffffffffffffffffffffff9687166020918202909201015267ffffffffffffffff9586169052948416909452939091169091529190911690529098509650600101610c43565b5090919293949596565b6000806000600f8460105401815481101515610d2957fe5b600091825260209091200154601054600f805460ff909316955091908601908110610d5057fe5b600091825260209091200154610100900467ffffffffffffffff169150610d7561171c565b600f8560105401815481101515610d8857fe5b6000918252602090912001546901000000000000000000900467ffffffffffffffff16811515610db457fe5b0490509193909250565b600f545b90565b600081600e8110610dd257fe5b0154905081565b601054600f540390565b60008060006060806060806060806000806000600e8f815481101515610e0557fe5b90600052602060002090600502019250610e1d61171c565b6001840154811515610e2b57fe5b845460001943019e508e409d509b50049150818e11801590610e4d57508c8e11155b1515610ea3576040805160e560020a62461bcd02815260206004820152601a60248201527f57726f6e672063796c696e64657220696e6465782072616e6765000000000000604482015290519081900360640190fd5b818d1115610eaf57819c505b8d8d03600101905080604051908082528060200260200182016040528015610ee1578160200160208202803883390190505b509850610eec61171c565b8102604051908082528060200260200182016040528015610f17578160200160208202803883390190505b50975080604051908082528060200260200182016040528015610f44578160200160208202803883390190505b50965080604051908082528060200260200182016040528015610f71578160200160208202803883390190505b50955080604051908082528060200260200182016040528015610f9e578160200160208202803883390190505b50945080604051908082528060200260200182016040528015610fcb578160200160208202803883390190505b509350610fdf8f8f838c8c8c8c8c8c611721565b50505093979b92969a50939750939750565b600e8110610ffe57600080fd5b61101133600e83815481101515610aed57fe5b1515611067576040805160e560020a62461bcd02815260206004820181905260248201527f596f7520617265206e6f742062657474696e6720696e20746869732067616d65604482015290519081900360640190fd5b61106f6108bb565b50565b60008060008060606000806000806000806000600e8e81548110151561109457fe5b9060005260206000209060050201925060008d126110b2578c6110ca565b6110ba61171c565b60018401548115156110c857fe5b045b98506110e68367ffffffffffffffff8b1663ffffffff61181e16565b809a50819b50829c50839d50849e50859f50505050505050600143039b5060014303409a5061111f8e8a67ffffffffffffffff16611ad4565b95509092509050600260ff85161415611139578196508095505b5050509295985092959850929598565b6060611153611f05565b604080516020808252610420820190925260009180820161040080388339019050509250600090505b6101008110156111b45761119182600a611c96565b83600883048151811015156111a257fe5b6020908102909101015260080161117c565b505090565b600080600080600080600080600e898154811015156111d457fe5b6000918252602090912060059091020180546001820154600283015491985096509450905061120161171c565b816003015481151561120f57fe5b60049092015460001943019b8c409b5097995095975093959390049392915050565b81518114610b7357804060208301529052565b61124c611f3c565b6000806000806000806000806000806112668e8e8e611ddb565b8e546060820151919c509a5060ff169850606460788b0204975060058d01965060058a0295508d6004015494508a608001516bffffffffffffffffffffffff1693508c92505b86831015611314578c830389146113095760018e018054849081106112cd57fe5b600091825260208220018054604051919450600160a060020a0316918a156108fc02918b91818181858888f19350505050151561130957938701935b8260010192506112ac565b600084111561136b5760018e0180548e8b0190811061132f57fe5b600091825260208220018054604051919350600160a060020a03169186156108fc02918791818181858888f193505050501561136b5783850394505b6064600287020485018e600401819055508d6002018b90806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548165ffffffffffff021916908365ffffffffffff16021790555060608201518160000160126101000a81548160ff021916908360ff16021790555060808201518160000160136101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600001601f6101000a81548160ff02191690831515021790555050505073db058d036768cfa9a94963f99161e3c94ad6f5da600160a060020a03166108fc6064600189028115156114d457fe5b049081150290604051600060405180830381858888f19350505050158015611500573d6000803e3d6000fd5b5060405173da149b17c154e964456553c749b7b4998c152c9e906064880480156108fc02916000818181858888f19350505050158015611544573d6000803e3d6000fd5b505050505050505050505050505050565b600182015482546003840154600092919083805b84831015611711576001880180548490811061158157fe5b60009182526020909120018054909250600160a060020a0388811691161415611706576064606385028354604051929091049250600160a060020a03169034830180156108fc02916000818181858888f193505050501580156115e8573d6000803e3d6000fd5b5060405173db058d036768cfa9a94963f99161e3c94ad6f5da9082860380156108fc02916000818181858888f1935050505015801561162b573d6000803e3d6000fd5b5060001990940193848310156116ee576001880180548690811061164b57fe5b90600052602060002001886001018481548110151561166657fe5b6000918252602090912082549101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117808255915467ffffffffffffffff740100000000000000000000000000000000000000009182900416027bffffffffffffffff0000000000000000000000000000000000000000199092169190911790555b846116fc60018a0182611f71565b5060019550611711565b826001019250611569565b505050505092915050565b600590565b600060605b888210156118115761173a8b838c01611072565b9091929394959697509091929394959650909192939495508d8881518110151561176057fe5b9060200190602002018c8981518110151561177757fe5b9060200190602002018c8a81518110151561178e57fe5b9060200190602002018c8b8151811015156117a557fe5b9060200190602002018c8c8151811015156117bc57fe5b60ff9687166020918202909201015267ffffffffffffffff9586169052600b95860b90950b90945293169091529290921690915290506118066117fd61171c565b83028883611eac565b816001019150611726565b5050505050505050505050565b815460018301548290606090600090819081908190819081908190600590048b1115611894576040805160e560020a62461bcd02815260206004820152601460248201527f57726f6e672063796c696e64657220696e646578000000000000000000000000604482015290519081900360640190fd5b60028c015467ffffffffffffffff8a16106119025760058967ffffffffffffffff16028c6001018054905003935060058411156118d057600593505b836040519080825280602002602001820160405280156118fa578160200160208202803883390190505b5097506119f9565b60408051600580825260c08201909252906020820160a0803883390190505097508b6002018967ffffffffffffffff1681548110151561193e57fe5b6000918252602090912001805460ff72010000000000000000000000000000000000008204811699509194507f01000000000000000000000000000000000000000000000000000000000000009004166119be57825473010000000000000000000000000000000000000090046bffffffffffffffffffffffff166119e9565b825473010000000000000000000000000000000000000090046bffffffffffffffffffffffff166000035b835490965065ffffffffffff1694505b600091505b8751821015611ac65760018c01805467ffffffffffffffff8b166005028401908110611a2657fe5b600091825260209091200180548951919250600160a060020a031690899084908110611a4e57fe5b600160a060020a03909216602092830290910190910152805467ffffffffffffffff7401000000000000000000000000000000000000000090910481169086161015611abb57805474010000000000000000000000000000000000000000900467ffffffffffffffff1694505b8160010191506119fe565b505050509295509295509295565b600080600080611ae2611f05565b600080611aed611f1c565b6000611af7611f3c565b600e80548d908110611b0557fe5b9060005260206000209060050201965086600201805490508b1015611b2d5760039750611c88565b611b3561171c565b8b600101028760010180549050101515611c8857600f546010546001995090955093505b84841015611c8857600f805485908110611b6f57fe5b600091825260209182902060408051606081018252929091015460ff8116835267ffffffffffffffff61010082048116948401859052690100000000000000000090910416908201529350915081401515611bc957611c88565b611bd9868363ffffffff61123116565b611c1f836040015167ffffffffffffffff1687600e866000015160ff16815481101515611c0257fe5b9060005260206000209060050201611ddb9092919063ffffffff16565b9050611c2961171c565b8b02836040015167ffffffffffffffff16148015611c4a5750825160ff168c145b15611c7d57806060015199508060a00151611c69578060800151611c72565b80608001516000035b985060029750611c88565b836001019350611b59565b505050505050509250925092565b60208201516000901515611d435760408051426020808301919091524482840152436060830181905260001901406080808401919091528351808403909101815260a090920192839052815191929182918401908083835b60208310611d0d5780518252601f199092019160209182019101611cee565b51815160209384036101000a60001901801990921691161790526040519190930181900390209187019190915250611dc3915050565b60208084015160408051808401929092528051808303840181529181019081905281519192909182918401908083835b60208310611d925780518252601f199092019160209182019101611d73565b51815160209384036101000a6000190180199092169116179052604051919093018190039020918701919091525050505b60208301518290811515611dd357fe5b069392505050565b611de3611f3c565b600080600080600088600301546005890111151515611dfe57fe5b611e0f87600563ffffffff611c9616565b60048a0154909550935060009250829150611e32876103e863ffffffff611c9616565b9050606481061515611e5857801515611e515760019150839250611e58565b6002840492505b506040805160c08101825265ffffffffffff42811682524381166020830152989098169088015260ff90931660608701526bffffffffffffffffffffffff16608086015250151560a0840152509092915050565b60005b8151811015611eff578181815181101515611ec657fe5b9060200190602002015183828601815181101515611ee057fe5b600160a060020a03909216602092830290910190910152600101611eaf565b50505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b815481835581811115611f9557600083815260209020611f95918101908301611f9a565b505050565b610dc291905b80821115611fd65780547fffffffff00000000000000000000000000000000000000000000000000000000168155600101611fa0565b5090565b5600a165627a7a72305820b0c2318bd4c59f0cc84cf9fa99a529d5ed876c17e49a3df7c8948b852ae607360029

Swarm Source

bzzr://b0c2318bd4c59f0cc84cf9fa99a529d5ed876c17e49a3df7c8948b852ae60736

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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