ETH Price: $2,710.99 (+1.66%)

Contract

0x476C331d7F6569DC4Bd16EF6673f7A89Cd6F37C3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Payout54539562018-04-17 0:52:482495 days ago1523926368IN
0x476C331d...9Cd6F37C3
0 ETH0.00003121
Withdraw Funds54539502018-04-17 0:50:452495 days ago1523926245IN
0x476C331d...9Cd6F37C3
0 ETH0.000032241
Withdraw Funds54539402018-04-17 0:48:262495 days ago1523926106IN
0x476C331d...9Cd6F37C3
0 ETH0.000032241
Withdraw Funds54539322018-04-17 0:45:262495 days ago1523925926IN
0x476C331d...9Cd6F37C3
0 ETH0.000032241
Withdraw Funds52400952018-03-12 4:25:262531 days ago1520828726IN
0x476C331d...9Cd6F37C3
0 ETH0.000064482
Withdraw Funds52400532018-03-12 4:14:292531 days ago1520828069IN
0x476C331d...9Cd6F37C3
0 ETH0.000114482
Purchase51602822018-02-26 15:37:042544 days ago1519659424IN
0x476C331d...9Cd6F37C3
0.2362325 ETH0.000194763
Purchase51383442018-02-22 21:36:362548 days ago1519335396IN
0x476C331d...9Cd6F37C3
0.09277113 ETH0.0029214945
Purchase51383422018-02-22 21:35:282548 days ago1519335328IN
0x476C331d...9Cd6F37C3
0.14803903 ETH0.0012984420
Purchase51380512018-02-22 20:27:172548 days ago1519331237IN
0x476C331d...9Cd6F37C3
0.04360243 ETH0.000318784
Purchase51378882018-02-22 19:49:482548 days ago1519328988IN
0x476C331d...9Cd6F37C3
0.001 ETH0.000091954
Purchase51378882018-02-22 19:49:482548 days ago1519328988IN
0x476C331d...9Cd6F37C3
0.00963177 ETH0.0022989100
Purchase51378882018-02-22 19:49:482548 days ago1519328988IN
0x476C331d...9Cd6F37C3
0.09277113 ETH0.00344835150
Purchase51378882018-02-22 19:49:482548 days ago1519328988IN
0x476C331d...9Cd6F37C3
0.14803903 ETH0.00344835150
Purchase51378872018-02-22 19:49:382548 days ago1519328978IN
0x476C331d...9Cd6F37C3
0.14803903 ETH0.000045972
Purchase51378832018-02-22 19:48:292548 days ago1519328909IN
0x476C331d...9Cd6F37C3
0.09277113 ETH0.000045972
Purchase51378732018-02-22 19:46:192548 days ago1519328779IN
0x476C331d...9Cd6F37C3
0.02049314 ETH0.000045972
Purchase51378672018-02-22 19:44:432548 days ago1519328683IN
0x476C331d...9Cd6F37C3
0.00212765 ETH0.000045972
Purchase51378582018-02-22 19:42:432548 days ago1519328563IN
0x476C331d...9Cd6F37C3
0.02049314 ETH0.000045972
Purchase51378492018-02-22 19:41:062548 days ago1519328466IN
0x476C331d...9Cd6F37C3
0.00212765 ETH0.000045972
Purchase51378012018-02-22 19:30:162548 days ago1519327816IN
0x476C331d...9Cd6F37C3
0.02049314 ETH0.000248475
Purchase51377872018-02-22 19:27:132548 days ago1519327633IN
0x476C331d...9Cd6F37C3
0.001 ETH0.000045972
Purchase51376982018-02-22 19:03:382548 days ago1519326218IN
0x476C331d...9Cd6F37C3
0.1 ETH0.000604767
Purchase51376972018-02-22 19:03:342548 days ago1519326214IN
0x476C331d...9Cd6F37C3
0.1 ETH0.000499767
Purchase51376942018-02-22 19:03:132548 days ago1519326193IN
0x476C331d...9Cd6F37C3
0.1 ETH0.000451168
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
54539562018-04-17 0:52:482495 days ago1523926368
0x476C331d...9Cd6F37C3
0.43056315 ETH
54539502018-04-17 0:50:452495 days ago1523926245
0x476C331d...9Cd6F37C3
8 ETH
54539402018-04-17 0:48:262495 days ago1523926106
0x476C331d...9Cd6F37C3
3 ETH
54539322018-04-17 0:45:262495 days ago1523925926
0x476C331d...9Cd6F37C3
0.001 ETH
52400952018-03-12 4:25:262531 days ago1520828726
0x476C331d...9Cd6F37C3
1 ETH
52400532018-03-12 4:14:292531 days ago1520828069
0x476C331d...9Cd6F37C3
0.001 ETH
51602822018-02-26 15:37:042544 days ago1519659424
0x476C331d...9Cd6F37C3
0.22205855 ETH
51383442018-02-22 21:36:362548 days ago1519335396
0x476C331d...9Cd6F37C3
0.08720486 ETH
51383422018-02-22 21:35:282548 days ago1519335328
0x476C331d...9Cd6F37C3
0.13915669 ETH
51380512018-02-22 20:27:172548 days ago1519331237
0x476C331d...9Cd6F37C3
0.04098628 ETH
51378012018-02-22 19:30:162548 days ago1519327816
0x476C331d...9Cd6F37C3
0.01926355 ETH
51376982018-02-22 19:03:382548 days ago1519326218
0x476C331d...9Cd6F37C3
0.09036822 ETH
51376982018-02-22 19:03:382548 days ago1519326218
0x476C331d...9Cd6F37C3
0.00905387 ETH
51376972018-02-22 19:03:342548 days ago1519326214
0x476C331d...9Cd6F37C3
0.09547306 ETH
51376972018-02-22 19:03:342548 days ago1519326214
0x476C331d...9Cd6F37C3
0.00425531 ETH
51376942018-02-22 19:03:132548 days ago1519326193
0x476C331d...9Cd6F37C3
0.09787234 ETH
51376942018-02-22 19:03:132548 days ago1519326193
0x476C331d...9Cd6F37C3
0.00199999 ETH
51376822018-02-22 19:00:042548 days ago1519326004
0x476C331d...9Cd6F37C3
0.00722886 ETH
51376822018-02-22 19:00:042548 days ago1519326004
0x476C331d...9Cd6F37C3
0.08720486 ETH
51376752018-02-22 18:58:222548 days ago1519325902
0x476C331d...9Cd6F37C3
0.05639756 ETH
51376752018-02-22 18:58:222548 days ago1519325902
0x476C331d...9Cd6F37C3
0.04098628 ETH
51376752018-02-22 18:58:222548 days ago1519325902
0x476C331d...9Cd6F37C3
0.00722886 ETH
51376752018-02-22 18:58:222548 days ago1519325902
0x476C331d...9Cd6F37C3
0.08720486 ETH
51376752018-02-22 18:58:222548 days ago1519325902
0x476C331d...9Cd6F37C3
0.10196096 ETH
51376752018-02-22 18:58:222548 days ago1519325902
0x476C331d...9Cd6F37C3
0.13915669 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoliticianToken

Compiler Version
v0.4.20-nightly.2018.1.6+commit.2548228b

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

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 view 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 PoliticianToken is ERC721 {

  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new politician 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 newOwner, 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);

  /// @dev Emitted when a bug is found int the contract and the contract is upgraded at a new address.
  /// In the event this happens, the current contract is paused indefinitely
  event ContractUpgrade(address newContract);

  /*** CONSTANTS ***/

  /// @notice Name and symbol of the non fungible token, as defined in ERC721.
  string public constant NAME = "CryptoPoliticians"; // solhint-disable-line
  string public constant SYMBOL = "POLITICIAN"; // solhint-disable-line
  bool private erc721Enabled = false;
  uint256 private startingPrice = 0.001 ether;
  uint256 private constant PROMO_CREATION_LIMIT = 5000;
  uint256 private firstStepLimit =  0.05 ether;
  uint256 private secondStepLimit = 0.5 ether;
  uint256 private thirdStepLimit = 2.0 ether;

  /*** STORAGE ***/

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

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

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


  // 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 Politician {

    //name of the politician
    string name;

  }

  Politician[] private politicians;

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

  modifier onlyERC721() {
    require(erc721Enabled);
    _;
  }

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

  /*** CONSTRUCTOR ***/
  function PoliticianToken() 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 onlyERC721 {
    // Caller must own token.
    require(_owns(msg.sender, _tokenId));

    politicianIndexToApproved[_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 Politician with the given name and _price and assignes it to an address.
  function createPromoPolitician(address _owner, string _name, uint256 _price) public onlyCOO {
    require(promoCreatedCount < PROMO_CREATION_LIMIT);

    address politicianOwner = _owner;

    if (politicianOwner == address(0)) {
      politicianOwner = cooAddress;
    }

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

    promoCreatedCount++;
    _createPolitician(_name, politicianOwner, _price);
  }

  /// @dev Creates a new Politician with the given name
  function createContractPolitician(string _name) public onlyCOO {
    _createPolitician(_name, address(this), startingPrice);
  }

  /// @notice Returns all the relevant information about a specific politician.
  /// @param _tokenId The tokenId of the politician of interest.
  function getPolitician(uint256 _tokenId) public view returns (
    string politicianName,
    uint256 sellingPrice,
    address owner
  ) {
    Politician storage politician = politicians[_tokenId];
    politicianName = politician.name;
    sellingPrice = politicianIndexToPrice[_tokenId];
    owner = politicianIndexToOwner[_tokenId];
  }

  function changePoliticianName(uint256 _tokenId, string _name) public onlyCOO {
    require(_tokenId < politicians.length);
    politicians[_tokenId].name = _name;
  }

  /* ERC721 */
  function implementsERC721() public view returns (bool _implements) {
    return erc721Enabled;
  }

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

  /// 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 = politicianIndexToOwner[_tokenId];
    require(owner != address(0));
  }

  function payout(address _to) public onlyCLevel {
    _payout(_to);
  }

  function withdrawFunds(address _to, uint256 amount) public onlyCLevel {
    _withdrawFunds(_to, amount);
  }

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

    uint256 sellingPrice = politicianIndexToPrice[_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
      politicianIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 94);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      politicianIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 150), 94);
    } else if (sellingPrice < thirdStepLimit) {
      // second stage
      politicianIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 125), 94);
    } else {
      // third stage
      politicianIndexToPrice[_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, politicianIndexToPrice[_tokenId], oldOwner, newOwner,
      politicians[_tokenId].name);

    msg.sender.transfer(purchaseExcess);
  }

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

  // Unlocks ERC721 behaviour, allowing for trading on third party platforms.
  function enableERC721() public onlyCEO {
    erc721Enabled = true;
  }

  /// @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 onlyCOO {
    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 = politicianIndexToOwner[_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 politician 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 Politicians array looking for politicians 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 totalPoliticians = totalSupply();
      uint256 resultIndex = 0;

      uint256 politicianId;
      for (politicianId = 0; politicianId <= totalPoliticians; politicianId++) {
        if (politicianIndexToOwner[politicianId] == _owner) {
          result[resultIndex] = politicianId;
          resultIndex++;
        }
      }
      return result;
    }
  }

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

  /// For creating Politician
  function _createPolitician(string _name, address _owner, uint256 _price) private {
    Politician memory _politician = Politician({
      name: _name
    });
    uint256 newPoliticianId = politicians.push(_politician) - 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(newPoliticianId == uint256(uint32(newPoliticianId)));

    Birth(newPoliticianId, _name, _owner);

    politicianIndexToPrice[newPoliticianId] = _price;

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

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == politicianIndexToOwner[_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);
    }
  }

  function _withdrawFunds(address _to, uint256 amount) private {
    require(this.balance >= amount);
    if (_to == address(0)) {
      ceoAddress.transfer(amount);
    } else {
      _to.transfer(amount);
    }
  }

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

    // When creating new polticians _from is 0x0, but we can't account that address.
    if (_from != address(0)) {
      ownershipTokenCount[_from]--;
      // clear any previously approved ownership exchange
      delete politicianIndexToApproved[_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 Security Audit

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":"","type":"uint256"}],"name":"politicianIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"_implements","type":"bool"}],"payable":false,"stateMutability":"view","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":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableERC721","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPolitician","outputs":[{"name":"politicianName","type":"string"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"}],"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":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_name","type":"string"}],"name":"changePoliticianName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_name","type":"string"},{"name":"_price","type":"uint256"}],"name":"createPromoPolitician","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":"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":"","type":"uint256"}],"name":"politicianIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"createContractPolitician","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"newOwner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","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"}]

606060405260008060006101000a81548160ff02191690831515021790555066038d7ea4c6800060015566b1a2bc2ec500006002556706f05b59d3b20000600355671bc16d674ec80000600455341561005757600080fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061257f806100e86000396000f300606060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e455461461017a57806306fdde03146101a3578063095ea7b3146102315780630a0f8168146102735780630b7e9c44146102c85780630dc6d81e146103015780631051db341461036457806318160ddd1461039157806323b872dd146103ba57806327d7874c1461041b5780632ba73c15146104545780636352211e1461048d57806370a08231146104f057806371dc761e1461053d5780637d8d5c9b146105525780638462151c146106285780638ad80035146106b657806395d89b411461071c5780639f1dec6b146107aa578063a3f4df7e1461082f578063a9059cbb146108bd578063b047fb50146108ff578063b2e6ceeb14610954578063b2faec3814610977578063b9186d7d146109da578063c107532914610a11578063c7468ebc14610a53578063efef39a114610ab0578063f76f8d7814610ac8575b600080fd5b341561018557600080fd5b61018d610b56565b6040518082815260200191505060405180910390f35b34156101ae57600080fd5b6101b6610b5c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023c57600080fd5b610271600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b9f565b005b341561027e57600080fd5b610286610c89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102d357600080fd5b6102ff600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610caf565b005b341561030c57600080fd5b6103226004808035906020019091905050610d6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036f57600080fd5b610377610da2565b604051808215151515815260200191505060405180910390f35b341561039c57600080fd5b6103a4610db8565b6040518082815260200191505060405180910390f35b34156103c557600080fd5b610419600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610dc5565b005b341561042657600080fd5b610452600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e2d565b005b341561045f57600080fd5b61048b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f09565b005b341561049857600080fd5b6104ae6004808035906020019091905050610fe5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104fb57600080fd5b610527600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105e565b6040518082815260200191505060405180910390f35b341561054857600080fd5b6105506110a7565b005b341561055d57600080fd5b610573600480803590602001909190505061111f565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561063357600080fd5b61065f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061123b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106a2578082015181840152602081019050610687565b505050509050019250505060405180910390f35b34156106c157600080fd5b61071a600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611372565b005b341561072757600080fd5b61072f611417565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076f578082015181840152602081019050610754565b50505050905090810190601f16801561079c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107b557600080fd5b61082d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190505061145a565b005b341561083a57600080fd5b61084261155b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610882578082015181840152602081019050610867565b50505050905090810190601f1680156108af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108c857600080fd5b6108fd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611594565b005b341561090a57600080fd5b6109126115e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095f57600080fd5b610975600480803590602001909190505061160c565b005b341561098257600080fd5b6109986004808035906020019091905050611681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109e557600080fd5b6109fb60048080359060200190919050506116b4565b6040518082815260200191505060405180910390f35b3415610a1c57600080fd5b610a51600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116d1565b005b3415610a5e57600080fd5b610aae600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611793565b005b610ac660048080359060200190919050506117ff565b005b3415610ad357600080fd5b610adb611be7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b1b578082015181840152602081019050610b00565b50505050905090810190601f168015610b485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600b5481565b610b64612335565b6040805190810160405280601181526020017f43727970746f506f6c6974696369616e73000000000000000000000000000000815250905090565b6000809054906101000a900460ff161515610bb957600080fd5b610bc33382611c20565b1515610bce57600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d585750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610d6357600080fd5b610d6c81611c8c565b50565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b6000600c80549050905090565b6000809054906101000a900460ff161515610ddf57600080fd5b610de98382611c20565b1515610df457600080fd5b610dfe8282611d9a565b1515610e0957600080fd5b610e1282611e06565b1515610e1d57600080fd5b610e28838383611e3f565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ec557600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f6557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fa157600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561105957600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561110357600080fd5b60016000806101000a81548160ff021916908315150217905550565b611127612335565b6000806000600c8581548110151561113b57fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e05780601f106111b5576101008083540402835291602001916111e0565b820191906000526020600020905b8154815290600101906020018083116111c357829003601f168201915b50505050509350600860008681526020019081526020016000205492506005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193909250565b611243612349565b600061124d612349565b600080600061125b8761105e565b9450600085141561128d5760006040518059106112755750595b90808252806020026020018201604052509550611368565b8460405180591061129b5750595b908082528060200260200182016040525093506112b6610db8565b925060009150600090505b8281111515611364578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113575780848381518110151561134057fe5b906020019060200201818152505081806001019250505b80806001019150506112c1565b8395505b5050505050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ce57600080fd5b600c80549050821015156113e157600080fd5b80600c838154811015156113f157fe5b9060005260206000209001600001908051906020019061141292919061235d565b505050565b61141f612335565b6040805190810160405280600a81526020017f504f4c4954494349414e00000000000000000000000000000000000000000000815250905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114b857600080fd5b611388600b541015156114ca57600080fd5b839050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561152857600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b6000821115156115385760015491505b600b60008154809291906001019190505550611555838284612041565b50505050565b6040805190810160405280601181526020017f43727970746f506f6c6974696369616e7300000000000000000000000000000081525081565b6000809054906101000a900460ff1615156115ae57600080fd5b6115b83382611c20565b15156115c357600080fd5b6115cc82611e06565b15156115d757600080fd5b6115e2338383611e3f565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061165182611e06565b151561165c57600080fd5b6116668284611d9a565b151561167157600080fd5b61167c818385611e3f565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060086000838152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061177a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178557600080fd5b61178f82826121bf565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ef57600080fd5b6117fc8130600154612041565b50565b60008060008060006005600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450339350600860008781526020019081526020016000205492508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561189157600080fd5b61189a84611e06565b15156118a557600080fd5b8234101515156118b457600080fd5b6118c96118c284605e6122c6565b6064612301565b91506118d5348461231c565b9050600254831015611912576118f66118ef8460c86122c6565b605e612301565b60086000888152602001908152602001600020819055506119b7565b60035483101561194d5761193161192a8460966122c6565b605e612301565b60086000888152602001908152602001600020819055506119b6565b6004548310156119885761196c61196584607d6122c6565b605e612301565b60086000888152602001908152602001600020819055506119b5565b61199d6119968460736122c6565b605e612301565b60086000888152602001908152602001600020819055505b5b5b6119c2858588611e3f565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515611a38578473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515611a3757600080fd5b5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8684600860008a8152602001908152602001600020548888600c8c815481101515611a7f57fe5b9060005260206000209001600001604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611b8c5780601f10611b6157610100808354040283529160200191611b8c565b820191906000526020600020905b815481529060010190602001808311611b6f57829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611bdf57600080fd5b505050505050565b6040805190810160405280600a81526020017f504f4c4954494349414e0000000000000000000000000000000000000000000081525081565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d3f57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611d3a57600080fd5b611d97565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611d9657600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515611f9d57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6120496123dd565b60006020604051908101604052808681525091506001600c805480600101828161207391906123f7565b9160005260206000209001600085909190915060008201518160000190805190602001906120a2929190612423565b5050500390508063ffffffff16811415156120bc57600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561215857808201518184015260208101905061213d565b50505050905090810190601f1680156121855780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a18260086000838152602001908152602001600020819055506121b860008583611e3f565b5050505050565b803073ffffffffffffffffffffffffffffffffffffffff1631101515156121e557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561228157600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561227c57600080fd5b6122c2565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156122c157600080fd5b5b5050565b60008060008414156122db57600091506122fa565b82840290508284828115156122ec57fe5b041415156122f657fe5b8091505b5092915050565b600080828481151561230f57fe5b0490508091505092915050565b600082821115151561232a57fe5b818303905092915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061239e57805160ff19168380011785556123cc565b828001600101855582156123cc579182015b828111156123cb5782518255916020019190600101906123b0565b5b5090506123d991906124a3565b5090565b6020604051908101604052806123f16124c8565b81525090565b81548183558181151161241e5781836000526020600020918201910161241d91906124dc565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246457805160ff1916838001178555612492565b82800160010185558215612492579182015b82811115612491578251825591602001919060010190612476565b5b50905061249f91906124a3565b5090565b6124c591905b808211156124c15760008160009055506001016124a9565b5090565b90565b602060405190810160405280600081525090565b61250891905b8082111561250457600080820160006124fb919061250b565b506001016124e2565b5090565b90565b50805460018160011615610100020316600290046000825580601f106125315750612550565b601f01602090049060005260206000209081019061254f91906124a3565b5b505600a165627a7a72305820dfcf2abe8d88eec08d011c6eef3ae6e5a4ea1ddb8e87513e149853246c412de70029

Deployed Bytecode

0x606060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e455461461017a57806306fdde03146101a3578063095ea7b3146102315780630a0f8168146102735780630b7e9c44146102c85780630dc6d81e146103015780631051db341461036457806318160ddd1461039157806323b872dd146103ba57806327d7874c1461041b5780632ba73c15146104545780636352211e1461048d57806370a08231146104f057806371dc761e1461053d5780637d8d5c9b146105525780638462151c146106285780638ad80035146106b657806395d89b411461071c5780639f1dec6b146107aa578063a3f4df7e1461082f578063a9059cbb146108bd578063b047fb50146108ff578063b2e6ceeb14610954578063b2faec3814610977578063b9186d7d146109da578063c107532914610a11578063c7468ebc14610a53578063efef39a114610ab0578063f76f8d7814610ac8575b600080fd5b341561018557600080fd5b61018d610b56565b6040518082815260200191505060405180910390f35b34156101ae57600080fd5b6101b6610b5c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023c57600080fd5b610271600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b9f565b005b341561027e57600080fd5b610286610c89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102d357600080fd5b6102ff600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610caf565b005b341561030c57600080fd5b6103226004808035906020019091905050610d6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036f57600080fd5b610377610da2565b604051808215151515815260200191505060405180910390f35b341561039c57600080fd5b6103a4610db8565b6040518082815260200191505060405180910390f35b34156103c557600080fd5b610419600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610dc5565b005b341561042657600080fd5b610452600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e2d565b005b341561045f57600080fd5b61048b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f09565b005b341561049857600080fd5b6104ae6004808035906020019091905050610fe5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104fb57600080fd5b610527600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105e565b6040518082815260200191505060405180910390f35b341561054857600080fd5b6105506110a7565b005b341561055d57600080fd5b610573600480803590602001909190505061111f565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561063357600080fd5b61065f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061123b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106a2578082015181840152602081019050610687565b505050509050019250505060405180910390f35b34156106c157600080fd5b61071a600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611372565b005b341561072757600080fd5b61072f611417565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076f578082015181840152602081019050610754565b50505050905090810190601f16801561079c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107b557600080fd5b61082d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190505061145a565b005b341561083a57600080fd5b61084261155b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610882578082015181840152602081019050610867565b50505050905090810190601f1680156108af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108c857600080fd5b6108fd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611594565b005b341561090a57600080fd5b6109126115e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095f57600080fd5b610975600480803590602001909190505061160c565b005b341561098257600080fd5b6109986004808035906020019091905050611681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109e557600080fd5b6109fb60048080359060200190919050506116b4565b6040518082815260200191505060405180910390f35b3415610a1c57600080fd5b610a51600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116d1565b005b3415610a5e57600080fd5b610aae600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611793565b005b610ac660048080359060200190919050506117ff565b005b3415610ad357600080fd5b610adb611be7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b1b578082015181840152602081019050610b00565b50505050905090810190601f168015610b485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600b5481565b610b64612335565b6040805190810160405280601181526020017f43727970746f506f6c6974696369616e73000000000000000000000000000000815250905090565b6000809054906101000a900460ff161515610bb957600080fd5b610bc33382611c20565b1515610bce57600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d585750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610d6357600080fd5b610d6c81611c8c565b50565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b6000600c80549050905090565b6000809054906101000a900460ff161515610ddf57600080fd5b610de98382611c20565b1515610df457600080fd5b610dfe8282611d9a565b1515610e0957600080fd5b610e1282611e06565b1515610e1d57600080fd5b610e28838383611e3f565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ec557600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f6557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fa157600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561105957600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561110357600080fd5b60016000806101000a81548160ff021916908315150217905550565b611127612335565b6000806000600c8581548110151561113b57fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e05780601f106111b5576101008083540402835291602001916111e0565b820191906000526020600020905b8154815290600101906020018083116111c357829003601f168201915b50505050509350600860008681526020019081526020016000205492506005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193909250565b611243612349565b600061124d612349565b600080600061125b8761105e565b9450600085141561128d5760006040518059106112755750595b90808252806020026020018201604052509550611368565b8460405180591061129b5750595b908082528060200260200182016040525093506112b6610db8565b925060009150600090505b8281111515611364578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113575780848381518110151561134057fe5b906020019060200201818152505081806001019250505b80806001019150506112c1565b8395505b5050505050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ce57600080fd5b600c80549050821015156113e157600080fd5b80600c838154811015156113f157fe5b9060005260206000209001600001908051906020019061141292919061235d565b505050565b61141f612335565b6040805190810160405280600a81526020017f504f4c4954494349414e00000000000000000000000000000000000000000000815250905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114b857600080fd5b611388600b541015156114ca57600080fd5b839050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561152857600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b6000821115156115385760015491505b600b60008154809291906001019190505550611555838284612041565b50505050565b6040805190810160405280601181526020017f43727970746f506f6c6974696369616e7300000000000000000000000000000081525081565b6000809054906101000a900460ff1615156115ae57600080fd5b6115b83382611c20565b15156115c357600080fd5b6115cc82611e06565b15156115d757600080fd5b6115e2338383611e3f565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061165182611e06565b151561165c57600080fd5b6116668284611d9a565b151561167157600080fd5b61167c818385611e3f565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060086000838152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061177a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178557600080fd5b61178f82826121bf565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ef57600080fd5b6117fc8130600154612041565b50565b60008060008060006005600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450339350600860008781526020019081526020016000205492508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561189157600080fd5b61189a84611e06565b15156118a557600080fd5b8234101515156118b457600080fd5b6118c96118c284605e6122c6565b6064612301565b91506118d5348461231c565b9050600254831015611912576118f66118ef8460c86122c6565b605e612301565b60086000888152602001908152602001600020819055506119b7565b60035483101561194d5761193161192a8460966122c6565b605e612301565b60086000888152602001908152602001600020819055506119b6565b6004548310156119885761196c61196584607d6122c6565b605e612301565b60086000888152602001908152602001600020819055506119b5565b61199d6119968460736122c6565b605e612301565b60086000888152602001908152602001600020819055505b5b5b6119c2858588611e3f565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515611a38578473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515611a3757600080fd5b5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8684600860008a8152602001908152602001600020548888600c8c815481101515611a7f57fe5b9060005260206000209001600001604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611b8c5780601f10611b6157610100808354040283529160200191611b8c565b820191906000526020600020905b815481529060010190602001808311611b6f57829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611bdf57600080fd5b505050505050565b6040805190810160405280600a81526020017f504f4c4954494349414e0000000000000000000000000000000000000000000081525081565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d3f57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611d3a57600080fd5b611d97565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611d9657600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515611f9d57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6120496123dd565b60006020604051908101604052808681525091506001600c805480600101828161207391906123f7565b9160005260206000209001600085909190915060008201518160000190805190602001906120a2929190612423565b5050500390508063ffffffff16811415156120bc57600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561215857808201518184015260208101905061213d565b50505050905090810190601f1680156121855780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a18260086000838152602001908152602001600020819055506121b860008583611e3f565b5050505050565b803073ffffffffffffffffffffffffffffffffffffffff1631101515156121e557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561228157600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561227c57600080fd5b6122c2565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156122c157600080fd5b5b5050565b60008060008414156122db57600091506122fa565b82840290508284828115156122ec57fe5b041415156122f657fe5b8091505b5092915050565b600080828481151561230f57fe5b0490508091505092915050565b600082821115151561232a57fe5b818303905092915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061239e57805160ff19168380011785556123cc565b828001600101855582156123cc579182015b828111156123cb5782518255916020019190600101906123b0565b5b5090506123d991906124a3565b5090565b6020604051908101604052806123f16124c8565b81525090565b81548183558181151161241e5781836000526020600020918201910161241d91906124dc565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246457805160ff1916838001178555612492565b82800160010185558215612492579182015b82811115612491578251825591602001919060010190612476565b5b50905061249f91906124a3565b5090565b6124c591905b808211156124c15760008160009055506001016124a9565b5090565b90565b602060405190810160405280600081525090565b61250891905b8082111561250457600080820160006124fb919061250b565b506001016124e2565b5090565b90565b50805460018160011615610100020316600290046000825580601f106125315750612550565b601f01602090049060005260206000209081019061254f91906124a3565b5b505600a165627a7a72305820dfcf2abe8d88eec08d011c6eef3ae6e5a4ea1ddb8e87513e149853246c412de70029

Swarm Source

bzzr://dfcf2abe8d88eec08d011c6eef3ae6e5a4ea1ddb8e87513e149853246c412de7

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.