ETH Price: $3,271.71 (+0.66%)
Gas: 2 Gwei

Contract

0x286F72cF0c134b6eb95528270306447f79E3aEaD
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer59807322018-07-17 13:16:042203 days ago1531833364IN
0x286F72cF...f79E3aEaD
0 ETH0.000077853
Transfer59703242018-07-15 18:43:432204 days ago1531680223IN
0x286F72cF...f79E3aEaD
0.0001 ETH0.000221810.3
End Game59636582018-07-14 15:58:382206 days ago1531583918IN
0x286F72cF...f79E3aEaD
0 ETH0.0037810594
Transfer59594042018-07-13 23:22:082206 days ago1531524128IN
0x286F72cF...f79E3aEaD
0.1 ETH0.0010948521
Transfer59522372018-07-12 18:28:012207 days ago1531420081IN
0x286F72cF...f79E3aEaD
0.005 ETH0.0010948521
Transfer59496762018-07-12 8:11:532208 days ago1531383113IN
0x286F72cF...f79E3aEaD
0.00001 ETH0.0006777613
Transfer59491102018-07-12 6:02:452208 days ago1531375365IN
0x286F72cF...f79E3aEaD
13 ETH0.0007384911
0x6080604059477152018-07-12 0:19:102208 days ago1531354750IN
 Contract Creation
0 ETH0.015005019

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
59636582018-07-14 15:58:382206 days ago1531583918
0x286F72cF...f79E3aEaD
12.4497595 ETH
59636582018-07-14 15:58:382206 days ago1531583918
0x286F72cF...f79E3aEaD
0.6552505 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.