Sponsored Link:   PAVOCOIN - IoT blockchain for the AgTech ecosystem. Bringing together IoT, blockchain, and agriculture. Join now!
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 245 txns
Token Contract: DVIP (DVIP)
 Latest 25 txns from a total Of 245 transactions
View All

TxHash Age From To Value [TxFee]
0xc1e7c92093bbf285e8f0893d85c36e0e5cd67c92074a71806bb495f8aa3b30871 day 12 hrs ago0x3522a96a53fae1f4fef15a53a212ad01bd9d46e1  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.001925
0x907dbce43c7779fd69bdf6eb6fa96f0c6a78135bb25b9a2014dd53c4212914ed7 days 15 hrs ago0xeb9409af612a51e2204f588c24fdb58bbf853e41  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0003872056
0x5f7181f459f333ed13852b870321b261f52458eaee5d1509a870d336637534a510 days 2 hrs ago0x564b9adc8a61b67bdc5cfccf4bc2667ebf57f700  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00144
0x8678506facc301ba654ed6f0bfb041d484a7be66e282e0d6f45554535d3f436413 days 2 hrs ago0x564b9adc8a61b67bdc5cfccf4bc2667ebf57f700  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0041175
0x43d390dcbe36b4891e8379d156468e2e87b61d2a83833ef6be7c4d2b2dd88c9113 days 5 hrs ago0x564b9adc8a61b67bdc5cfccf4bc2667ebf57f700  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.002008125
0xea96b02244079cff39d5d13999adfa331594ac7eb73a479d21cc46e59e9aecec13 days 21 hrs ago0x564b9adc8a61b67bdc5cfccf4bc2667ebf57f700  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00102375
0x7273a843ac9c28e8db55bc56dbdae3a4baf422c42f09ba20e3b6f09fdb63cd9714 days 16 hrs ago0x564b9adc8a61b67bdc5cfccf4bc2667ebf57f700  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00081
0xf57b8611a70175060db58909760b1f446261d924273c42081451234e4632f6b131 days 8 hrs ago0x177aaf962f4d86df3623e1b03e601687f1cc959c  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.02125
0xcaa1fbb4e17d48d7842330476c9a4d0b4c14e6d1322c28baed609e2671a12ae659 days 5 hrs ago0xd71d0a6f13a945bf15319c76bb0f6be15388d277  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.001
0x37c8ea9c90d71f3bdda53827a844104b41a9792426cdee2f61f24e42e961ee4f64 days 20 hrs ago0x8f49f8a706a4b86d3180cbf45355e2a29a7b2cd2  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00105
0x40064f82a3c5c56232129aed222bd6327797b5617c71cc7ff1789a7857bd6be464 days 20 hrs ago0x8f49f8a706a4b86d3180cbf45355e2a29a7b2cd2  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00105
0xc4b1872034594bb994e8c788bb3bcdcc25437a10874a250a80447c5c47d62fba86 days 4 hrs ago0x63e54e029667bc538878153f6d2d158636a0e5b0  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.002620464
0xbbf0c64883ac46d51eb6c4ac784d7fb4cbafdfa6173bb97f16935e8bc5994df286 days 4 hrs ago0x63e54e029667bc538878153f6d2d158636a0e5b0  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.002620674
0x5a94130b8dd07eb5aeafef5193cb5927b106fb2268997d66a2e5020c5867a37786 days 12 hrs ago0x0a41e869a43e635798b34e53748f38050910f463  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.002129827
0x70b6a91c564ee900237fec440c0a38b14fef3bd82ecfa2d341585c2b9ac8708a87 days 2 mins ago0x0a3a74c4326977755c81567f013774c2ee9a4da2  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00132
0x139cc8f8d45fee7e2ebe0a9842ef947c6f7926a410f9bc5c727b59ab57b130e588 days 7 hrs ago0x053e8b4cf28c974654f22bde21795145984ff33b  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xdb559e45969f5e4fae59110bd3f268291ceefdfadaa03f7871b23aa2db2ee26888 days 8 hrs ago0x053e8b4cf28c974654f22bde21795145984ff33b  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xfdc9b00086cc2790c97fa9bed8968ba804901a22c4fdb963d9a893683e6b6daa90 days 20 hrs ago0xa002664dde8150a69e17eb53e75ff7e1f89d9957  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0x0205a7e01889b1c437cda671d07340fe2dd4b90a1a0fecc91d59353daa13193590 days 23 hrs ago0x79ac0c56e71ef51cb6b04fc3240e2bea74ee6761  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.020999979
0x63a91789a6bfaf84a2e2135e8ca7f6f4473815d6b086f4b6b16ea9408efa7ee490 days 23 hrs ago0x79ac0c56e71ef51cb6b04fc3240e2bea74ee6761  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00441
0x961a3440a26273c7c88824285a691f2cc528967bc9674adc312d3d0a74ad472292 days 2 hrs ago0xa0da7a674ef3167ea8d8156e84ae2c038956084a  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.001025
0x543d7141d4aff7952f737198d03c935bcfcc3f552f2ebfdaa37f85063f5c218994 days 21 hrs ago0x6e1e924848bba21199334157b20015d548230b73  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.000212052
0x81cd57c2014921dfb14ba85d32e1fd40da928ab842802e78309c7787209fe80b96 days 19 hrs ago0x0ac59f089ec683e1a0af839c34fe20e3c7eb29e9  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.012
0x23e102161037660b7e5ab031107694e4a96e4ab4be126135f63756be6af7fd6996 days 22 hrs ago0x5b4df07e010008a61c2e711cb3c5fa2586255a42  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xb6e2e826a4235674848c8f1aca01c820b587496652945e2f665f10fb41d0856d97 days 2 hrs ago0xfc3e2d14a9b1cf8b45550ddd9408c64dd593d667  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00987
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Name: DVIP
Compiler Version: v0.3.6+commit.3fc68da
Optimization Enabled: Yes
Runs (Optimiser):  200



  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.