Sponsored:   Ubex.com - Additional 17% of tokens are available for purchase! Trading on exchanges already started.
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 268 txns
Token Tracker: DVIP (DVIP)
 Latest 25 txns from a total Of 268 transactions

TxHash Age From To Value [TxFee]
0xfd9a9e1874ee4cff3dcae4174e8a1dd78a49b40061360b8d1b0632675f20a56914 days 10 hrs ago0x67ac24b406a1028e4f1cb77942710a684b23b35e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00044
0x6aadde0c0ea778b9d792129e3919dabcef944eca6669ce5f932255a0791dab4214 days 10 hrs ago0x67ac24b406a1028e4f1cb77942710a684b23b35e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00044
0x30154ca223b1a0354ad9fc5e2e1c6c389787ea8064b44eb0507a507e5b9cd36d23 days 9 hrs ago0x67ac24b406a1028e4f1cb77942710a684b23b35e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00022
0x564c49bb6bad1223e2649398ab4a92a84d240814af5b6c59c7f1ae9b1129684723 days 9 hrs ago0x67ac24b406a1028e4f1cb77942710a684b23b35e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00022
0xb0239a2644ad2b1166624de8290846ff5100d12037fe097f0a6b41eec933a7dd25 days 5 hrs ago0xa64d774c4ae468e2c068c98ff1205889fbb9de54  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.005
0x70373babeecf564f097f23dad0248dd534d7f61c37348f6d0abee4f853d16eb025 days 5 hrs ago0xa64d774c4ae468e2c068c98ff1205889fbb9de54  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0025
0x0f7e517c465c5f233892d6cd0fcb405574a48f9b852f6815d976085004231d6c25 days 5 hrs ago0xa64d774c4ae468e2c068c98ff1205889fbb9de54  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00125
0x4c39674eb866d895d77e9f445651412d15f94661b5398c75338fd12989af60ed29 days 1 hr ago0x7eba89996e09fed89242908d58e0984b530853c5  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00325
0xf1c4cf9757723187ee0696d96958919ed5de67380e4eb6996e13e11b2709092e39 days 2 hrs ago0x86fede75c6660a8e1635a86360c9ee9d28899ba3  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0012
0x9b34b5173671b764226cff80041e1778f5af8806b7464441a1fe621acf2832bb40 days 12 hrs ago0x28390db58df83ecc4487da371f6a13d216b86b9e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0015
0x3317d6d16e59538c186f9094a181ca183608b98bf397b6e8cc3dd2a3c329b37140 days 13 hrs ago0x28390db58df83ecc4487da371f6a13d216b86b9e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00069192
0xbbc9263ef19db073f30e6ae8436ab01ed83c17a5e6fab0a7ec266e8b56dd0ee942 days 15 hrs ago0xb41ffdb5cba39cdfd778207e167da1ecbb770aa5  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00294855
0x1ccdf8df037696aefd3930a761615af10d825b8806590532be5fadf3ef03527647 days 6 hrs ago0x896c484606c97ead251df917085b6d19771a3cab  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.1 Ether0.00205
0xe571bafffc7be9177cfe17a5a23fbddd79caf53ff92c9c1fdcb7177c63ffc4d760 days 7 hrs ago0xc545d80bc5bb7c45816fc07f785d942834d23ad6  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.075 Ether0.01518527
0x21fa4064d08b344411edf993df876b6a8f7f93215c7814b6eed2f571c967ae6e60 days 7 hrs ago0xc545d80bc5bb7c45816fc07f785d942834d23ad6  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.42315 Ether0.015214754
0x0fbdae30ea6c6099f42fd07b5a2f9385f875f6c99c731b46a8a61b813123a93e60 days 7 hrs ago0xc545d80bc5bb7c45816fc07f785d942834d23ad6  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.419911 Ether0.0767602727
0x40a87e5bfb136a86b7b8a0c3829ec0974d37fa11e2f1fe8d42e17b8948f3d06f60 days 16 hrs ago0x199cf26595a91282696537077b593077efdb2734  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.04452032 Ether0.00045
0x97752abc2ed64b2e66d0db732414ff5a86e016c702eee262ef674944bd80f5e660 days 16 hrs ago0x39aabc9a31a5150dea7b8cae85337a1685432356  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.04461293 Ether0.00045
0x60a569688e2da16e3edf3fdf53256336b666d430c60fb573e3b5021497ba3a5163 days 1 hr ago0x6d4ee833ebd40bcdf2b7e3ae142f8ba193924036  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.010114 Ether0.00027
0x568b2ed08fdcca20f94fa4ebc2c837af0c557cc4e7311c8e14ecaa4ee315403c63 days 13 hrs agoBinance_2  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.01040757 Ether0.407371782
0x0e328852f193d0b6e4b7f33963dd0bceef06e393214a6d9442ac48c048188db864 days 20 hrs agoBinance_4  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0.01040757 Ether0.406584852
0x7fd61c9580fbf251480d471574fc9e790f6ade77aa13dea53d3ecb1b6b98677266 days 29 mins ago0xb41ffdb5cba39cdfd778207e167da1ecbb770aa5  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00325
0xa10a6b5e525103097e5921d3a805f75b4f6c1da6dd847f5e000909a011d055bc82 days 17 hrs ago0x2dae299db8caf8de734e19b15c7506ba8396a333  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.000708968
0xc1e7c92093bbf285e8f0893d85c36e0e5cd67c92074a71806bb495f8aa3b308792 days 11 hrs ago0x3522a96a53fae1f4fef15a53a212ad01bd9d46e1  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.001925
0x907dbce43c7779fd69bdf6eb6fa96f0c6a78135bb25b9a2014dd53c4212914ed98 days 13 hrs ago0xeb9409af612a51e2204f588c24fdb58bbf853e41  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0003872056
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value



  Contract Source Code   Find Similiar Contracts

/*

DVIP Terms of Service

The following Terms of Service specify the agreement between Decentralized Capital Ltd. (DC) and the purchaser of DVIP Memberships (customer/member). By purchasing, using, or possessing the DVIP token you agree to be legally bound by these terms, which shall take effect immediately upon purchase of the membership.


1. Rights of DVIP Membership holders: Each membership entitles the customer to ZERO transaction fees on all on-chain transfers of DC Assets, and ½ off fees for purchasing and redeeming DC Assets through Crypto Capital. DVIP also entitles the customer to discounts on select future Decentralized Capital Ltd. services. These discounts only apply to the fees specified on the DC website. DC is not responsible for any fees charged by third parties including, but not limited to, dapps, exchanges, Crypto Capital, and Coinapult.

2. DVIP membership rights expire on January 1st, 2020. Upon expiration of membership benefits, each 1/100th of a token is redeemable for an additional $1.50 in fees on eligible DC products. This additional discount expires on January 1st, 2022.

3. Customers can purchase more than one membership, but only one membership can be active at a time for any one wallet. Under no circumstances are members eligible for a refund on the DVIP purchase.

4. DVIP tokens are not equity in Decentralized Capital ltd. and do not give holders any power over Decentralized Capital ltd. including, but not limited to, shareholder voting, a claim on assets, or input into how Decentralized Capital ltd. is governed and managed.

5. Possession of the DVIP token operates as proof of membership, and DVIP tokens can be transferred to any other wallet on Ethereum. If the DVIP token is transferred to a 3rd party, the membership benefits no longer pertain to the original party. In the event of a transfer, membership benefits will apply only AFTER a one week incubation period; any withdrawal initiated prior to the end of this incubation period will be charged the standard transaction fee. DC reserves the right to adjust the duration of the incubation period; the incubation period will never be more than one month. Changes to the DVIP balance will reset the incubation period for any DVIP that is not fully incubated. Active DVIP is not affected by balance changes.

6. DVIP membership benefits are only available to individual users. Platforms such as exchanges and dapps can hold DVIP, but the transaction fee discounts specified in section 1 will not apply.

7. Membership benefits are executed via the DC smart contract system; the DC membership must be held in the wallet used for DC Asset transactions in order for the discounts to apply. No transaction fees will be waived for members who receive transactions using a wallet that does not hold their DVIP tokens.

8. In the event of bankruptcy: DVIP is valid until January 1st, 2020. In the event that Decentralized Capital Ltd. ceases operations, DVIP does not represent any claim on company assets nor does Decentralized Capital Ltd. have any further commitment to holders of DVIP, such as a refund on the purchase of the DVIP.

9. Future Sale of DVIP: Total DVIP supply is capped at 2,000, 1,500 of which are available for purchase during this initial sale. Any DVIP not sold in the initial membership sale will be destroyed, further reducing the total supply of DVIP. The remaining 500 memberships will be sold at a later date.

10. DVIP Buyback Rights: Decentralized Capital Ltd. reserves the right to repurchase the DVIP from token holders at any time. Repurchase will occur at the average price of all markets where DVIP is listed.

11. Entire Agreement. The foregoing Membership Terms & Conditions contain the entire terms and agreements in connection with Member's participation in the DC service and no representations, inducements, promises or agreement, or otherwise, between DC and the Member not included herein, shall be of any force or effect. If any of the foregoing terms or provisions shall be invalid or unenforceable, the remaining terms and provisions hereof shall not be affected.

12. This agreement shall be governed by and construed under, and the legal relations among the parties hereto shall be determined in accordance with, the laws of the United Kingdom of Great Britain and Northern Ireland.

*/

contract Assertive {
  function assert(bool assertion) {
    if (!assertion) throw;
  }
}

contract Owned is Assertive {
  address public owner;
  event SetOwner(address indexed previousOwner, address indexed newOwner);
  function Owned () {
    owner = msg.sender;
  }
  modifier onlyOwner {
    assert(msg.sender == owner);
    _
  }
  function setOwner(address newOwner) onlyOwner {
    SetOwner(owner, newOwner);
    owner = newOwner;
  }
}

contract StateTransferrable is Owned {
  bool internal locked;
  event Locked(address indexed from);
  event PropertySet(address indexed from);
  modifier onlyIfUnlocked {
    assert(!locked);
    _
  }
  modifier setter {
    _
    PropertySet(msg.sender);
  }
  modifier onlyOwnerUnlocked {
    assert(!locked && msg.sender == owner);
    _
  }
  function lock() onlyOwner onlyIfUnlocked {
    locked = true;
    Locked(msg.sender);
  }
  function isLocked() returns (bool status) {
    return locked;
  }
}

contract TokenRecipient {
  function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}

contract Relay {
  function relayReceiveApproval(address _caller, address _spender, uint256 _amount, bytes _extraData) returns (bool success);
}

contract TokenBase is Owned {
    bytes32 public standard = 'Token 0.1';
    bytes32 public name;
    bytes32 public symbol;
    bool public allowTransactions;
    uint256 public totalSupply;

    event Approval(address indexed from, address indexed spender, uint256 amount);

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    event Transfer(address indexed from, address indexed to, uint256 value);

    function transfer(address _to, uint256 _value) returns (bool success);
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

    function () {
        throw;
    }
}

contract TrustEvents {
  event AuthInit(address indexed from);
  event AuthComplete(address indexed from, address indexed with);
  event AuthPending(address indexed from);
  event Unauthorized(address indexed from);
  event InitCancel(address indexed from);
  event NothingToCancel(address indexed from);
  event SetMasterKey(address indexed from);
  event AuthCancel(address indexed from, address indexed with);
}

contract Trust is StateTransferrable, TrustEvents {

  mapping (address => bool) public masterKeys;
  mapping (address => bytes32) public nameRegistry;
  address[] public masterKeyIndex;
  mapping (address => bool) public masterKeyActive;
  mapping (address => bool) public trustedClients;
  mapping (uint256 => address) public functionCalls;
  mapping (address => uint256) public functionCalling;

  /* ---------------  modifiers  --------------*/

  modifier multisig (bytes32 hash) {
    if (!masterKeys[msg.sender]) {
      Unauthorized(msg.sender);
    } else if (functionCalling[msg.sender] == 0) {
      if (functionCalls[uint256(hash)] == 0x0) {
        functionCalls[uint256(hash)] = msg.sender;
        functionCalling[msg.sender] = uint256(hash);
        AuthInit(msg.sender);
      } else {
        AuthComplete(functionCalls[uint256(hash)], msg.sender);
        resetAction(uint256(hash));
        _
      }
    } else {
      AuthPending(msg.sender);
    }
  }

  /* ---------------  setter methods, only for the unlocked state --------------*/

  /**
   * @notice Sets a master key
   *
   * @param addr Address
   */
  function setMasterKey(address addr) onlyOwnerUnlocked {
    assert(!masterKeys[addr]);
    activateMasterKey(addr);
    masterKeys[addr] = true;
    SetMasterKey(msg.sender);
  }

  /**
   * @notice Adds a trusted client
   *
   * @param addr Address
   */
  function setTrustedClient(address addr) onlyOwnerUnlocked setter {
    trustedClients[addr] = true;
  }

  /* ---------------  methods to be called by a Master Key  --------------*/



  /* ---------------  multisig admin methods  --------------*/

  /**
   * @notice remove contract `addr` from the list of trusted contracts
   *
   * @param addr Address of client contract to be removed
   */
  function untrustClient(address addr) multisig(sha3(msg.data)) {
    trustedClients[addr] = false;
  }

  /**
   * @notice add contract `addr` to the list of trusted contracts
   *
   * @param addr Address of contract to be added
   */
  function trustClient(address addr) multisig(sha3(msg.data)) {
    trustedClients[addr] = true;
  }

  /**
   * @notice remove key `addr` to the list of master keys
   *
   * @param addr Address of the masterkey
   */
  function voteOutMasterKey(address addr) multisig(sha3(msg.data)) {
    assert(masterKeys[addr]);
    masterKeys[addr] = false;
  }

  /**
   * @notice add key `addr` to the list of master keys
   *
   * @param addr Address of the masterkey
   */
  function voteInMasterKey(address addr) multisig(sha3(msg.data)) {
    assert(!masterKeys[addr]);
    activateMasterKey(addr);
    masterKeys[addr] = true;
  }

  /* ---------------  methods to be called by Trusted Client Contracts  --------------*/


  /**
   * @notice Cancel outstanding multisig method call from address `from`. Called from trusted clients.
   *
   * @param from Address that issued the call that needs to be cancelled
   */
  function authCancel(address from) external returns (uint8 status) {
    if (!masterKeys[from] || !trustedClients[msg.sender]) {
      Unauthorized(from);
      return 0;
    }
    uint256 call = functionCalling[from];
    if (call == 0) {
      NothingToCancel(from);
      return 1;
    } else {
      AuthCancel(from, from);
      functionCalling[from] = 0;
      functionCalls[call] = 0x0;
      return 2;
    }
  }

  /**
   * @notice Authorize multisig call on a trusted client. Called from trusted clients.
   *
   * @param from Address from which call is made.
   * @param hash of method call
   */
  function authCall(address from, bytes32 hash) external returns (uint8 code) {
    if (!masterKeys[from] || !trustedClients[msg.sender]) {
      Unauthorized(from);
      return 0;
    }
    if (functionCalling[from] == 0) {
      if (functionCalls[uint256(hash)] == 0x0) {
        functionCalls[uint256(hash)] = from;
        functionCalling[from] = uint256(hash);
        AuthInit(from);
        return 1;
      } else {
        AuthComplete(functionCalls[uint256(hash)], from);
        resetAction(uint256(hash));
        return 2;
      }
    } else {
      AuthPending(from);
      return 3;
    }
  }

  /* ---------------  methods to be called directly on the contract --------------*/

  /**
   * @notice cancel any outstanding multisig call
   *
   */
  function cancel() returns (uint8 code) {
    if (!masterKeys[msg.sender]) {
      Unauthorized(msg.sender);
      return 0;
    }
    uint256 call = functionCalling[msg.sender];
    if (call == 0) {
      NothingToCancel(msg.sender);
      return 1;
    } else {
      AuthCancel(msg.sender, msg.sender);
      uint256 hash = functionCalling[msg.sender];
      functionCalling[msg.sender] = 0x0;
      functionCalls[hash] = 0;
      return 2;
    }
  }

  /* ---------------  private methods --------------*/

  function resetAction(uint256 hash) internal {
    address addr = functionCalls[hash];
    functionCalls[hash] = 0x0;
    functionCalling[addr] = 0;
  }

  function activateMasterKey(address addr) internal {
    if (!masterKeyActive[addr]) {
      masterKeyActive[addr] = true;
      masterKeyIndex.push(addr);
    }
  }

  /* ---------------  helper methods for siphoning --------------*/

  function extractMasterKeyIndexLength() returns (uint256 length) {
    return masterKeyIndex.length;
  }

}


contract TrustClient is StateTransferrable, TrustEvents {

  address public trustAddress;

  modifier multisig (bytes32 hash) {
    assert(trustAddress != address(0x0));
    address current = Trust(trustAddress).functionCalls(uint256(hash));
    uint8 code = Trust(trustAddress).authCall(msg.sender, hash);
    if (code == 0) Unauthorized(msg.sender);
    else if (code == 1) AuthInit(msg.sender);
    else if (code == 2) {
      AuthComplete(current, msg.sender);
      _
    }
    else if (code == 3) {
      AuthPending(msg.sender);
    }
  }
  
  function setTrust(address addr) setter onlyOwnerUnlocked {
    trustAddress = addr;
  }

  function cancel() returns (uint8 status) {
    assert(trustAddress != address(0x0));
    uint8 code = Trust(trustAddress).authCancel(msg.sender);
    if (code == 0) Unauthorized(msg.sender);
    else if (code == 1) NothingToCancel(msg.sender);
    else if (code == 2) AuthCancel(msg.sender, msg.sender);
    return code;
  }

}

contract DVIPBackend {
  uint8 public decimals;
  function assert(bool assertion) {
    if (!assertion) throw;
  }
  bytes32 public standard = 'Token 0.1';
  bytes32 public name;
  bytes32 public symbol;
  bool public allowTransactions;
  uint256 public totalSupply;

  event Approval(address indexed from, address indexed spender, uint256 amount);
  event PropertySet(address indexed from);

  mapping (address => uint256) public balanceOf;
  mapping (address => mapping (address => uint256)) public allowance;

/*
  mapping (address => bool) public balanceOfActive;
  address[] public balanceOfIndex;
*/

/*
  mapping (address => bool) public allowanceActive;
  address[] public allowanceIndex;

  mapping (address => mapping (address => bool)) public allowanceRecordActive;
  mapping (address => address[]) public allowanceRecordIndex;
*/

  event Transfer(address indexed from, address indexed to, uint256 value);

  uint256 public baseFeeDivisor;
  uint256 public feeDivisor;
  uint256 public singleDVIPQty;

  function () {
    throw;
  }

  bool public locked;
  address public owner;

  modifier onlyOwnerUnlocked {
    assert(msg.sender == owner && !locked);
    _
  }

  modifier onlyOwner {
    assert(msg.sender == owner);
    _
  }

  function lock() onlyOwnerUnlocked returns (bool success) {
    locked = true;
    PropertySet(msg.sender);
    return true;
  }

  function setOwner(address _address) onlyOwner returns (bool success) {
    owner = _address;
    PropertySet(msg.sender);
    return true;
  }

  uint256 public expiry;
  uint8 public feeDecimals;

  struct Validity {
    uint256 last;
    uint256 ts;
  }

  mapping (address => Validity) public validAfter;
  uint256 public mustHoldFor;
  address public hotwalletAddress;
  address public frontendAddress;
  mapping (address => bool) public frozenAccount;
/*
  mapping (address => bool) public frozenAccountActive;
  address[] public frozenAccountIndex;
*/
  mapping (address => uint256) public exportFee;
/*
  mapping (address => bool) public exportFeeActive;
  address[] public exportFeeIndex;
*/

  event FeeSetup(address indexed from, address indexed target, uint256 amount);
  event Processed(address indexed sender);

  modifier onlyAsset {
    if (msg.sender != frontendAddress) throw;
    _
  }

  /**
   * Constructor.
   *
   */
  function DVIPBackend(address _hotwalletAddress, address _frontendAddress) {
    owner = msg.sender;
    hotwalletAddress = _hotwalletAddress;
    frontendAddress = _frontendAddress;
    allowTransactions = true;
    totalSupply = 0;
    name = "DVIP";
    symbol = "DVIP";
    feeDecimals = 6;
    decimals = 1;
    expiry = 1514764800; //1 jan 2018
    mustHoldFor = 604800;
    precalculate();
  }

  function setHotwallet(address _address) onlyOwnerUnlocked {
    hotwalletAddress = _address;
    PropertySet(msg.sender);
  }

  function setFrontend(address _address) onlyOwnerUnlocked {
    frontendAddress = _address;
    PropertySet(msg.sender);
  } 

  /**
   * @notice Transfer `_amount` from `msg.sender.address()` to `_to`.
   *
   * @param _to Address that will receive.
   * @param _amount Amount to be transferred.
   */
  function transfer(address caller, address _to, uint256 _amount) onlyAsset returns (bool success) {
    assert(allowTransactions);
    assert(balanceOf[caller] >= _amount);
    assert(balanceOf[_to] + _amount >= balanceOf[_to]);
    assert(!frozenAccount[caller]);
    assert(!frozenAccount[_to]);
    balanceOf[caller] -= _amount;
    // activateBalance(caller);
    // activateBalance(_to);
    uint256 preBalance = balanceOf[_to];
    balanceOf[_to] += _amount;
    bool alreadyMax = preBalance >= singleDVIPQty;
    if (!alreadyMax) {
      if (now >= validAfter[_to].ts + mustHoldFor) validAfter[_to].last = preBalance;
      validAfter[_to].ts = now;
    }
    if (validAfter[caller].last > balanceOf[caller]) validAfter[caller].last = balanceOf[caller];
    Transfer(caller, _to, _amount);
    return true;
  }

  /**
   * @notice Transfer `_amount` from `_from` to `_to`.
   *
   * @param _from Origin address
   * @param _to Address that will receive
   * @param _amount Amount to be transferred.
   * @return result of the method call
   */
  function transferFrom(address caller, address _from, address _to, uint256 _amount) onlyAsset returns (bool success) {
    assert(allowTransactions);
    assert(balanceOf[_from] >= _amount);
    assert(balanceOf[_to] + _amount >= balanceOf[_to]);
    assert(_amount <= allowance[_from][caller]);
    assert(!frozenAccount[caller]);
    assert(!frozenAccount[_from]);
    assert(!frozenAccount[_to]);
    balanceOf[_from] -= _amount;
    uint256 preBalance = balanceOf[_to];
    balanceOf[_to] += _amount;
    // activateBalance(_from);
    // activateBalance(_to);
    allowance[_from][caller] -= _amount;
    bool alreadyMax = preBalance >= singleDVIPQty;
    if (!alreadyMax) {
      if (now >= validAfter[_to].ts + mustHoldFor) validAfter[_to].last = preBalance;
      validAfter[_to].ts = now;
    }
    if (validAfter[_from].last > balanceOf[_from]) validAfter[_from].last = balanceOf[_from];
    Transfer(_from, _to, _amount);
    return true;
  }

  /**
   * @notice Approve spender `_spender` to transfer `_amount` from `msg.sender.address()`
   *
   * @param _spender Address that receives the cheque
   * @param _amount Amount on the cheque
   * @param _extraData Consequential contract to be executed by spender in same transcation.
   * @return result of the method call
   */
  function approveAndCall(address caller, address _spender, uint256 _amount, bytes _extraData) onlyAsset returns (bool success) {
    assert(allowTransactions);
    allowance[caller][_spender] = _amount;
    // activateAllowance(caller, _spender);
    Relay(frontendAddress).relayReceiveApproval(caller, _spender, _amount, _extraData);
    Approval(caller, _spender, _amount);
    return true;
  }

  /**
   * @notice Approve spender `_spender` to transfer `_amount` from `msg.sender.address()`
   *
   * @param _spender Address that receives the cheque
   * @param _amount Amount on the cheque
   * @return result of the method call
   */
  function approve(address caller, address _spender, uint256 _amount) onlyAsset returns (bool success) {
    assert(allowTransactions);
    allowance[caller][_spender] = _amount;
    // activateAllowance(caller, _spender);
    Approval(caller, _spender, _amount);
    return true;
  }

  /* ---------------  multisig admin methods  --------------*/



  /**
   * @notice Sets the expiry time in milliseconds since 1970.
   *
   * @param ts milliseconds since 1970.
   *
   */
  function setExpiry(uint256 ts) onlyOwner {
    expiry = ts;
    Processed(msg.sender);
  }

  /**
   * @notice Mints `mintedAmount` new tokens to the hotwallet `hotWalletAddress`.
   *
   * @param mintedAmount Amount of new tokens to be minted.
   */
  function mint(uint256 mintedAmount) onlyOwner {
    balanceOf[hotwalletAddress] += mintedAmount;
   // activateBalance(hotwalletAddress);
    totalSupply += mintedAmount;
    Processed(msg.sender);
  }

  function freezeAccount(address target, bool frozen) onlyOwner {
    frozenAccount[target] = frozen;
    // activateFrozenAccount(target);
    Processed(msg.sender);
  }

  function seizeTokens(address target, uint256 amount) onlyOwner {
    assert(balanceOf[target] >= amount);
    assert(frozenAccount[target]);
    balanceOf[target] -= amount;
    balanceOf[hotwalletAddress] += amount;
    Transfer(target, hotwalletAddress, amount);
  }

  function destroyTokens(uint256 amt) onlyOwner {
    assert(balanceOf[hotwalletAddress] >= amt);
    balanceOf[hotwalletAddress] -= amt;
    Processed(msg.sender);
  }

  /**
   * @notice Sets an export fee of `fee` on address `addr`
   *
   * @param addr Address for which the fee is valid
   * @param addr fee Fee
   *
   */
  function setExportFee(address addr, uint256 fee) onlyOwner {
    exportFee[addr] = fee;
   // activateExportFee(addr);
    Processed(msg.sender);
  }

  function setHoldingPeriod(uint256 ts) onlyOwner {
    mustHoldFor = ts;
    Processed(msg.sender);
  }

  function setAllowTransactions(bool allow) onlyOwner {
    allowTransactions = allow;
    Processed(msg.sender);
  }

  /* --------------- fee calculation method ---------------- */

  /**
   * @notice 'Returns the fee for a transfer from `from` to `to` on an amount `amount`.
   *
   * Fee's consist of a possible
   *    - import fee on transfers to an address
   *    - export fee on transfers from an address
   * DVIP ownership on an address
   *    - reduces fee on a transfer from this address to an import fee-ed address
   *    - reduces the fee on a transfer to this address from an export fee-ed address
   * DVIP discount does not work for addresses that have an import fee or export fee set up against them.
   *
   * DVIP discount goes up to 100%
   *
   * @param from From address
   * @param to To address
   * @param amount Amount for which fee needs to be calculated.
   *
   */
  function feeFor(address from, address to, uint256 amount) constant external returns (uint256 value) {
    uint256 fee = exportFee[from];
    if (fee == 0) return 0;
    if (now >= expiry) return amount*fee / baseFeeDivisor;
    uint256 amountHeld;
    if (balanceOf[to] != 0) {
      if (validAfter[to].ts + mustHoldFor < now) amountHeld = balanceOf[to];
      else amountHeld = validAfter[to].last;
      if (amountHeld >= singleDVIPQty) return 0;
      return amount*fee*(singleDVIPQty - amountHeld) / feeDivisor;
    } else return amount*fee / baseFeeDivisor;
  }
  function precalculate() internal returns (bool success) {
    baseFeeDivisor = pow10(1, feeDecimals);
    feeDivisor = pow10(1, feeDecimals + decimals);
    singleDVIPQty = pow10(1, decimals);
  }
  function div10(uint256 a, uint8 b) internal returns (uint256 result) {
    for (uint8 i = 0; i < b; i++) {
      a /= 10;
    }
    return a;
  }
  function pow10(uint256 a, uint8 b) internal returns (uint256 result) {
    for (uint8 i = 0; i < b; i++) {
      a *= 10;
    }
    return a;
  }
  /*
  function activateBalance(address address_) internal {
    if (!balanceOfActive[address_]) {
      balanceOfActive[address_] = true;
      balanceOfIndex.push(address_);
    }
  }
  function activateFrozenAccount(address address_) internal {
    if (!frozenAccountActive[address_]) {
      frozenAccountActive[address_] = true;
      frozenAccountIndex.push(address_);
    }
  }
  function activateAllowance(address from, address to) internal {
    if (!allowanceActive[from]) {
      allowanceActive[from] = true;
      allowanceIndex.push(from);
    }
    if (!allowanceRecordActive[from][to]) {
      allowanceRecordActive[from][to] = true;
      allowanceRecordIndex[from].push(to);
    }
  }
  function activateExportFee(address address_) internal {
    if (!exportFeeActive[address_]) {
      exportFeeActive[address_] = true;
      exportFeeIndex.push(address_);
    }
  }
  function extractBalanceOfLength() constant returns (uint256 length) {
    return balanceOfIndex.length;
  }
  function extractAllowanceLength() constant returns (uint256 length) {
    return allowanceIndex.length;
  }
  function extractAllowanceRecordLength(address from) constant returns (uint256 length) {
    return allowanceRecordIndex[from].length;
  }
  function extractFrozenAccountLength() constant returns (uint256 length) {
    return frozenAccountIndex.length;
  }
  function extractFeeLength() constant returns (uint256 length) {
    return exportFeeIndex.length;
  }
  */
}

/**
 * @title DVIP
 *
 * @author Raymond Pulver IV
 *
 */
contract DVIP is TokenBase, StateTransferrable, TrustClient, Relay {

   address public backendContract;

   /**
    * Constructor
    *
    *
    */
   function DVIP(address _backendContract) {
     backendContract = _backendContract;
   }

   function standard() constant returns (bytes32 std) {
     return DVIPBackend(backendContract).standard();
   }

   function name() constant returns (bytes32 nm) {
     return DVIPBackend(backendContract).name();
   }

   function symbol() constant returns (bytes32 sym) {
     return DVIPBackend(backendContract).symbol();
   }

   function decimals() constant returns (uint8 precision) {
     return DVIPBackend(backendContract).decimals();
   }
  
   function allowance(address from, address to) constant returns (uint256 res) {
     return DVIPBackend(backendContract).allowance(from, to);
   }


   /* ---------------  multisig admin methods  --------------*/


   /**
    * @notice Sets the backend contract to `_backendContract`. Can only be switched by multisig.
    *
    * @param _backendContract Address of the underlying token contract.
    */
   function setBackend(address _backendContract) multisig(sha3(msg.data)) {
     backendContract = _backendContract;
   }
   function setBackendOwner(address _backendContract) onlyOwnerUnlocked {
     backendContract = _backendContract;
   }

   /* ---------------  main token methods  --------------*/

   /**
    * @notice Returns the balance of `_address`.
    *
    * @param _address The address of the balance.
    */
   function balanceOf(address _address) constant returns (uint256 balance) {
      return DVIPBackend(backendContract).balanceOf(_address);
   }

   /**
    * @notice Returns the total supply of the token
    *
    */
   function totalSupply() constant returns (uint256 balance) {
      return DVIPBackend(backendContract).totalSupply();
   }

  /**
   * @notice Transfer `_amount` to `_to`.
   *
   * @param _to Address that will receive.
   * @param _amount Amount to be transferred.
   */
   function transfer(address _to, uint256 _amount) returns (bool success)  {
      if (!DVIPBackend(backendContract).transfer(msg.sender, _to, _amount)) throw;
      Transfer(msg.sender, _to, _amount);
      return true;
   }

  /**
   * @notice Approve Approves spender `_spender` to transfer `_amount`.
   *
   * @param _spender Address that receives the cheque
   * @param _amount Amount on the cheque
   * @param _extraData Consequential contract to be executed by spender in same transcation.
   * @return result of the method call
   */
   function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns (bool success) {
      if (!DVIPBackend(backendContract).approveAndCall(msg.sender, _spender, _amount, _extraData)) throw;
      Approval(msg.sender, _spender, _amount);
      return true;
   }

  /**
   * @notice Approve Approves spender `_spender` to transfer `_amount`.
   *
   * @param _spender Address that receives the cheque
   * @param _amount Amount on the cheque
   * @return result of the method call
   */
   function approve(address _spender, uint256 _amount) returns (bool success) {
      if (!DVIPBackend(backendContract).approve(msg.sender, _spender, _amount)) throw;
      Approval(msg.sender, _spender, _amount);
      return true;
   }

  /**
   * @notice Transfer `_amount` from `_from` to `_to`.
   *
   * @param _from Origin address
   * @param _to Address that will receive
   * @param _amount Amount to be transferred.
   * @return result of the method call
   */
  function transferFrom(address _from, address _to, uint256 _amount) returns (bool success) {
      if (!DVIPBackend(backendContract).transferFrom(msg.sender, _from, _to, _amount)) throw;
      Transfer(_from, _to, _amount);
      return true;
  }

  /**
   * @notice Returns fee for transferral of `_amount` from `_from` to `_to`.
   *
   * @param _from Origin address
   * @param _to Address that will receive
   * @param _amount Amount to be transferred.
   * @return height of the fee
   */
  function feeFor(address _from, address _to, uint256 _amount) constant returns (uint256 amount) {
      return DVIPBackend(backendContract).feeFor(_from, _to, _amount);
  }

  /* ---------------  to be called by backend  --------------*/

  function relayReceiveApproval(address _caller, address _spender, uint256 _amount, bytes _extraData) returns (bool success) {
     assert(msg.sender == backendContract);
     TokenRecipient spender = TokenRecipient(_spender);
     spender.receiveApproval(_caller, _amount, this, _extraData);
     return true;
  }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"assertion","type":"bool"}],"name":"assert","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"nm","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"balance","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"precision","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"std","type":"bytes32"}],"type":"function"},{"constant":true,"inputs":[],"name":"trustAddress","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"backendContract","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_backendContract","type":"address"}],"name":"setBackendOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"sym","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[],"name":"isLocked","outputs":[{"name":"status","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"allowTransactions","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"feeFor","outputs":[{"name":"amount","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_caller","type":"address"},{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"relayReceiveApproval","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_backendContract","type":"address"}],"name":"setBackend","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setTrust","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"}],"name":"allowance","outputs":[{"name":"res","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"cancel","outputs":[{"name":"status","type":"uint8"}],"type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[],"type":"function"},{"inputs":[{"name":"_backendContract","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"AuthInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"with","type":"address"}],"name":"AuthComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"AuthPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"Unauthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"InitCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"NothingToCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"SetMasterKey","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"with","type":"address"}],"name":"AuthCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"}],"name":"PropertySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"SetOwner","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060408190527f546f6b656e20302e3100000000000000000000000000000000000000000000006001556020806111278339506080604052516000805433600160a060020a0319918216178255600980549091169092179091556110be90819061006990396000f3606060405236156101275760e060020a60003504630674763c811461012f57806306fdde0314610142578063095ea7b3146101b057806313af40351461024357806318160ddd1461026557806323b872dd146102d3578063313ce567146103715780635a3b7e42146103df5780636d60e6b41461044d5780636f752f091461046457806370a0823114610476578063754dea40146104f05780638da5cb5b1461052157806395d89b4114610533578063a4e2d634146105a1578063a5488a37146105ae578063a9059cbb146105ba578063c5096a691461064d578063c76a4bfb146106de578063cae9ca511461074c578063da7fc24f14610884578063dd57d5c5146108e0578063dd62ed3e14610910578063ea8a1af014610997578063f83d08ba146109bc575b6109da610002565b6109da6004355b801515610a3657610002565b6109dc604080516009547f06fdde030000000000000000000000000000000000000000000000000000000082529151600092600160a060020a0316916306fdde03916004828101926020929190829003018187876161da5a03f1156100025750506040515191506105ab9050565b6109ee600435602435604080516009547fe1f21c6700000000000000000000000000000000000000000000000000000000825233600160a060020a0390811660048401528581166024840152604483018590529251600093919091169163e1f21c67916064808301926020929190829003018187876161da5a03f1156100025750506040515115159050610a3957610002565b6109da600435600054610a8e90600160a060020a039081163390911614610136565b6109dc604080516009547f18160ddd0000000000000000000000000000000000000000000000000000000082529151600092600160a060020a0316916318160ddd916004828101926020929190829003018187876161da5a03f1156100025750506040515191506105ab9050565b6109ee600435602435604435604080516009547f15dacbea00000000000000000000000000000000000000000000000000000000825233600160a060020a0390811660048401528681166024840152858116604484015260648301859052925160009391909116916315dacbea916084808301926020929190829003018187876161da5a03f1156100025750506040515115159050610adc57610002565b610a02604080516009547f313ce5670000000000000000000000000000000000000000000000000000000082529151600092600160a060020a03169163313ce567916004828101926020929190829003018187876161da5a03f1156100025750506040515191506105ab9050565b6109dc604080516009547f5a3b7e420000000000000000000000000000000000000000000000000000000082529151600092600160a060020a031691635a3b7e42916004828101926020929190829003018187876161da5a03f1156100025750506040515191506105ab9050565b610a196008546101009004600160a060020a031681565b610a19600954600160a060020a031681565b6109dc600435604080516009547f70a08231000000000000000000000000000000000000000000000000000000008252600160a060020a038481166004840152925160009391909116916370a08231916024808301926020929190829003018187876161da5a03f115610002575050604051519392505050565b6109da600435600854610b329060ff1615801561051c5750600054600160a060020a0390811633909116145b610136565b610a19600054600160a060020a031681565b6109dc604080516009547f95d89b410000000000000000000000000000000000000000000000000000000082529151600092600160a060020a0316916395d89b41916004828101926020929190829003018187876161da5a03f1156100025750506040515191506105ab9050565b6109ee60085460ff165b90565b6109ee60045460ff1681565b6109ee600435602435604080516009547fbeabacc800000000000000000000000000000000000000000000000000000000825233600160a060020a0390811660048401528581166024840152604483018590529251600093919091169163beabacc8916064808301926020929190829003018187876161da5a03f1156100025750506040515115159050610b4757610002565b6109dc600435602435604435604080516009547fc5096a69000000000000000000000000000000000000000000000000000000008252600160a060020a0386811660048401528581166024840152604483018590529251600093919091169163c5096a69916064808301926020929190829003018187876161da5a03f115610002575050604051519150610b2b9050565b604080516020606435600481810135601f81018490048402850184019095528484526109ee948135946024803595604435956084949201919081908401838280828437509496505050505050506009546000908190610b9a90600160a060020a039081163390911614610136565b604080516020604435600481810135601f81018490048402850184019095528484526109ee9481359460248035959394606494929391019181908401838280828437509496505050505050506000600960009054906101000a9004600160a060020a0316600160a060020a0316636d1669e1338686866040518560e060020a0281526004018085600160a060020a0316815260200184600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156108525780820380516001836020036101000a031916815260200191505b50955050505050506020604051808303816000876161da5a03f1156100025750506040515115159050610c6e57610002565b6109da60043560003660405180838380828437820191505092505050604051809103902060006000610cc16000600160a060020a0316600860019054906101000a9004600160a060020a0316600160a060020a03161415610136565b6109da600435600854610ed79060ff1615801561051c5750600054600160a060020a039081163390911614610136565b6109dc600435602435604080516009547fdd62ed3e000000000000000000000000000000000000000000000000000000008252600160a060020a03858116600484015284811660248401529251600093919091169163dd62ed3e916044808301926020929190829003018187876161da5a03f115610002575050604051519150610a889050565b610a026008546000908190610f32906101009004600160a060020a0316821415610136565b6109da60005461106b9033600160a060020a03908116911614610136565b005b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b6040805160ff929092168252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b50565b82600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a35060015b92915050565b60405160008054600160a060020a03848116939116917fcbf985117192c8f614a58aaf97226bb80a754772f5f6edf06f87c675f2e6c66391a360008054600160a060020a0319168217905550565b82600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35060015b9392505050565b60098054600160a060020a0319168217905550565b82600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3506001610a88565b84905080600160a060020a0316638f4ffcb1878630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f168015610c405780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f1156100025750600198975050505050505050565b83600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3506001610b2b565b600854604080517fd34acd12000000000000000000000000000000000000000000000000000000008152600481018690529051610100909204600160a060020a03169163d34acd129160248082019260209290919082900301816000876161da5a03f1156100025750506040805180516008547f373c98a2000000000000000000000000000000000000000000000000000000008352600160a060020a0333811660048501526024840189905293519196506101009004909216925063373c98a291604480830192602092919082900301816000876161da5a03f1156100025750506040515191505060ff811660001415610def5760405133600160a060020a0316907f8e4a23d6a5d81f013eca4bc92aeb9214ccafcaebd1f097c350c922d6e19122d590600090a2610ed1565b8060ff1660011415610e345760405133600160a060020a0316907f22ef83ef54b5df91230b2d65af3c2a65b4ba53b97a27ff5b6f2527562ff0b24c90600090a2610ed1565b8060ff1660021415610e9057604051600160a060020a0333811691908416907f5fe5b825dd4cb0c7c390e25ef299231a7f2a51f2ad7bef79d4198f8263756e0f90600090a360098054600160a060020a03191685179055610ed1565b8060ff1660031415610ed15760405133600160a060020a0316907f54cecb216faa7733a7ffde5b4b179cc837f8f6e8979e8265b59e1b4bb417917d90600090a25b50505050565b6008805474ffffffffffffffffffffffffffffffffffffffff0019166101008302179055604051600160a060020a033316907f9006512524817fcbc215e2d4dec75e5f54a944fb1a7279a5a6fa33bdcfe09adb90600090a250565b600860019054906101000a9004600160a060020a0316600160a060020a03166339b35753336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f1156100025750506040515191505060ff811660001415610fde5760405133600160a060020a0316907f8e4a23d6a5d81f013eca4bc92aeb9214ccafcaebd1f097c350c922d6e19122d590600090a2611066565b8060ff16600114156110235760405133600160a060020a0316907f57d0354b1f38cfda21abb3883d48c4b90ca307d1dac24b26b641eb5c5376e2a890600090a2611066565b8060ff16600214156110665760405133600160a060020a03169081907fc0adb725fbf61748fcd7b4f3c3d67eaf2681ffca84f3364a24dd77c0beff719d90600090a35b919050565b60085461107b9060ff1615610136565b6008805460ff1916600117905560405133600160a060020a0316907f44427e3003a08f22cf803894075ac0297524e09e521fc1c15bc91741ce3dc15990600090a256

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d71925058c255a991dd7a0fa8c100b447fd9db85

-----Decoded View---------------
Found 1 constructor arguments :
Arg [0] : 000000000000000000000000d71925058c255a991dd7a0fa8c100b447fd9db85


 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.