ETH Price: $2,212.30 (-1.31%)

Contract

0x4342Cc6763dE448927CBAe70EB56Ec783D2Ce00d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw58273962018-06-21 8:22:042450 days ago1529569324IN
0x4342Cc67...83D2Ce00d
0 ETH0.000225994.0002
Announce Match R...58273902018-06-21 8:20:332450 days ago1529569233IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142563
Announce Match R...58273882018-06-21 8:20:082450 days ago1529569208IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142063
Announce Match R...58273862018-06-21 8:19:542450 days ago1529569194IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142923
Bet58216842018-06-20 9:00:142451 days ago1529485214IN
0x4342Cc67...83D2Ce00d
0.01 ETH0.00026413
Create Match58200092018-06-20 1:59:362451 days ago1529459976IN
0x4342Cc67...83D2Ce00d
0 ETH0.000551443.34375
Announce Match R...58199892018-06-20 1:55:392451 days ago1529459739IN
0x4342Cc67...83D2Ce00d
0 ETH0.000068583
Announce Match R...58199892018-06-20 1:55:392451 days ago1529459739IN
0x4342Cc67...83D2Ce00d
0 ETH0.000068583
Announce Match R...58199892018-06-20 1:55:392451 days ago1529459739IN
0x4342Cc67...83D2Ce00d
0 ETH0.000158343.34375
Create Match58199642018-06-20 1:50:322451 days ago1529459432IN
0x4342Cc67...83D2Ce00d
0 ETH0.000493023
Create Match58199592018-06-20 1:49:162451 days ago1529459356IN
0x4342Cc67...83D2Ce00d
0 ETH0.000494173
Create Match58199592018-06-20 1:49:162451 days ago1529459356IN
0x4342Cc67...83D2Ce00d
0 ETH0.00049363
Create Match58199482018-06-20 1:46:252451 days ago1529459185IN
0x4342Cc67...83D2Ce00d
0 ETH0.000495333
Create Match58199432018-06-20 1:45:192451 days ago1529459119IN
0x4342Cc67...83D2Ce00d
0 ETH0.000083043
Create Match58199432018-06-20 1:45:192451 days ago1529459119IN
0x4342Cc67...83D2Ce00d
0 ETH0.000494173
Announce Match R...58199332018-06-20 1:43:272451 days ago1529459007IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142563
Announce Match R...58171552018-06-19 14:17:192452 days ago1529417839IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142563
Create Match58169032018-06-19 13:15:012452 days ago1529414101IN
0x4342Cc67...83D2Ce00d
0 ETH0.00049363
Create Match58168652018-06-19 13:07:452452 days ago1529413665IN
0x4342Cc67...83D2Ce00d
0 ETH0.000494173
Create Match58168652018-06-19 13:07:452452 days ago1529413665IN
0x4342Cc67...83D2Ce00d
0 ETH0.000494173
Announce Match R...58168652018-06-19 13:07:452452 days ago1529413665IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142563
Announce Match R...58168592018-06-19 13:06:212452 days ago1529413581IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142063
Announce Match R...58168592018-06-19 13:06:212452 days ago1529413581IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142063
Announce Match R...58168582018-06-19 13:06:042452 days ago1529413564IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142333
Announce Match R...58168522018-06-19 13:04:412452 days ago1529413481IN
0x4342Cc67...83D2Ce00d
0 ETH0.000142563
View all transactions

Latest 7 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer58273962018-06-21 8:22:042450 days ago1529569324
0x4342Cc67...83D2Ce00d
0.01 ETH
Transfer58022812018-06-17 1:49:192454 days ago1529200159
0x4342Cc67...83D2Ce00d
0.001 ETH
Transfer58019682018-06-17 0:29:202454 days ago1529195360
0x4342Cc67...83D2Ce00d
0.0067 ETH
Transfer57950262018-06-15 20:11:172456 days ago1529093477
0x4342Cc67...83D2Ce00d
0.0003 ETH
Transfer57945582018-06-15 18:13:192456 days ago1529086399
0x4342Cc67...83D2Ce00d
0.005 ETH
Transfer57936912018-06-15 14:33:362456 days ago1529073216
0x4342Cc67...83D2Ce00d
0.0105 ETH
Transfer57936452018-06-15 14:21:252456 days ago1529072485
0x4342Cc67...83D2Ce00d
0.0005 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WorldCup

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.23;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
contract SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title MultiOwnable
 * @dev The MultiOwnable contract has owners addresses and provides basic authorization control
 * functions, this simplifies the implementation of "users permissions".
 */
contract MultiOwnable {
    address public manager; // address used to set owners
    address[] public owners;
    mapping(address => bool) public ownerByAddress;

    event SetManager(address manager);
    event SetOwners(address[] owners);

    modifier onlyOwner() {
        require(ownerByAddress[msg.sender] == true);
        _;
    }

    modifier onlyManager() {
        require(msg.sender == manager);
        _;
    }

    /**
     * @dev MultiOwnable constructor sets the manager
     */
    constructor() public {
        manager = msg.sender;
    }

    /**
     * @dev Function to set owners addresses
     */
    function setOwners(address[] _owners) onlyManager public {
        _setOwners(_owners);
    }

    function _setOwners(address[] _owners) internal {
        for(uint256 i = 0; i < owners.length; i++) {
            ownerByAddress[owners[i]] = false;
        }

        for(uint256 j = 0; j < _owners.length; j++) {
            ownerByAddress[_owners[j]] = true;
        }
        owners = _owners;
        emit SetOwners(_owners);
    }

    function getOwners() public constant returns (address[]) {
        return owners;
    }

    function setManager(address _manager) onlyManager public {
        manager = _manager;
        emit SetManager(_manager);
    }
}


contract WorldCup is MultiOwnable, SafeMath {

    enum Result {Unknown, HomeWin, HomeDraw, HomeLoss}

    // Data Struct

    struct Match {
        bool created;

        // Match Info
        string team;
        string teamDetail;
        int32  pointSpread;
        uint64 startTime;
        uint64 endTime;

        // Current Stakes
        uint256 stakesOfWin;
        uint256 stakesOfDraw;
        uint256 stakesOfLoss;

        // Result
        Result result;
    }

    struct Prediction {
        Result result;
        uint256 stake;
        bool withdraw;
    }

    // Storage

    uint public numMatches;
    mapping(uint => Match) public matches;
    mapping(uint => mapping(address => Prediction)) public predictions;
    uint256 public rate;

    // Event

    event NewMatch(uint indexed id, string team, string detail, int32 spread, uint64 start, uint64 end);
    event MatchInfo(uint indexed id, string detail);
    event MatchResult(uint indexed id, Result result, uint256 fee);
    event Bet(address indexed user, uint indexed id, Result result, uint256 stake,
        uint256 stakesOfWin, uint256 stakesOfDraw, uint256 stakesOfLoss);
    event Withdraw(address indexed user, uint indexed id, uint256 bonus);

    modifier validId(uint _id) {
        require(matches[_id].created == true);
        _;
    }

    modifier validResult(Result _result) {
        require(_result == Result.HomeWin || _result == Result.HomeDraw || _result == Result.HomeLoss);
        _;
    }

    constructor() public {
        rate = 20; // 5%
    }

    // For Owner & Manager

    function createMatch(uint _id, string _team, string _teamDetail, int32 _pointSpread, uint64 _startTime, uint64 _endTime)
    onlyOwner
    public {

        require(_startTime < _endTime);
        require(matches[_id].created == false);

        // Create new match
        Match memory _match = Match({
            created:true,
            team: _team,
            teamDetail: _teamDetail,
            pointSpread: _pointSpread,
            startTime: _startTime,
            endTime: _endTime,
            stakesOfWin: 0,
            stakesOfDraw: 0,
            stakesOfLoss: 0,
            result: Result.Unknown
            });

        // Insert into matches
        matches[_id] = _match;
        numMatches++;

        // Set event
        emit NewMatch(_id, _team, _teamDetail, _pointSpread, _startTime, _endTime);
    }

    function updateMatchInfo(uint _id, string _teamDetail, uint64 _startTime, uint64 _endTime)
    onlyOwner
    validId(_id)
    public {

        // Update match info
        if (bytes(_teamDetail).length > 0) {
            matches[_id].teamDetail = _teamDetail;
        }
        if (_startTime != 0) {
            matches[_id].startTime = _startTime;
        }
        if (_endTime != 0) {
            matches[_id].endTime = _endTime;
        }

        // Set event
        emit MatchInfo(_id, _teamDetail);
    }

    function announceMatchResult(uint _id, Result _result)
    onlyManager
    validId(_id)
    validResult(_result)
    public {

        // Check current result
        require(matches[_id].result == Result.Unknown);

        // Update result
        matches[_id].result = _result;

        // Calculate bonus and fee
        uint256 bonus;
        uint256 fee;
        Match storage _match = matches[_id];

        if (_result == Result.HomeWin) {
            bonus = add(_match.stakesOfDraw, _match.stakesOfLoss);
            if (_match.stakesOfWin > 0) {
                fee = div(bonus, rate);
            } else {
                fee = bonus;
            }
        } else if (_result == Result.HomeDraw) {
            bonus = add(_match.stakesOfWin, _match.stakesOfLoss);
            if (_match.stakesOfDraw > 0) {
                fee = div(bonus, rate);
            } else {
                fee = bonus;
            }
        } else if (_result == Result.HomeLoss) {
            bonus = add(_match.stakesOfWin, _match.stakesOfDraw);
            if (_match.stakesOfLoss > 0) {
                fee = div(bonus, rate);
            } else {
                fee = bonus;
            }
        }

        address thiz = address(this);
        require(thiz.balance >= fee);
        manager.transfer(fee);

        // Set event
        emit MatchResult(_id, _result, fee);
    }

    // For Player

    function bet(uint _id, Result _result)
    validId(_id)
    validResult(_result)
    public
    payable {

        // Check value
        require(msg.value > 0);

        // Check match state
        Match storage _match = matches[_id];
        require(_match.result == Result.Unknown);
        require(_match.startTime <= now);
        require(_match.endTime >= now);

        // Update matches
        if (_result == Result.HomeWin) {
            _match.stakesOfWin = add(_match.stakesOfWin, msg.value);
        } else if (_result == Result.HomeDraw) {
            _match.stakesOfDraw = add(_match.stakesOfDraw, msg.value);
        } else if (_result == Result.HomeLoss) {
            _match.stakesOfLoss = add(_match.stakesOfLoss, msg.value);
        }

        // Update predictions
        Prediction storage _prediction = predictions[_id][msg.sender];
        if (_prediction.result == Result.Unknown) {
            _prediction.stake = msg.value;
            _prediction.result = _result;
        } else {
            require(_prediction.result == _result);
            _prediction.stake = add(_prediction.stake, msg.value);
        }

        // Set event
        emit Bet(msg.sender, _id, _result, msg.value, _match.stakesOfWin, _match.stakesOfDraw, _match.stakesOfLoss);
    }

    function getBonus(uint _id, address addr)
    validId(_id)
    public
    view
    returns (uint256) {

        // Get match state
        Match storage _match = matches[_id];
        if (_match.result == Result.Unknown) {
            return 0;
        }

        // Get prediction state
        Prediction storage _prediction = predictions[_id][addr];
        if (_prediction.result == Result.Unknown) {
            return 0;
        }

        // Check result
        if (_match.result != _prediction.result) {
            return 0;
        }

        // Calculate bonus
        uint256 bonus = _calcBouns(_match, _prediction);
        bonus = add(bonus, _prediction.stake);

        return bonus;
    }

    function withdraw(uint _id)
    validId(_id)
    public {
        // Check match state
        Match storage _match = matches[_id];
        require(_match.result != Result.Unknown);

        // Check prediction state
        Prediction storage _prediction = predictions[_id][msg.sender];
        require(_prediction.result != Result.Unknown);
        require(_prediction.stake > 0);
        require(_prediction.withdraw == false);
        _prediction.withdraw = true;

        // Check result
        require(_prediction.result == _match.result);

        // Calc bonus
        uint256 bonus = _calcBouns(_match, _prediction);
        bonus = add(bonus, _prediction.stake);

        address thiz = address(this);
        require(thiz.balance >= bonus);
        msg.sender.transfer(bonus);

        // Set event
        emit Withdraw(msg.sender, _id, bonus);
    }

    function _calcBouns(Match storage _match, Prediction storage _prediction)
    internal
    view
    returns (uint256) {

        uint256 bonus;

        if (_match.result != _prediction.result) {
            return 0;
        }

        if (_match.result == Result.HomeWin && _match.stakesOfWin > 0) {
            bonus = add(_match.stakesOfDraw, _match.stakesOfLoss);
            bonus = sub(bonus, div(bonus, rate));
            bonus = div(mul(_prediction.stake, bonus), _match.stakesOfWin);
        } else if (_match.result == Result.HomeDraw && _match.stakesOfDraw > 0 ) {
            bonus = add(_match.stakesOfWin, _match.stakesOfLoss);
            bonus = sub(bonus, div(bonus, rate));
            bonus = div(mul(_prediction.stake, bonus), _match.stakesOfDraw);
        } else if (_match.result == Result.HomeLoss && _match.stakesOfLoss > 0) {
            bonus = add(_match.stakesOfWin, _match.stakesOfDraw);
            bonus = sub(bonus, div(bonus, rate));
            bonus = div(mul(_prediction.stake, bonus), _match.stakesOfLoss);
        }

        return bonus;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_result","type":"uint8"}],"name":"announceMatchResult","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"},{"name":"addr","type":"address"}],"name":"getBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"matches","outputs":[{"name":"created","type":"bool"},{"name":"team","type":"string"},{"name":"teamDetail","type":"string"},{"name":"pointSpread","type":"int32"},{"name":"startTime","type":"uint64"},{"name":"endTime","type":"uint64"},{"name":"stakesOfWin","type":"uint256"},{"name":"stakesOfDraw","type":"uint256"},{"name":"stakesOfLoss","type":"uint256"},{"name":"result","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_team","type":"string"},{"name":"_teamDetail","type":"string"},{"name":"_pointSpread","type":"int32"},{"name":"_startTime","type":"uint64"},{"name":"_endTime","type":"uint64"}],"name":"createMatch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_teamDetail","type":"string"},{"name":"_startTime","type":"uint64"},{"name":"_endTime","type":"uint64"}],"name":"updateMatchInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numMatches","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"predictions","outputs":[{"name":"result","type":"uint8"},{"name":"stake","type":"uint256"},{"name":"withdraw","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_result","type":"uint8"}],"name":"bet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerByAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owners","type":"address[]"}],"name":"setOwners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"team","type":"string"},{"indexed":false,"name":"detail","type":"string"},{"indexed":false,"name":"spread","type":"int32"},{"indexed":false,"name":"start","type":"uint64"},{"indexed":false,"name":"end","type":"uint64"}],"name":"NewMatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"detail","type":"string"}],"name":"MatchInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"fee","type":"uint256"}],"name":"MatchResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"stake","type":"uint256"},{"indexed":false,"name":"stakesOfWin","type":"uint256"},{"indexed":false,"name":"stakesOfDraw","type":"uint256"},{"indexed":false,"name":"stakesOfLoss","type":"uint256"}],"name":"Bet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"bonus","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"}],"name":"SetManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owners","type":"address[]"}],"name":"SetOwners","type":"event"}]

608060405234801561001057600080fd5b5060008054600160a060020a031916331790556014600655611a57806100376000396000f3006080604052600436106100e55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c2781146100ea578063238c8a821461011e5780632c4e722e1461013e5780632e1a7d4d14610165578063446dba8f1461017d5780634768d4ef146101a1578063481c6a751461030f578063625a3a34146103245780637fef2d38146103db578063854458291461045057806392b108d014610465578063a0e67e2b146104bf578063c437a0cd14610524578063d0ebdbe714610535578063eb6b192f14610556578063fa4d36981461058b575b600080fd5b3480156100f657600080fd5b506101026004356105e0565b60408051600160a060020a039092168252519081900360200190f35b34801561012a57600080fd5b5061013c60043560ff60243516610608565b005b34801561014a57600080fd5b50610153610877565b60408051918252519081900360200190f35b34801561017157600080fd5b5061013c60043561087d565b34801561018957600080fd5b50610153600435600160a060020a0360243516610a02565b3480156101ad57600080fd5b506101b9600435610afa565b604051808b15151515815260200180602001806020018a60030b60030b81526020018967ffffffffffffffff1667ffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff16815260200187815260200186815260200185815260200184600381111561022d57fe5b60ff16815260200183810383528c818151815260200191508051906020019080838360005b8381101561026a578181015183820152602001610252565b50505050905090810190601f1680156102975780820380516001836020036101000a031916815260200191505b5083810382528b5181528b516020918201918d019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b34801561031b57600080fd5b50610102610c8a565b34801561033057600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261013c95833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505050833560030b9450505050602081013567ffffffffffffffff908116916040013516610c99565b3480156103e757600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261013c9583359536956044949193909101919081908401838280828437509497505067ffffffffffffffff8535811696506020909501359094169350610fd092505050565b34801561045c57600080fd5b50610153611185565b34801561047157600080fd5b50610489600435600160a060020a036024351661118b565b6040518084600381111561049957fe5b60ff16815260200183815260200182151515158152602001935050505060405180910390f35b3480156104cb57600080fd5b506104d46111bc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105105781810151838201526020016104f8565b505050509050019250505060405180910390f35b61013c60043560ff6024351661121f565b34801561054157600080fd5b5061013c600160a060020a03600435166114ae565b34801561056257600080fd5b50610577600160a060020a0360043516611526565b604080519115158252519081900360200190f35b34801561059757600080fd5b506040805160206004803580820135838102808601850190965280855261013c9536959394602494938501929182918501908490808284375094975061153b9650505050505050565b60018054829081106105ee57fe5b600091825260209091200154600160a060020a0316905081565b60008054819081908190600160a060020a0316331461062657600080fd5b600086815260046020526040902054869060ff16151560011461064857600080fd5b85600181600381111561065757fe5b148061066e5750600281600381111561066c57fe5b145b806106845750600381600381111561068257fe5b145b151561068f57600080fd5b60008881526004602052604081206007015460ff1660038111156106af57fe5b146106b957600080fd5b6000888152600460205260409020600701805488919060ff191660018360038111156106e157fe5b021790555060008881526004602052604090209350600187600381111561070457fe5b14156107475761071c8460050154856006015461155e565b955060008460040154111561073e5761073786600654611571565b9450610742565b8594505b6107d4565b600287600381111561075557fe5b14156107885761076d8460040154856006015461155e565b955060008460050154111561073e5761073786600654611571565b600387600381111561079657fe5b14156107d4576107ae8460040154856005015461155e565b95506000846006015411156107d0576107c986600654611571565b94506107d4565b8594505b30925082318511156107e557600080fd5b60008054604051600160a060020a039091169187156108fc02918891818181858888f1935050505015801561081e573d6000803e3d6000fd5b50877f1d411260d381ced63bf038dae2946cba327c0c577467b77e60d229eb93c3d06688876040518083600381111561085357fe5b60ff1681526020018281526020019250505060405180910390a25050505050505050565b60065481565b600081815260046020526040812054819081908190859060ff1615156001146108a557600080fd5b60008681526004602052604081209550600786015460ff1660038111156108c857fe5b14156108d357600080fd5b600086815260056020908152604080832033845290915281209450845460ff1660038111156108fe57fe5b141561090957600080fd5b600184015460001061091a57600080fd5b600284015460ff161561092c57600080fd5b60028401805460ff19166001179055600785015460ff16600381111561094e57fe5b845460ff16600381111561095e57fe5b1461096857600080fd5b6109728585611586565b925061098283856001015461155e565b9250309150813183111561099557600080fd5b604051339084156108fc029085906000818181858888f193505050501580156109c2573d6000803e3d6000fd5b50604080518481529051879133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a3505050505050565b600082815260046020526040812054819081908190869060ff161515600114610a2a57600080fd5b60008781526004602052604081209450600785015460ff166003811115610a4d57fe5b1415610a5c5760009450610af0565b6000878152600560209081526040808320600160a060020a038a16845290915281209350835460ff166003811115610a9057fe5b1415610a9f5760009450610af0565b825460ff166003811115610aaf57fe5b600785015460ff166003811115610ac257fe5b14610ad05760009450610af0565b610ada8484611586565b9150610aea82846001015461155e565b91508194505b5050505092915050565b6004602090815260009182526040918290208054600180830180548651600261010094831615949094026000190190911692909204601f810186900486028301860190965285825260ff909216949293909290830182828015610b9e5780601f10610b7357610100808354040283529160200191610b9e565b820191906000526020600020905b815481529060010190602001808311610b8157829003601f168201915b50505060028085018054604080516020601f6000196101006001871615020190941695909504928301859004850281018501909152818152959695945090925090830182828015610c305780601f10610c0557610100808354040283529160200191610c30565b820191906000526020600020905b815481529060010190602001808311610c1357829003601f168201915b50505060038085015460048601546005870154600688015460079098015496979383900b9667ffffffffffffffff6401000000008504811697506c0100000000000000000000000090940490931694509092909160ff168a565b600054600160a060020a031681565b610ca16118a1565b3360009081526002602052604090205460ff161515600114610cc257600080fd5b67ffffffffffffffff80831690841610610cdb57600080fd5b60008781526004602052604090205460ff1615610cf757600080fd5b610140604051908101604052806001151581526020018781526020018681526020018560030b81526020018467ffffffffffffffff1681526020018367ffffffffffffffff16815260200160008152602001600081526020016000815260200160006003811115610d6457fe5b905260008881526004602090815260409091208251815460ff191690151517815582820151805193945084939192610da4926001850192909101906118f4565b5060408201518051610dc09160028401916020909101906118f4565b50606082015160038281018054608086015160a087015163ffffffff1990921663ffffffff95850b95909516949094176bffffffffffffffff00000000191664010000000067ffffffffffffffff958616021773ffffffffffffffff00000000000000000000000019166c0100000000000000000000000094909116939093029290921790915560c0830151600483015560e0830151600583015561010083015160068301556101208301516007830180549192909160ff1916906001908490811115610e8957fe5b0217905550506003805460010181556040805187830b90920b9082015267ffffffffffffffff80861660608301528416608082015260a080825288519082015287518992507fe187dfaad0a80f26ac9cf793022542ac887d4007cd7244664f174a6e7e9f478e9189918991899189918991819060208083019160c08401918a019080838360005b83811015610f28578181015183820152602001610f10565b50505050905090810190601f168015610f555780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b83811015610f88578181015183820152602001610f70565b50505050905090810190601f168015610fb55780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a250505050505050565b3360009081526002602052604090205460ff161515600114610ff157600080fd5b600084815260046020526040902054849060ff16151560011461101357600080fd5b6000845111156110445760008581526004602090815260409091208551611042926002909201918701906118f4565b505b67ffffffffffffffff83161561108c57600085815260046020526040902060030180546bffffffffffffffff00000000191664010000000067ffffffffffffffff8616021790555b67ffffffffffffffff8216156110e4576000858152600460205260409020600301805473ffffffffffffffff00000000000000000000000019166c0100000000000000000000000067ffffffffffffffff8516021790555b847fe13dc79b60f22c2f8a0ac013c778114e0ef4294b5bd560686c4aa38abd3d0b92856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561114457818101518382015260200161112c565b50505050905090810190601f1680156111715780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050505050565b60035481565b600560209081526000928352604080842090915290825290208054600182015460029092015460ff91821692911683565b6060600180548060200260200160405190810160405280929190818152602001828054801561121457602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116111f6575b505050505090505b90565b6000828152600460205260408120548190849060ff16151560011461124357600080fd5b83600181600381111561125257fe5b14806112695750600281600381111561126757fe5b145b8061127f5750600381600381111561127d57fe5b145b151561128a57600080fd5b6000341161129757600080fd5b60008681526004602052604081209450600785015460ff1660038111156112ba57fe5b146112c457600080fd5b60038401544264010000000090910467ffffffffffffffff1611156112e857600080fd5b6003840154426c0100000000000000000000000090910467ffffffffffffffff16101561131457600080fd5b600185600381111561132257fe5b14156113405761133684600401543461155e565b6004850155611394565b600285600381111561134e57fe5b141561136c5761136284600501543461155e565b6005850155611394565b600385600381111561137a57fe5b14156113945761138e84600601543461155e565b60068501555b600086815260056020908152604080832033845290915281209350835460ff1660038111156113bf57fe5b14156113f0573460018085019190915583548691859160ff1916908360038111156113e657fe5b021790555061142a565b8460038111156113fc57fe5b835460ff16600381111561140c57fe5b1461141657600080fd5b61142483600101543461155e565b60018401555b8533600160a060020a03167fe48b96341a67ee69e6670e8df3a21898808edf14251f7cb24681dd7d9f1c8ee78734886004015489600501548a600601546040518086600381111561147757fe5b60ff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050565b600054600160a060020a031633146114c557600080fd5b60008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f54a6385aa0292b04e1ef8513253c17d1863f7cdfc87029d77fd55cc4c2e717e29181900360200190a150565b60026020526000908152604090205460ff1681565b600054600160a060020a0316331461155257600080fd5b61155b8161171a565b50565b8181018281101561156b57fe5b92915050565b6000818381151561157e57fe5b049392505050565b8054600090819060ff16600381111561159b57fe5b600785015460ff1660038111156115ae57fe5b146115bc5760009150611713565b6001600785015460ff1660038111156115d157fe5b1480156115e2575060008460040154115b15611634576115f98460050154856006015461155e565b90506116108161160b83600654611571565b611866565b905061162d611623846001015483611878565b8560040154611571565b905061170f565b6002600785015460ff16600381111561164957fe5b14801561165a575060008460050154115b156116a0576116718460040154856006015461155e565b90506116838161160b83600654611571565b905061162d611696846001015483611878565b8560050154611571565b6003600785015460ff1660038111156116b557fe5b1480156116c6575060008460060154115b1561170f576116dd8460040154856005015461155e565b90506116ef8161160b83600654611571565b905061170c611702846001015483611878565b8560060154611571565b90505b8091505b5092915050565b6000805b60015482101561177d5760006002600060018581548110151561173d57fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790556001919091019061171e565b5060005b82518110156117d857600160026000858481518110151561179e57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611781565b82516117eb906001906020860190611972565b507f9465cd279c2de393c5568ae444599e3644e3d1864ca2c05ced8a654df2aea3cb836040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561184e578181015183820152602001611836565b505050509050019250505060405180910390a1505050565b60008282111561187257fe5b50900390565b60008215156118895750600061156b565b5081810281838281151561189957fe5b041461156b57fe5b604080516101408101825260008082526060602083018190529282018390529181018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290529061012082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061193557805160ff1916838001178555611962565b82800160010185558215611962579182015b82811115611962578251825591602001919060010190611947565b5061196e9291506119e0565b5090565b8280548282559060005260206000209081019282156119d4579160200282015b828111156119d4578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190611992565b5061196e9291506119fa565b61121c91905b8082111561196e57600081556001016119e6565b61121c91905b8082111561196e57805473ffffffffffffffffffffffffffffffffffffffff19168155600101611a005600a165627a7a723058209acb94fafb30f877552b71113a959d59a3f13bbef36a11038456129f6fbd51840029

Deployed Bytecode

0x6080604052600436106100e55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c2781146100ea578063238c8a821461011e5780632c4e722e1461013e5780632e1a7d4d14610165578063446dba8f1461017d5780634768d4ef146101a1578063481c6a751461030f578063625a3a34146103245780637fef2d38146103db578063854458291461045057806392b108d014610465578063a0e67e2b146104bf578063c437a0cd14610524578063d0ebdbe714610535578063eb6b192f14610556578063fa4d36981461058b575b600080fd5b3480156100f657600080fd5b506101026004356105e0565b60408051600160a060020a039092168252519081900360200190f35b34801561012a57600080fd5b5061013c60043560ff60243516610608565b005b34801561014a57600080fd5b50610153610877565b60408051918252519081900360200190f35b34801561017157600080fd5b5061013c60043561087d565b34801561018957600080fd5b50610153600435600160a060020a0360243516610a02565b3480156101ad57600080fd5b506101b9600435610afa565b604051808b15151515815260200180602001806020018a60030b60030b81526020018967ffffffffffffffff1667ffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff16815260200187815260200186815260200185815260200184600381111561022d57fe5b60ff16815260200183810383528c818151815260200191508051906020019080838360005b8381101561026a578181015183820152602001610252565b50505050905090810190601f1680156102975780820380516001836020036101000a031916815260200191505b5083810382528b5181528b516020918201918d019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b34801561031b57600080fd5b50610102610c8a565b34801561033057600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261013c95833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505050833560030b9450505050602081013567ffffffffffffffff908116916040013516610c99565b3480156103e757600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261013c9583359536956044949193909101919081908401838280828437509497505067ffffffffffffffff8535811696506020909501359094169350610fd092505050565b34801561045c57600080fd5b50610153611185565b34801561047157600080fd5b50610489600435600160a060020a036024351661118b565b6040518084600381111561049957fe5b60ff16815260200183815260200182151515158152602001935050505060405180910390f35b3480156104cb57600080fd5b506104d46111bc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105105781810151838201526020016104f8565b505050509050019250505060405180910390f35b61013c60043560ff6024351661121f565b34801561054157600080fd5b5061013c600160a060020a03600435166114ae565b34801561056257600080fd5b50610577600160a060020a0360043516611526565b604080519115158252519081900360200190f35b34801561059757600080fd5b506040805160206004803580820135838102808601850190965280855261013c9536959394602494938501929182918501908490808284375094975061153b9650505050505050565b60018054829081106105ee57fe5b600091825260209091200154600160a060020a0316905081565b60008054819081908190600160a060020a0316331461062657600080fd5b600086815260046020526040902054869060ff16151560011461064857600080fd5b85600181600381111561065757fe5b148061066e5750600281600381111561066c57fe5b145b806106845750600381600381111561068257fe5b145b151561068f57600080fd5b60008881526004602052604081206007015460ff1660038111156106af57fe5b146106b957600080fd5b6000888152600460205260409020600701805488919060ff191660018360038111156106e157fe5b021790555060008881526004602052604090209350600187600381111561070457fe5b14156107475761071c8460050154856006015461155e565b955060008460040154111561073e5761073786600654611571565b9450610742565b8594505b6107d4565b600287600381111561075557fe5b14156107885761076d8460040154856006015461155e565b955060008460050154111561073e5761073786600654611571565b600387600381111561079657fe5b14156107d4576107ae8460040154856005015461155e565b95506000846006015411156107d0576107c986600654611571565b94506107d4565b8594505b30925082318511156107e557600080fd5b60008054604051600160a060020a039091169187156108fc02918891818181858888f1935050505015801561081e573d6000803e3d6000fd5b50877f1d411260d381ced63bf038dae2946cba327c0c577467b77e60d229eb93c3d06688876040518083600381111561085357fe5b60ff1681526020018281526020019250505060405180910390a25050505050505050565b60065481565b600081815260046020526040812054819081908190859060ff1615156001146108a557600080fd5b60008681526004602052604081209550600786015460ff1660038111156108c857fe5b14156108d357600080fd5b600086815260056020908152604080832033845290915281209450845460ff1660038111156108fe57fe5b141561090957600080fd5b600184015460001061091a57600080fd5b600284015460ff161561092c57600080fd5b60028401805460ff19166001179055600785015460ff16600381111561094e57fe5b845460ff16600381111561095e57fe5b1461096857600080fd5b6109728585611586565b925061098283856001015461155e565b9250309150813183111561099557600080fd5b604051339084156108fc029085906000818181858888f193505050501580156109c2573d6000803e3d6000fd5b50604080518481529051879133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a3505050505050565b600082815260046020526040812054819081908190869060ff161515600114610a2a57600080fd5b60008781526004602052604081209450600785015460ff166003811115610a4d57fe5b1415610a5c5760009450610af0565b6000878152600560209081526040808320600160a060020a038a16845290915281209350835460ff166003811115610a9057fe5b1415610a9f5760009450610af0565b825460ff166003811115610aaf57fe5b600785015460ff166003811115610ac257fe5b14610ad05760009450610af0565b610ada8484611586565b9150610aea82846001015461155e565b91508194505b5050505092915050565b6004602090815260009182526040918290208054600180830180548651600261010094831615949094026000190190911692909204601f810186900486028301860190965285825260ff909216949293909290830182828015610b9e5780601f10610b7357610100808354040283529160200191610b9e565b820191906000526020600020905b815481529060010190602001808311610b8157829003601f168201915b50505060028085018054604080516020601f6000196101006001871615020190941695909504928301859004850281018501909152818152959695945090925090830182828015610c305780601f10610c0557610100808354040283529160200191610c30565b820191906000526020600020905b815481529060010190602001808311610c1357829003601f168201915b50505060038085015460048601546005870154600688015460079098015496979383900b9667ffffffffffffffff6401000000008504811697506c0100000000000000000000000090940490931694509092909160ff168a565b600054600160a060020a031681565b610ca16118a1565b3360009081526002602052604090205460ff161515600114610cc257600080fd5b67ffffffffffffffff80831690841610610cdb57600080fd5b60008781526004602052604090205460ff1615610cf757600080fd5b610140604051908101604052806001151581526020018781526020018681526020018560030b81526020018467ffffffffffffffff1681526020018367ffffffffffffffff16815260200160008152602001600081526020016000815260200160006003811115610d6457fe5b905260008881526004602090815260409091208251815460ff191690151517815582820151805193945084939192610da4926001850192909101906118f4565b5060408201518051610dc09160028401916020909101906118f4565b50606082015160038281018054608086015160a087015163ffffffff1990921663ffffffff95850b95909516949094176bffffffffffffffff00000000191664010000000067ffffffffffffffff958616021773ffffffffffffffff00000000000000000000000019166c0100000000000000000000000094909116939093029290921790915560c0830151600483015560e0830151600583015561010083015160068301556101208301516007830180549192909160ff1916906001908490811115610e8957fe5b0217905550506003805460010181556040805187830b90920b9082015267ffffffffffffffff80861660608301528416608082015260a080825288519082015287518992507fe187dfaad0a80f26ac9cf793022542ac887d4007cd7244664f174a6e7e9f478e9189918991899189918991819060208083019160c08401918a019080838360005b83811015610f28578181015183820152602001610f10565b50505050905090810190601f168015610f555780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b83811015610f88578181015183820152602001610f70565b50505050905090810190601f168015610fb55780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a250505050505050565b3360009081526002602052604090205460ff161515600114610ff157600080fd5b600084815260046020526040902054849060ff16151560011461101357600080fd5b6000845111156110445760008581526004602090815260409091208551611042926002909201918701906118f4565b505b67ffffffffffffffff83161561108c57600085815260046020526040902060030180546bffffffffffffffff00000000191664010000000067ffffffffffffffff8616021790555b67ffffffffffffffff8216156110e4576000858152600460205260409020600301805473ffffffffffffffff00000000000000000000000019166c0100000000000000000000000067ffffffffffffffff8516021790555b847fe13dc79b60f22c2f8a0ac013c778114e0ef4294b5bd560686c4aa38abd3d0b92856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561114457818101518382015260200161112c565b50505050905090810190601f1680156111715780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050505050565b60035481565b600560209081526000928352604080842090915290825290208054600182015460029092015460ff91821692911683565b6060600180548060200260200160405190810160405280929190818152602001828054801561121457602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116111f6575b505050505090505b90565b6000828152600460205260408120548190849060ff16151560011461124357600080fd5b83600181600381111561125257fe5b14806112695750600281600381111561126757fe5b145b8061127f5750600381600381111561127d57fe5b145b151561128a57600080fd5b6000341161129757600080fd5b60008681526004602052604081209450600785015460ff1660038111156112ba57fe5b146112c457600080fd5b60038401544264010000000090910467ffffffffffffffff1611156112e857600080fd5b6003840154426c0100000000000000000000000090910467ffffffffffffffff16101561131457600080fd5b600185600381111561132257fe5b14156113405761133684600401543461155e565b6004850155611394565b600285600381111561134e57fe5b141561136c5761136284600501543461155e565b6005850155611394565b600385600381111561137a57fe5b14156113945761138e84600601543461155e565b60068501555b600086815260056020908152604080832033845290915281209350835460ff1660038111156113bf57fe5b14156113f0573460018085019190915583548691859160ff1916908360038111156113e657fe5b021790555061142a565b8460038111156113fc57fe5b835460ff16600381111561140c57fe5b1461141657600080fd5b61142483600101543461155e565b60018401555b8533600160a060020a03167fe48b96341a67ee69e6670e8df3a21898808edf14251f7cb24681dd7d9f1c8ee78734886004015489600501548a600601546040518086600381111561147757fe5b60ff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050565b600054600160a060020a031633146114c557600080fd5b60008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f54a6385aa0292b04e1ef8513253c17d1863f7cdfc87029d77fd55cc4c2e717e29181900360200190a150565b60026020526000908152604090205460ff1681565b600054600160a060020a0316331461155257600080fd5b61155b8161171a565b50565b8181018281101561156b57fe5b92915050565b6000818381151561157e57fe5b049392505050565b8054600090819060ff16600381111561159b57fe5b600785015460ff1660038111156115ae57fe5b146115bc5760009150611713565b6001600785015460ff1660038111156115d157fe5b1480156115e2575060008460040154115b15611634576115f98460050154856006015461155e565b90506116108161160b83600654611571565b611866565b905061162d611623846001015483611878565b8560040154611571565b905061170f565b6002600785015460ff16600381111561164957fe5b14801561165a575060008460050154115b156116a0576116718460040154856006015461155e565b90506116838161160b83600654611571565b905061162d611696846001015483611878565b8560050154611571565b6003600785015460ff1660038111156116b557fe5b1480156116c6575060008460060154115b1561170f576116dd8460040154856005015461155e565b90506116ef8161160b83600654611571565b905061170c611702846001015483611878565b8560060154611571565b90505b8091505b5092915050565b6000805b60015482101561177d5760006002600060018581548110151561173d57fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790556001919091019061171e565b5060005b82518110156117d857600160026000858481518110151561179e57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611781565b82516117eb906001906020860190611972565b507f9465cd279c2de393c5568ae444599e3644e3d1864ca2c05ced8a654df2aea3cb836040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561184e578181015183820152602001611836565b505050509050019250505060405180910390a1505050565b60008282111561187257fe5b50900390565b60008215156118895750600061156b565b5081810281838281151561189957fe5b041461156b57fe5b604080516101408101825260008082526060602083018190529282018390529181018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290529061012082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061193557805160ff1916838001178555611962565b82800160010185558215611962579182015b82811115611962578251825591602001919060010190611947565b5061196e9291506119e0565b5090565b8280548282559060005260206000209081019282156119d4579160200282015b828111156119d4578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190611992565b5061196e9291506119fa565b61121c91905b8082111561196e57600081556001016119e6565b61121c91905b8082111561196e57805473ffffffffffffffffffffffffffffffffffffffff19168155600101611a005600a165627a7a723058209acb94fafb30f877552b71113a959d59a3f13bbef36a11038456129f6fbd51840029

Swarm Source

bzzr://9acb94fafb30f877552b71113a959d59a3f13bbef36a11038456129f6fbd5184

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.