ETH Price: $2,020.73 (+4.53%)
 

Overview

ETH Balance

0.04 ETH

Eth Value

$80.83 (@ $2,020.73/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase176301212023-07-05 20:41:23623 days ago1688589683IN
0xAA8E5e4F...77EE97938
0.01 ETH0.003621451.70627496
Purchase176296912023-07-05 19:14:47623 days ago1688584487IN
0xAA8E5e4F...77EE97938
0.01 ETH0.0036015451.42270742
Purchase176296612023-07-05 19:08:35623 days ago1688584115IN
0xAA8E5e4F...77EE97938
0.01 ETH0.0036158351.62672002
Purchase176295762023-07-05 18:51:23623 days ago1688583083IN
0xAA8E5e4F...77EE97938
0.01 ETH0.005363251.45158079
Purchase55002032018-04-25 0:01:542521 days ago1524614514IN
0xAA8E5e4F...77EE97938
0.08 ETH0.0002535511
Purchase55002022018-04-25 0:01:452521 days ago1524614505IN
0xAA8E5e4F...77EE97938
0.04 ETH0.000115255
Purchase53015252018-03-22 14:04:492554 days ago1521727489IN
0xAA8E5e4F...77EE97938
0.02 ETH0.000115255
Purchase53015072018-03-22 14:01:182554 days ago1521727278IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000115255
Payout52552812018-03-14 18:50:212562 days ago1521053421IN
0xAA8E5e4F...77EE97938
0 ETH0.000278665
Purchase52515862018-03-14 3:35:282563 days ago1520998528IN
0xAA8E5e4F...77EE97938
0.32 ETH0.000283425
Purchase52515732018-03-14 3:32:592563 days ago1520998379IN
0xAA8E5e4F...77EE97938
0.32 ETH0.000358425
Purchase52515682018-03-14 3:32:182563 days ago1520998338IN
0xAA8E5e4F...77EE97938
0.32 ETH0.000358425
Purchase52515592018-03-14 3:30:212563 days ago1520998221IN
0xAA8E5e4F...77EE97938
0.16 ETH0.000393025.5
Purchase52515582018-03-14 3:30:042563 days ago1520998204IN
0xAA8E5e4F...77EE97938
0.16 ETH0.000357295
Purchase52515552018-03-14 3:29:002563 days ago1520998140IN
0xAA8E5e4F...77EE97938
0.16 ETH0.000432295
Purchase52515402018-03-14 3:26:452563 days ago1520998005IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000282295
Purchase52515392018-03-14 3:26:412563 days ago1520998001IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52515282018-03-14 3:24:032563 days ago1520997843IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52515222018-03-14 3:22:102563 days ago1520997730IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52515192018-03-14 3:21:492563 days ago1520997709IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52515182018-03-14 3:21:412563 days ago1520997701IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000432295
Purchase52160702018-03-08 2:45:112569 days ago1520477111IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52160662018-03-08 2:44:272569 days ago1520477067IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52160572018-03-08 2:42:332569 days ago1520476953IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
Purchase52160292018-03-08 2:35:582569 days ago1520476558IN
0xAA8E5e4F...77EE97938
0.08 ETH0.000357295
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer52552812018-03-14 18:50:212562 days ago1521053421
0xAA8E5e4F...77EE97938
9.00496072 ETH
Transfer52552812018-03-14 18:50:212562 days ago1521053421
0xAA8E5e4F...77EE97938
0.23721528 ETH
Transfer52515862018-03-14 3:35:282563 days ago1520998528
0xAA8E5e4F...77EE97938
0.24 ETH
Transfer52515732018-03-14 3:32:592563 days ago1520998379
0xAA8E5e4F...77EE97938
0.24 ETH
Transfer52515682018-03-14 3:32:182563 days ago1520998338
0xAA8E5e4F...77EE97938
0.24 ETH
Transfer52515592018-03-14 3:30:212563 days ago1520998221
0xAA8E5e4F...77EE97938
0.12 ETH
Transfer52515582018-03-14 3:30:042563 days ago1520998204
0xAA8E5e4F...77EE97938
0.12 ETH
Transfer52515552018-03-14 3:29:002563 days ago1520998140
0xAA8E5e4F...77EE97938
0.12 ETH
Transfer52515402018-03-14 3:26:452563 days ago1520998005
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52515392018-03-14 3:26:412563 days ago1520998001
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52515282018-03-14 3:24:032563 days ago1520997843
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52515222018-03-14 3:22:102563 days ago1520997730
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52515192018-03-14 3:21:492563 days ago1520997709
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52515182018-03-14 3:21:412563 days ago1520997701
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160702018-03-08 2:45:112569 days ago1520477111
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160662018-03-08 2:44:272569 days ago1520477067
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160572018-03-08 2:42:332569 days ago1520476953
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160292018-03-08 2:35:582569 days ago1520476558
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160242018-03-08 2:34:552569 days ago1520476495
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160232018-03-08 2:33:552569 days ago1520476435
0xAA8E5e4F...77EE97938
0.06 ETH
Transfer52160222018-03-08 2:33:422569 days ago1520476422
0xAA8E5e4F...77EE97938
0.12 ETH
Transfer52160122018-03-08 2:30:232569 days ago1520476223
0xAA8E5e4F...77EE97938
0.03 ETH
Transfer52160122018-03-08 2:30:232569 days ago1520476223
0xAA8E5e4F...77EE97938
0.03 ETH
Transfer52160002018-03-08 2:27:192569 days ago1520476039
0xAA8E5e4F...77EE97938
0.03 ETH
Transfer52159952018-03-08 2:25:532569 days ago1520475953
0xAA8E5e4F...77EE97938
0.03 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherAthlete

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-24
*/

pragma solidity ^0.4.18;

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 Substracts 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 ERC721 {
  // Required methods
  function approve(address _to, uint256 _tokenId) public;
  function balanceOf(address _owner) public view returns (uint256 balance);
  function implementsERC721() public pure returns (bool);
  function ownerOf(uint256 _tokenId) public view returns (address addr);
  function takeOwnership(uint256 _tokenId) public;
  function totalSupply() public view returns (uint256 total);
  function transferFrom(address _from, address _to, uint256 _tokenId) public;
  function transfer(address _to, uint256 _tokenId) public;

  event Transfer(address indexed from, address indexed to, uint256 tokenId);
  event Approval(address indexed owner, address indexed approved, uint256 tokenId);

  // Optional
  // function name() public view returns (string name);
  // function symbol() public view returns (string symbol);
  // function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 tokenId);
  // function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl);
}

contract CryptoNFT is ERC721 {

  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new person comes into existence.
  event Birth(uint256 tokenId, string name, address owner);

  /// @dev The TokenSold event is fired whenever a token is sold.
  event TokenSold(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address winner, string name);

  /// @dev Transfer event as defined in current draft of ERC721. 
  ///  ownership is assigned, including births.
  event Transfer(address from, address to, uint256 tokenId);

  /*** CONSTANTS ***/
  uint256 internal startingPrice = 0.01 ether;

  // uint256 internal toPlayerMultiplier = uint256(0.94);
  /*** STORAGE ***/

  /// @dev A mapping from person IDs to the address that owns them. All persons have
  ///  some valid owner address.
  mapping (uint256 => address) public personIndexToOwner;

  // @dev A mapping from owner address to count of tokens that address owns.
  //  Used internally inside balanceOf() to resolve ownership count.
  mapping (address => uint256) private ownershipTokenCount;

  /// @dev A mapping from PersonIDs to an address that has been approved to call
  ///  transferFrom(). Each Person can only have one approved address for transfer
  ///  at any time. A zero value means no approval is outstanding.
  mapping (uint256 => address) public personIndexToApproved;

  // @dev A mapping from PersonIDs to the price of the token.
  mapping (uint256 => uint256) internal personIndexToPrice;

  // The addresses of the accounts (or contracts) that can execute actions within each roles.
  address public ceoAddress;
  address public cooAddress;

  /*** DATATYPES ***/
  struct Person {
    string name;
  }

  Person[] private persons;

  /*** ACCESS MODIFIERS ***/
  /// @dev Access modifier for CEO-only functionality
  modifier onlyCEO() {
    require(msg.sender == ceoAddress);
    _;
  }

  /// @dev Access modifier for COO-only functionality
  modifier onlyCOO() {
    require(msg.sender == cooAddress);
    _;
  }

  /// Access modifier for contract owner only functionality
  modifier onlyCLevel() {
    require(
      msg.sender == ceoAddress ||
      msg.sender == cooAddress
    );
    _;
  }

  /*** CONSTRUCTOR ***/
  function CryptoNFT() public {
    ceoAddress = msg.sender;
    cooAddress = msg.sender;
  }

  /*** PUBLIC FUNCTIONS ***/
  /// @notice Grant another address the right to transfer token via takeOwnership() and transferFrom().
  /// @param _to The address to be granted transfer approval. Pass address(0) to
  ///  clear all approvals.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function approve(
    address _to,
    uint256 _tokenId
  ) public {
    // Caller must own token.
    require(_owns(msg.sender, _tokenId));

    personIndexToApproved[_tokenId] = _to;

    Approval(msg.sender, _to, _tokenId);
  }

  /// For querying balance of a particular account
  /// @param _owner The address for balance query
  /// @dev Required for ERC-721 compliance.
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return ownershipTokenCount[_owner];
  }

  

  /// @dev Creates a new Person with the given name.
  function createContractPerson(string _name) public onlyCOO {
    _createPerson(_name, address(this), startingPrice);
  }

  /// @notice Returns all the relevant information about a specific person.
  /// @param _tokenId The tokenId of the person of interest.
  function getPerson(uint256 _tokenId) public view returns (
    string personName,
    uint256 sellingPrice,
    address owner
  ) {
    Person storage person = persons[_tokenId];
    personName = person.name;
    sellingPrice = personIndexToPrice[_tokenId];
    owner = personIndexToOwner[_tokenId];
  }

  function implementsERC721() public pure returns (bool) {
    return true;
  }


  /// For querying owner of token
  /// @param _tokenId The tokenID for owner inquiry
  /// @dev Required for ERC-721 compliance.
  function ownerOf(uint256 _tokenId)
    public
    view
    returns (address owner)
  {
    owner = personIndexToOwner[_tokenId];
    require(owner != address(0));
  }

  function payout(address _to) public onlyCEO {
    _payout(_to, this.balance);
  }

  // Allows someone to send ether and obtain the token
  function purchase(uint256 _tokenId) public payable {
    address oldOwner = personIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    uint256 sellingPrice = personIndexToPrice[_tokenId];

    // 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);

    uint256 payment = calcPaymentToOldOwner(sellingPrice);
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);

    // Update prices
    personIndexToPrice[_tokenId] = calcNextSellingPrice(sellingPrice);

    _transfer(oldOwner, newOwner, _tokenId);

    // Pay previous tokenOwner if owner is not contract
    if (oldOwner != address(this)) {
      oldOwner.transfer(payment); //(1-0.06)
    }

    TokenSold(_tokenId, sellingPrice, personIndexToPrice[_tokenId], oldOwner, newOwner, persons[_tokenId].name);

    msg.sender.transfer(purchaseExcess);
  }

  function calcPaymentToOldOwner(uint256 sellingPrice) internal returns (uint256 payToOldOwner);
  function calcNextSellingPrice(uint256 currentSellingPrice) internal returns (uint256 newSellingPrice);

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return personIndexToPrice[_tokenId];
  }

  /// @dev Assigns a new address to act as the CEO. Only available to the current CEO.
  /// @param _newCEO The address of the new CEO
  function setCEO(address _newCEO) public onlyCEO {
    require(_newCEO != address(0));

    ceoAddress = _newCEO;
  }

  /// @dev Assigns a new address to act as the COO. Only available to the current COO.
  /// @param _newCOO The address of the new COO
  function setCOO(address _newCOO) public onlyCEO {
    require(_newCOO != address(0));

    cooAddress = _newCOO;
  }

  /// @notice Allow pre-approved user to take ownership of a token
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function takeOwnership(uint256 _tokenId) public {
    address newOwner = msg.sender;
    address oldOwner = personIndexToOwner[_tokenId];

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

    // Making sure transfer is approved
    require(_approved(newOwner, _tokenId));

    _transfer(oldOwner, newOwner, _tokenId);
  }

  /// @param _owner The owner whose celebrity tokens we are interested in.
  /// @dev This method MUST NEVER be called by smart contract code. First, it's fairly
  ///  expensive (it walks the entire Persons array looking for persons belonging to owner),
  ///  but it also returns a dynamic array, which is only supported for web3 calls, and
  ///  not contract-to-contract calls.
  function tokensOfOwner(address _owner) public view returns(uint256[] ownerTokens) {
    uint256 tokenCount = balanceOf(_owner);
    if (tokenCount == 0) {
        // Return an empty array
      return new uint256[](0);
    } else {
      uint256[] memory result = new uint256[](tokenCount);
      uint256 totalPersons = totalSupply();
      uint256 resultIndex = 0;

      uint256 personId;
      for (personId = 0; personId <= totalPersons; personId++) {
        if (personIndexToOwner[personId] == _owner) {
          result[resultIndex] = personId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return persons.length;
  }

  /// Owner initates the transfer of the token to another account
  /// @param _to The address for the token to be transferred to.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function transfer(
    address _to,
    uint256 _tokenId
  ) public {
    require(_owns(msg.sender, _tokenId));
    require(_addressNotNull(_to));

    _transfer(msg.sender, _to, _tokenId);
  }

  /// Third-party initiates transfer of token from address _from to address _to
  /// @param _from The address for the token to be transferred from.
  /// @param _to The address for the token to be transferred to.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  ) public {
    require(_owns(_from, _tokenId));
    require(_approved(_to, _tokenId));
    require(_addressNotNull(_to));

    _transfer(_from, _to, _tokenId);
  }

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

  /// For checking approval of transfer for address _to
  function _approved(address _to, uint256 _tokenId) private view returns (bool) {
    return personIndexToApproved[_tokenId] == _to;
  }

  /// For creating Person
  function _createPerson(string _name, address _owner, uint256 _price) internal {
    Person memory _person = Person({
      name: _name
    });
    uint256 newPersonId = persons.push(_person) - 1;

    // It's probably never going to happen, 4 billion tokens are A LOT, but
    // let's just be 100% sure we never let this happen.
    require(newPersonId == uint256(uint32(newPersonId)));

    Birth(newPersonId, _name, _owner);

    personIndexToPrice[newPersonId] = _price;

    // This will assign ownership, and also emit the Transfer event as
    // per ERC721 draft
    _transfer(address(0), _owner, newPersonId);
  }

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) internal view returns (bool) {
    return claimant == personIndexToOwner[_tokenId];
  }

  /// For paying out balance on contract
  function _payout(address _to, uint256 amount) internal {
    require(amount<=this.balance);
    if (_to == address(0)) {
      ceoAddress.transfer(amount);
    } else {
      _to.transfer(amount);
    }
  }

  /// @dev Assigns ownership of a specific Person to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of persons is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    personIndexToOwner[_tokenId] = _to;

    // When creating new persons _from is 0x0, but we can't account that address.
    if (_from != address(0)) {
      ownershipTokenCount[_from]--;
      // clear any previously approved ownership exchange
      delete personIndexToApproved[_tokenId];
    }

    // Emit the transfer event.
    Transfer(_from, _to, _tokenId);
  }
}

contract EtherAthlete is CryptoNFT {
    /// @notice Name and symbol of the non fungible token, as defined in ERC721.
    string public constant NAME = "EtherAthlete"; // solhint-disable-line
    string public constant SYMBOL = "EAT"; // solhint-disable-line

    uint256 private constant PROMO_CREATION_LIMIT = 5000;
    uint256 public promoCreatedCount;

    bool public allowPriceUpdate;

    /*** CONSTANTS ***/
    uint256 private firstStepLimit =  0.32 ether;
    uint256 private secondStepLimit = 2.8629151 ether;

    uint256 private defaultIncreasePercent = 200;
    uint256 private fsIncreasePercent = 155;
    uint256 private ssIncreasePercent = 130;

    uint256 private defaultPlayerPercent = 7500;
    uint256 private fsPlayerPercent = 8400;
    uint256 private ssPlayerPercent = 9077;

    // The addresses of the charity account.
    address public charityAddress;
    uint256 private charityPercent = 3;
    uint256 public charityBalance;


    /*** CONSTRUCTOR ***/
    function EtherAthlete() public {
        allowPriceUpdate = false;
        charityAddress = msg.sender;
        charityBalance = 0 ether;
    }
    
    /*** PUBLIC FUNCTIONS ***/

    /// @dev Required for ERC-721 compliance.
    function name() public pure returns (string) {
        return NAME;
    }
    /// @dev Required for ERC-721 compliance.
    function symbol() public pure returns (string) {
        return SYMBOL;
    }

    /// @dev Creates a new promo Person with the given name, with given _price and assignes it to an address.
    function createPromoPerson(address _owner, string _name, uint256 _price) public onlyCOO {
        require(promoCreatedCount < PROMO_CREATION_LIMIT);

        address personOwner = _owner;
        if (personOwner == address(0)) {
        personOwner = cooAddress;
        }

        if (_price <= 0) {
        _price = startingPrice;
        }

        promoCreatedCount++;
        _createPerson(_name, personOwner, _price);
    }

    function setAllowPriceUpdate(bool _bValue) public onlyCOO {
        allowPriceUpdate = _bValue;
    }

    /*** PRIVATE FUNCTIONS ***/
    /// Overrides Abstract internal method to calculate payment proportion for old owner
    /// out of selling price in current purchase
    function calcPaymentToOldOwner(uint256 sellingPrice) internal returns (uint256 payToOldOwner) {
        if (sellingPrice <= firstStepLimit) {
            // first stage
            payToOldOwner = uint256(SafeMath.div(SafeMath.mul(sellingPrice, defaultPlayerPercent),10000));
        } else if (sellingPrice <= secondStepLimit) {
            // second stage
            payToOldOwner = uint256(SafeMath.div(SafeMath.mul(sellingPrice, fsPlayerPercent),10000));
        } else {
            // third stage
            payToOldOwner = uint256(SafeMath.div(SafeMath.mul(sellingPrice, ssPlayerPercent),10000));
        }

        // Update the charity balance
        uint256 gainToHouse = SafeMath.sub(sellingPrice, payToOldOwner);
        charityBalance = SafeMath.add(charityBalance, SafeMath.div(SafeMath.mul(gainToHouse, charityPercent),100));
    }

    /// Overrides the abstract method to calculate the next selling price based on
    /// current selling prices of the asset.
    function calcNextSellingPrice(uint256 currentSellingPrice) internal returns (uint256 newSellingPrice) {
        if (currentSellingPrice < firstStepLimit) {
            // first stage
            newSellingPrice = SafeMath.div(SafeMath.mul(currentSellingPrice, defaultIncreasePercent), 100);
        } else if (currentSellingPrice < secondStepLimit) {
            // second stage
            newSellingPrice = SafeMath.div(SafeMath.mul(currentSellingPrice, fsIncreasePercent), 100);
        } else {
            // third stage
            newSellingPrice = SafeMath.div(SafeMath.mul(currentSellingPrice, ssIncreasePercent), 100);
        }
    }

    function setCharityAddress(address _charityAddress) public onlyCEO {
        charityAddress = _charityAddress;
    }

    function payout(address _to) public onlyCEO {
        uint256 amountToCharity = charityBalance;
        uint256 amount = SafeMath.sub(this.balance, charityBalance);
        charityBalance = 0;
        _payout(charityAddress, amountToCharity);
        _payout(_to, amount);
    }

    function updateTokenSellingPrice(uint256 _tokenId, uint256 sellingPrice) public {
        require(allowPriceUpdate);
        require(_owns(msg.sender, _tokenId));
        require(sellingPrice < personIndexToPrice[_tokenId]);
        require(sellingPrice >= startingPrice);
        personIndexToPrice[_tokenId] = sellingPrice;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"promoCreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_charityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPerson","outputs":[{"name":"personName","type":"string"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowPriceUpdate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bValue","type":"bool"}],"name":"setAllowPriceUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_name","type":"string"},{"name":"_price","type":"uint256"}],"name":"createPromoPerson","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"createContractPerson","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":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"personIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"charityBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"sellingPrice","type":"uint256"}],"name":"updateTokenSellingPrice","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":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"personIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"charityAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"owner","type":"address"}],"name":"Birth","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":"winner","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":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052662386f26fc10000600055670470de4df8200000600a556727bb1e1d759a1800600b5560c8600c55609b600d556082600e55611d4c600f556120d06010556123756011556003601355341561005857600080fd5b60058054600160a060020a033316600160a060020a03199182168117909255600680548216831790556009805460ff1916905560128054909116909117905560006014556115f1806100ab6000396000f3006060604052600436106101955763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305e45546811461019a57806306fdde03146101bf578063095ea7b3146102495780630a0f81681461026d5780630b7e9c441461029c5780630c9be46d146102bb5780631051db34146102da57806318160ddd1461030157806323b872dd14610314578063246982c41461033c578063248d14eb146103e157806327d7874c146103f45780632ba73c1514610413578063371c7dba1461043257806342287b661461044a5780634955f280146104ab5780636352211e146104fc57806370a08231146105125780638462151c146105315780639433a81e146105a357806395d89b41146105b957806399b8a3f0146105cc578063a136c448146105df578063a3f4df7e146105f8578063a9059cbb1461060b578063aa1d98af1461062d578063afcf2fc414610643578063b047fb5014610656578063b2e6ceeb14610669578063b9186d7d1461067f578063efef39a114610695578063f76f8d78146106a0575b600080fd5b34156101a557600080fd5b6101ad6106b3565b60405190815260200160405180910390f35b34156101ca57600080fd5b6101d26106b9565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561020e5780820151838201526020016101f6565b50505050905090810190601f16801561023b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025457600080fd5b61026b600160a060020a03600435166024356106fb565b005b341561027857600080fd5b61028061077a565b604051600160a060020a03909116815260200160405180910390f35b34156102a757600080fd5b61026b600160a060020a0360043516610789565b34156102c657600080fd5b61026b600160a060020a03600435166107ef565b34156102e557600080fd5b6102ed61082c565b604051901515815260200160405180910390f35b341561030c57600080fd5b6101ad610831565b341561031f57600080fd5b61026b600160a060020a0360043581169060243516604435610837565b341561034757600080fd5b610352600435610880565b60405160208101839052600160a060020a038216604082015260608082528190810185818151815260200191508051906020019080838360005b838110156103a457808201518382015260200161038c565b50505050905090810190601f1680156103d15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156103ec57600080fd5b6102ed610976565b34156103ff57600080fd5b61026b600160a060020a036004351661097f565b341561041e57600080fd5b61026b600160a060020a03600435166109d1565b341561043d57600080fd5b61026b6004351515610a23565b341561045557600080fd5b61026b60048035600160a060020a03169060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350610a5192505050565b34156104b657600080fd5b61026b60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610ac895505050505050565b341561050757600080fd5b610280600435610af3565b341561051d57600080fd5b6101ad600160a060020a0360043516610b1c565b341561053c57600080fd5b610550600160a060020a0360043516610b37565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561058f578082015183820152602001610577565b505050509050019250505060405180910390f35b34156105ae57600080fd5b610280600435610c18565b34156105c457600080fd5b6101d2610c33565b34156105d757600080fd5b6101ad610c74565b34156105ea57600080fd5b61026b600435602435610c7a565b341561060357600080fd5b6101d2610cdb565b341561061657600080fd5b61026b600160a060020a0360043516602435610d12565b341561063857600080fd5b610280600435610d4a565b341561064e57600080fd5b610280610d65565b341561066157600080fd5b610280610d74565b341561067457600080fd5b61026b600435610d83565b341561068a57600080fd5b6101ad600435610dd1565b61026b600435610de3565b34156106ab57600080fd5b6101d2611005565b60085481565b6106c1611477565b60408051908101604052600c81527f45746865724174686c6574650000000000000000000000000000000000000000602082015290505b90565b610705338261103c565b151561071057600080fd5b600081815260036020526040908190208054600160a060020a031916600160a060020a038581169182179092559133909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600554600160a060020a031681565b600554600090819033600160a060020a039081169116146107a957600080fd5b60145491506107c2600160a060020a033016318361105c565b60006014556012549091506107e090600160a060020a03168361106e565b6107ea838261106e565b505050565b60055433600160a060020a0390811691161461080a57600080fd5b60128054600160a060020a031916600160a060020a0392909216919091179055565b600190565b60075490565b610841838261103c565b151561084c57600080fd5b61085682826110fe565b151561086157600080fd5b61086a8261111e565b151561087557600080fd5b6107ea83838361112c565b610888611477565b600080600060078581548110151561089c57fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b50505060009788525050600460209081526040808820546001909252909620549096600160a060020a03909116945092505050565b60095460ff1681565b60055433600160a060020a0390811691161461099a57600080fd5b600160a060020a03811615156109af57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b60055433600160a060020a039081169116146109ec57600080fd5b600160a060020a0381161515610a0157600080fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b60065433600160a060020a03908116911614610a3e57600080fd5b6009805460ff1916911515919091179055565b60065460009033600160a060020a03908116911614610a6f57600080fd5b6008546113889010610a8057600080fd5b5082600160a060020a0381161515610aa05750600654600160a060020a03165b60008211610aae5760005491505b600880546001019055610ac2838284611203565b50505050565b60065433600160a060020a03908116911614610ae357600080fd5b610af08130600054611203565b50565b600081815260016020526040902054600160a060020a0316801515610b1757600080fd5b919050565b600160a060020a031660009081526002602052604090205490565b610b3f611477565b6000610b49611477565b6000806000610b5787610b1c565b9450841515610b87576000604051805910610b6f5750595b90808252806020026020018201604052509550610c0e565b84604051805910610b955750595b90808252806020026020018201604052509350610bb0610831565b925060009150600090505b828111610c0a57600081815260016020526040902054600160a060020a0388811691161415610c025780848381518110610bf157fe5b602090810290910101526001909101905b600101610bbb565b8395505b5050505050919050565b600360205260009081526040902054600160a060020a031681565b610c3b611477565b60408051908101604052600381527f45415400000000000000000000000000000000000000000000000000000000006020820152905090565b60145481565b60095460ff161515610c8b57600080fd5b610c95338361103c565b1515610ca057600080fd5b6000828152600460205260409020548110610cba57600080fd5b600054811015610cc957600080fd5b60009182526004602052604090912055565b60408051908101604052600c81527f45746865724174686c6574650000000000000000000000000000000000000000602082015281565b610d1c338261103c565b1515610d2757600080fd5b610d308261111e565b1515610d3b57600080fd5b610d4633838361112c565b5050565b600160205260009081526040902054600160a060020a031681565b601254600160a060020a031681565b600654600160a060020a031681565b6000818152600160205260409020543390600160a060020a0316610da68261111e565b1515610db157600080fd5b610dbb82846110fe565b1515610dc657600080fd5b6107ea81838561112c565b60009081526004602052604090205490565b6000818152600160209081526040808320546004909252822054600160a060020a0391821692339281908416851415610e1b57600080fd5b610e248461111e565b1515610e2f57600080fd5b3483901015610e3d57600080fd5b610e468361133f565b9150610e52348461105c565b9050610e5d836113cb565b600087815260046020526040902055610e7785858861112c565b30600160a060020a031685600160a060020a0316141515610ec357600160a060020a03851682156108fc0283604051600060405180830381858888f193505050501515610ec357600080fd5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8684600460008a815260200190815260200160002054888860078c815481101515610f0a57fe5b60009182526020909120016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e083019084908015610fb95780601f10610f8e57610100808354040283529160200191610fb9565b820191906000526020600020905b815481529060010190602001808311610f9c57829003601f168201915b505097505050505050505060405180910390a1600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610ffd57600080fd5b505050505050565b60408051908101604052600381527f4541540000000000000000000000000000000000000000000000000000000000602082015281565b600090815260016020526040902054600160a060020a0390811691161490565b60008282111561106857fe5b50900390565b600160a060020a0330163181111561108557600080fd5b600160a060020a03821615156110cd57600554600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156110c857600080fd5b610d46565b600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515610d4657600080fd5b600090815260036020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a0380831660008181526002602090815260408083208054600190810190915586845290915290208054600160a060020a03191690911790558316156111ae57600160a060020a03831660009081526002602090815260408083208054600019019055838352600390915290208054600160a060020a03191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b61120b611489565b600060206040519081016040528581526007805491935060019180830161123283826114a2565b600092835260209092208591018151819080516112539291602001906114c6565b50505003905063ffffffff8116811461126b57600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef2818686604051838152600160a060020a038216604082015260606020820181815290820184818151815260200191508051906020019080838360005b838110156112e05780820151838201526020016112c8565b50505050905090810190601f16801561130d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1600081815260046020526040812084905561133890858361112c565b5050505050565b600080600a548311151561136b5761136461135c84600f5461141b565b612710611451565b9150611395565b600b5483116113835761136461135c8460105461141b565b61139261135c8460115461141b565b91505b61139f838361105c565b90506113c26014546113bd6113b68460135461141b565b6064611451565b611468565b60145550919050565b6000600a548210156113ed576113e66113b683600c5461141b565b9050610b17565b600b54821015611406576113e66113b683600d5461141b565b6114156113b683600e5461141b565b92915050565b60008083151561142e576000915061144a565b5082820282848281151561143e57fe5b041461144657fe5b8091505b5092915050565b600080828481151561145f57fe5b04949350505050565b60008282018381101561144657fe5b60206040519081016040526000815290565b60206040519081016040528061149d611477565b905290565b8154818355818115116107ea576000838152602090206107ea918101908301611544565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061150757805160ff1916838001178555611534565b82800160010185558215611534579182015b82811115611534578251825591602001919060010190611519565b50611540929150611567565b5090565b6106f891905b8082111561154057600061155e8282611581565b5060010161154a565b6106f891905b80821115611540576000815560010161156d565b50805460018160011615610100020316600290046000825580601f106115a75750610af0565b601f016020900490600052602060002090810190610af091906115675600a165627a7a72305820ecb4b5bbc22fdf43d496c74c437b2d23b99f3fe9e8bf290b47dd4b815132df910029

Deployed Bytecode

0x6060604052600436106101955763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305e45546811461019a57806306fdde03146101bf578063095ea7b3146102495780630a0f81681461026d5780630b7e9c441461029c5780630c9be46d146102bb5780631051db34146102da57806318160ddd1461030157806323b872dd14610314578063246982c41461033c578063248d14eb146103e157806327d7874c146103f45780632ba73c1514610413578063371c7dba1461043257806342287b661461044a5780634955f280146104ab5780636352211e146104fc57806370a08231146105125780638462151c146105315780639433a81e146105a357806395d89b41146105b957806399b8a3f0146105cc578063a136c448146105df578063a3f4df7e146105f8578063a9059cbb1461060b578063aa1d98af1461062d578063afcf2fc414610643578063b047fb5014610656578063b2e6ceeb14610669578063b9186d7d1461067f578063efef39a114610695578063f76f8d78146106a0575b600080fd5b34156101a557600080fd5b6101ad6106b3565b60405190815260200160405180910390f35b34156101ca57600080fd5b6101d26106b9565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561020e5780820151838201526020016101f6565b50505050905090810190601f16801561023b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025457600080fd5b61026b600160a060020a03600435166024356106fb565b005b341561027857600080fd5b61028061077a565b604051600160a060020a03909116815260200160405180910390f35b34156102a757600080fd5b61026b600160a060020a0360043516610789565b34156102c657600080fd5b61026b600160a060020a03600435166107ef565b34156102e557600080fd5b6102ed61082c565b604051901515815260200160405180910390f35b341561030c57600080fd5b6101ad610831565b341561031f57600080fd5b61026b600160a060020a0360043581169060243516604435610837565b341561034757600080fd5b610352600435610880565b60405160208101839052600160a060020a038216604082015260608082528190810185818151815260200191508051906020019080838360005b838110156103a457808201518382015260200161038c565b50505050905090810190601f1680156103d15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156103ec57600080fd5b6102ed610976565b34156103ff57600080fd5b61026b600160a060020a036004351661097f565b341561041e57600080fd5b61026b600160a060020a03600435166109d1565b341561043d57600080fd5b61026b6004351515610a23565b341561045557600080fd5b61026b60048035600160a060020a03169060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350610a5192505050565b34156104b657600080fd5b61026b60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610ac895505050505050565b341561050757600080fd5b610280600435610af3565b341561051d57600080fd5b6101ad600160a060020a0360043516610b1c565b341561053c57600080fd5b610550600160a060020a0360043516610b37565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561058f578082015183820152602001610577565b505050509050019250505060405180910390f35b34156105ae57600080fd5b610280600435610c18565b34156105c457600080fd5b6101d2610c33565b34156105d757600080fd5b6101ad610c74565b34156105ea57600080fd5b61026b600435602435610c7a565b341561060357600080fd5b6101d2610cdb565b341561061657600080fd5b61026b600160a060020a0360043516602435610d12565b341561063857600080fd5b610280600435610d4a565b341561064e57600080fd5b610280610d65565b341561066157600080fd5b610280610d74565b341561067457600080fd5b61026b600435610d83565b341561068a57600080fd5b6101ad600435610dd1565b61026b600435610de3565b34156106ab57600080fd5b6101d2611005565b60085481565b6106c1611477565b60408051908101604052600c81527f45746865724174686c6574650000000000000000000000000000000000000000602082015290505b90565b610705338261103c565b151561071057600080fd5b600081815260036020526040908190208054600160a060020a031916600160a060020a038581169182179092559133909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600554600160a060020a031681565b600554600090819033600160a060020a039081169116146107a957600080fd5b60145491506107c2600160a060020a033016318361105c565b60006014556012549091506107e090600160a060020a03168361106e565b6107ea838261106e565b505050565b60055433600160a060020a0390811691161461080a57600080fd5b60128054600160a060020a031916600160a060020a0392909216919091179055565b600190565b60075490565b610841838261103c565b151561084c57600080fd5b61085682826110fe565b151561086157600080fd5b61086a8261111e565b151561087557600080fd5b6107ea83838361112c565b610888611477565b600080600060078581548110151561089c57fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b50505060009788525050600460209081526040808820546001909252909620549096600160a060020a03909116945092505050565b60095460ff1681565b60055433600160a060020a0390811691161461099a57600080fd5b600160a060020a03811615156109af57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b60055433600160a060020a039081169116146109ec57600080fd5b600160a060020a0381161515610a0157600080fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b60065433600160a060020a03908116911614610a3e57600080fd5b6009805460ff1916911515919091179055565b60065460009033600160a060020a03908116911614610a6f57600080fd5b6008546113889010610a8057600080fd5b5082600160a060020a0381161515610aa05750600654600160a060020a03165b60008211610aae5760005491505b600880546001019055610ac2838284611203565b50505050565b60065433600160a060020a03908116911614610ae357600080fd5b610af08130600054611203565b50565b600081815260016020526040902054600160a060020a0316801515610b1757600080fd5b919050565b600160a060020a031660009081526002602052604090205490565b610b3f611477565b6000610b49611477565b6000806000610b5787610b1c565b9450841515610b87576000604051805910610b6f5750595b90808252806020026020018201604052509550610c0e565b84604051805910610b955750595b90808252806020026020018201604052509350610bb0610831565b925060009150600090505b828111610c0a57600081815260016020526040902054600160a060020a0388811691161415610c025780848381518110610bf157fe5b602090810290910101526001909101905b600101610bbb565b8395505b5050505050919050565b600360205260009081526040902054600160a060020a031681565b610c3b611477565b60408051908101604052600381527f45415400000000000000000000000000000000000000000000000000000000006020820152905090565b60145481565b60095460ff161515610c8b57600080fd5b610c95338361103c565b1515610ca057600080fd5b6000828152600460205260409020548110610cba57600080fd5b600054811015610cc957600080fd5b60009182526004602052604090912055565b60408051908101604052600c81527f45746865724174686c6574650000000000000000000000000000000000000000602082015281565b610d1c338261103c565b1515610d2757600080fd5b610d308261111e565b1515610d3b57600080fd5b610d4633838361112c565b5050565b600160205260009081526040902054600160a060020a031681565b601254600160a060020a031681565b600654600160a060020a031681565b6000818152600160205260409020543390600160a060020a0316610da68261111e565b1515610db157600080fd5b610dbb82846110fe565b1515610dc657600080fd5b6107ea81838561112c565b60009081526004602052604090205490565b6000818152600160209081526040808320546004909252822054600160a060020a0391821692339281908416851415610e1b57600080fd5b610e248461111e565b1515610e2f57600080fd5b3483901015610e3d57600080fd5b610e468361133f565b9150610e52348461105c565b9050610e5d836113cb565b600087815260046020526040902055610e7785858861112c565b30600160a060020a031685600160a060020a0316141515610ec357600160a060020a03851682156108fc0283604051600060405180830381858888f193505050501515610ec357600080fd5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8684600460008a815260200190815260200160002054888860078c815481101515610f0a57fe5b60009182526020909120016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e083019084908015610fb95780601f10610f8e57610100808354040283529160200191610fb9565b820191906000526020600020905b815481529060010190602001808311610f9c57829003601f168201915b505097505050505050505060405180910390a1600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610ffd57600080fd5b505050505050565b60408051908101604052600381527f4541540000000000000000000000000000000000000000000000000000000000602082015281565b600090815260016020526040902054600160a060020a0390811691161490565b60008282111561106857fe5b50900390565b600160a060020a0330163181111561108557600080fd5b600160a060020a03821615156110cd57600554600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156110c857600080fd5b610d46565b600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515610d4657600080fd5b600090815260036020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a0380831660008181526002602090815260408083208054600190810190915586845290915290208054600160a060020a03191690911790558316156111ae57600160a060020a03831660009081526002602090815260408083208054600019019055838352600390915290208054600160a060020a03191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b61120b611489565b600060206040519081016040528581526007805491935060019180830161123283826114a2565b600092835260209092208591018151819080516112539291602001906114c6565b50505003905063ffffffff8116811461126b57600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef2818686604051838152600160a060020a038216604082015260606020820181815290820184818151815260200191508051906020019080838360005b838110156112e05780820151838201526020016112c8565b50505050905090810190601f16801561130d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1600081815260046020526040812084905561133890858361112c565b5050505050565b600080600a548311151561136b5761136461135c84600f5461141b565b612710611451565b9150611395565b600b5483116113835761136461135c8460105461141b565b61139261135c8460115461141b565b91505b61139f838361105c565b90506113c26014546113bd6113b68460135461141b565b6064611451565b611468565b60145550919050565b6000600a548210156113ed576113e66113b683600c5461141b565b9050610b17565b600b54821015611406576113e66113b683600d5461141b565b6114156113b683600e5461141b565b92915050565b60008083151561142e576000915061144a565b5082820282848281151561143e57fe5b041461144657fe5b8091505b5092915050565b600080828481151561145f57fe5b04949350505050565b60008282018381101561144657fe5b60206040519081016040526000815290565b60206040519081016040528061149d611477565b905290565b8154818355818115116107ea576000838152602090206107ea918101908301611544565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061150757805160ff1916838001178555611534565b82800160010185558215611534579182015b82811115611534578251825591602001919060010190611519565b50611540929150611567565b5090565b6106f891905b8082111561154057600061155e8282611581565b5060010161154a565b6106f891905b80821115611540576000815560010161156d565b50805460018160011615610100020316600290046000825580601f106115a75750610af0565b601f016020900490600052602060002090810190610af091906115675600a165627a7a72305820ecb4b5bbc22fdf43d496c74c437b2d23b99f3fe9e8bf290b47dd4b815132df910029

Swarm Source

bzzr://ecb4b5bbc22fdf43d496c74c437b2d23b99f3fe9e8bf290b47dd4b815132df91

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.