ETH Price: $2,638.86 (-0.15%)

Contract

0x187049E4a5c5c64020d13f80894dfd4054f50860
 

Overview

ETH Balance

0.0006707337424787 ETH

Eth Value

$1.77 (@ $2,638.86/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer58667592018-06-28 2:59:412304 days ago1530154781IN
0x187049E4...054f50860
0 ETH0.000065422
Transfer58665732018-06-28 2:12:432304 days ago1530151963IN
0x187049E4...054f50860
0 ETH0.000065292
Transfer58660812018-06-27 23:56:132305 days ago1530143773IN
0x187049E4...054f50860
0 ETH0.000032771
Transfer58643022018-06-27 16:50:282305 days ago1530118228IN
0x187049E4...054f50860
0 ETH0.000131094
Transfer58642042018-06-27 16:27:352305 days ago1530116855IN
0x187049E4...054f50860
0 ETH0.000098133
Transfer58610962018-06-27 3:41:062305 days ago1530070866IN
0x187049E4...054f50860
0.1 ETH0.000208544
Transfer58609602018-06-27 3:07:072305 days ago1530068827IN
0x187049E4...054f50860
0.0001 ETH0.000104272
Transfer58608122018-06-27 2:26:052305 days ago1530066365IN
0x187049E4...054f50860
0.005 ETH0.00015643
Transfer58599592018-06-26 22:57:232306 days ago1530053843IN
0x187049E4...054f50860
0.006 ETH0.000104272
Transfer58598882018-06-26 22:38:002306 days ago1530052680IN
0x187049E4...054f50860
0.0001 ETH0.000104272
Transfer58552352018-06-26 3:11:412306 days ago1529982701IN
0x187049E4...054f50860
1.146 ETH0.000268544
0x6080604058499252018-06-25 4:31:162307 days ago1529901076IN
 Contract Creation
0 ETH0.001667671

Latest 6 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
58667592018-06-28 2:59:412304 days ago1530154781
0x187049E4...054f50860
0.03353668 ETH
58665732018-06-28 2:12:432304 days ago1530151963
0x187049E4...054f50860
0.00067073 ETH
58660812018-06-27 23:56:132305 days ago1530143773
0x187049E4...054f50860
0.67073374 ETH
58643022018-06-27 16:50:282305 days ago1530118228
0x187049E4...054f50860
7.68660867 ETH
58642042018-06-27 16:27:352305 days ago1530116855
0x187049E4...054f50860
0.04024402 ETH
58641782018-06-27 16:22:102305 days ago1530116530
0x187049E4...054f50860
7.17526459 ETH
Loading...
Loading

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

Contract Name:
EthTeamContract

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.21;

/**
 * @title SafeMath
 * @dev https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 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) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title Ownable
 * @dev https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

/**
 * @title StandardToken
 * @dev https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC20/StandardToken.sol
 * @dev Standard ERC20 token
 */
contract StandardToken {
    using SafeMath for uint256;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    mapping(address => uint256) internal balances_;
    mapping(address => mapping(address => uint256)) internal allowed_;

    uint256 internal totalSupply_;
    string public name;
    string public symbol;
    uint8 public decimals;

    /**
    * @dev total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances_[_owner];
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed_ to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed_[_owner][_spender];
    }

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances_[msg.sender]);

        balances_[msg.sender] = balances_[msg.sender].sub(_value);
        balances_[_to] = balances_[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances_[_from]);
        require(_value <= allowed_[_from][msg.sender]);

        balances_[_from] = balances_[_from].sub(_value);
        balances_[_to] = balances_[_to].add(_value);
        allowed_[_from][msg.sender] = allowed_[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     *
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed_[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
}

/**
 * @title EthTeamContract
 * @dev The team token. One token represents a team. EthTeamContract is also a ERC20 standard token.
 */
contract EthTeamContract is StandardToken, Ownable {
    event Buy(address indexed token, address indexed from, uint256 value, uint256 weiValue);
    event Sell(address indexed token, address indexed from, uint256 value, uint256 weiValue);
    event BeginGame(address indexed team1, address indexed team2, uint64 gameTime);
    event EndGame(address indexed team1, address indexed team2, uint8 gameResult);
    event ChangeStatus(address indexed team, uint8 status);

    /**
    * @dev Token price based on ETH
    */
    uint256 public price;
    /**
    * @dev status=0 buyable & sellable, user can buy or sell the token.
    * status=1 not buyable & not sellable, user cannot buy or sell the token.
    */
    uint8 public status;
    /**
    * @dev The game start time. gameTime=0 means game time is not enabled or not started.
    */
    uint64 public gameTime;
    /**
    * @dev If the time is older than FinishTime (usually one month after game).
    * The owner has permission to transfer the balance to the feeOwner.
    * The user can get back the balance using the website after this time.
    */
    uint64 public finishTime;
    /**
    * @dev The fee owner. The fee will send to this address.
    */
    address public feeOwner;
    /**
    * @dev Game opponent, gameOpponent is also a EthTeamContract.
    */
    address public gameOpponent;

    /**
    * @dev Team name and team symbol will be ERC20 token name and symbol. Token decimals will be 3.
    * Token total supply will be 0. The initial price will be 1 szabo (1000000000000 Wei)
    */
    function EthTeamContract(
        string _teamName, string _teamSymbol, address _gameOpponent, uint64 _gameTime, uint64 _finishTime, address _feeOwner
    ) public {
        name = _teamName;
        symbol = _teamSymbol;
        decimals = 3;
        totalSupply_ = 0;
        price = 1 szabo;
        gameOpponent = _gameOpponent;
        gameTime = _gameTime;
        finishTime = _finishTime;
        feeOwner = _feeOwner;
        owner = msg.sender;
    }

    /**
    * @dev Sell Or Transfer the token.
    *
    * Override ERC20 transfer token function. If the _to address is not this EthTeamContract,
    * then call the super transfer function, which will be ERC20 token transfer.
    * Otherwise, the user want to sell the token (EthTeamContract -> ETH).
    * @param _to address The address which you want to transfer/sell to
    * @param _value uint256 the amount of tokens to be transferred/sold
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        if (_to != address(this)) {
            return super.transfer(_to, _value);
        }
        // We are only allowed to sell after end of game
        require(_value <= balances_[msg.sender] && status == 0 && gameTime == 0);
        balances_[msg.sender] = balances_[msg.sender].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        uint256 weiAmount = price.mul(_value);
        msg.sender.transfer(weiAmount);
        emit Transfer(msg.sender, _to, _value);
        emit Sell(_to, msg.sender, _value, weiAmount);
        return true;
    }

    /**
    * @dev Buy token using ETH
    * User send ETH to this EthTeamContract, then his token balance will be increased based on price.
    * The total supply will also be increased.
    */
    function() payable public {
        // We are not allowed to buy after game start
        require(status == 0 && price > 0 && gameTime > block.timestamp);
        uint256 amount = msg.value.div(price);
        balances_[msg.sender] = balances_[msg.sender].add(amount);
        totalSupply_ = totalSupply_.add(amount);
        emit Transfer(address(this), msg.sender, amount);
        emit Buy(address(this), msg.sender, amount, msg.value);
    }

    /**
    * @dev The the game status.
    *
    * status = 0 buyable & sellable, user can buy or sell the token.
    * status=1 not buyable & not sellable, user cannot buy or sell the token.
    * @param _status The game status.
    */
    function changeStatus(uint8 _status) onlyOwner public {
        require(status != _status);
        status = _status;
        emit ChangeStatus(address(this), _status);
    }

    /**
    * @dev Change the fee owner.
    *
    * @param _feeOwner The new fee owner.
    */
    function changeFeeOwner(address _feeOwner) onlyOwner public {
        require(_feeOwner != feeOwner && _feeOwner != address(0));
        feeOwner = _feeOwner;
    }

    /**
    * @dev Finish the game
    *
    * If the time is older than FinishTime (usually one month after game).
    * The owner has permission to transfer the balance to the feeOwner.
    * The user can get back the balance using the website after this time.
    */
    function finish() onlyOwner public {
        require(block.timestamp >= finishTime);
        feeOwner.transfer(address(this).balance);
    }

    /**
    * @dev Start the game
    *
    * Start a new game. Initialize game opponent, game time and status.
    * @param _gameOpponent The game opponent contract address
    * @param _gameTime The game begin time. optional
    */
    function beginGame(address _gameOpponent, uint64 _gameTime) onlyOwner public {
        require(_gameOpponent != address(this));
        // 1514764800 = 2018-01-01
        require(_gameTime == 0 || (_gameTime > 1514764800));
        gameOpponent = _gameOpponent;
        gameTime = _gameTime;
        status = 0;
        emit BeginGame(address(this), _gameOpponent, _gameTime);
    }

    /**
    * @dev End the game with game final result.
    *
    * The function only allow to be called with the lose team or the draw team with large balance.
    * We have this rule because the lose team or draw team will large balance need transfer balance to opposite side.
    * This function will also change status of opposite team by calling transferFundAndEndGame function.
    * So the function only need to be called one time for the home and away team.
    * The new price will be recalculated based on the new balance and total supply.
    *
    * Balance transfer rule:
    * 1. The rose team will transfer all balance to opposite side.
    * 2. If the game is draw, the balances of two team will go fifty-fifty.
    * 3. If game is canceled, the balance is not touched and the game states will be reset to initial states.
    * 4. The fee will be 5% of each transfer amount.
    * @param _gameOpponent The game opponent contract address
    * @param _gameResult game result. 1=lose, 2=draw, 3=cancel, 4=win (not allow)
    */
    function endGame(address _gameOpponent, uint8 _gameResult) onlyOwner public {
        require(gameOpponent != address(0) && gameOpponent == _gameOpponent);
        uint256 amount = address(this).balance;
        uint256 opAmount = gameOpponent.balance;
        require(_gameResult == 1 || (_gameResult == 2 && amount >= opAmount) || _gameResult == 3);
        EthTeamContract op = EthTeamContract(gameOpponent);
        if (_gameResult == 1) {
            // Lose
            if (amount > 0 && totalSupply_ > 0) {
                uint256 lostAmount = amount;
                // If opponent has supply
                if (op.totalSupply() > 0) {
                    // fee is 5%
                    uint256 feeAmount = lostAmount.div(20);
                    lostAmount = lostAmount.sub(feeAmount);
                    feeOwner.transfer(feeAmount);
                    op.transferFundAndEndGame.value(lostAmount)();
                } else {
                    // If opponent has not supply, then send the lose money to fee owner.
                    feeOwner.transfer(lostAmount);
                    op.transferFundAndEndGame();
                }
            } else {
                op.transferFundAndEndGame();
            }
        } else if (_gameResult == 2) {
            // Draw
            if (amount > opAmount) {
                lostAmount = amount.sub(opAmount).div(2);
                if (op.totalSupply() > 0) {
                    // fee is 5%
                    feeAmount = lostAmount.div(20);
                    lostAmount = lostAmount.sub(feeAmount);
                    feeOwner.transfer(feeAmount);
                    op.transferFundAndEndGame.value(lostAmount)();
                } else {
                    feeOwner.transfer(lostAmount);
                    op.transferFundAndEndGame();
                }
            } else if (amount == opAmount) {
                op.transferFundAndEndGame();
            } else {
                // should not happen
                revert();
            }
        } else if (_gameResult == 3) {
            //canceled
            op.transferFundAndEndGame();
        } else {
            // should not happen
            revert();
        }
        endGameInternal();
        if (totalSupply_ > 0) {
            price = address(this).balance.div(totalSupply_);
        }
        emit EndGame(address(this), _gameOpponent, _gameResult);
    }

    /**
    * @dev Reset team token states
    *
    */
    function endGameInternal() private {
        gameOpponent = address(0);
        gameTime = 0;
        status = 0;
    }

    /**
    * @dev Reset team states and recalculate the price.
    *
    * This function will be called by opponent team token after end game.
    * It accepts the ETH transfer and recalculate the new price based on
    * new balance and total supply.
    */
    function transferFundAndEndGame() payable public {
        require(gameOpponent != address(0) && gameOpponent == msg.sender);
        if (msg.value > 0 && totalSupply_ > 0) {
            price = address(this).balance.div(totalSupply_);
        }
        endGameInternal();
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_gameOpponent","type":"address"},{"name":"_gameResult","type":"uint8"}],"name":"endGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"status","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finishTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_feeOwner","type":"address"}],"name":"changeFeeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_status","type":"uint8"}],"name":"changeStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameOpponent","type":"address"},{"name":"_gameTime","type":"uint64"}],"name":"beginGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"transferFundAndEndGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"finish","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gameOpponent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_teamName","type":"string"},{"name":"_teamSymbol","type":"string"},{"name":"_gameOpponent","type":"address"},{"name":"_gameTime","type":"uint64"},{"name":"_finishTime","type":"uint64"},{"name":"_feeOwner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"weiValue","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"weiValue","type":"uint256"}],"name":"Sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"team1","type":"address"},{"indexed":true,"name":"team2","type":"address"},{"indexed":false,"name":"gameTime","type":"uint64"}],"name":"BeginGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"team1","type":"address"},{"indexed":true,"name":"team2","type":"address"},{"indexed":false,"name":"gameResult","type":"uint8"}],"name":"EndGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"team","type":"address"},{"indexed":false,"name":"status","type":"uint8"}],"name":"ChangeStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

Deployed Bytecode

0x6080604052600436106101185763ffffffff60e060020a600035041662203116811461024f57806306fdde0314610278578063095ea7b31461030257806318160ddd1461033a578063200d2ed21461036157806323b872dd1461038c578063313ce567146103b65780635958611e146103cb57806370a08231146103fd57806384465fa51461041e5780638da5cb5b1461043f57806395bc95381461047057806395d89b411461048b57806397b817c9146104a0578063a035b1fe146104ce578063a5d1c0c0146104e3578063a9059cbb146104f8578063b9818be11461051c578063c8a5e6d714610531578063d56b288914610539578063dd62ed3e1461054e578063f2fde38b14610575578063fef8383e14610596575b60075460009060ff1615801561013057506000600654115b801561014d57506007544261010090910467ffffffffffffffff16115b151561015857600080fd5b60065461016c90349063ffffffff6105ab16565b600160a060020a033316600090815260208190526040902054909150610198908263ffffffff6105c016565b600160a060020a0333166000908152602081905260409020556002546101c4908263ffffffff6105c016565b600255604080518281529051600160a060020a033381169230909116916000805160206114b48339815191529181900360200190a333600160a060020a031630600160a060020a03167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e8334604051808381526020018281526020019250505060405180910390a350005b34801561025b57600080fd5b50610276600160a060020a036004351660ff602435166105da565b005b34801561028457600080fd5b5061028d610a6a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c75781810151838201526020016102af565b50505050905090810190601f1680156102f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030e57600080fd5b50610326600160a060020a0360043516602435610af8565b604080519115158252519081900360200190f35b34801561034657600080fd5b5061034f610b62565b60408051918252519081900360200190f35b34801561036d57600080fd5b50610376610b68565b6040805160ff9092168252519081900360200190f35b34801561039857600080fd5b50610326600160a060020a0360043581169060243516604435610b71565b3480156103c257600080fd5b50610376610cdf565b3480156103d757600080fd5b506103e0610ce8565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561040957600080fd5b5061034f600160a060020a0360043516610d05565b34801561042a57600080fd5b50610276600160a060020a0360043516610d20565b34801561044b57600080fd5b50610454610da0565b60408051600160a060020a039092168252519081900360200190f35b34801561047c57600080fd5b5061027660ff60043516610db4565b34801561049757600080fd5b5061028d610e3d565b3480156104ac57600080fd5b50610276600160a060020a036004351667ffffffffffffffff60243516610e98565b3480156104da57600080fd5b5061034f610f9c565b3480156104ef57600080fd5b506103e0610fa2565b34801561050457600080fd5b50610326600160a060020a0360043516602435610fb7565b34801561052857600080fd5b50610454611172565b610276611181565b34801561054557600080fd5b506102766111f7565b34801561055a57600080fd5b5061034f600160a060020a036004358116906024351661127b565b34801561058157600080fd5b50610276600160a060020a03600435166112a6565b3480156105a257600080fd5b5061045461134f565b600081838115156105b857fe5b049392505050565b6000828201838110156105cf57fe5b8091505b5092915050565b600554600090819081908190819033600160a060020a03908116610100909204161461060557600080fd5b600954600160a060020a03161580159061062c5750600954600160a060020a038881169116145b151561063757600080fd5b600954600160a060020a033081163196501631935060ff86166001148061066c57508560ff16600214801561066c5750838510155b8061067a57508560ff166003145b151561068557600080fd5b600954600160a060020a0316925060ff8616600114156108d9576000851180156106b157506000600254115b1561087d57849150600083600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106f957600080fd5b505af115801561070d573d6000803e3d6000fd5b505050506040513d602081101561072357600080fd5b505111156107e65761073c82601463ffffffff6105ab16565b905061074e828263ffffffff61135e16565b600854604051919350600160a060020a03169082156108fc029083906000818181858888f19350505050158015610789573d6000803e3d6000fd5b5082600160a060020a031663c8a5e6d7836040518263ffffffff1660e060020a0281526004016000604051808303818588803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b5050505050610878565b600854604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015610820573d6000803e3d6000fd5b5082600160a060020a031663c8a5e6d76040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561085f57600080fd5b505af1158015610873573d6000803e3d6000fd5b505050505b6108d4565b82600160a060020a031663c8a5e6d76040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050505b6109e5565b8560ff166002141561099b57838511156109505761090e6002610902878763ffffffff61135e16565b9063ffffffff6105ab16565b9150600083600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106f957600080fd5b838514156109965782600160a060020a031663c8a5e6d76040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561085f57600080fd5b600080fd5b8560ff16600314156109965782600160a060020a031663c8a5e6d76040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156108bb57600080fd5b6109ed611370565b60006002541115610a1a57600254610a1690600160a060020a033016319063ffffffff6105ab16565b6006555b6040805160ff881681529051600160a060020a03808a169230909116917fca877aac494c1a237a54e53d1cf34403a485633cd56280f38c182df72936526f9181900360200190a350505050505050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610af05780601f10610ac557610100808354040283529160200191610af0565b820191906000526020600020905b815481529060010190602001808311610ad357829003601f168201915b505050505081565b600160a060020a03338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b60075460ff1681565b6000600160a060020a0383161515610b8857600080fd5b600160a060020a038416600090815260208190526040902054821115610bad57600080fd5b600160a060020a0380851660009081526001602090815260408083203390941683529290522054821115610be057600080fd5b600160a060020a038416600090815260208190526040902054610c09908363ffffffff61135e16565b600160a060020a038086166000908152602081905260408082209390935590851681522054610c3e908363ffffffff6105c016565b600160a060020a0380851660009081526020818152604080832094909455878316825260018152838220339093168252919091522054610c84908363ffffffff61135e16565b600160a060020a038086166000818152600160209081526040808320338616845282529182902094909455805186815290519287169391926000805160206114b4833981519152929181900390910190a35060019392505050565b60055460ff1681565b6007546901000000000000000000900467ffffffffffffffff1681565b600160a060020a031660009081526020819052604090205490565b60055433600160a060020a039081166101009092041614610d4057600080fd5b600854600160a060020a03828116911614801590610d665750600160a060020a03811615155b1515610d7157600080fd5b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6005546101009004600160a060020a031681565b60055433600160a060020a039081166101009092041614610dd457600080fd5b60075460ff82811691161415610de957600080fd5b6007805460ff831660ff1990911681179091556040805191825251600160a060020a033016917fb82ce22096c6500c582b45cfbf153014e62fd0cbcccaf9a68dc6bfbd53d875d3919081900360200190a250565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610af05780601f10610ac557610100808354040283529160200191610af0565b60055433600160a060020a039081166101009092041614610eb857600080fd5b30600160a060020a031682600160a060020a031614151515610ed957600080fd5b67ffffffffffffffff81161580610efd5750635a497a008167ffffffffffffffff16115b1515610f0857600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038481169182179092556007805468ffffffffffffffff00191661010067ffffffffffffffff86169081029190911760ff1916909155604080519182525191923016917f1892465d280bc871343cfbf3c63bbbc2bee69afc8d669e83d7e94e54d74c8933916020908290030190a35050565b60065481565b600754610100900467ffffffffffffffff1681565b60008030600160a060020a031684600160a060020a0316141515610fe657610fdf84846113a1565b91506105d3565b600160a060020a0333166000908152602081905260409020548311801590611011575060075460ff16155b801561102c5750600754610100900467ffffffffffffffff16155b151561103757600080fd5b600160a060020a033316600090815260208190526040902054611060908463ffffffff61135e16565b600160a060020a03331660009081526020819052604090205560025461108c908463ffffffff61135e16565b6002556006546110a2908463ffffffff61148816565b604051909150600160a060020a0333169082156108fc029083906000818181858888f193505050501580156110db573d6000803e3d6000fd5b5083600160a060020a031633600160a060020a03166000805160206114b4833981519152856040518082815260200191505060405180910390a333600160a060020a031684600160a060020a03167fa082022e93cfcd9f1da5f9236718053910f7e840da080c789c7845698dc032ff8584604051808381526020018281526020019250505060405180910390a35060019392505050565b600854600160a060020a031681565b600954600160a060020a0316158015906111a9575060095433600160a060020a039081169116145b15156111b457600080fd5b6000341180156111c657506000600254115b156111ed576002546111e990600160a060020a033016319063ffffffff6105ab16565b6006555b6111f5611370565b565b60055433600160a060020a03908116610100909204161461121757600080fd5b6007546901000000000000000000900467ffffffffffffffff1642101561123d57600080fd5b600854604051600160a060020a039182169130163180156108fc02916000818181858888f19350505050158015611278573d6000803e3d6000fd5b50565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b60055433600160a060020a0390811661010090920416146112c657600080fd5b600160a060020a03811615156112db57600080fd5b600554604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360058054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600954600160a060020a031681565b60008282111561136a57fe5b50900390565b6009805473ffffffffffffffffffffffffffffffffffffffff191690556007805468ffffffffffffffffff19169055565b6000600160a060020a03831615156113b857600080fd5b600160a060020a0333166000908152602081905260409020548211156113dd57600080fd5b600160a060020a033316600090815260208190526040902054611406908363ffffffff61135e16565b600160a060020a03338116600090815260208190526040808220939093559085168152205461143b908363ffffffff6105c016565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919333909316926000805160206114b483398151915292918290030190a350600192915050565b60008083151561149b57600091506105d3565b508282028284828115156114ab57fe5b04146105cf57fe00ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820df5ad5f9b51579140e2ad1a94101f0029ac36ff3bb58a0240cd8d852645d5e730029

Swarm Source

bzzr://df5ad5f9b51579140e2ad1a94101f0029ac36ff3bb58a0240cd8d852645d5e73

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.