ETH Price: $1,852.47 (+1.64%)
Gas: 22 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multi Chain

Multichain Addresses

0 address found via
Transaction Hash
Method
Block
From
To
Value
Purchase51404322018-02-23 6:09:301931 days 15 hrs ago1519366170IN
0x5aEB70...D6bc1a51
0.216 ETH0.000317082
Purchase51213442018-02-19 23:47:171934 days 21 hrs ago1519084037IN
0x5aEB70...D6bc1a51
0.144 ETH0.0091263471
Purchase51203082018-02-19 19:34:071935 days 1 hr ago1519068847IN
0x5aEB70...D6bc1a51
0.096 ETH0.000287082
Purchase51200582018-02-19 18:31:351935 days 2 hrs ago1519065095IN
0x5aEB70...D6bc1a51
0.064 ETH0.000430623
Purchase51195962018-02-19 16:41:441935 days 4 hrs ago1519058504IN
0x5aEB70...D6bc1a51
0.032 ETH0.000813556
Purchase51188212018-02-19 13:27:351935 days 7 hrs ago1519046855IN
0x5aEB70...D6bc1a51
0.016 ETH0.000895097
Purchase51180762018-02-19 10:23:081935 days 10 hrs ago1519035788IN
0x5aEB70...D6bc1a51
0.008 ETH0.000240292
Purchase51176432018-02-19 8:34:531935 days 12 hrs ago1519029293IN
0x5aEB70...D6bc1a51
0.004 ETH0.000112421
Purchase51176252018-02-19 8:31:111935 days 12 hrs ago1519029071IN
0x5aEB70...D6bc1a51
0.002 ETH0.00020942
Purchase51176122018-02-19 8:28:101935 days 12 hrs ago1519028890IN
0x5aEB70...D6bc1a51
0.001 ETH0.00012721
Create Contract ...51176042018-02-19 8:26:041935 days 12 hrs ago1519028764IN
0x5aEB70...D6bc1a51
0 ETH0.000469432
Purchase51109912018-02-18 5:59:571936 days 15 hrs ago1518933597IN
0x5aEB70...D6bc1a51
0.486 ETH0.0004406119
Purchase51109892018-02-18 5:59:221936 days 15 hrs ago1518933562IN
0x5aEB70...D6bc1a51
0.486 ETH0.000023191
Purchase51109582018-02-18 5:52:251936 days 15 hrs ago1518933145IN
0x5aEB70...D6bc1a51
0.144 ETH0.004638200
Purchase51109582018-02-18 5:52:251936 days 15 hrs ago1518933145IN
0x5aEB70...D6bc1a51
0.096 ETH0.004638200
Purchase51109582018-02-18 5:52:251936 days 15 hrs ago1518933145IN
0x5aEB70...D6bc1a51
0.096 ETH0.0034785150
Purchase51100032018-02-18 1:59:041936 days 19 hrs ago1518919144IN
0x5aEB70...D6bc1a51
1.42382812 ETH0.000092124
Purchase51099792018-02-18 1:52:001936 days 19 hrs ago1518918720IN
0x5aEB70...D6bc1a51
1.42382812 ETH0.000184248
Purchase51096452018-02-18 0:34:591936 days 20 hrs ago1518914099IN
0x5aEB70...D6bc1a51
1.1390625 ETH0.00033
Purchase51093542018-02-17 23:28:141936 days 21 hrs ago1518910094IN
0x5aEB70...D6bc1a51
0.4 ETH0.000231910
Purchase51093532018-02-17 23:28:091936 days 21 hrs ago1518910089IN
0x5aEB70...D6bc1a51
0.55 ETH0.0009507941
Purchase51093392018-02-17 23:25:361936 days 21 hrs ago1518909936IN
0x5aEB70...D6bc1a51
0.45 ETH0.0009507941
Purchase51093362018-02-17 23:25:091936 days 21 hrs ago1518909909IN
0x5aEB70...D6bc1a51
0.55 ETH0.0009507941
Purchase51093332018-02-17 23:24:151936 days 21 hrs ago1518909855IN
0x5aEB70...D6bc1a51
0.799 ETH0.0006029426
Purchase51093332018-02-17 23:24:151936 days 21 hrs ago1518909855IN
0x5aEB70...D6bc1a51
0.8 ETH0.0006261327
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Advanced Filter
Parent Txn Hash Block From To Value
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.00072 ETH
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.0072 ETH
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.0072 ETH
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.0072 ETH
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.0072 ETH
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.0072 ETH
51404322018-02-23 6:09:301931 days 15 hrs ago1519366170
0x5aEB70...D6bc1a51
0.17928 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.00048 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.0048 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.0048 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.0048 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.0048 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.0048 ETH
51213442018-02-19 23:47:171934 days 21 hrs ago1519084037
0x5aEB70...D6bc1a51
0.11952 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.00032 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.0032 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.0032 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.0032 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.0032 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.0032 ETH
51203082018-02-19 19:34:071935 days 1 hr ago1519068847
0x5aEB70...D6bc1a51
0.07968 ETH
51200582018-02-19 18:31:351935 days 2 hrs ago1519065095
0x5aEB70...D6bc1a51
0.00032 ETH
51200582018-02-19 18:31:351935 days 2 hrs ago1519065095
0x5aEB70...D6bc1a51
0.0032 ETH
51200582018-02-19 18:31:351935 days 2 hrs ago1519065095
0x5aEB70...D6bc1a51
0.0032 ETH
51200582018-02-19 18:31:351935 days 2 hrs ago1519065095
0x5aEB70...D6bc1a51
0.0032 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherColor

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-17
*/

pragma solidity ^0.4.18;

/// Colors :3

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

/// Modified from the CryptoCelebrities contract
/// And again modified from the EmojiBlockhain contract
contract EtherColor is ERC721 {

  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new color 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 = "EtherColors"; // solhint-disable-line
  string public constant SYMBOL = "EtherColor"; // solhint-disable-line

  uint256 private startingPrice = 0.001 ether;
  uint256 private firstStepLimit =  0.05 ether;
  uint256 private secondStepLimit = 0.5 ether;

  /*** STORAGE ***/

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

  // @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 ColorIDs to an address that has been approved to call
  ///  transferFrom(). Each Color can only have one approved address for transfer
  ///  at any time. A zero value means no approval is outstanding.
  mapping (uint256 => address) public colorIndexToApproved;

  // @dev A mapping from ColorIDs to the price of the token.
  mapping (uint256 => uint256) private colorIndexToPrice;

  /// @dev A mapping from ColorIDs to the previpus price of the token. Used
  /// to calculate price delta for payouts
  mapping (uint256 => uint256) private colorIndexToPreviousPrice;

  // @dev A mapping from colorId to the 7 last owners.
  mapping (uint256 => address[5]) private colorIndexToPreviousOwners;


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

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

  Color[] private colors;

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

    colorIndexToApproved[_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 Color with the given name.
  function createContractColor(string _name) public onlyCOO {
    _createColor(_name, address(this), startingPrice);
  }

  /// @notice Returns all the relevant information about a specific color.
  /// @param _tokenId The tokenId of the color of interest.
  function getColor(uint256 _tokenId) public view returns (
    string colorName,
    uint256 sellingPrice,
    address owner,
    uint256 previousPrice,
    address[5] previousOwners
  ) {
    Color storage color = colors[_tokenId];
    colorName = color.name;
    sellingPrice = colorIndexToPrice[_tokenId];
    owner = colorIndexToOwner[_tokenId];
    previousPrice = colorIndexToPreviousPrice[_tokenId];
    previousOwners = colorIndexToPreviousOwners[_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 = colorIndexToOwner[_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 = colorIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    address[5] storage previousOwners = colorIndexToPreviousOwners[_tokenId];

    uint256 sellingPrice = colorIndexToPrice[_tokenId];
    uint256 previousPrice = colorIndexToPreviousPrice[_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 priceDelta = SafeMath.sub(sellingPrice, previousPrice);
    uint256 ownerPayout = SafeMath.add(previousPrice, SafeMath.mul(SafeMath.div(priceDelta, 100), 49));
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);

    // Update prices
    if (sellingPrice < firstStepLimit) {
      // first stage
      colorIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 100);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      colorIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 150), 100);
    } else {
      // third stage
      colorIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 125), 100);
    }
    colorIndexToPreviousPrice[_tokenId] = sellingPrice;

    uint256 fee_for_dev;
    // Pay previous tokenOwner if owner is not contract
    // and if previous price is not 0
    if (oldOwner != address(this)) {
      // old owner gets entire initial payment back
      oldOwner.transfer(ownerPayout);
      fee_for_dev = SafeMath.mul(SafeMath.div(priceDelta, 100), 1);
    } else {
      fee_for_dev = SafeMath.add(ownerPayout, SafeMath.mul(SafeMath.div(priceDelta, 100), 1));
    }

    // Next distribute payout Total among previous Owners
    for (uint i = 0; i <= 4; i++) {
        if (previousOwners[i] != address(this)) {
            previousOwners[i].transfer(uint256(SafeMath.div(SafeMath.mul(priceDelta, 10), 100)));
        } else {
            fee_for_dev = SafeMath.add(fee_for_dev, uint256(SafeMath.div(SafeMath.mul(priceDelta, 10), 100)));
        }
    }
    ceoAddress.transfer(fee_for_dev);

    _transfer(oldOwner, newOwner, _tokenId);

    //TokenSold(_tokenId, sellingPrice, colorIndexToPrice[_tokenId], oldOwner, newOwner, colors[_tokenId].name);

    msg.sender.transfer(purchaseExcess);
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return colorIndexToPrice[_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 = colorIndexToOwner[_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 color 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 Colors array looking for colors 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 totalColors = totalSupply();
      uint256 resultIndex = 0;
      uint256 colorId;
      for (colorId = 0; colorId <= totalColors; colorId++) {
        if (colorIndexToOwner[colorId] == _owner) {
          result[resultIndex] = colorId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return colors.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 colorIndexToApproved[_tokenId] == _to;
  }

  /// For creating Color
  function _createColor(string _name, address _owner, uint256 _price) private {
    Color memory _color = Color({
      name: _name
    });
    uint256 newColorId = colors.push(_color) - 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(newColorId == uint256(uint32(newColorId)));

    Birth(newColorId, _name, _owner);

    colorIndexToPrice[newColorId] = _price;
    colorIndexToPreviousPrice[newColorId] = 0;
    colorIndexToPreviousOwners[newColorId] =
        [address(this), address(this), address(this), address(this), address(this)];

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

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == colorIndexToOwner[_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 Color to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of colors is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    colorIndexToOwner[_tokenId] = _to;
    // When creating new colors _from is 0x0, but we can't account that address.
    if (_from != address(0)) {
      ownershipTokenCount[_from]--;
      // clear any previously approved ownership exchange
      delete colorIndexToApproved[_tokenId];
    }
    // Update the colorIndexToPreviousOwners
    colorIndexToPreviousOwners[_tokenId][4]=colorIndexToPreviousOwners[_tokenId][3];
    colorIndexToPreviousOwners[_tokenId][3]=colorIndexToPreviousOwners[_tokenId][2];
    colorIndexToPreviousOwners[_tokenId][2]=colorIndexToPreviousOwners[_tokenId][1];
    colorIndexToPreviousOwners[_tokenId][1]=colorIndexToPreviousOwners[_tokenId][0];
    // the _from address for creation is 0, so instead set it to the contract address
    if (_from != address(0)) {
        colorIndexToPreviousOwners[_tokenId][0]=_from;
    } else {
        colorIndexToPreviousOwners[_tokenId][0]=address(this);
    }
    // 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 Security Audit

Contract ABI

[{"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":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":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"colorIndexToApproved","outputs":[{"name":"","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":"_tokenId","type":"uint256"}],"name":"getColor","outputs":[{"name":"colorName","type":"string"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"previousPrice","type":"uint256"},{"name":"previousOwners","type":"address[5]"}],"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":"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":"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":true,"inputs":[{"name":"","type":"uint256"}],"name":"colorIndexToOwner","outputs":[{"name":"","type":"address"}],"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"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"createContractColor","outputs":[],"payable":false,"stateMutability":"nonpayable","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"}]

606060405266038d7ea4c6800060005566b1a2bc2ec500006001556706f05b59d3b20000600255341561003157600080fd5b60098054600160a060020a033316600160a060020a03199182168117909255600a805490911690911790556115138061006b6000396000f30060606040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610142578063095ea7b3146101cc5780630a0f8168146101f05780630b7e9c441461021f5780631051db341461023e57806318160ddd1461026557806323b872dd1461028a57806327d7874c146102b25780632ba73c15146102d15780636352211e146102f05780636b48aa2e1461030657806370a082311461031c57806380057b9a1461033b5780638462151c1461041257806395d89b4114610484578063a3f4df7e14610497578063a9059cbb146104aa578063b047fb50146104cc578063b2e6ceeb146104df578063b9186d7d146104f5578063be989fd61461050b578063efef39a114610521578063f76f8d781461052c578063fd7e84b31461053f575b600080fd5b341561014d57600080fd5b610155610590565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610191578082015183820152602001610179565b50505050905090810190601f1680156101be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d757600080fd5b6101ee600160a060020a03600435166024356105d2565b005b34156101fb57600080fd5b610203610651565b604051600160a060020a03909116815260200160405180910390f35b341561022a57600080fd5b6101ee600160a060020a0360043516610660565b341561024957600080fd5b6102516106a2565b604051901515815260200160405180910390f35b341561027057600080fd5b6102786106a7565b60405190815260200160405180910390f35b341561029557600080fd5b6101ee600160a060020a03600435811690602435166044356106ad565b34156102bd57600080fd5b6101ee600160a060020a03600435166106fb565b34156102dc57600080fd5b6101ee600160a060020a036004351661074d565b34156102fb57600080fd5b61020360043561079f565b341561031157600080fd5b6102036004356107c8565b341561032757600080fd5b610278600160a060020a03600435166107e3565b341561034657600080fd5b6103516004356107fe565b60405160208101859052600160a060020a03841660408201526060810183905280608081018360a080838360005b8381101561039757808201518382015260200161037f565b50505050905001828103825287818151815260200191508051906020019080838360005b838110156103d35780820151838201526020016103bb565b50505050905090810190601f1680156104005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561041d57600080fd5b610431600160a060020a0360043516610951565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610470578082015183820152602001610458565b505050509050019250505060405180910390f35b341561048f57600080fd5b610155610a32565b34156104a257600080fd5b610155610a73565b34156104b557600080fd5b6101ee600160a060020a0360043516602435610aaa565b34156104d757600080fd5b610203610ae2565b34156104ea57600080fd5b6101ee600435610af1565b341561050057600080fd5b610278600435610b3f565b341561051657600080fd5b610203600435610b51565b6101ee600435610b6c565b341561053757600080fd5b610155610e22565b341561054a57600080fd5b6101ee60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610e5995505050505050565b6105986112f7565b60408051908101604052600b81527f4574686572436f6c6f7273000000000000000000000000000000000000000000602082015290505b90565b6105dc3382610e81565b15156105e757600080fd5b600081815260056020526040908190208054600160a060020a031916600160a060020a038581169182179092559133909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600954600160a060020a031681565b60095433600160a060020a039081169116148061068b5750600a5433600160a060020a039081169116145b151561069657600080fd5b61069f81610ea1565b50565b600190565b600b5490565b6106b78382610e81565b15156106c257600080fd5b6106cc8282610f2c565b15156106d757600080fd5b6106e082610f4c565b15156106eb57600080fd5b6106f6838383610f5a565b505050565b60095433600160a060020a0390811691161461071657600080fd5b600160a060020a038116151561072b57600080fd5b60098054600160a060020a031916600160a060020a0392909216919091179055565b60095433600160a060020a0390811691161461076857600080fd5b600160a060020a038116151561077d57600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b600081815260036020526040902054600160a060020a03168015156107c357600080fd5b919050565b600560205260009081526040902054600160a060020a031681565b600160a060020a031660009081526004602052604090205490565b6108066112f7565b6000806000610813611309565b6000600b8781548110151561082457fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b50505060008a81526006602090815260408083205460038352818420546007845282852054600890945293829020969c509a50600160a060020a03909216985096506005925060a0915051908101604052919060a0830182845b8154600160a060020a0316815260019091019060200180831161092357505050505091505091939590929450565b6109596112f7565b60006109636112f7565b6000806000610971876107e3565b94508415156109a15760006040518059106109895750595b90808252806020026020018201604052509550610a28565b846040518059106109af5750595b908082528060200260200182016040525093506109ca6106a7565b925060009150600090505b828111610a2457600081815260036020526040902054600160a060020a0388811691161415610a1c5780848381518110610a0b57fe5b602090810290910101526001909101905b6001016109d5565b8395505b5050505050919050565b610a3a6112f7565b60408051908101604052600a81527f4574686572436f6c6f72000000000000000000000000000000000000000000006020820152905090565b60408051908101604052600b81527f4574686572436f6c6f7273000000000000000000000000000000000000000000602082015281565b610ab43382610e81565b1515610abf57600080fd5b610ac882610f4c565b1515610ad357600080fd5b610ade338383610f5a565b5050565b600a54600160a060020a031681565b6000818152600360205260409020543390600160a060020a0316610b1482610f4c565b1515610b1f57600080fd5b610b298284610f2c565b1515610b3457600080fd5b6106f6818385610f5a565b60009081526006602052604090205490565b600360205260009081526040902054600160a060020a031681565b600081815260036020908152604080832054600883528184206006845282852054600790945291842054600160a060020a0391821694339492819081908190819089168a1415610bbb57600080fd5b610bc489610f4c565b1515610bcf57600080fd5b3487901015610bdd57600080fd5b610be787876110ef565b9450610c0786610c02610bfb886064611101565b603161111d565b61114f565b9350610c1334886110ef565b9250600154871015610c4857610c34610c2d8860c861111d565b6064611101565b60008c815260066020526040902055610c7e565b600254871015610c6057610c34610c2d88609661111d565b610c6e610c2d88607d61111d565b60008c8152600660205260409020555b60008b815260076020526040902087905530600160a060020a03908116908b1614610cf057600160a060020a038a1684156108fc0285604051600060405180830381858888f193505050501515610cd457600080fd5b610ce9610ce2866064611101565b600161111d565b9150610d05565b610d0284610c02610ce2886064611101565b91505b5060005b60048111610da657600160a060020a033016888260058110610d2757fe5b0154600160a060020a031614610d8957878160058110610d4357fe5b0154600160a060020a03166108fc610d5f610c2d88600a61111d565b9081150290604051600060405180830381858888f193505050501515610d8457600080fd5b610d9e565b610d9b82610c02610c2d88600a61111d565b91505b600101610d09565b600954600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515610dd957600080fd5b610de48a8a8d610f5a565b600160a060020a03331683156108fc0284604051600060405180830381858888f193505050501515610e1557600080fd5b5050505050505050505050565b60408051908101604052600a81527f4574686572436f6c6f7200000000000000000000000000000000000000000000602082015281565b600a5433600160a060020a03908116911614610e7457600080fd5b61069f813060005461115e565b600090815260036020526040902054600160a060020a0390811691161490565b600160a060020a0381161515610eef57600954600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610eea57600080fd5b61069f565b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561069f57600080fd5b600090815260056020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a03808316600081815260046020908152604080832080546001019055858352600390915290208054600160a060020a0319169091179055831615610fdb57600160a060020a03831660009081526004602090815260408083208054600019019055838352600590915290208054600160a060020a03191690555b6000818152600860205260409020600381018054600483018054600160a060020a0319908116600160a060020a038085169190911790925560028501805493821684841617909455600185018054938216848416179094559354919093169083161790558316156110725760008181526008602052604090208054600160a060020a031916600160a060020a03851617905561109a565b60008181526008602052604090208054600160a060020a03191630600160a060020a03161790555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b6000828211156110fb57fe5b50900390565b600080828481151561110f57fe5b0490508091505b5092915050565b6000808315156111305760009150611116565b5082820282848281151561114057fe5b041461114857fe5b9392505050565b60008282018381101561114857fe5b611166611331565b60006020604051908101604052858152600b805491935060019180830161118d838261134a565b600092835260209092208591018151819080516111ae92916020019061136e565b50505003905063ffffffff811681146111c657600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef2818686604051838152600160a060020a038216604082015260606020820181815290820184818151815260200191508051906020019080838360005b8381101561123b578082015183820152602001611223565b50505050905090810190601f1680156112685780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1600081815260066020908152604080832086905560079091528082209190915560a090519081016040908152600160a060020a033016808352602080840182905282840182905260608401829052608084019190915260008481526008909152206112e39160056113ec565b506112f060008583610f5a565b5050505050565b60206040519081016040526000815290565b60a06040519081016040526005815b6000815260001990910190602001816113185790505090565b6020604051908101604052806113456112f7565b905290565b8154818355818115116106f6576000838152602090206106f6918101908301611442565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113af57805160ff19168380011785556113dc565b828001600101855582156113dc579182015b828111156113dc5782518255916020019190600101906113c1565b506113e8929150611465565b5090565b8260058101928215611436579160200282015b828111156114365782518254600160a060020a031916600160a060020a0391909116178255602092909201916001909101906113ff565b506113e892915061147f565b6105cf91905b808211156113e857600061145c82826114a3565b50600101611448565b6105cf91905b808211156113e8576000815560010161146b565b6105cf91905b808211156113e8578054600160a060020a0319168155600101611485565b50805460018160011615610100020316600290046000825580601f106114c9575061069f565b601f01602090049060005260206000209081019061069f91906114655600a165627a7a723058201a47139f64b5be194eaca80ee0fabcd8c9b9c2f889abe17a3a41348e00289ad00029

Swarm Source

bzzr://1a47139f64b5be194eaca80ee0fabcd8c9b9c2f889abe17a3a41348e00289ad0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.