Contract 0x393B5fd2b993EaF419fbadAB630BC9bd3d5792E9

 

Contract Overview

Balance:
2 wei

EtherValue:
Less Than $0.01 (@ $148.02/ETH)
TxHash Block Age From To Value [TxFee]
0xaf242d9a7a78c978f99b2f6379a394d254139f387178a68308784241982fe73b5836626243 days 7 hrs ago0x591018f82e3d5c3274de7e6625580e02afb864cc IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.032 Ether0.000270500127
0xd616de3b23b35f88e531fe037a991d782521fbbd0b56abcb7311a50ee122519d5315456333 days 7 hrs ago0xdd9919d12db76ac8609078114c41098e44b732fd IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.01 Ether0.000078637
0xa5fd47a5be12bc0de7ea53b70093c3439ffa31433101f35bee5a8ed351ec67235315436333 days 7 hrs ago0x0b46faecfe315c44f1ddf463ac68d1d5c3bb1912 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.032 Ether0.00061987
0x4f7611c20ea8d1d7c55efa96a31aba9b6d71ad866256c20721c8610c3ce16b705281114339 days 1 hr ago0x103b3a31c6732c8615161757c64d2c5ed7daad38 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90 Ether0.000104028
0x1c1fd67b603b6c46e19dde3170607e138cff58583a25889fc6b55523780b119a5279206339 days 9 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.022222222222222 Ether0.000070337
0x026293aebb093d2d4b09beb7abda0beea60250afbe898f7176da21233c5f2cf65279092339 days 9 hrs ago0x3d2084d65cd56583aaf306e38db432a399b34b63 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.01 Ether0.000078637
0x7312aeaa8594e7d9bc0eb87957599440e420d9a05b5f8032342eba0bfa9a2c475279078339 days 9 hrs ago0x543239e7407bf2755099d8d892260eb1ec288008 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.032 Ether0.00071117
0x9e3e9133437ff5ea2613d962d5b27bc9c17a5bf3d866238d759436cc46a2f9335229334347 days 20 hrs ago0x2d6b21a602d79e5af9aae90fb267a6fb90e805d3 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.032 Ether0.000618078
0xfd55d7fb40af117c9dfc7d4ce446aef6fff86607501f0205f34f2c277944d6b85203319352 days 6 hrs ago0x2e6236591bfa37c683ce60d6cfde40396a114ff1 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.01 Ether0.000235911
0xe2631a897b3c62774cb4e994a59e24fdda261d3cb9b97def884a99f7c8d064935203304352 days 6 hrs ago0xb080b202b921d0d1fd804d0071615eb09e326aac IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.016 Ether0.001552875
0x389c4540d07e3e33ed189837187bc9fd72149074ca85ad011f2a939d8b236faf5203288352 days 7 hrs ago0x70580ea14d98a53fd59376dc7e959f4a6129bb9b IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.016 Ether0.000103644
0x742b52fbe5b910b83292aec42e408200066fb75ac17d709030fe0ab7f11b8a4d5203286352 days 7 hrs ago0x0982a0bf061f3cec2a004b4d2c802f479099c971 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.01 Ether0.000235911
0x8bd367d9ef836156a6340ef25f3fe63dbdca2700c0c39c4f336a9791b258a62d5203284352 days 7 hrs ago0x70580ea14d98a53fd59376dc7e959f4a6129bb9b IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.000328312
0x14f111866cc1caa2bb954f71aa272802d16a386dcff089147e3c90de95b032ec5203283352 days 7 hrs ago0x8da4f82dc4d03c5421bb2087f858750c650d8571 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.016 Ether0.000618718
0x2f74a22d12d8833a569c44c202c2efb2e8ce37d8fc49d1c0799717058486c4355203282352 days 7 hrs ago0x70580ea14d98a53fd59376dc7e959f4a6129bb9b IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.000164156
0x2491ec44add971c579de8a85f0bdbb77629bed998ef88163a6931f2bfc9b6e5d5203282352 days 7 hrs ago0xb5608a45c9f3f8f28fcc8d5f1cc76c093bd3c2bc IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.0001007688
0x8cea3dcfe9e96be1a2dc354f5736b08931cb129dc11eab67144907790583d6195203279352 days 7 hrs ago0x5cff8ddbb422b8377ee10dd75ba5730f18082ee7 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.016 Ether0.003198396
0x5d47b5ea9bc833ba53292f3310188c29ba0c83368504d24b6f8c7eb8f194a33b5203278352 days 7 hrs ago0x1a5fe261e8d9e8efc5064eeccc09b531e6e24bd3 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.032 Ether0.001326688
0x161f4c5d27af8bb165d702384a40bd6b6cb94a25d966ba6f6d82bb5dfd2058d75203275352 days 7 hrs ago0x5cff8ddbb422b8377ee10dd75ba5730f18082ee7 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.0009471
0x989f10b85bc1e229627a4e78e7a5e135f7c131cd61c577468fe3b87bf087fa5f5203274352 days 7 hrs ago0x6132e824e08b78eef93a58108b13497104637122 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.001007412
0x8c1bb374bef7b3939601b78bf9de9939f41648a2a081eb98261fb9945be8a7825203272352 days 7 hrs ago0x5cff8ddbb422b8377ee10dd75ba5730f18082ee7 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.0003157
0x780290d461170f299cd79a2efba2bc727f9e11ca3e94f13a7bb1db7323f680335203270352 days 7 hrs ago0x6132e824e08b78eef93a58108b13497104637122 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.001067412
0x7abd8f7c0c8f7841b828c6c420ff5b74b479aa09e9d716dbd97e0ccc873f2bf55203266352 days 7 hrs ago0x6e939be16fb56e81af69675c4038fb5fd9cc7529 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.008 Ether0.001865731
0x66384959425b77428f9730a77179f5780f64b495947d2039cc79520e706191125203260352 days 7 hrs ago0x8da4f82dc4d03c5421bb2087f858750c650d8571 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.022222222222222 Ether0.000422022
0xd0f4d5034926e711a31a33018743be488b27d5cc598c0c1f4759fab019aea7e95203252352 days 7 hrs ago0x8da4f82dc4d03c5421bb2087f858750c650d8571 IN  0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90.01 Ether0.000142296
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xaf242d9a7a78c978f99b2f6379a394d254139f387178a68308784241982fe73b5836626243 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.032 Ether
0xd616de3b23b35f88e531fe037a991d782521fbbd0b56abcb7311a50ee122519d5315456333 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x0b46faecfe315c44f1ddf463ac68d1d5c3bb19120.001 Ether
0xd616de3b23b35f88e531fe037a991d782521fbbd0b56abcb7311a50ee122519d5315456333 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.009 Ether
0xa5fd47a5be12bc0de7ea53b70093c3439ffa31433101f35bee5a8ed351ec67235315436333 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.032 Ether
0x1c1fd67b603b6c46e19dde3170607e138cff58583a25889fc6b55523780b119a5279206339 days 9 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaec539a116fa75e8bdcf016d3c146a25bc1af93b2 wei
0x1c1fd67b603b6c46e19dde3170607e138cff58583a25889fc6b55523780b119a5279206339 days 9 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x543239e7407bf2755099d8d892260eb1ec2880080.002222222222222222 Ether
0x1c1fd67b603b6c46e19dde3170607e138cff58583a25889fc6b55523780b119a5279206339 days 9 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x3d2084d65cd56583aaf306e38db432a399b34b630.019999999999999999 Ether
0x026293aebb093d2d4b09beb7abda0beea60250afbe898f7176da21233c5f2cf65279092339 days 9 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x543239e7407bf2755099d8d892260eb1ec2880080.001 Ether
0x026293aebb093d2d4b09beb7abda0beea60250afbe898f7176da21233c5f2cf65279092339 days 9 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.009 Ether
0x7312aeaa8594e7d9bc0eb87957599440e420d9a05b5f8032342eba0bfa9a2c475279078339 days 9 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.032 Ether
0x9e3e9133437ff5ea2613d962d5b27bc9c17a5bf3d866238d759436cc46a2f9335229334347 days 20 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.032 Ether
0xfd55d7fb40af117c9dfc7d4ce446aef6fff86607501f0205f34f2c277944d6b85203319352 days 6 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xef764bac8a438e7e498c2e5fccf0f174c3e3f8db0.001 Ether
0xfd55d7fb40af117c9dfc7d4ce446aef6fff86607501f0205f34f2c277944d6b85203319352 days 6 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.009 Ether
0xe2631a897b3c62774cb4e994a59e24fdda261d3cb9b97def884a99f7c8d064935203304352 days 6 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.016 Ether
0x742b52fbe5b910b83292aec42e408200066fb75ac17d709030fe0ab7f11b8a4d5203286352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xb327d112a560f832765a12c72451de40af3c2be20.001 Ether
0x742b52fbe5b910b83292aec42e408200066fb75ac17d709030fe0ab7f11b8a4d5203286352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.009 Ether
0x14f111866cc1caa2bb954f71aa272802d16a386dcff089147e3c90de95b032ec5203283352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.016 Ether
0x8cea3dcfe9e96be1a2dc354f5736b08931cb129dc11eab67144907790583d6195203279352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.016 Ether
0x5d47b5ea9bc833ba53292f3310188c29ba0c83368504d24b6f8c7eb8f194a33b5203278352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.032 Ether
0x989f10b85bc1e229627a4e78e7a5e135f7c131cd61c577468fe3b87bf087fa5f5203274352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.008 Ether
0x780290d461170f299cd79a2efba2bc727f9e11ca3e94f13a7bb1db7323f680335203270352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.008 Ether
0x7abd8f7c0c8f7841b828c6c420ff5b74b479aa09e9d716dbd97e0ccc873f2bf55203266352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.008 Ether
0x66384959425b77428f9730a77179f5780f64b495947d2039cc79520e706191125203260352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x8da4f82dc4d03c5421bb2087f858750c650d85712 wei
0x66384959425b77428f9730a77179f5780f64b495947d2039cc79520e706191125203260352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x183febd8828a9ac6c70c0e27fbf441b93004fc050.002222222222222222 Ether
0x66384959425b77428f9730a77179f5780f64b495947d2039cc79520e706191125203260352 days 7 hrs ago0x393b5fd2b993eaf419fbadab630bc9bd3d5792e90x220fcaf286d9b134a2487bc426e66c3f6347d7df0.019999999999999999 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: OpinionToken
Compiler Version: v0.4.20+commit.3155dd80
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.18; // solhint-disable-line



/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
/// @author Dieter Shirley <[email protected]> (https://github.com/dete)
contract ERC721 {
  // Required methods
  function approve(address _to, uint256 _tokenId) public;
  function balanceOf(address _owner) public view returns (uint256 balance);
  function implementsERC721() public pure returns (bool);
  function ownerOf(uint256 _tokenId) public view returns (address addr);
  function takeOwnership(uint256 _tokenId) public;
  function totalSupply() public view returns (uint256 total);
  function transferFrom(address _from, address _to, uint256 _tokenId) public;
  function transfer(address _to, uint256 _tokenId) public;

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

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


contract OpinionToken is ERC721 {

  /*** EVENTS ***/

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

  uint256 private firstStepLimit =  0.053613 ether;
  uint256 private secondStepLimit = 0.564957 ether;
  uint256 private numIssued=5; //number of tokens issued initially
  uint256 private constant stepMultiplier=2;//multiplier for initial opinion registration cost, not sponsorship
  uint256 private startingPrice = 0.001 ether; //will increase every token issued by stepMultiplier times
  uint256 private sponsorStartingCost=0.01 ether;//initial cost to sponsor an opinion
  //uint256 private currentIssueRemaining;
  /*** STORAGE ***/

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

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

  // @dev A mapping from opinionIDs to the price of the token.
  mapping (uint256 => uint256) private opinionIndexToPrice;
  
  // The addresses of the accounts (or contracts) that can execute actions within each roles.
  address public ceoAddress;
  address public cooAddress;

  /*** DATATYPES ***/
  struct Opinion {
    string text;
    bool claimed;
    bool deleted;
    uint8 comment;
    address sponsor;
    address antisponsor;
    uint256 totalsponsored;
    uint256 totalantisponsored;
    uint256 timestamp;
  }

  Opinion[] private opinions;

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

    opinionIndexToApproved[_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 initial set of opinions. Can only be called once.
  function createInitialItems() public onlyCOO {
    require(opinions.length==0);
    _createOpinionSet();
  }

  /// @notice Returns all the relevant information about a specific opinion.
  /// @param _tokenId The tokenId of the opinion of interest.
  function getOpinion(uint256 _tokenId) public view returns (
    uint256 sellingPrice,
    address owner,
    address sponsor,
    address antisponsor,
    uint256 amountsponsored,
    uint256 amountantisponsored,
    uint8 acomment,
    uint256 timestamp,
    string opinionText
  ) {
    Opinion storage opinion = opinions[_tokenId];
    opinionText = opinion.text;
    sellingPrice = opinionIndexToPrice[_tokenId];
    owner = opinionIndexToOwner[_tokenId];
    acomment=opinion.comment;
    sponsor=opinion.sponsor;
    antisponsor=opinion.antisponsor;
    amountsponsored=opinion.totalsponsored;
    amountantisponsored=opinion.totalantisponsored;
    timestamp=opinion.timestamp;
  }

  function compareStrings (string a, string b) public pure returns (bool){
       return keccak256(a) == keccak256(b);
   }
  
  function hasDuplicate(string _tocheck) public view returns (bool){
    return hasPriorDuplicate(_tocheck,opinions.length);
  }
  
  function hasPriorDuplicate(string _tocheck,uint256 index) public view returns (bool){
    for(uint i = 0; i<index; i++){
        if(compareStrings(_tocheck,opinions[i].text)){
            return true;
        }
    }
    return false;
  }
  
  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 = opinionIndexToOwner[_tokenId];
    require(owner != address(0));
  }

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

  function sponsorOpinion(uint256 _tokenId,uint8 comment,bool _likesOpinion) public payable {
      //ensure comment corresponds to status of token. Tokens with a comment of 0 are unregistered.
      require(comment!=0);
      require((_likesOpinion && comment<100) || (!_likesOpinion && comment>100));
      address sponsorAdr = msg.sender;
      require(_addressNotNull(sponsorAdr));
      // Making sure sent amount is greater than or equal to the sellingPrice
      uint256 sellingPrice = opinionIndexToPrice[_tokenId];
      address currentOwner=opinionIndexToOwner[_tokenId];
      address newOwner = msg.sender;
      require(_addressNotNull(newOwner));
      require(_addressNotNull(currentOwner));
      require(msg.value >= sellingPrice);
      uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 90), 100));
      uint256 ownerTake=uint256(SafeMath.div(SafeMath.mul(sellingPrice, 10), 100));
      uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
          // Update prices
    if (sellingPrice < firstStepLimit) {
      // first stage
      opinionIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 90);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      opinionIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 120), 90);
    } else {
      // third stage
      opinionIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 115), 90);
    }
    Opinion storage opinion = opinions[_tokenId];
    require(opinion.claimed);
    require(sponsorAdr!=opinion.sponsor);
    require(sponsorAdr!=opinion.antisponsor);
    require(sponsorAdr!=currentOwner);
    opinion.comment=comment;
    if(_likesOpinion){
        if(_addressNotNull(opinion.sponsor)){
            opinion.sponsor.transfer(payment);
            currentOwner.transfer(ownerTake);
        }
        else{
            currentOwner.transfer(sellingPrice);
        }
        opinion.sponsor=sponsorAdr;
        opinion.totalsponsored=SafeMath.add(opinion.totalsponsored,sellingPrice);
    }
    else{
        if(_addressNotNull(opinion.sponsor)){
            opinion.antisponsor.transfer(payment);
            ceoAddress.transfer(ownerTake);
        }
        else{
            ceoAddress.transfer(sellingPrice); //eth for initial antisponsor goes to Cryptopinions, because you wouldn't want it to go to the creator of an opinion you don't like
        }
        opinion.antisponsor=sponsorAdr;
        opinion.totalantisponsored=SafeMath.add(opinion.totalantisponsored,sellingPrice);
    }
    msg.sender.transfer(purchaseExcess);
  }
  
  //lets you permanently delete someone elses opinion.
  function deleteThis(uint256 _tokenId) public payable{
    //Cost is 1 eth or five times the current valuation of the opinion, whichever is higher.
    uint256 sellingPrice = SafeMath.mul(opinionIndexToPrice[_tokenId],5);
    if(sellingPrice<1 ether){
        sellingPrice=1 ether;
    }
    require(msg.value >= sellingPrice);
    ceoAddress.transfer(sellingPrice);
    Opinion storage opinion = opinions[_tokenId];
    opinion.deleted=true;
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
    msg.sender.transfer(purchaseExcess);
  }
  
  // Allows someone to send ether and obtain the (unclaimed only) token
  function registerOpinion(uint256 _tokenId,string _newOpinion) public payable {
    
    //Set opinion to the new opinion
    _initOpinion(_tokenId,_newOpinion);
    
    address oldOwner = opinionIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    uint256 sellingPrice = opinionIndexToPrice[_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 = sellingPrice;
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
    opinionIndexToPrice[_tokenId] = sponsorStartingCost; //initial cost to sponsor

    _transfer(oldOwner, newOwner, _tokenId);

    ceoAddress.transfer(payment);

    TokenSold(_tokenId, sellingPrice, opinionIndexToPrice[_tokenId], oldOwner, newOwner, opinions[_tokenId].text);

    msg.sender.transfer(purchaseExcess);
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return opinionIndexToPrice[_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 {
    _setCEO(_newCEO);
  }
   function _setCEO(address _newCEO) private{
         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 = opinionIndexToOwner[_tokenId];

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

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

    _transfer(oldOwner, newOwner, _tokenId);
  }

  /// @param _owner The owner whose celebrity tokens we are interested in.
  /// @dev This method MUST NEVER be called by smart contract code. First, it's fairly
  ///  expensive (it walks the entire opinions array looking for opinions 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 totalOpinions = totalSupply();
      uint256 resultIndex = 0;

      uint256 opinionId;
      for (opinionId = 0; opinionId <= totalOpinions; opinionId++) {
        if (opinionIndexToOwner[opinionId] == _owner) {
          result[resultIndex] = opinionId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return opinions.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);
  }
  
//Allows purchase of the entire contract. All revenue provisioned to ceoAddress will go to the new address specified.
//If you contact us following purchase we will transfer domain, website source code etc. to you free of charge, otherwise we will continue to maintain the frontend site for 1 year.
uint256 contractPrice=300 ether;
function buyCryptopinions(address _newCEO) payable public{
    require(msg.value >= contractPrice);
    ceoAddress.transfer(msg.value);
    _setCEO(_newCEO);
    _setPrice(9999999 ether);
}
function setPrice(uint256 newprice) public onlyCEO{
    _setPrice(newprice);
}
function _setPrice(uint256 newprice) private{
    contractPrice=newprice;
}

  /*** 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 opinionIndexToApproved[_tokenId] == _to;
  }
  
  function _createOpinionSet() private {
      for(uint i = 0; i<numIssued; i++){
        _createOpinion(DEFAULT_TEXT,ceoAddress,startingPrice);
      }
      //startingPrice = SafeMath.mul(startingPrice,stepMultiplier); //increase the price for the next set of tokens
      //currentIssueRemaining=numIssued;
      
  }
  
  //for registering an Opinion
  function _initOpinion(uint256 _tokenId,string _newOpinion) private {
      Opinion storage opinion = opinions[_tokenId];
      opinion.timestamp=now;
      opinion.text=_newOpinion;
      opinion.comment=1;
      require(!opinion.claimed);
        uint256 newprice=SafeMath.mul(stepMultiplier,opinionIndexToPrice[_tokenId]);
        //max price 1 eth
        if(newprice > 0.1 ether){ //max price for a new opinion, 1 ether
            newprice=0.1 ether;
        }
        _createOpinion("",ceoAddress,newprice); //make a new opinion for someone else to buy
        opinion.claimed=true;
      
          //currentIssueRemaining=SafeMath.sub(currentIssueRemaining,1);
          //if this is the last remaining token for sale, issue more
          //if(currentIssueRemaining == 0){
          //    _createOpinionSet();
          //}
      
      
  }
  
  /// For creating Opinion
  function _createOpinion(string _name, address _owner, uint256 _price) private {
    Opinion memory _opinion = Opinion({
      text: _name,
      claimed: false,
      deleted: false,
      comment: 0,
      sponsor: _owner,
      antisponsor: ceoAddress,
      totalsponsored:0,
      totalantisponsored:0,
      timestamp:now
    });
    uint256 newOpinionId = opinions.push(_opinion) - 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(newOpinionId == uint256(uint32(newOpinionId)));

    Birth(newOpinionId, _name, _owner);

    opinionIndexToPrice[newOpinionId] = _price;

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

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == opinionIndexToOwner[_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 opinion to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of opinions is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    opinionIndexToOwner[_tokenId] = _to;

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

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

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"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":"","type":"uint256"}],"name":"opinionIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"opinionIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tocheck","type":"string"}],"name":"hasDuplicate","outputs":[{"name":"","type":"bool"}],"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":"DEFAULT_TEXT","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getOpinion","outputs":[{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"sponsor","type":"address"},{"name":"antisponsor","type":"address"},{"name":"amountsponsored","type":"uint256"},{"name":"amountantisponsored","type":"uint256"},{"name":"acomment","type":"uint8"},{"name":"timestamp","type":"uint256"},{"name":"opinionText","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"deleteThis","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newprice","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_tocheck","type":"string"},{"name":"index","type":"uint256"}],"name":"hasPriorDuplicate","outputs":[{"name":"","type":"bool"}],"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":true,"inputs":[{"name":"a","type":"string"},{"name":"b","type":"string"}],"name":"compareStrings","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newOpinion","type":"string"}],"name":"registerOpinion","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"comment","type":"uint8"},{"name":"_likesOpinion","type":"bool"}],"name":"sponsorOpinion","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"buyCryptopinions","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":"createInitialItems","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"}]

Contract Creation Code
606060405266be78bd4c57d0006000556707d72165f25ed000600155600560025566038d7ea4c68000600355662386f26fc10000600455681043561a8829300000600c55341561004e57600080fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613236806100df6000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461019b578063095ea7b3146102295780630a0f81681461026b5780630b7e9c44146102c05780631051db34146102f9578063151a7b6a146103265780631764d2471461038957806318160ddd146103ec5780631e9447f31461041557806323b872dd1461048a57806327d7874c146104eb5780632ba73c15146105245780632fdeca371461055d5780634f8dd40a146105eb5780635e65db7f146107495780636352211e1461076157806370a08231146107c45780638462151c1461081157806391b7f5ed1461089f57806395d89b41146108c2578063a3f4df7e14610950578063a9059cbb146109de578063b047fb5014610a20578063b2e6ceeb14610a75578063b915683014610a98578063b9186d7d14610b16578063bed34bba14610b4d578063cd5a57cb14610c05578063f02152ab14610c60578063f2429b1c14610c8f578063f76f8d7814610cbd578063fd28feb314610d4b575b600080fd5b34156101a657600080fd5b6101ae610d60565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023457600080fd5b610269600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610da3565b005b341561027657600080fd5b61027e610e73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102cb57600080fd5b6102f7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e99565b005b341561030457600080fd5b61030c610f59565b604051808215151515815260200191505060405180910390f35b341561033157600080fd5b6103476004808035906020019091905050610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561039457600080fd5b6103aa6004808035906020019091905050610f95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103f757600080fd5b6103ff610fc8565b6040518082815260200191505060405180910390f35b341561042057600080fd5b610470600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610fd5565b604051808215151515815260200191505060405180910390f35b341561049557600080fd5b6104e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fed565b005b34156104f657600080fd5b610522600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061103b565b005b341561052f57600080fd5b61055b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110a3565b005b341561056857600080fd5b61057061117f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105b0578082015181840152602081019050610595565b50505050905090810190601f1680156105dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105f657600080fd5b61060c6004808035906020019091905050611193565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107065780820151818401526020810190506106eb565b50505050905090810190601f1680156107335780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b61075f6004808035906020019091905050611338565b005b341561076c57600080fd5b6107826004808035906020019091905050611478565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107cf57600080fd5b6107fb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114f1565b6040518082815260200191505060405180910390f35b341561081c57600080fd5b610848600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061153a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088b578082015181840152602081019050610870565b505050509050019250505060405180910390f35b34156108aa57600080fd5b6108c06004808035906020019091905050611671565b005b34156108cd57600080fd5b6108d56116d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109155780820151818401526020810190506108fa565b50505050905090810190601f1680156109425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561095b57600080fd5b61096361171c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a3578082015181840152602081019050610988565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109e957600080fd5b610a1e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611755565b005b3415610a2b57600080fd5b610a3361178d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8057600080fd5b610a9660048080359060200190919050506117b3565b005b3415610aa357600080fd5b610afc600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050611828565b604051808215151515815260200191505060405180910390f35b3415610b2157600080fd5b610b376004808035906020019091905050611921565b6040518082815260200191505060405180910390f35b3415610b5857600080fd5b610beb600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061193e565b604051808215151515815260200191505060405180910390f35b610c5e600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a17565b005b610c8d600480803590602001909190803560ff169060200190919080351515906020019091905050611d1f565b005b610cbb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123c5565b005b3415610cc857600080fd5b610cd0612458565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d10578082015181840152602081019050610cf5565b50505050905090810190601f168015610d3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610d5657600080fd5b610d5e612491565b005b610d68612ed8565b6040805190810160405280600d81526020017f43727970746f70696e696f6e7300000000000000000000000000000000000000815250905090565b610dad338261250b565b1515610db857600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f425750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610f4d57600080fd5b610f5681612577565b50565b60006001905090565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b80549050905090565b6000610fe682600b80549050611828565b9050919050565b610ff7838261250b565b151561100257600080fd5b61100c8282612685565b151561101757600080fd5b611020826126f1565b151561102b57600080fd5b61103683838361272a565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109757600080fd5b6110a08161292c565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ff57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561113b57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602060405190810160405280600081525081565b6000806000806000806000806111a7612ed8565b6000600b8b8154811015156111b857fe5b90600052602060002090600602019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112605780601f1061123557610100808354040283529160200191611260565b820191906000526020600020905b81548152906001019060200180831161124357829003601f168201915b50505050509150600860008c8152602001908152602001600020549950600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508060010160029054906101000a900460ff1693508060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1697508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650806003015495508060040154945080600501549250509193959799909294969850565b600080600061135b600860008681526020019081526020016000205460056129ac565b9250670de0b6b3a764000083101561137957670de0b6b3a764000092505b82341015151561138857600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156113ea57600080fd5b600b848154811015156113f957fe5b9060005260206000209060060201915060018260010160016101000a81548160ff02191690831515021790555061143034846129e7565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561147257600080fd5b50505050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156114ec57600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611542612eec565b600061154c612eec565b600080600061155a876114f1565b9450600085141561158c5760006040518059106115745750595b90808252806020026020018201604052509550611667565b8460405180591061159a5750595b908082528060200260200182016040525093506115b5610fc8565b925060009150600090505b8281111515611663578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116565780848381518110151561163f57fe5b906020019060200201818152505081806001019250505b80806001019150506115c0565b8395505b5050505050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116cd57600080fd5b6116d681612a00565b50565b6116e1612ed8565b6040805190810160405280600c81526020017f4f70696e696f6e546f6b656e0000000000000000000000000000000000000000815250905090565b6040805190810160405280600d81526020017f43727970746f70696e696f6e730000000000000000000000000000000000000081525081565b61175f338261250b565b151561176a57600080fd5b611773826126f1565b151561177e57600080fd5b61178933838361272a565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506117f8826126f1565b151561180357600080fd5b61180d8284612685565b151561181857600080fd5b61182381838561272a565b505050565b600080600090505b82811015611915576118fa84600b8381548110151561184b57fe5b90600052602060002090600602016000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f05780601f106118c5576101008083540402835291602001916118f0565b820191906000526020600020905b8154815290600101906020018083116118d357829003601f168201915b505050505061193e565b15611908576001915061191a565b8080600101915050611830565b600091505b5092915050565b600060086000838152602001908152602001600020549050919050565b6000816040518082805190602001908083835b6020831015156119765780518252602082019150602081019050602083039250611951565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916836040518082805190602001908083835b6020831015156119dd57805182526020820191506020810190506020830392506119b8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614905092915050565b6000806000806000611a298787612a0a565b6005600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450339350600860008881526020019081526020016000205492508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611ab357600080fd5b611abc846126f1565b1515611ac757600080fd5b823410151515611ad657600080fd5b829150611ae334846129e7565b90506004546008600089815260200190815260200160002081905550611b0a85858961272a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515611b6c57600080fd5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8784600860008b8152602001908152602001600020548888600b8d815481101515611bb357fe5b9060005260206000209060060201600001604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611cc35780601f10611c9857610100808354040283529160200191611cc3565b820191906000526020600020905b815481529060010190602001808311611ca657829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611d1657600080fd5b50505050505050565b60008060008060008060008060008a60ff1614151515611d3e57600080fd5b888015611d4e575060648a60ff16105b80611d66575088158015611d65575060648a60ff16115b5b1515611d7157600080fd5b339750611d7d886126f1565b1515611d8857600080fd5b600860008c8152602001908152602001600020549650600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550339450611de0856126f1565b1515611deb57600080fd5b611df4866126f1565b1515611dff57600080fd5b863410151515611e0e57600080fd5b611e23611e1c88605a6129ac565b6064612b26565b9350611e3a611e3388600a6129ac565b6064612b26565b9250611e4634886129e7565b9150600054871015611e8357611e67611e608860c86129ac565b605a612b26565b600860008d815260200190815260200160002081905550611eec565b600154871015611ebe57611ea2611e9b8860786129ac565b605a612b26565b600860008d815260200190815260200160002081905550611eeb565b611ed3611ecc8860736129ac565b605a612b26565b600860008d8152602001908152602001600020819055505b5b600b8b815481101515611efb57fe5b906000526020600020906006020190508060010160009054906101000a900460ff161515611f2857600080fd5b8060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611f8757600080fd5b8060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611fe657600080fd5b8573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415151561202157600080fd5b898160010160026101000a81548160ff021916908360ff16021790555088156121be576120718160010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126f1565b1561211f578060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156120da57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561211a57600080fd5b612160565b8573ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561215f57600080fd5b5b878160010160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121b1816003015488612b41565b8160030181905550612378565b6121eb8160010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126f1565b156122bb578060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561225457600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156122b657600080fd5b61231e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561231d57600080fd5b5b878160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061236f816004015488612b41565b81600401819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015156123b857600080fd5b5050505050505050505050565b600c5434101515156123d657600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561243857600080fd5b6124418161292c565b6124556a08459508334a94a29c0000612a00565b50565b6040805190810160405280600c81526020017f4f70696e696f6e546f6b656e000000000000000000000000000000000000000081525081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124ed57600080fd5b6000600b8054905014151561250157600080fd5b612509612b5f565b565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561262557600080fd5b612682565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561268157600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561288857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561296857600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008414156129c157600091506129e0565b82840290508284828115156129d257fe5b041415156129dc57fe5b8091505b5092915050565b60008282111515156129f557fe5b818303905092915050565b80600c8190555050565b600080600b84815481101515612a1c57fe5b9060005260206000209060060201915042826005018190555082826000019080519060200190612a4d929190612f00565b5060018260010160026101000a81548160ff021916908360ff1602179055508160010160009054906101000a900460ff16151515612a8a57600080fd5b612aa8600260086000878152602001908152602001600020546129ac565b905067016345785d8a0000811115612ac65767016345785d8a000090505b612b036020604051908101604052806000815250600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612bbe565b60018260010160006101000a81548160ff02191690831515021790555050505050565b6000808284811515612b3457fe5b0490508091505092915050565b6000808284019050838110151515612b5557fe5b8091505092915050565b60008090505b600254811015612bbb57612bae6020604051908101604052806000815250600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600354612bbe565b8080600101915050612b65565b50565b612bc6612f80565b600061012060405190810160405280868152602001600015158152602001600015158152602001600060ff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020014281525091506001600b8054806001018281612c7b9190613006565b916000526020600020906006020160008590919091506000820151816000019080519060200190612cad929190613038565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548160ff021916908360ff16021790555060808201518160010160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816003015560e08201518160040155610100820151816005015550500390508063ffffffff1681141515612dd557600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015612e71578082015181840152602081019050612e56565b50505050905090810190601f168015612e9e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1826008600083815260200190815260200160002081905550612ed16000858361272a565b5050505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f4157805160ff1916838001178555612f6f565b82800160010185558215612f6f579182015b82811115612f6e578251825591602001919060010190612f53565b5b509050612f7c91906130b8565b5090565b61012060405190810160405280612f956130dd565b8152602001600015158152602001600015158152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b8154818355818115116130335760060281600602836000526020600020918201910161303291906130f1565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061307957805160ff19168380011785556130a7565b828001600101855582156130a7579182015b828111156130a657825182559160200191906001019061308b565b5b5090506130b491906130b8565b5090565b6130da91905b808211156130d65760008160009055506001016130be565b5090565b90565b602060405190810160405280600081525090565b6131bf91905b808211156131bb576000808201600061311091906131c2565b6001820160006101000a81549060ff02191690556001820160016101000a81549060ff02191690556001820160026101000a81549060ff02191690556001820160036101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055506006016130f7565b5090565b90565b50805460018160011615610100020316600290046000825580601f106131e85750613207565b601f01602090049060005260206000209081019061320691906130b8565b5b505600a165627a7a72305820b757091e3a976fe4046bd5e0e815543cc6e31d1657a6609b85eb90400b4982160029


   Swarm Source:
bzzr://b757091e3a976fe4046bd5e0e815543cc6e31d1657a6609b85eb90400b498216
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.