ETH Price: $3,575.31 (+1.73%)
Gas: 22 Gwei

Contract

0x5Ccf1Cb83d01312A98F5E85BfEA0C8Ba450F371E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Payout55068672018-04-26 3:29:522164 days ago1524713392IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000126164
Purchase53330922018-03-27 20:25:172193 days ago1522182317IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330672018-03-27 20:20:322193 days ago1522182032IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330632018-03-27 20:19:292193 days ago1522181969IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330602018-03-27 20:18:582193 days ago1522181938IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330432018-03-27 20:15:332193 days ago1522181733IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330432018-03-27 20:15:332193 days ago1522181733IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330432018-03-27 20:15:332193 days ago1522181733IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330432018-03-27 20:15:332193 days ago1522181733IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53330322018-03-27 20:13:552193 days ago1522181635IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53297582018-03-27 6:52:152193 days ago1522133535IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53297552018-03-27 6:51:412193 days ago1522133501IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53297462018-03-27 6:50:432193 days ago1522133443IN
0x5Ccf1Cb8...a450F371E
0.02 ETH0.000119892
Purchase53291252018-03-27 4:18:282194 days ago1522124308IN
0x5Ccf1Cb8...a450F371E
0.16 ETH0.000134833
Purchase53289472018-03-27 3:34:262194 days ago1522121666IN
0x5Ccf1Cb8...a450F371E
0.16 ETH0.000089931.2
Purchase53288692018-03-27 3:15:362194 days ago1522120536IN
0x5Ccf1Cb8...a450F371E
0.08 ETH0.000119892
Create Promo Tea...53288392018-03-27 3:08:162194 days ago1522120096IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000204582
Create Promo Tea...53288282018-03-27 3:05:262194 days ago1522119926IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000203422
Create Promo Tea...53288232018-03-27 3:04:462194 days ago1522119886IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000204322
Create Promo Tea...53288232018-03-27 3:04:462194 days ago1522119886IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000204582
Create Promo Tea...53288212018-03-27 3:03:472194 days ago1522119827IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000204322
Create Promo Tea...53288182018-03-27 3:03:002194 days ago1522119780IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000205092
Create Promo Tea...53288142018-03-27 3:02:142194 days ago1522119734IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000203812
Create Promo Tea...53288132018-03-27 3:01:522194 days ago1522119712IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000204832
Create Promo Tea...53288132018-03-27 3:01:522194 days ago1522119712IN
0x5Ccf1Cb8...a450F371E
0 ETH0.000203942
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Txn Hash Block From To Value
55068672018-04-26 3:29:522164 days ago1524713392
0x5Ccf1Cb8...a450F371E
0.032 ETH
53330922018-03-27 20:25:172193 days ago1522182317
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330672018-03-27 20:20:322193 days ago1522182032
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330632018-03-27 20:19:292193 days ago1522181969
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330602018-03-27 20:18:582193 days ago1522181938
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330432018-03-27 20:15:332193 days ago1522181733
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330432018-03-27 20:15:332193 days ago1522181733
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330432018-03-27 20:15:332193 days ago1522181733
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330432018-03-27 20:15:332193 days ago1522181733
0x5Ccf1Cb8...a450F371E
0.019 ETH
53330322018-03-27 20:13:552193 days ago1522181635
0x5Ccf1Cb8...a450F371E
0.019 ETH
53297582018-03-27 6:52:152193 days ago1522133535
0x5Ccf1Cb8...a450F371E
0.019 ETH
53297552018-03-27 6:51:412193 days ago1522133501
0x5Ccf1Cb8...a450F371E
0.019 ETH
53297462018-03-27 6:50:432193 days ago1522133443
0x5Ccf1Cb8...a450F371E
0.019 ETH
53291252018-03-27 4:18:282194 days ago1522124308
0x5Ccf1Cb8...a450F371E
0.152 ETH
53289472018-03-27 3:34:262194 days ago1522121666
0x5Ccf1Cb8...a450F371E
0.152 ETH
53288692018-03-27 3:15:362194 days ago1522120536
0x5Ccf1Cb8...a450F371E
0.076 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BallerToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-27
*/

pragma solidity ^0.4.18;

/**
 * @title Ownable
 * @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 The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @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));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}


/**
 * @title Destructible
 * @dev Base contract that can be destroyed by owner. All funds in contract will be sent to the owner.
 */
contract Destructible is Ownable {

  function Destructible() public payable { }

  /**
   * @dev Transfers the current balance to the owner and terminates the contract.
   */
  function destroy() onlyOwner public {
    selfdestruct(owner);
  }

  function destroyAndSend(address _recipient) onlyOwner public {
    selfdestruct(_recipient);
  }
}

/**
 * @title SafeMath
 * @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 c;
  }

  /**
  * @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;
  }
}

contract BallerToken is Ownable, Destructible {
    using SafeMath for uint;
    /*** EVENTS ***/

    // @dev Fired whenever a new Baller token is created for the first time.
    event BallerCreated(uint256 tokenId, string name, address owner);

    // @dev Fired whenever a new Baller Player token is created for first time
    event BallerPlayerCreated(uint256 tokenId, string name, uint teamID, address owner);

    // @dev Fired whenever a Baller token is sold.
    event TokenSold(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address newOwner, string name);

    // @dev Fired whenever a team is transfered from one owner to another
    event Transfer(address from, address to, uint256 tokenId);

    /*** CONSTANTS ***/

    uint constant private DEFAULT_START_PRICE = 0.01 ether;
    uint constant private FIRST_PRICE_LIMIT =  0.5 ether;
    uint constant private SECOND_PRICE_LIMIT =  2 ether;
    uint constant private THIRD_PRICE_LIMIT =  5 ether;
    uint constant private FIRST_COMMISSION_LEVEL = 5;
    uint constant private SECOND_COMMISSION_LEVEL = 4;
    uint constant private THIRD_COMMISSION_LEVEL = 3;
    uint constant private FOURTH_COMMISSION_LEVEL = 2;
    uint constant private FIRST_LEVEL_INCREASE = 200;
    uint constant private SECOND_LEVEL_INCREASE = 135;
    uint constant private THIRD_LEVEL_INCREASE = 125;
    uint constant private FOURTH_LEVEL_INCREASE = 115;

    /*** STORAGE ***/

    // @dev maps team id to address of who owns it
    mapping (uint => address) private teamIndexToOwner;

    // @dev maps team id to a price
    mapping (uint => uint) private teamIndexToPrice;

    // @dev maps address to how many tokens they own
    mapping (address => uint) private ownershipTokenCount;


    // @dev maps player id to address of who owns it
    mapping (uint => address) public playerIndexToOwner;

    // @dev maps player id to a price
    mapping (uint => uint) private playerIndexToPrice;

    // @dev maps address to how many players they own
    mapping (address => uint) private playerOwnershipTokenCount;


    /*** DATATYPES ***/
    //@dev struct for a baller team
    struct Team {
        string name;
    }

    //@dev struct for a baller player
    struct Player {
        string name;
        uint teamID;
    }

    //@dev array which holds each team
    Team[] private ballerTeams;

    //@dev array which holds each baller
    Player[] private ballerPlayers;

    /*** PUBLIC FUNCTIONS ***/

    /**
    * @dev public function to create team, can only be called by owner of smart contract
    * @param _name the name of the team
    * @param _price the price of the team when created
    */

    function createTeam(string _name, uint _price) public onlyOwner {
        _createTeam(_name, this, _price);
    }

    /**
    * @dev public function to create a promotion team and assign it to some address
    * @param _name the name of the team
    * @param _owner the owner of the team when created
    * @param _price the price of the team when created
    */
    function createPromoTeam(string _name, address _owner, uint _price) public onlyOwner {
        _createTeam(_name, _owner, _price);
    }


    /**
    * @dev public function to create a player, can only be called by owner of smart contract
    * @param _name the name of the player
    * @param _teamID the id of the team the player belongs to
    * @param _price the price of the player when created
    */
    function createPlayer(string _name, uint _teamID, uint _price) public onlyOwner {
        _createPlayer(_name, _teamID, this, _price);
    }

    /**
    * @dev Returns all the relevant information about a specific team.
    * @param _tokenId The ID of the team.
    * @return teamName the name of the team.
    * @return currPrice what the team is currently worth.
    * @return owner address of whoever owns the team
    */
    function getTeam(uint _tokenId) public view returns(string teamName, uint currPrice, address owner) {
        Team storage currTeam = ballerTeams[_tokenId];
        teamName = currTeam.name;
        currPrice = teamIndexToPrice[_tokenId];
        owner = ownerOf(_tokenId);
    }

    /**
    * @dev Returns all relevant info about a specific player.
    * @return playerName the name of the player
    * @return currPrice what the player is currently worth.
    * @return owner address of whoever owns the player.
    * @return owningTeamID ID of team that the player plays on.
    */
    function getPlayer(uint _tokenId) public view returns(string playerName, uint currPrice, address owner, uint owningTeamID) {
        Player storage currPlayer = ballerPlayers[_tokenId];
        playerName = currPlayer.name;
        currPrice = playerIndexToPrice[_tokenId];
        owner = ownerOfPlayer(_tokenId);
        owningTeamID = currPlayer.teamID;
    }

    /**
    * @dev changes the name of a specific team.
    * @param _tokenId The id of the team which you want to change.
    * @param _newName The name you want to set the team to be.
    */
    function changeTeamName(uint _tokenId, string _newName) public onlyOwner {
        require(_tokenId < ballerTeams.length && _tokenId >= 0);
        ballerTeams[_tokenId].name = _newName;
    }

    /**
    * @dev changes name of a player.
    * @param _tokenId the id of the player which you want to change.
    * @param _newName the name you want to set the player to be.
    */
    function changePlayerName(uint _tokenId, string _newName) public onlyOwner {
        require(_tokenId < ballerPlayers.length && _tokenId >= 0);
        ballerPlayers[_tokenId].name = _newName;
    }

    /**
    * @dev changes the team the player is own
    * @param _tokenId the id of the player which you want to change.
    * @param _newTeamId the team the player will now be on.
    */

    function changePlayerTeam(uint _tokenId, uint _newTeamId) public onlyOwner {
        require(_newTeamId < ballerPlayers.length && _newTeamId >= 0);
        ballerPlayers[_tokenId].teamID = _newTeamId;
    }

    /**
    * @dev sends all ethereum in this contract to the address specified
    * @param _to address you want the eth to be sent to
    */

    function payout(address _to) public onlyOwner {
      _withdrawAmount(_to, this.balance);
    }

    /**
    * @dev Function to send some amount of ethereum out of the contract to an address
    * @param _to address the eth will be sent to
    * @param _amount amount you want to withdraw
    */
    function withdrawAmount(address _to, uint _amount) public onlyOwner {
      _withdrawAmount(_to, _amount);
    }

    /**
    * @dev Function to get price of a team
    * @param _teamId of team
    * @return price price of team
    */
    function priceOfTeam(uint _teamId) public view returns (uint price) {
      price = teamIndexToPrice[_teamId];
    }

    /**
    * @dev Function to get price of a player
    * @param _playerID id of player
    * @return price price of player
    */

    function priceOfPlayer(uint _playerID) public view returns (uint price) {
        price = playerIndexToPrice[_playerID];
    }

    /**
    * @dev Gets list of teams owned by a person.
    * @dev note: don't want to call this in the smart contract, expensive op.
    * @param _owner address of the owner
    * @return ownedTeams list of the teams owned by the owner
    */
    function getTeamsOfOwner(address _owner) public view returns (uint[] ownedTeams) {
      uint tokenCount = balanceOf(_owner);
      ownedTeams = new uint[](tokenCount);
      uint totalTeams = totalSupply();
      uint resultIndex = 0;
      if (tokenCount != 0) {
        for (uint pos = 0; pos < totalTeams; pos++) {
          address currOwner = ownerOf(pos);
          if (currOwner == _owner) {
            ownedTeams[resultIndex] = pos;
            resultIndex++;
          }
        }
      }
    }


    /**
    * @dev Gets list of players owned by a person.
    * @dev note: don't want to call this in smart contract, expensive op.
    * @param _owner address of owner
    * @return ownedPlayers list of all players owned by the address passed in
    */

    function getPlayersOfOwner(address _owner) public view returns (uint[] ownedPlayers) {
        uint numPlayersOwned = balanceOfPlayers(_owner);
        ownedPlayers = new uint[](numPlayersOwned);
        uint totalPlayers = totalPlayerSupply();
        uint resultIndex = 0;
        if (numPlayersOwned != 0) {
            for (uint pos = 0; pos < totalPlayers; pos++) {
                address currOwner = ownerOfPlayer(pos);
                if (currOwner == _owner) {
                    ownedPlayers[resultIndex] = pos;
                    resultIndex++;
                }
            }
        }
    }

    /*
     * @dev gets the address of owner of the team
     * @param _tokenId is id of the team
     * @return owner the owner of the team's address
    */
    function ownerOf(uint _tokenId) public view returns (address owner) {
      owner = teamIndexToOwner[_tokenId];
      require(owner != address(0));
    }

    /*
     * @dev gets address of owner of player
     * @param _playerId is id of the player
     * @return owner the address of the owner of the player
    */

    function ownerOfPlayer(uint _playerId) public view returns (address owner) {
        owner = playerIndexToOwner[_playerId];
        require(owner != address(0));
    }

    function teamOwnerOfPlayer(uint _playerId) public view returns (address teamOwner) {
        uint teamOwnerId = ballerPlayers[_playerId].teamID;
        teamOwner = ownerOf(teamOwnerId);
    }
    /*
     * @dev gets how many tokens an address owners
     * @param _owner is address of owner
     * @return numTeamsOwned how much teams he has
    */

    function balanceOf(address _owner) public view returns (uint numTeamsOwned) {
      numTeamsOwned = ownershipTokenCount[_owner];
    }

    /*
     * @dev gets how many players an owner owners
     * @param _owner is address of owner
     * @return numPlayersOwned how many players the owner has
    */

    function balanceOfPlayers(address _owner) public view returns (uint numPlayersOwned) {
        numPlayersOwned = playerOwnershipTokenCount[_owner];
    }

    /*
     * @dev gets total number of teams
     * @return totalNumTeams which is the number of teams
    */
    function totalSupply() public view returns (uint totalNumTeams) {
      totalNumTeams = ballerTeams.length;
    }

    /*
     * @dev gets total number of players
     * @return totalNumPlayers is the number of players
    */

    function totalPlayerSupply() public view returns (uint totalNumPlayers) {
        totalNumPlayers = ballerPlayers.length;
    }

    /**
    * @dev Allows user to buy a team from the old owner.
    * @dev Pays old owner minus commission, updates price.
    * @param _teamId id of the team they're trying to buy
    */
    function purchase(uint _teamId) public payable {
      address oldOwner = ownerOf(_teamId);
      address newOwner = msg.sender;

      uint sellingPrice = teamIndexToPrice[_teamId];

      // Making sure token owner is not sending to self
      require(oldOwner != newOwner);

      // Safety check to prevent against an unexpected 0x0 default.
      require(_addressNotNull(newOwner));

      // Making sure sent amount is greater than or equal to the sellingPrice
      require(msg.value >= sellingPrice);

      uint payment =  _calculatePaymentToOwner(sellingPrice, true);
      uint excessPayment = msg.value.sub(sellingPrice);
      uint newPrice = _calculateNewPrice(sellingPrice);
      teamIndexToPrice[_teamId] = newPrice;

      _transfer(oldOwner, newOwner, _teamId);
      // Pay old tokenOwner, unless it's the smart contract
      if (oldOwner != address(this)) {
        oldOwner.transfer(payment);
      }

      newOwner.transfer(excessPayment);
      string memory teamName = ballerTeams[_teamId].name;
      TokenSold(_teamId, sellingPrice, newPrice, oldOwner, newOwner, teamName);
    }


    /**
    * @dev allows user to buy a player from the old owner.
    * @dev pays old owner minus commission, updates price.
    * @dev commission includes house plus amount that goes to owner of team that player plays on
    * @param _playerId the id of the player they're trying to buy.
    */

    function purchasePlayer(uint _playerId) public payable {
        address oldOwner = ownerOfPlayer(_playerId);
        address newOwner = msg.sender;
        address teamOwner = teamOwnerOfPlayer(_playerId);

        uint sellingPrice = playerIndexToPrice[_playerId];

        // Making sure token owner is not sending to self
        require(oldOwner != newOwner);

        // Safety check to prevent against na unexpected 0x0 default
        require(_addressNotNull(newOwner));

        //Making sure sent amount is greater than or equal to selling price
        require(msg.value >= sellingPrice);

        bool sellingTeam = false;
        uint payment = _calculatePaymentToOwner(sellingPrice, sellingTeam);
        uint commission = msg.value.sub(payment);
        uint teamOwnerCommission = commission.div(2);
        uint excessPayment = msg.value.sub(sellingPrice);
        uint newPrice = _calculateNewPrice(sellingPrice);
        playerIndexToPrice[_playerId] = newPrice;

        _transferPlayer(oldOwner, newOwner, _playerId);

        // pay old token owner
        if (oldOwner != address(this)) {
            oldOwner.transfer(payment);
        }

        // pay team owner
        if (teamOwner != address(this)) {
            teamOwner.transfer(teamOwnerCommission);
        }

        newOwner.transfer(excessPayment);
        string memory playerName = ballerPlayers[_playerId].name;
        TokenSold(_playerId, sellingPrice, newPrice, oldOwner, newOwner, playerName);
    }


    /// Safety check on _to address to prevent against an unexpected 0x0 default.
    function _addressNotNull(address _to) private pure returns (bool) {
      return _to != address(0);
    }

    /**
    * @dev Internal function to send some amount of ethereum out of the contract to an address
    * @param _to address the eth will be sent to
    * @param _amount amount you want to withdraw
    */
    function _withdrawAmount(address _to, uint _amount) private {
      require(this.balance >= _amount);
      if (_to == address(0)) {
        owner.transfer(_amount);
      } else {
        _to.transfer(_amount);
      }
    }

    /**
    * @dev internal function to create team
    * @param _name the name of the team
    * @param _owner the owner of the team
    * @param _startingPrice the price of the team at the beginning
    */
    function _createTeam(string _name, address _owner, uint _startingPrice) private {
      Team memory currTeam = Team(_name);
      uint newTeamId = ballerTeams.push(currTeam) - 1;

      // make sure we never overflow amount of tokens possible to be created
      // 4 billion tokens...shouldn't happen.
      require(newTeamId == uint256(uint32(newTeamId)));

      BallerCreated(newTeamId, _name, _owner);
      teamIndexToPrice[newTeamId] = _startingPrice;
      _transfer(address(0), _owner, newTeamId);
    }

    /**
    * @dev internal function to create player
    * @param _name the name of the player
    * @param _teamID the id of the team the player plays on
    * @param _owner the owner of the player
    * @param _startingPrice the price of the player at creation
    */

    function _createPlayer(string _name, uint _teamID, address _owner, uint _startingPrice) private {
        Player memory currPlayer = Player(_name, _teamID);
        uint newPlayerId = ballerPlayers.push(currPlayer) - 1;

        // make sure we never overflow amount of tokens possible to be created
        // 4 billion players, shouldn't happen
        require(newPlayerId == uint256(uint32(newPlayerId)));
        BallerPlayerCreated(newPlayerId, _name, _teamID, _owner);
        playerIndexToPrice[newPlayerId] = _startingPrice;
        _transferPlayer(address(0), _owner, newPlayerId);
    }

    /**
    * @dev internal function to transfer ownership of team
    * @param _from original owner of token
    * @param _to the new owner
    * @param _teamId id of the team
    */
    function _transfer(address _from, address _to, uint _teamId) private {
      ownershipTokenCount[_to]++;
      teamIndexToOwner[_teamId] = _to;

      // Creation of new team causes _from to be 0
      if (_from != address(0)) {
        ownershipTokenCount[_from]--;
      }

      Transfer(_from, _to, _teamId);
    }


    /**
    * @dev internal function to transfer ownership of player
    * @param _from original owner of token
    * @param _to the new owner
    * @param _playerId the id of the player
    */

    function _transferPlayer(address _from, address _to, uint _playerId) private {
        playerOwnershipTokenCount[_to]++;
        playerIndexToOwner[_playerId] = _to;

        // creation of new player causes _from to be 0
        if (_from != address(0)) {
            playerOwnershipTokenCount[_from]--;
        }

        Transfer(_from, _to, _playerId);
    }

    /**
    * @dev internal function to calculate how much to give to owner of contract
    * @param _sellingPrice the current price of the team
    * @param _sellingTeam if you're selling a team or a player
    * @return payment amount the owner gets after commission.
    */
    function _calculatePaymentToOwner(uint _sellingPrice, bool _sellingTeam) private pure returns (uint payment) {
      uint multiplier = 1;
      if (! _sellingTeam) {
          multiplier = 2;
      }
      uint commissionAmount = 100;
      if (_sellingPrice < FIRST_PRICE_LIMIT) {
        commissionAmount = commissionAmount.sub(FIRST_COMMISSION_LEVEL.mul(multiplier));
        payment = uint256(_sellingPrice.mul(commissionAmount).div(100));
      }
      else if (_sellingPrice < SECOND_PRICE_LIMIT) {
        commissionAmount = commissionAmount.sub(SECOND_COMMISSION_LEVEL.mul(multiplier));

        payment = uint256(_sellingPrice.mul(commissionAmount).div(100));
      }
      else if (_sellingPrice < THIRD_PRICE_LIMIT) {
        commissionAmount = commissionAmount.sub(THIRD_COMMISSION_LEVEL.mul(multiplier));

        payment = uint256(_sellingPrice.mul(commissionAmount).div(100));
      }
      else {
        commissionAmount = commissionAmount.sub(FOURTH_COMMISSION_LEVEL.mul(multiplier));
        payment = uint256(_sellingPrice.mul(commissionAmount).div(100));
      }
    }

    /**
    * @dev internal function to calculate how much the new price is
    * @param _sellingPrice the current price of the team.
    * @return newPrice price the team will be worth after being bought.
    */
    function _calculateNewPrice(uint _sellingPrice) private pure returns (uint newPrice) {
      if (_sellingPrice < FIRST_PRICE_LIMIT) {
        newPrice = uint256(_sellingPrice.mul(FIRST_LEVEL_INCREASE).div(100));
      }
      else if (_sellingPrice < SECOND_PRICE_LIMIT) {
        newPrice = uint256(_sellingPrice.mul(SECOND_LEVEL_INCREASE).div(100));
      }
      else if (_sellingPrice < THIRD_PRICE_LIMIT) {
        newPrice = uint256(_sellingPrice.mul(THIRD_LEVEL_INCREASE).div(100));
      }
      else {
        newPrice = uint256(_sellingPrice.mul(FOURTH_LEVEL_INCREASE).div(100));
      }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getTeam","outputs":[{"name":"teamName","type":"string"},{"name":"currPrice","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerId","type":"uint256"}],"name":"teamOwnerOfPlayer","outputs":[{"name":"teamOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_playerId","type":"uint256"}],"name":"purchasePlayer","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalNumTeams","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalPlayerSupply","outputs":[{"name":"totalNumPlayers","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newName","type":"string"}],"name":"changePlayerName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newTeamId","type":"uint256"}],"name":"changePlayerTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"numTeamsOwned","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerID","type":"uint256"}],"name":"priceOfPlayer","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","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":"_name","type":"string"},{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"}],"name":"createPromoTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getTeamsOfOwner","outputs":[{"name":"ownedTeams","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOfPlayers","outputs":[{"name":"numPlayersOwned","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newName","type":"string"}],"name":"changeTeamName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_price","type":"uint256"}],"name":"createTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getPlayersOfOwner","outputs":[{"name":"ownedPlayers","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_teamID","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"createPlayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerId","type":"uint256"}],"name":"ownerOfPlayer","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_teamId","type":"uint256"}],"name":"priceOfTeam","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPlayer","outputs":[{"name":"playerName","type":"string"},{"name":"currPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"owningTeamID","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_teamId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"playerIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"owner","type":"address"}],"name":"BallerCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"teamID","type":"uint256"},{"indexed":false,"name":"owner","type":"address"}],"name":"BallerPlayerCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d04806100536000396000f300606060405260043610610169576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680628e0f1b1461016e5780630488781a14610244578063075881d6146102a75780630b7e9c44146102bf57806318160ddd146102f85780632d144e6b146103215780635d72b30d1461034a5780636352211e146103b05780636fff06521461041357806370a082311461043f578063736fe5651461048c5780637ae488c3146104ce57806383197ef0146105055780638da5cb5b1461051a5780638faad4c41461056f57806392f461ed146105f4578063956fd9df14610682578063a7fb95f6146106cf578063ad8ead6914610735578063adc73d461461079b578063b96a39bd14610829578063bfcc8b6d14610898578063cc6eced7146108fb578063e55ae4e814610932578063efef39a114610a0f578063f2d05f2b14610a27578063f2fde38b14610a8a578063f5074f4114610ac3575b600080fd5b341561017957600080fd5b61018f6004808035906020019091905050610afc565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b838110156102075780820151818401526020810190506101ec565b50505050905090810190601f1680156102345780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561024f57600080fd5b6102656004808035906020019091905050610bed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102bd6004808035906020019091905050610c24565b005b34156102ca57600080fd5b6102f6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611056565b005b341561030357600080fd5b61030b6110d5565b6040518082815260200191505060405180910390f35b341561032c57600080fd5b6103346110e2565b6040518082815260200191505060405180910390f35b341561035557600080fd5b6103ae600480803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506110ef565b005b34156103bb57600080fd5b6103d160048080359060200190919050506111a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561041e57600080fd5b61043d600480803590602001909190803590602001909190505061121c565b005b341561044a57600080fd5b610476600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112c0565b6040518082815260200191505060405180910390f35b341561049757600080fd5b6104cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611309565b005b34156104d957600080fd5b6104ef6004808035906020019091905050611372565b6040518082815260200191505060405180910390f35b341561051057600080fd5b61051861138f565b005b341561052557600080fd5b61052d611424565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057a57600080fd5b6105f2600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611449565b005b34156105ff57600080fd5b61062b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114b4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561066e578082015181840152602081019050610653565b505050509050019250505060405180910390f35b341561068d57600080fd5b6106b9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611592565b6040518082815260200191505060405180910390f35b34156106da57600080fd5b610733600480803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506115db565b005b341561074057600080fd5b610799600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190505061168c565b005b34156107a657600080fd5b6107d2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108155780820151818401526020810190506107fa565b505050509050019250505060405180910390f35b341561083457600080fd5b610896600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919080359060200190919050506117d4565b005b34156108a357600080fd5b6108b96004808035906020019091905050611840565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561090657600080fd5b61091c60048080359060200190919050506118b9565b6040518082815260200191505060405180910390f35b341561093d57600080fd5b61095360048080359060200190919050506118d6565b60405180806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156109d15780820151818401526020810190506109b6565b50505050905090810190601f1680156109fe5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610a2560048080359060200190919050506119d2565b005b3415610a3257600080fd5b610a486004808035906020019091905050611d48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a9557600080fd5b610ac1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d7b565b005b3415610ace57600080fd5b610afa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ed0565b005b610b04612a31565b6000806000600785815481101515610b1857fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbd5780601f10610b9257610100808354040283529160200191610bbd565b820191906000526020600020905b815481529060010190602001808311610ba057829003601f168201915b5050505050935060026000868152602001908152602001600020549250610be3856111a3565b9150509193909250565b600080600883815481101515610bff57fe5b9060005260206000209060020201600101549050610c1c816111a3565b915050919050565b600080600080600080600080600080610c3b612a31565b610c448c611840565b9a50339950610c528c610bed565b9850600560008d81526020019081526020016000205497508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614151515610ca557600080fd5b610cae8a611f44565b1515610cb957600080fd5b873410151515610cc857600080fd5b60009650610cd68888611f7d565b9550610ceb863461212090919063ffffffff16565b9450610d0160028661213990919063ffffffff16565b9350610d16883461212090919063ffffffff16565b9250610d2188612154565b915081600560008e815260200190815260200160002081905550610d468b8b8e612241565b3073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610dbc578a73ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f193505050501515610dbb57600080fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515610e32578873ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501515610e3157600080fd5b5b8973ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515610e7257600080fd5b60088c815481101515610e8157fe5b90600052602060002090600202016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f265780601f10610efb57610100808354040283529160200191610f26565b820191906000526020600020905b815481529060010190602001808311610f0957829003601f168201915b505050505090507e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8c89848e8e86604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611009578082015181840152602081019050610fee565b50505050905090810190601f1680156110365780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b157600080fd5b6110d2813073ffffffffffffffffffffffffffffffffffffffff163161240d565b50565b6000600780549050905090565b6000600880549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114a57600080fd5b6008805490508210801561115f575060008210155b151561116a57600080fd5b8060088381548110151561117a57fe5b9060005260206000209060020201600001908051906020019061119e929190612a45565b505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561121757600080fd5b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561127757600080fd5b6008805490508110801561128c575060008110155b151561129757600080fd5b806008838154811015156112a757fe5b9060005260206000209060020201600101819055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561136457600080fd5b61136e828261240d565b5050565b600060056000838152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114a457600080fd5b6114af838383612513565b505050565b6114bc612ac5565b60008060008060006114cd876112c0565b9450846040518059106114dd5750595b908082528060200260200182016040525095506114f86110d5565b93506000925060008514151561158857600091505b838210156115875761151e826111a3565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561157a5781868481518110151561156357fe5b906020019060200201818152505082806001019350505b818060010192505061150d565b5b5050505050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561163657600080fd5b6007805490508210801561164b575060008210155b151561165657600080fd5b8060078381548110151561166657fe5b90600052602060002090016000019080519060200190611687929190612a45565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e757600080fd5b6116f2823083612513565b5050565b6116fe612ac5565b600080600080600061170f87611592565b94508460405180591061171f5750595b9080825280602002602001820160405250955061173a6110e2565b9350600092506000851415156117ca57600091505b838210156117c95761176082611840565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117bc578186848151811015156117a557fe5b906020019060200201818152505082806001019350505b818060010192505061174f565b5b5050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182f57600080fd5b61183b83833084612691565b505050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118b457600080fd5b919050565b600060026000838152602001908152602001600020549050919050565b6118de612a31565b6000806000806008868154811015156118f357fe5b90600052602060002090600202019050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199b5780601f106119705761010080835404028352916020019161199b565b820191906000526020600020905b81548152906001019060200180831161197e57829003601f168201915b50505050509450600560008781526020019081526020016000205493506119c186611840565b925080600101549150509193509193565b6000806000806000806119e3612a31565b6119ec886111a3565b9650339550600260008981526020019081526020016000205494508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614151515611a4257600080fd5b611a4b86611f44565b1515611a5657600080fd5b843410151515611a6557600080fd5b611a70856001611f7d565b9350611a85853461212090919063ffffffff16565b9250611a9085612154565b915081600260008a815260200190815260200160002081905550611ab587878a61282a565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515611b2b578673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501515611b2a57600080fd5b5b8573ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515611b6b57600080fd5b600788815481101515611b7a57fe5b90600052602060002090016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c1c5780601f10611bf157610100808354040283529160200191611c1c565b820191906000526020600020905b815481529060010190602001808311611bff57829003601f168201915b505050505090507e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8886848a8a86604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611cff578082015181840152602081019050611ce4565b50505050905090810190601f168015611d2c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dd657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e1257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f2b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600060019150831515611f9257600291505b606490506706f05b59d3b20000851015611ffb57611fcc611fbd8360056129f690919063ffffffff16565b8261212090919063ffffffff16565b9050611ff46064611fe683886129f690919063ffffffff16565b61213990919063ffffffff16565b9250612118565b671bc16d674ec80000851015612060576120316120228360046129f690919063ffffffff16565b8261212090919063ffffffff16565b9050612059606461204b83886129f690919063ffffffff16565b61213990919063ffffffff16565b9250612117565b674563918244f400008510156120c5576120966120878360036129f690919063ffffffff16565b8261212090919063ffffffff16565b90506120be60646120b083886129f690919063ffffffff16565b61213990919063ffffffff16565b9250612116565b6120eb6120dc8360026129f690919063ffffffff16565b8261212090919063ffffffff16565b9050612113606461210583886129f690919063ffffffff16565b61213990919063ffffffff16565b92505b5b5b505092915050565b600082821115151561212e57fe5b818303905092915050565b600080828481151561214757fe5b0490508091505092915050565b60006706f05b59d3b200008210156121945761218d606461217f60c8856129f690919063ffffffff16565b61213990919063ffffffff16565b905061223c565b671bc16d674ec800008210156121d2576121cb60646121bd6087856129f690919063ffffffff16565b61213990919063ffffffff16565b905061223b565b674563918244f400008210156122105761220960646121fb607d856129f690919063ffffffff16565b61213990919063ffffffff16565b905061223a565b61223760646122296073856129f690919063ffffffff16565b61213990919063ffffffff16565b90505b5b5b919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561236957600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b803073ffffffffffffffffffffffffffffffffffffffff16311015151561243357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ce576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156124c957600080fd5b61250f565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561250e57600080fd5b5b5050565b61251b612ad9565b60006020604051908101604052808681525091506001600780548060010182816125459190612af3565b916000526020600020900160008590919091506000820151816000019080519060200190612574929190612b1f565b5050500390508063ffffffff168114151561258e57600080fd5b7f8482e3a5a624fa2db56c597cc43a1fd7c7b13b40073d14918619a6658932a8f381868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561262a57808201518184015260208101905061260f565b50505050905090810190601f1680156126575780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a182600260008381526020019081526020016000208190555061268a6000858361282a565b5050505050565b612699612b9f565b600060408051908101604052808781526020018681525091506001600880548060010182816126c89190612bbf565b9160005260206000209060020201600085909190915060008201518160000190805190602001906126fa929190612b1f565b506020820151816001015550500390508063ffffffff168114151561271e57600080fd5b7f2a65207877aa6973e1b08d7c4b1ddc15c146d1635126a1ab58fa9a88c05a650b8187878760405180858152602001806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b838110156127c15780820151818401526020810190506127a6565b50505050905090810190601f1680156127ee5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a182600560008381526020019081526020016000208190555061282260008583612241565b505050505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561295257600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000806000841415612a0b5760009150612a2a565b8284029050828482811515612a1c57fe5b04141515612a2657fe5b8091505b5092915050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a8657805160ff1916838001178555612ab4565b82800160010185558215612ab4579182015b82811115612ab3578251825591602001919060010190612a98565b5b509050612ac19190612bf1565b5090565b602060405190810160405280600081525090565b602060405190810160405280612aed612c16565b81525090565b815481835581811511612b1a57818360005260206000209182019101612b199190612c2a565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b6057805160ff1916838001178555612b8e565b82800160010185558215612b8e579182015b82811115612b8d578251825591602001919060010190612b72565b5b509050612b9b9190612bf1565b5090565b6040805190810160405280612bb2612c16565b8152602001600081525090565b815481835581811511612bec57600202816002028360005260206000209182019101612beb9190612c59565b5b505050565b612c1391905b80821115612c0f576000816000905550600101612bf7565b5090565b90565b602060405190810160405280600081525090565b612c5691905b80821115612c525760008082016000612c499190612c90565b50600101612c30565b5090565b90565b612c8d91905b80821115612c895760008082016000612c789190612c90565b600182016000905550600201612c5f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612cb65750612cd5565b601f016020900490600052602060002090810190612cd49190612bf1565b5b505600a165627a7a72305820b21963695a2be441ccbffef608f3060f8d9f81af063ca0d63a9dd9b4371407c70029

Deployed Bytecode

0x606060405260043610610169576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680628e0f1b1461016e5780630488781a14610244578063075881d6146102a75780630b7e9c44146102bf57806318160ddd146102f85780632d144e6b146103215780635d72b30d1461034a5780636352211e146103b05780636fff06521461041357806370a082311461043f578063736fe5651461048c5780637ae488c3146104ce57806383197ef0146105055780638da5cb5b1461051a5780638faad4c41461056f57806392f461ed146105f4578063956fd9df14610682578063a7fb95f6146106cf578063ad8ead6914610735578063adc73d461461079b578063b96a39bd14610829578063bfcc8b6d14610898578063cc6eced7146108fb578063e55ae4e814610932578063efef39a114610a0f578063f2d05f2b14610a27578063f2fde38b14610a8a578063f5074f4114610ac3575b600080fd5b341561017957600080fd5b61018f6004808035906020019091905050610afc565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b838110156102075780820151818401526020810190506101ec565b50505050905090810190601f1680156102345780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561024f57600080fd5b6102656004808035906020019091905050610bed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102bd6004808035906020019091905050610c24565b005b34156102ca57600080fd5b6102f6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611056565b005b341561030357600080fd5b61030b6110d5565b6040518082815260200191505060405180910390f35b341561032c57600080fd5b6103346110e2565b6040518082815260200191505060405180910390f35b341561035557600080fd5b6103ae600480803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506110ef565b005b34156103bb57600080fd5b6103d160048080359060200190919050506111a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561041e57600080fd5b61043d600480803590602001909190803590602001909190505061121c565b005b341561044a57600080fd5b610476600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112c0565b6040518082815260200191505060405180910390f35b341561049757600080fd5b6104cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611309565b005b34156104d957600080fd5b6104ef6004808035906020019091905050611372565b6040518082815260200191505060405180910390f35b341561051057600080fd5b61051861138f565b005b341561052557600080fd5b61052d611424565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057a57600080fd5b6105f2600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611449565b005b34156105ff57600080fd5b61062b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114b4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561066e578082015181840152602081019050610653565b505050509050019250505060405180910390f35b341561068d57600080fd5b6106b9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611592565b6040518082815260200191505060405180910390f35b34156106da57600080fd5b610733600480803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506115db565b005b341561074057600080fd5b610799600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190505061168c565b005b34156107a657600080fd5b6107d2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108155780820151818401526020810190506107fa565b505050509050019250505060405180910390f35b341561083457600080fd5b610896600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919080359060200190919050506117d4565b005b34156108a357600080fd5b6108b96004808035906020019091905050611840565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561090657600080fd5b61091c60048080359060200190919050506118b9565b6040518082815260200191505060405180910390f35b341561093d57600080fd5b61095360048080359060200190919050506118d6565b60405180806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156109d15780820151818401526020810190506109b6565b50505050905090810190601f1680156109fe5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610a2560048080359060200190919050506119d2565b005b3415610a3257600080fd5b610a486004808035906020019091905050611d48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a9557600080fd5b610ac1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d7b565b005b3415610ace57600080fd5b610afa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ed0565b005b610b04612a31565b6000806000600785815481101515610b1857fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbd5780601f10610b9257610100808354040283529160200191610bbd565b820191906000526020600020905b815481529060010190602001808311610ba057829003601f168201915b5050505050935060026000868152602001908152602001600020549250610be3856111a3565b9150509193909250565b600080600883815481101515610bff57fe5b9060005260206000209060020201600101549050610c1c816111a3565b915050919050565b600080600080600080600080600080610c3b612a31565b610c448c611840565b9a50339950610c528c610bed565b9850600560008d81526020019081526020016000205497508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614151515610ca557600080fd5b610cae8a611f44565b1515610cb957600080fd5b873410151515610cc857600080fd5b60009650610cd68888611f7d565b9550610ceb863461212090919063ffffffff16565b9450610d0160028661213990919063ffffffff16565b9350610d16883461212090919063ffffffff16565b9250610d2188612154565b915081600560008e815260200190815260200160002081905550610d468b8b8e612241565b3073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610dbc578a73ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f193505050501515610dbb57600080fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515610e32578873ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501515610e3157600080fd5b5b8973ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515610e7257600080fd5b60088c815481101515610e8157fe5b90600052602060002090600202016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f265780601f10610efb57610100808354040283529160200191610f26565b820191906000526020600020905b815481529060010190602001808311610f0957829003601f168201915b505050505090507e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8c89848e8e86604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611009578082015181840152602081019050610fee565b50505050905090810190601f1680156110365780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b157600080fd5b6110d2813073ffffffffffffffffffffffffffffffffffffffff163161240d565b50565b6000600780549050905090565b6000600880549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114a57600080fd5b6008805490508210801561115f575060008210155b151561116a57600080fd5b8060088381548110151561117a57fe5b9060005260206000209060020201600001908051906020019061119e929190612a45565b505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561121757600080fd5b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561127757600080fd5b6008805490508110801561128c575060008110155b151561129757600080fd5b806008838154811015156112a757fe5b9060005260206000209060020201600101819055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561136457600080fd5b61136e828261240d565b5050565b600060056000838152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114a457600080fd5b6114af838383612513565b505050565b6114bc612ac5565b60008060008060006114cd876112c0565b9450846040518059106114dd5750595b908082528060200260200182016040525095506114f86110d5565b93506000925060008514151561158857600091505b838210156115875761151e826111a3565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561157a5781868481518110151561156357fe5b906020019060200201818152505082806001019350505b818060010192505061150d565b5b5050505050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561163657600080fd5b6007805490508210801561164b575060008210155b151561165657600080fd5b8060078381548110151561166657fe5b90600052602060002090016000019080519060200190611687929190612a45565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e757600080fd5b6116f2823083612513565b5050565b6116fe612ac5565b600080600080600061170f87611592565b94508460405180591061171f5750595b9080825280602002602001820160405250955061173a6110e2565b9350600092506000851415156117ca57600091505b838210156117c95761176082611840565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117bc578186848151811015156117a557fe5b906020019060200201818152505082806001019350505b818060010192505061174f565b5b5050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182f57600080fd5b61183b83833084612691565b505050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118b457600080fd5b919050565b600060026000838152602001908152602001600020549050919050565b6118de612a31565b6000806000806008868154811015156118f357fe5b90600052602060002090600202019050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199b5780601f106119705761010080835404028352916020019161199b565b820191906000526020600020905b81548152906001019060200180831161197e57829003601f168201915b50505050509450600560008781526020019081526020016000205493506119c186611840565b925080600101549150509193509193565b6000806000806000806119e3612a31565b6119ec886111a3565b9650339550600260008981526020019081526020016000205494508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614151515611a4257600080fd5b611a4b86611f44565b1515611a5657600080fd5b843410151515611a6557600080fd5b611a70856001611f7d565b9350611a85853461212090919063ffffffff16565b9250611a9085612154565b915081600260008a815260200190815260200160002081905550611ab587878a61282a565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515611b2b578673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501515611b2a57600080fd5b5b8573ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515611b6b57600080fd5b600788815481101515611b7a57fe5b90600052602060002090016000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c1c5780601f10611bf157610100808354040283529160200191611c1c565b820191906000526020600020905b815481529060010190602001808311611bff57829003601f168201915b505050505090507e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8886848a8a86604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611cff578082015181840152602081019050611ce4565b50505050905090810190601f168015611d2c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dd657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e1257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f2b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600060019150831515611f9257600291505b606490506706f05b59d3b20000851015611ffb57611fcc611fbd8360056129f690919063ffffffff16565b8261212090919063ffffffff16565b9050611ff46064611fe683886129f690919063ffffffff16565b61213990919063ffffffff16565b9250612118565b671bc16d674ec80000851015612060576120316120228360046129f690919063ffffffff16565b8261212090919063ffffffff16565b9050612059606461204b83886129f690919063ffffffff16565b61213990919063ffffffff16565b9250612117565b674563918244f400008510156120c5576120966120878360036129f690919063ffffffff16565b8261212090919063ffffffff16565b90506120be60646120b083886129f690919063ffffffff16565b61213990919063ffffffff16565b9250612116565b6120eb6120dc8360026129f690919063ffffffff16565b8261212090919063ffffffff16565b9050612113606461210583886129f690919063ffffffff16565b61213990919063ffffffff16565b92505b5b5b505092915050565b600082821115151561212e57fe5b818303905092915050565b600080828481151561214757fe5b0490508091505092915050565b60006706f05b59d3b200008210156121945761218d606461217f60c8856129f690919063ffffffff16565b61213990919063ffffffff16565b905061223c565b671bc16d674ec800008210156121d2576121cb60646121bd6087856129f690919063ffffffff16565b61213990919063ffffffff16565b905061223b565b674563918244f400008210156122105761220960646121fb607d856129f690919063ffffffff16565b61213990919063ffffffff16565b905061223a565b61223760646122296073856129f690919063ffffffff16565b61213990919063ffffffff16565b90505b5b5b919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561236957600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b803073ffffffffffffffffffffffffffffffffffffffff16311015151561243357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ce576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156124c957600080fd5b61250f565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561250e57600080fd5b5b5050565b61251b612ad9565b60006020604051908101604052808681525091506001600780548060010182816125459190612af3565b916000526020600020900160008590919091506000820151816000019080519060200190612574929190612b1f565b5050500390508063ffffffff168114151561258e57600080fd5b7f8482e3a5a624fa2db56c597cc43a1fd7c7b13b40073d14918619a6658932a8f381868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561262a57808201518184015260208101905061260f565b50505050905090810190601f1680156126575780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a182600260008381526020019081526020016000208190555061268a6000858361282a565b5050505050565b612699612b9f565b600060408051908101604052808781526020018681525091506001600880548060010182816126c89190612bbf565b9160005260206000209060020201600085909190915060008201518160000190805190602001906126fa929190612b1f565b506020820151816001015550500390508063ffffffff168114151561271e57600080fd5b7f2a65207877aa6973e1b08d7c4b1ddc15c146d1635126a1ab58fa9a88c05a650b8187878760405180858152602001806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b838110156127c15780820151818401526020810190506127a6565b50505050905090810190601f1680156127ee5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a182600560008381526020019081526020016000208190555061282260008583612241565b505050505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561295257600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000806000841415612a0b5760009150612a2a565b8284029050828482811515612a1c57fe5b04141515612a2657fe5b8091505b5092915050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a8657805160ff1916838001178555612ab4565b82800160010185558215612ab4579182015b82811115612ab3578251825591602001919060010190612a98565b5b509050612ac19190612bf1565b5090565b602060405190810160405280600081525090565b602060405190810160405280612aed612c16565b81525090565b815481835581811511612b1a57818360005260206000209182019101612b199190612c2a565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b6057805160ff1916838001178555612b8e565b82800160010185558215612b8e579182015b82811115612b8d578251825591602001919060010190612b72565b5b509050612b9b9190612bf1565b5090565b6040805190810160405280612bb2612c16565b8152602001600081525090565b815481835581811511612bec57600202816002028360005260206000209182019101612beb9190612c59565b5b505050565b612c1391905b80821115612c0f576000816000905550600101612bf7565b5090565b90565b602060405190810160405280600081525090565b612c5691905b80821115612c525760008082016000612c499190612c90565b50600101612c30565b5090565b90565b612c8d91905b80821115612c895760008082016000612c789190612c90565b600182016000905550600201612c5f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612cb65750612cd5565b601f016020900490600052602060002090810190612cd49190612bf1565b5b505600a165627a7a72305820b21963695a2be441ccbffef608f3060f8d9f81af063ca0d63a9dd9b4371407c70029

Swarm Source

bzzr://b21963695a2be441ccbffef608f3060f8d9f81af063ca0d63a9dd9b4371407c7

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

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.