Sponsored:   INLOCK - Put Your BTC, Get Your Cash! Crypto Backed Loans, 3.2M Raised Already. Join NOW!
 Latest 25 txns From a total of 33699 Transactions

TxHash Age From To Value [TxFee]
0xc53baa786f76bc5121aa2962b5f708213a35bf04a64aa72b161da5c955dc3daa18 hrs 46 mins ago0x3b131085b1d73572e11cfe54e679a57ab09749f7  IN   CryptoCelebrities0 Ether0.00014121
0x72d0fd0cd58921cf787a1c9380330a6f9c22d3f1b9db42e3d93c5c161c3a036918 hrs 48 mins ago0x3b131085b1d73572e11cfe54e679a57ab09749f7  IN   CryptoCelebrities0 Ether0.00014121
0x30b6feea9bcf1f46c308c92dced60f0356320eee4bc093351b88f8d87e95bcc218 hrs 48 mins ago0x3b131085b1d73572e11cfe54e679a57ab09749f7  IN   CryptoCelebrities0 Ether0.000141594
0xc93065c0053f8da17935354db68d91ade03fd2b92faab98d41cfe69e91ee7ce418 hrs 53 mins ago0x3b131085b1d73572e11cfe54e679a57ab09749f7  IN   CryptoCelebrities0 Ether0.00014121
0x29469d3ffc55568c445110fd81b3b717ffc28b115a2f93e42717050c6c34533018 hrs 53 mins ago0x3b131085b1d73572e11cfe54e679a57ab09749f7  IN   CryptoCelebrities0 Ether0.000141594
0x5a82189c6e7ec906c2429da2ef02cc0cabeb60dbfab5689274b61ac72715596018 hrs 54 mins ago0x3b131085b1d73572e11cfe54e679a57ab09749f7  IN   CryptoCelebrities0 Ether0.00014121
0x22405daecdc01e30ac854ca9a8595ba39de670ba80b07e26f96d92924ad1b2a62 days 7 hrs ago0xdb57782960897fcf293f3679e9dbaf2a67cfea10  IN   CryptoCelebrities0.0097 Ether0.00011491
0xa84c0e08195611a2927cf09c8598d84ec0e471e398841db7a28bfd37afb2bfd12 days 17 hrs ago0x65c840a6b0bba2a813d6d19d13d6dbb4e10327cf  IN   CryptoCelebrities0 Ether0.00022875
0xcc403a64dfdfb5b358f399ef3a368c5b409d3f16a650b470ab0293bd66d308cb2 days 17 hrs ago0x65c840a6b0bba2a813d6d19d13d6dbb4e10327cf  IN   CryptoCelebrities0 Ether0.00022875
0x3bb89d15894bd0c51372793fb40df639573cfd810254686f9adbf025e05d61274 days 1 hr ago0xb03b8127780dfb367f49c89893f969fb5ae8bb23  IN   CryptoCelebrities0 Ether0.0002932575
0xa01aa862ddab7621d8954835883cf4c9ea315eba562019f5a1fd88f6d344116d4 days 1 hr ago0xb03b8127780dfb367f49c89893f969fb5ae8bb23  IN   CryptoCelebrities0 Ether0.000279075004
0xe127b4b90cf697a7799564e7c9ca9eb686373e7b8768902bdaff497f642c20434 days 1 hr ago0xb03b8127780dfb367f49c89893f969fb5ae8bb23  IN   CryptoCelebrities0 Ether0.000260775
0x5cba011fad41f31eecf979130f42e02281e610b6e70a49847bb430007722357f6 days 5 hrs ago0x4615c12a57b9acdd5e4d6aae100d952440cf2177  IN   CryptoCelebrities0 Ether0.000262999
0x0692240efb92255b3f714012d7110697706e48cb48505134dd16f0b14a07b92e6 days 5 hrs ago0x4615c12a57b9acdd5e4d6aae100d952440cf2177  IN   CryptoCelebrities0 Ether0.000262999
0xde57eb06bd0b100066054a1f386b1eb27128edd5a4c56b662ea62423f16b1a626 days 9 hrs ago0xdb57782960897fcf293f3679e9dbaf2a67cfea10  IN   CryptoCelebrities0.0097 Ether0.000091928
0x2d5ea122c4d5c3c17e80a05a7bd4f8ded0e0dff4de105780afaa20d619cf93816 days 13 hrs ago0xf21ebd3eb95f0f2f145744e57ea681d79866488d  IN   CryptoCelebrities2.746636703814199 Ether0.00046566
0xc31c065ef28992bcebfcbc076b1fda87f116db52d7181aa50ef5dc477a3be7e16 days 16 hrs ago0x8987697e9299763ba2ce7b4e0b2e85a553f7235f  IN   CryptoCelebrities3.360247031263388 Ether0.00064476
0xc9c2b68ed18e43db8169204eadaa2c5f0b2a3fa26110f31c7ceb8cd228e8d5e96 days 18 hrs ago0xf21ebd3eb95f0f2f145744e57ea681d79866488d  IN   CryptoCelebrities3.360247031263523 Ether0.00046566
0xf0f8b10861efe9c7b7ed6de361e914971d91e0c1eb90ce297ee466d3ea0d682f6 days 21 hrs ago0xbab344d1c245823b8a584968103977aa9cabff5b  IN   CryptoCelebrities4.111 Ether0.0008664
0xf83fbee34aba58119e90b5ecadf4e5891242105fec8afd6403c69840a64c65a78 days 16 hrs ago0xd5a5307963b52b706bead242af6752450f020d42  IN   CryptoCelebrities0.0097 Ether0.00011491
0xd4284bb66fd408b54932faed25f568f5bc190fc74f97d293c915b1666118f2498 days 16 hrs ago0xd5a5307963b52b706bead242af6752450f020d42  IN   CryptoCelebrities0.0097 Ether0.00011491
0x1e6a014fdf21ddcaf0e0485cce404d4800abdfc4be5eba53f5856cfa23e4df7e9 days 5 hrs ago0x63ac5ccbe604f76fe86f0aeb763eb1947eca2a6f  IN   CryptoCelebrities0.0097 Ether0.00022982
0x69d08f71cdaa30841d6373cf19a1c10207c68c1b8eb5d9c9e0874d7d1a4b4f1f9 days 5 hrs ago0x63ac5ccbe604f76fe86f0aeb763eb1947eca2a6f  IN   CryptoCelebrities0.0097 Ether0.000091928
0xe2448abae7be2bae87d67e8b270aaa1346445739c21c78613703f0d0929b74419 days 5 hrs ago0x63ac5ccbe604f76fe86f0aeb763eb1947eca2a6f  IN   CryptoCelebrities0.0097 Ether0.00011491
0xfd3ed150c0c77e48b66f9b3d3181b07bffd7cd6908863b6f30f1105558c47ea59 days 17 hrs ago0x6e682ec6cd413c16d424f54075a1059e83177194  IN   CryptoCelebrities0.0097 Ether0.000091928
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0x2d5ea122c4d5c3c17e80a05a7bd4f8ded0e0dff4de105780afaa20d619cf938163301046 days 13 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000000978755 Ether
0x2d5ea122c4d5c3c17e80a05a7bd4f8ded0e0dff4de105780afaa20d619cf938163301046 days 13 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x9bc9f983bf9bc0042552478e7e63d8025c8abab82.58183850158442734 Ether
0xc31c065ef28992bcebfcbc076b1fda87f116db52d7181aa50ef5dc477a3be7e163293756 days 16 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f0.000000000002533988 Ether
0xc31c065ef28992bcebfcbc076b1fda87f116db52d7181aa50ef5dc477a3be7e163293756 days 16 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d3.15863220938520366 Ether
0xc9c2b68ed18e43db8169204eadaa2c5f0b2a3fa26110f31c7ceb8cd228e8d5e963290296 days 18 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000002668133 Ether
0xc9c2b68ed18e43db8169204eadaa2c5f0b2a3fa26110f31c7ceb8cd228e8d5e963290296 days 18 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f3.15863220938520366 Ether
0xf0f8b10861efe9c7b7ed6de361e914971d91e0c1eb90ce297ee466d3ea0d682f63281916 days 21 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xbab344d1c245823b8a584968103977aa9cabff5b0.000059483031932765 Ether
0xf0f8b10861efe9c7b7ed6de361e914971d91e0c1eb90ce297ee466d3ea0d682f63281916 days 21 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d3.8642840859499832 Ether
0x4b30740da3d37a0a5df6edd29ab6340144edf7033b4d37a7362d4795e9ee5df7615766335 days 14 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x1f52b87c3503e537853e160adbf7e330ea0be7c42.58183850158442734 Ether
0x8f959e1e4809314852075f047c543838f89a60121fb416084fbdde57009700d5611400742 days 23 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f0.000000000002442519 Ether
0x8f959e1e4809314852075f047c543838f89a60121fb416084fbdde57009700d5611400742 days 23 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x5ee0526daa4c2317703bb400e6f75175f7dd28e82.58183850158442734 Ether
0x5146f5ba7080a5d47e9ca0c49c937e870da35245145785e8bbf049f0ef088f63611399942 days 23 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000009551045 Ether
0x5146f5ba7080a5d47e9ca0c49c937e870da35245145785e8bbf049f0ef088f63611399942 days 23 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f3.15863220938520366 Ether
0xfd9975d3fe0671773591c49a49db123e48bd0851272d3dd7ff414f7ce6a39b86611308143 days 3 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000005539762 Ether
0xfd9975d3fe0671773591c49a49db123e48bd0851272d3dd7ff414f7ce6a39b86611308143 days 3 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x5ee0526daa4c2317703bb400e6f75175f7dd28e82.58183850158442734 Ether
0x430a6883b2d33b22bb4abfc7e88397681f9564f7d6b5df737189abc225b6cc3c611214643 days 6 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000008965834 Ether
0x430a6883b2d33b22bb4abfc7e88397681f9564f7d6b5df737189abc225b6cc3c611214643 days 6 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x5ee0526daa4c2317703bb400e6f75175f7dd28e83.15863220938520366 Ether
0x8be1a1861f2da0cd17a4c83efac23fa5c02bf6acb94381265ff5688578fc91f5611158743 days 9 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f0.000000000002417735 Ether
0x8be1a1861f2da0cd17a4c83efac23fa5c02bf6acb94381265ff5688578fc91f5611158743 days 9 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d3.15863220938520366 Ether
0x40546dffac47d1c7c2b56870a439c85c01ef82a4c87ff4f01504756226e8bae4611154743 days 9 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000006764854 Ether
0x40546dffac47d1c7c2b56870a439c85c01ef82a4c87ff4f01504756226e8bae4611154743 days 9 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f3.15863220938520366 Ether
0x43d4bfcc6af8a10c250abf5b42f3d75b3690506e77817c236001a0917d91d3a0611107143 days 11 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x8987697e9299763ba2ce7b4e0b2e85a553f7235f0.000000000008772771 Ether
0x43d4bfcc6af8a10c250abf5b42f3d75b3690506e77817c236001a0917d91d3a0611107143 days 11 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d2.58183850158442734 Ether
0xd676bea501771e15033ec2b99a3ae370e3db02ee383abba08a85faca61ea289e611084943 days 12 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70xf21ebd3eb95f0f2f145744e57ea681d79866488d0.000000000007917827 Ether
0xd676bea501771e15033ec2b99a3ae370e3db02ee383abba08a85faca61ea289e611084943 days 12 hrs ago0xbb5ed1edeb5149af3ab43ea9c7a6963b3c1374f70x5ee0526daa4c2317703bb400e6f75175f7dd28e82.58183850158442734 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: CelebrityToken
Compiler Text: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18; // solhint-disable-line



/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
/// @author Dieter Shirley <[email protected]> (https://github.com/dete)
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 CelebrityToken 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 ***/

  /// @notice Name and symbol of the non fungible token, as defined in ERC721.
  string public constant NAME = "CryptoCelebrities"; // solhint-disable-line
  string public constant SYMBOL = "CelebrityToken"; // solhint-disable-line

  uint256 private startingPrice = 0.001 ether;
  uint256 private constant PROMO_CREATION_LIMIT = 5000;
  uint256 private firstStepLimit =  0.053613 ether;
  uint256 private secondStepLimit = 0.564957 ether;

  /*** 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) private personIndexToPrice;

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

  uint256 public promoCreatedCount;

  /*** 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 CelebrityToken() 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 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);
  }

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

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

  /// 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 onlyCLevel {
    _payout(_to);
  }

  // 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 = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 94), 100));
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);

    // Update prices
    if (sellingPrice < firstStepLimit) {
      // first stage
      personIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 94);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      personIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 120), 94);
    } else {
      // third stage
      personIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 115), 94);
    }

    _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 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;
  }

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

  /// @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) private {
    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) private view returns (bool) {
    return claimant == personIndexToOwner[_tokenId];
  }

  /// For paying out balance on contract
  function _payout(address _to) private {
    if (_to == address(0)) {
      ceoAddress.transfer(this.balance);
    } else {
      _to.transfer(this.balance);
    }
  }

  /// @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);
  }
}
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 ABI  
[{"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":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":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":"_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":"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":"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"}]

  Contract Creation Code Switch To Opcodes View
606060405266038d7ea4c6800060005566be78bd4c57d0006001556707d72165f25ed000600255341561003157600080fd5b60078054600160a060020a033316600160a060020a031991821681179092556008805490911690911790556113c78061006b6000396000f3006060604052600436106101535763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305e45546811461015857806306fdde031461017d578063095ea7b3146102075780630a0f81681461022b5780630b7e9c441461025a5780631051db341461027957806318160ddd146102a057806323b872dd146102b3578063246982c4146102db57806327d7874c146103805780632ba73c151461039f57806342287b66146103be5780634955f2801461041f5780636352211e1461047057806370a08231146104865780638462151c146104a55780639433a81e1461051757806395d89b411461052d578063a3f4df7e14610540578063a9059cbb14610553578063aa1d98af14610575578063b047fb501461058b578063b2e6ceeb1461059e578063b9186d7d146105b4578063efef39a1146105ca578063f76f8d78146105d5575b600080fd5b341561016357600080fd5b61016b6105e8565b60405190815260200160405180910390f35b341561018857600080fd5b6101906105ee565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101cc5780820151838201526020016101b4565b50505050905090810190601f1680156101f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021257600080fd5b610229600160a060020a0360043516602435610630565b005b341561023657600080fd5b61023e6106bc565b604051600160a060020a03909116815260200160405180910390f35b341561026557600080fd5b610229600160a060020a03600435166106cb565b341561028457600080fd5b61028c61070d565b604051901515815260200160405180910390f35b34156102ab57600080fd5b61016b610712565b34156102be57600080fd5b610229600160a060020a0360043581169060243516604435610718565b34156102e657600080fd5b6102f1600435610766565b60405160208101839052600160a060020a038216604082015260608082528190810185818151815260200191508051906020019080838360005b8381101561034357808201518382015260200161032b565b50505050905090810190601f1680156103705780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561038b57600080fd5b610229600160a060020a036004351661085c565b34156103aa57600080fd5b610229600160a060020a03600435166108bb565b34156103c957600080fd5b61022960048035600160a060020a03169060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650509335935061091a92505050565b341561042a57600080fd5b61022960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061099195505050505050565b341561047b57600080fd5b61023e6004356109b9565b341561049157600080fd5b61016b600160a060020a03600435166109e2565b34156104b057600080fd5b6104c4600160a060020a03600435166109fd565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156105035780820151838201526020016104eb565b505050509050019250505060405180910390f35b341561052257600080fd5b61023e600435610ade565b341561053857600080fd5b610190610af9565b341561054b57600080fd5b610190610b3a565b341561055e57600080fd5b610229600160a060020a0360043516602435610b71565b341561058057600080fd5b61023e600435610ba9565b341561059657600080fd5b61023e610bc4565b34156105a957600080fd5b610229600435610bd3565b34156105bf57600080fd5b61016b600435610c21565b610229600435610c33565b34156105e057600080fd5b610190610eb2565b60095481565b6105f661124d565b60408051908101604052601181527f43727970746f43656c6562726974696573000000000000000000000000000000602082015290505b90565b61063a3382610ee9565b151561064557600080fd5b60008181526005602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038581169182179092559133909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600754600160a060020a031681565b60075433600160a060020a03908116911614806106f6575060085433600160a060020a039081169116145b151561070157600080fd5b61070a81610f09565b50565b600190565b600a5490565b6107228382610ee9565b151561072d57600080fd5b6107378282610f94565b151561074257600080fd5b61074b82610fb4565b151561075657600080fd5b610761838383610fc2565b505050565b61076e61124d565b6000806000600a8581548110151561078257fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b50505060009788525050600660209081526040808820546003909252909620549096600160a060020a03909116945092505050565b60075433600160a060020a0390811691161461087757600080fd5b600160a060020a038116151561088c57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60075433600160a060020a039081169116146108d657600080fd5b600160a060020a03811615156108eb57600080fd5b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009033600160a060020a0390811691161461093857600080fd5b600954611388901061094957600080fd5b5082600160a060020a03811615156109695750600854600160a060020a03165b600082116109775760005491505b60098054600101905561098b8382846110b2565b50505050565b60085433600160a060020a039081169116146109ac57600080fd5b61070a81306000546110b2565b600081815260036020526040902054600160a060020a03168015156109dd57600080fd5b919050565b600160a060020a031660009081526004602052604090205490565b610a0561124d565b6000610a0f61124d565b6000806000610a1d876109e2565b9450841515610a4d576000604051805910610a355750595b90808252806020026020018201604052509550610ad4565b84604051805910610a5b5750595b90808252806020026020018201604052509350610a76610712565b925060009150600090505b828111610ad057600081815260036020526040902054600160a060020a0388811691161415610ac85780848381518110610ab757fe5b602090810290910101526001909101905b600101610a81565b8395505b5050505050919050565b600560205260009081526040902054600160a060020a031681565b610b0161124d565b60408051908101604052600e81527f43656c656272697479546f6b656e0000000000000000000000000000000000006020820152905090565b60408051908101604052601181527f43727970746f43656c6562726974696573000000000000000000000000000000602082015281565b610b7b3382610ee9565b1515610b8657600080fd5b610b8f82610fb4565b1515610b9a57600080fd5b610ba5338383610fc2565b5050565b600360205260009081526040902054600160a060020a031681565b600854600160a060020a031681565b6000818152600360205260409020543390600160a060020a0316610bf682610fb4565b1515610c0157600080fd5b610c0b8284610f94565b1515610c1657600080fd5b610761818385610fc2565b60009081526006602052604090205490565b6000818152600360209081526040808320546006909252822054600160a060020a0391821692339281908416851415610c6b57600080fd5b610c7484610fb4565b1515610c7f57600080fd5b3483901015610c8d57600080fd5b610ca2610c9b84605e6111ee565b6064611224565b9150610cae348461123b565b9050600154831015610ce357610ccf610cc88460c86111ee565b605e611224565b600087815260066020526040902055610d19565b600254831015610cfb57610ccf610cc88460786111ee565b610d09610cc88460736111ee565b6000878152600660205260409020555b610d24858588610fc2565b30600160a060020a031685600160a060020a0316141515610d7057600160a060020a03851682156108fc0283604051600060405180830381858888f193505050501515610d7057600080fd5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8684600660008a8152602001908152602001600020548888600a8c815481101515610db757fe5b60009182526020909120016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e083019084908015610e665780601f10610e3b57610100808354040283529160200191610e66565b820191906000526020600020905b815481529060010190602001808311610e4957829003601f168201915b505097505050505050505060405180910390a1600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610eaa57600080fd5b505050505050565b60408051908101604052600e81527f43656c656272697479546f6b656e000000000000000000000000000000000000602082015281565b600090815260036020526040902054600160a060020a0390811691161490565b600160a060020a0381161515610f5757600754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610f5257600080fd5b61070a565b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561070a57600080fd5b600090815260056020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a0380831660008181526004602090815260408083208054600101905585835260039091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905583161561105d57600160a060020a0383166000908152600460209081526040808320805460001901905583835260059091529020805473ffffffffffffffffffffffffffffffffffffffff191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b6110ba61125f565b60006020604051908101604052858152600a80549193506001918083016110e18382611278565b6000928352602090922085910181518190805161110292916020019061129c565b50505003905063ffffffff8116811461111a57600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef2818686604051838152600160a060020a038216604082015260606020820181815290820184818151815260200191508051906020019080838360005b8381101561118f578082015183820152602001611177565b50505050905090810190601f1680156111bc5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160008181526006602052604081208490556111e7908583610fc2565b5050505050565b600080831515611201576000915061121d565b5082820282848281151561121157fe5b041461121957fe5b8091505b5092915050565b600080828481151561123257fe5b04949350505050565b60008282111561124757fe5b50900390565b60206040519081016040526000815290565b60206040519081016040528061127361124d565b905290565b8154818355818115116107615760008381526020902061076191810190830161131a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112dd57805160ff191683800117855561130a565b8280016001018555821561130a579182015b8281111561130a5782518255916020019190600101906112ef565b5061131692915061133d565b5090565b61062d91905b808211156113165760006113348282611357565b50600101611320565b61062d91905b808211156113165760008155600101611343565b50805460018160011615610100020316600290046000825580601f1061137d575061070a565b601f01602090049060005260206000209081019061070a919061133d5600a165627a7a7230582003141a717b1c55f1a6ce63c63b68b6538ac511d369403d6db7419471a38cdf460029

   Swarm Source:
bzzr://03141a717b1c55f1a6ce63c63b68b6538ac511d369403d6db7419471a38cdf46

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.