Sponsored Link:   WELL – WORKING HEALTHCARE U.S. PLATFORM - RAISED $3M IN PRE-ICO – JOIN NOW WITH 40% BONUS
Contract Overview
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 232 txns
  Latest 25 txns from a total Of 232 transactions View All

TxHash Age From To Value [TxFee]
0x5a94130b8dd07eb5aeafef5193cb5927b106fb2268997d66a2e5020c5867a3773 hrs 30 mins ago0x0a41e869a43e635798b34e53748f38050910f463  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.002129827
0x70b6a91c564ee900237fec440c0a38b14fef3bd82ecfa2d341585c2b9ac8708a15 hrs 30 mins ago0x0a3a74c4326977755c81567f013774c2ee9a4da2  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00132
0x139cc8f8d45fee7e2ebe0a9842ef947c6f7926a410f9bc5c727b59ab57b130e51 day 23 hrs ago0x053e8b4cf28c974654f22bde21795145984ff33b  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xdb559e45969f5e4fae59110bd3f268291ceefdfadaa03f7871b23aa2db2ee2681 day 23 hrs ago0x053e8b4cf28c974654f22bde21795145984ff33b  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xfdc9b00086cc2790c97fa9bed8968ba804901a22c4fdb963d9a893683e6b6daa4 days 11 hrs ago0xa002664dde8150a69e17eb53e75ff7e1f89d9957  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0x0205a7e01889b1c437cda671d07340fe2dd4b90a1a0fecc91d59353daa1319354 days 14 hrs ago0x79ac0c56e71ef51cb6b04fc3240e2bea74ee6761  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.020999979
0x63a91789a6bfaf84a2e2135e8ca7f6f4473815d6b086f4b6b16ea9408efa7ee44 days 14 hrs ago0x79ac0c56e71ef51cb6b04fc3240e2bea74ee6761  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00441
0x961a3440a26273c7c88824285a691f2cc528967bc9674adc312d3d0a74ad47225 days 17 hrs ago0xa0da7a674ef3167ea8d8156e84ae2c038956084a  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.001025
0x543d7141d4aff7952f737198d03c935bcfcc3f552f2ebfdaa37f85063f5c21898 days 12 hrs ago0x6e1e924848bba21199334157b20015d548230b73  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.000212052
0x81cd57c2014921dfb14ba85d32e1fd40da928ab842802e78309c7787209fe80b10 days 11 hrs ago0x0ac59f089ec683e1a0af839c34fe20e3c7eb29e9  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.012
0x23e102161037660b7e5ab031107694e4a96e4ab4be126135f63756be6af7fd6910 days 14 hrs ago0x5b4df07e010008a61c2e711cb3c5fa2586255a42  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xb6e2e826a4235674848c8f1aca01c820b587496652945e2f665f10fb41d0856d10 days 17 hrs ago0xfc3e2d14a9b1cf8b45550ddd9408c64dd593d667  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00987
0xd724a6badef05b352adc8f19921b70199e53ee46857beff7da9ff672d08944af11 days 7 hrs ago0xbc827c70626f45d90c975d9da016dad13688c59e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xa50ad11be38924bcbae46f953c7e3bcf2f1c4b002c90ab84c7fbef3922b245ab11 days 16 hrs ago0xa93c951f46cd6690fc0f5ddc4c7053ccbad07998  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0001
0x256649be983c771bdf38e7943b57b75b01a5f101f7522b5601e7f6878a88a22313 days 8 hrs ago0x9b0a46c32a92fa5cd1cbc5b7aa180e668a2f5bc5  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xcfcaebdfcdce1411dab48cef937f68fbcfb4ae434056c7f9afbcdc5366b4ea6513 days 20 hrs ago0xe75182583d1ae99ccf06aa5d3b330561ac48745d  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.0000233
0xa9927651747080457174d9fdf5c35b66cdb12b74e2c8b942e6785343b125c22e13 days 20 hrs ago0xe75182583d1ae99ccf06aa5d3b330561ac48745d  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.000253
0xe24a2d7fa41f6e6c21d865f8cde908921fb1f76d30027b5c996443faa757296c14 days 8 hrs ago0xecd3b50017c1efc765a2b69d1614d7148e2de85e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0xdc1b4f2f92e8eecd22e3eeb1b8dec116bdab8a2832080031be9ef95bf6f7a0cf18 days 12 mins ago0x2c1bc8d123f3064cfde456dc33e366eb457e0fe8  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0x7d08f0a316d1b41a57755a8d53f94694af5e70b8ada19e912e99585b00e58cf918 days 14 mins ago0x2c1bc8d123f3064cfde456dc33e366eb457e0fe8  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
0x52bf771f74425c515acd09a54dc3363fec0b5fa228ef3f5b61c11d2e9bd6c41218 days 2 hrs ago0x0047a660c7a7f12023b0e0430c628dd74a0c9d0e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00274725
0x958a8b2614c782a7b3a712c54bc75628195fd67c16c6ff6c239e85bd3dd2341018 days 2 hrs ago0x0047a660c7a7f12023b0e0430c628dd74a0c9d0e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00204
0x29ab4a4d8ba561ab5636915da2bd65d5c995a128641b1857af469290f94b8d8518 days 2 hrs ago0x0047a660c7a7f12023b0e0430c628dd74a0c9d0e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00138703
0x165f12198b495a2b5d8d8e1a3ed1ac07903895755a76523a3ab255343cbb496318 days 2 hrs ago0x0047a660c7a7f12023b0e0430c628dd74a0c9d0e  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.00138703
0x94d4811a9c528d98d5b8550dd3e584276270064c5c943ca7022b6d20e079fee519 days 8 hrs ago0xbca805b4265b44479b75a241c14e30819db624d8  IN   0xadc46ff5434910bd17b24ffb429e585223287d7f0 Ether0.01
[ 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.