Contract 0x2f5cdc81a729b750f3b733cb95660e788441c71e

 

TxHash Block Age From To Value [TxFee]
0x87b7bb7769a5e2f212d8e131150b33ed634f8e459d0d8c83943eea81f3b95338715459115 days 22 hrs ago0x8be393e3cd4317602a79d67b8f2311cf539f96e1  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000204335
0x3ca27f94f5656c3af0eec5ba11d8ca2e9c4340638692e8d2cb720abd88f83b56708978128 days 15 hrs ago0xa048926f1d70ed931a99345fd80c3a35141775ee  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000102614
0x97e420d131f602e81b6f6019f16d2e08dbf6b749081804b0704dbf1876c6a9c7705549234 days 18 hrs ago0x34ab005ae9789bda6e0a55d256cf637570394745  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.002116707
0xf4c2cd6b4b9e74f6e246a9640199545f8438f5a7e1ccf6a694c72f4671923bd8703471338 days 12 hrs ago0xbf3848e7572ca5708e410a82e50e3763e9adb71d  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.002731707
0x24524ba4cd8b83d1f3b7aad29807acd37643bf84e8b4f2fc00ff20e737f5313c700546343 days 17 hrs ago0x8be393e3cd4317602a79d67b8f2311cf539f96e1  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000122601
0xae85c093aefd0fcb04a29e9928d911edf87de834242f282687313c7999e7b2d2700524743 days 18 hrs ago0xa048926f1d70ed931a99345fd80c3a35141775ee  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000200073
0x17fb57babe2a31e6548c734594e8f34f52f626da95bdd5c378149436e8a35544700501243 days 19 hrs ago0xa048926f1d70ed931a99345fd80c3a35141775ee  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000153921
0x4b0eeff8fee08585062d08264ba99179f63d8a2bec81098070e7213e2f354fb3699945544 days 19 hrs ago0x2f1c3f09f1049642ae53678c044a5e6fbc79b4e4  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.00039373
0xe603e24c05775149f8f68b113d211a2193993c46281bf990082e3c75b68fa88d695349252 days 13 hrs ago0xe49959d0b48a9c121e0bb8034bacdb8be594b7e0  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000154881
0xe9a4e129065a12b1ae5187a8031dde675d15e6fdb777e60fc8e3fa45011bbf2f682042274 days 19 hrs ago0xfe516d029a0d403a93cdac514610d0058acd6e82  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.00041559564
0x0506328d76968c7582cd045a39425c6a8e20068735599effa2957fa65bc37f85673372189 days 2 hrs ago0xb5bae7e37cc502869bf8ba83cc40297e3a45d463  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.002116707
0xe9f549aee7cd75e9809919af10fe3fdf6f0d8ed4587f2ee8d33045463bdf5f04672440590 days 14 hrs ago0x67b4d78a86d6279bc69dd8c85c7071fb418a964a  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.001501707
0x2405615b71795c37ea9634c7aeab03a0c20f89e68dbcf1a3bbf11a09d5d2bed4668124297 days 16 hrs ago0x18ed700e288cf5861004271585b54eb7980c5871  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000103254
0x70da579dd47e9e6518bf42b1a6e52afff0ed1f16578af6789d2a96761d8867d8668110197 days 16 hrs ago0x18ed700e288cf5861004271585b54eb7980c5871  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000199881
0xbce05b2b12eff53c703c7f96e43e2640daf6717b013471cf0af32330009c66cf667281399 days 1 hr ago0x604ece7976e24e6a85f8d0926828433097a8e5f3  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.0002478096
0x5adc8c4be468e0e0ba3c8e1042d1f3167aef1577f65932d5553de9c6599d420e6666906100 days 31 mins ago0x1b85ec99155e168886497c7f2d9caaa4b43e336c  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.00103254
0x7ef2381d05e5b89bf617f8375a412e06cda4a6e2cc7708910245ba21e6fcde776666796100 days 58 mins ago0x1b85ec99155e168886497c7f2d9caaa4b43e336c  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.001667275
0x64fa8d354872aae16ac9eba931b6c925569559131e0b1d20c9fc76a72523289f6662360100 days 18 hrs ago0x34ab005ae9789bda6e0a55d256cf637570394745  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.002121955
0x6492f0a5d4c31882321e3da63dd170d08f8a0911890ec60f1f9b5ea1c81f74716656460101 days 17 hrs ago0x156796e890ea35bb953c54aae00b9a01deb87e79  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.001506955
0x5f9aaaaff8071fe8e69dc77aa23dd2b5a37a1f22e85e15faf04ed70fc2c858d16656439101 days 17 hrs ago0x156796e890ea35bb953c54aae00b9a01deb87e79  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000108248
0xcb4057b8dc493c7bf18c68763fe4150135a711f979a40587b029a976c6c2224b6638099104 days 18 hrs ago0x156796e890ea35bb953c54aae00b9a01deb87e79  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000081186
0xa478e2975e631206ed5ffd32a84d992167a2e76f0dd3d469fdfe6867df5b140b6632090105 days 17 hrs ago0x5ecede545a286a2605757d539437deb83c1da050  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.002116707
0x9df356f1f051d86bbf30b6c8dbde70e9ba51023fa1e4b31caf48f5e0a277eae46626198106 days 16 hrs ago0xfe516d029a0d403a93cdac514610d0058acd6e82  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000155073
0x72e29c59e7bf921926c9a0c1bc17c88efbb3f13597d801e6ed07a4565e39bc796626159106 days 17 hrs ago0x34ab005ae9789bda6e0a55d256cf637570394745  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.001504331
0xda2f668c0057485f276ee02da9118d8e3073d225bf68efb478e7579c084527a36600755110 days 21 hrs ago0x1c5377488c98d2ab9a05a5ce1feda867a15f3ca6  IN   0x2f5cdc81a729b750f3b733cb95660e788441c71e0 Ether0.000206508
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: LD2Zero
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.19;

// File: contracts/storage/interface/RocketStorageInterface.sol

// Our eternal storage interface
contract RocketStorageInterface {
    // Modifiers
    modifier onlyLatestRocketNetworkContract() {_;}
    // Getters
    function getAddress(bytes32 _key) external view returns (address);
    function getUint(bytes32 _key) external view returns (uint);
    function getString(bytes32 _key) external view returns (string);
    function getBytes(bytes32 _key) external view returns (bytes);
    function getBool(bytes32 _key) external view returns (bool);
    function getInt(bytes32 _key) external view returns (int);
    // Setters
    function setAddress(bytes32 _key, address _value) onlyLatestRocketNetworkContract external;
    function setUint(bytes32 _key, uint _value) onlyLatestRocketNetworkContract external;
    function setString(bytes32 _key, string _value) onlyLatestRocketNetworkContract external;
    function setBytes(bytes32 _key, bytes _value) onlyLatestRocketNetworkContract external;
    function setBool(bytes32 _key, bool _value) onlyLatestRocketNetworkContract external;
    function setInt(bytes32 _key, int _value) onlyLatestRocketNetworkContract external;
    // Deleters
    function deleteAddress(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteUint(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteString(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteBytes(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteBool(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteInt(bytes32 _key) onlyLatestRocketNetworkContract external;
    // Hash helpers
    function kcck256str(string _key1) external pure returns (bytes32);
    function kcck256strstr(string _key1, string _key2) external pure returns (bytes32);
    function kcck256stradd(string _key1, address _key2) external pure returns (bytes32);
    function kcck256straddadd(string _key1, address _key2, address _key3) external pure returns (bytes32);
}

// File: contracts/storage/RocketBase.sol

/// @title Base settings / modifiers for each contract in Rocket Pool
/// @author David Rugendyke
contract RocketBase {

    /*** Events ****************/

    event ContractAdded (
        address indexed _newContractAddress,                    // Address of the new contract
        uint256 created                                         // Creation timestamp
    );

    event ContractUpgraded (
        address indexed _oldContractAddress,                    // Address of the contract being upgraded
        address indexed _newContractAddress,                    // Address of the new contract
        uint256 created                                         // Creation timestamp
    );

    /**** Properties ************/

    uint8 public version;                                                   // Version of this contract


    /*** Contracts **************/

    RocketStorageInterface rocketStorage = RocketStorageInterface(0);       // The main storage contract where primary persistant storage is maintained


    /*** Modifiers ************/

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        roleCheck("owner", msg.sender);
        _;
    }

    /**
    * @dev Modifier to scope access to admins
    */
    modifier onlyAdmin() {
        roleCheck("admin", msg.sender);
        _;
    }

    /**
    * @dev Modifier to scope access to admins
    */
    modifier onlySuperUser() {
        require(roleHas("owner", msg.sender) || roleHas("admin", msg.sender));
        _;
    }

    /**
    * @dev Reverts if the address doesn't have this role
    */
    modifier onlyRole(string _role) {
        roleCheck(_role, msg.sender);
        _;
    }

  
    /*** Constructor **********/
   
    /// @dev Set the main Rocket Storage address
    constructor(address _rocketStorageAddress) public {
        // Update the contract address
        rocketStorage = RocketStorageInterface(_rocketStorageAddress);
    }


    /*** Role Utilities */

    /**
    * @dev Check if an address is an owner
    * @return bool
    */
    function isOwner(address _address) public view returns (bool) {
        return rocketStorage.getBool(keccak256("access.role", "owner", _address));
    }

    /**
    * @dev Check if an address has this role
    * @return bool
    */
    function roleHas(string _role, address _address) internal view returns (bool) {
        return rocketStorage.getBool(keccak256("access.role", _role, _address));
    }

     /**
    * @dev Check if an address has this role, reverts if it doesn't
    */
    function roleCheck(string _role, address _address) view internal {
        require(roleHas(_role, _address) == true);
    }

}

// File: contracts/Authorized.sol

/**
 * @title Authorized
 * @dev The Authorized contract has an issuer, depository, and auditor address, and provides basic 
 * authorization control functions, this simplifies the implementation of "user permissions".
 */
contract Authorized is RocketBase {

    // The issuer's address
    // In contract's RocketStorage 
    // address public token.issuer;

    // The depository's address
    // In contract's RocketStorage 
    // address public token.depository;

    // The auditor's address
    // In contract's RocketStorage 
    // address public token.auditor;

    event IssuerTransferred(address indexed previousIssuer, address indexed newIssuer);
    event AuditorTransferred(address indexed previousAuditor, address indexed newAuditor);
    event DepositoryTransferred(address indexed previousDepository, address indexed newDepository);

    /* 
     *  Modifiers
     */

    // Ensure sender is issuer   
    modifier onlyIssuer {
        require( msg.sender == issuer() );
        _;
    }

    // Ensure sender is depository
    modifier onlyDepository {
        require( msg.sender == depository() );
        _;
    }

    // Ensure sender is auditor
    modifier onlyAuditor {
        require( msg.sender == auditor() );
        _;
    }


  /**
   * @dev Allows the current owner to explicity assign a new issuer.
   * @param newIssuer The address of the new issuer.
   */
  function setIssuer(address newIssuer) public onlyOwner {
    require(newIssuer != address(0));
    rocketStorage.setAddress(keccak256("token.issuer"), newIssuer);
    emit IssuerTransferred(issuer(), newIssuer);
  }

  /**
   * @dev Get the current issuer address from storage.
   */
  function issuer() public view returns (address) {
    return rocketStorage.getAddress(keccak256("token.issuer"));
  }

  /**
   * @dev Allows the current owner to explicity assign a new auditor.
   * @param newAuditor The address of the new auditor.
   */
  function setAuditor(address newAuditor) public onlyOwner {
    require(newAuditor != address(0));
    rocketStorage.setAddress(keccak256("token.auditor"), newAuditor);
    emit AuditorTransferred(auditor(), newAuditor);
  }

  /**
   * @dev Get the current auditor address from storage.
   */
  function auditor() public view returns (address) {
    return rocketStorage.getAddress(keccak256("token.auditor"));
  }

  /**
   * @dev Allows the current owner to explicity assign a new depository.
   * @param newDepository The address of the new depository.
   */
  function setDepository(address newDepository) public onlyOwner {
    require(newDepository != address(0));
    rocketStorage.setAddress(keccak256("token.depository"), newDepository);
    emit DepositoryTransferred(depository(), newDepository);
  }

  /**
   * @dev Get the current depository address from storage.
   */
  function depository() public view returns (address) {
    return rocketStorage.getAddress(keccak256("token.depository"));
  }

}

// File: contracts/PausableRedemption.sol

/**
 * @title PausableRedemption
 * @dev Base contract which allows children to implement an emergency stop mechanism, specifically for redemption.
 */
contract PausableRedemption is RocketBase {
  event PauseRedemption();
  event UnpauseRedemption();

  // Whether redemption is paused or not
  // Stored in RocketStorage
  // bool public token.redemptionPaused = false;

  /**
   * @dev Modifier to make a function callable only when the contract redemption is not paused.
   */
  modifier whenRedemptionNotPaused() {
    require(!redemptionPaused());
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract redemption is paused.
   */
  modifier whenRedemptionPaused() {
    require(redemptionPaused());
    _;
  }

  /**
   * @dev returns the redemptionPaused status from contract storage
   */
  function redemptionPaused() public view returns (bool) {
    return rocketStorage.getBool(keccak256("token.redemptionPaused"));
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pauseRedemption() onlyOwner whenRedemptionNotPaused public {
    rocketStorage.setBool(keccak256("token.redemptionPaused"), true);
    emit PauseRedemption();
  }

  /**
   * @dev called by the owner to unpause redemption, returns to normal state
   */
  function unpauseRedemption() onlyOwner whenRedemptionPaused public {
    rocketStorage.setBool(keccak256("token.redemptionPaused"), false);
    emit UnpauseRedemption();
  }
}

// File: zeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

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

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

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

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

// File: contracts/Issuable.sol

contract Issuable is RocketBase, Authorized, PausableRedemption {
    using SafeMath for uint256;

    event AssetsUpdated(address indexed depository, uint256 amount);
    event CertificationUpdated(address indexed auditor, uint256 amount);

    // Get assetsOnDeposit
    function assetsOnDeposit() public view returns (uint256) {
        return rocketStorage.getUint(keccak256("issuable.assetsOnDeposit"));
    }

    // Get assetsCertified
    function assetsCertified() public view returns (uint256) {
        return rocketStorage.getUint(keccak256("issuable.assetsCertified"));
    }

    /******* For paused redemption *******/

    // Set assetsOnDeposit
    function setAssetsOnDeposit(uint256 _total) public onlyDepository whenRedemptionPaused {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        require(_total >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsOnDeposit"), _total);
        emit AssetsUpdated(msg.sender, _total);
    }

    // Set assetsCertified
    function setAssetsCertified(uint256 _total) public onlyAuditor whenRedemptionPaused {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        require(_total >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsCertified"), _total);
        emit CertificationUpdated(msg.sender, _total);
    }

    /******* For during both paused and non-paused redemption *******/

    // Depository can receive assets (increasing)
    function receiveAssets(uint256 _units) public onlyDepository {
        uint256 total_ = assetsOnDeposit().add(_units);
        rocketStorage.setUint(keccak256("issuable.assetsOnDeposit"), total_);
        emit AssetsUpdated(msg.sender, total_);
    }

    // Depository can release assets (decreasing), but never to less than the totalSupply
    function releaseAssets(uint256 _units) public onlyDepository {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        uint256 total_ = assetsOnDeposit().sub(_units);
        require(total_ >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsOnDeposit"), total_);
        emit AssetsUpdated(msg.sender, total_);
    }

    // Auditor can increase certified assets
    function increaseAssetsCertified(uint256 _units) public onlyAuditor {
        uint256 total_ = assetsCertified().add(_units);
        rocketStorage.setUint(keccak256("issuable.assetsCertified"), total_);
        emit CertificationUpdated(msg.sender, total_);
    }

    // Auditor can decrease certified assets
    function decreaseAssetsCertified(uint256 _units) public onlyAuditor {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        uint256 total_ = assetsCertified().sub(_units);
        require(total_ >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsCertified"), total_);
        emit CertificationUpdated(msg.sender, total_);
    }

}

// File: zeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: zeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/LD2Token.sol

/// @title The primary ERC20 token contract, using LD2 storage
/// @author Steven Brendtro
contract LD2Token is ERC20, RocketBase, Issuable {
  using SafeMath for uint256;

  event TokensIssued(address indexed issuer, uint256 amount);

  // The balances of the token, per ERC20, but stored in contract storage (rocketStorage)
  // mapping(address => uint256) token.balances;

  // The totalSupply of the token, per ERC20, but stored in contract storage (rocketStorage)
  // uint256 token.totalSupply;

  // The authorizations of the token, per ERC20, but stored in contract storage (rocketStorage)
  // This is accomplished by hashing token.allowed + _fromAddr + _toAddr
  // mapping (address => mapping (address => uint256)) internal allowed;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return rocketStorage.getUint(keccak256("token.totalSupply"));
  }

  /**
  * @dev increase total number of tokens in existence
  */
  function increaseTotalSupply(uint256 _increase) internal {
    uint256 totalSupply_ = totalSupply();
    totalSupply_ = totalSupply_.add(_increase);
    rocketStorage.setUint(keccak256("token.totalSupply"),totalSupply_);
  }

  /**
  * @dev decrease total number of tokens in existence
  */
  function decreaseTotalSupply(uint256 _decrease) internal {
    uint256 totalSupply_ = totalSupply();
    totalSupply_ = totalSupply_.sub(_decrease);
    rocketStorage.setUint(keccak256("token.totalSupply"),totalSupply_);
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balanceOf(msg.sender));

    // SafeMath.sub will throw if there is not enough balance.
    // Use the contract storage
    setBalanceOf(msg.sender, balanceOf(msg.sender).sub(_value));
    setBalanceOf(_to, balanceOf(_to).add(_value));
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return rocketStorage.getUint(keccak256("token.balances",_owner));
  }

  /**
  * @dev Updates the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @param _balance An uint256 representing the amount owned by the passed address.
  */
  function setBalanceOf(address _owner, uint256 _balance) internal {
    rocketStorage.setUint(keccak256("token.balances",_owner), _balance);
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return rocketStorage.getUint(keccak256("token.allowed",_owner,_spender));
  }

  /**
  * @dev Updates the allowance by _owner of the _spender to have access to _balance.
  * @param _owner The address to query the the balance of.
  * @param _spender The address which will spend the funds
  * @param _balance An uint256 representing the amount owned by the passed address.
  */
  function setAllowance(address _owner, address _spender, uint256 _balance) internal {
    rocketStorage.setUint(keccak256("token.allowed",_owner,_spender), _balance);
  }

  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balanceOf(_from));
    require(_value <= allowance(_from, msg.sender));
    
    setBalanceOf(_from, balanceOf(_from).sub(_value));
    setBalanceOf(_to, balanceOf(_to).add(_value));
    setAllowance(_from, msg.sender, allowance(_from, msg.sender).sub(_value));
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    setAllowance(msg.sender, _spender, _value);
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    setAllowance(msg.sender, _spender, allowance(msg.sender, _spender).add(_addedValue));
    emit Approval(msg.sender, _spender, allowance(msg.sender, _spender));
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowance(msg.sender, _spender);
    if (_subtractedValue > oldValue) {
      setAllowance(msg.sender, _spender, 0);
    } else {
      setAllowance(msg.sender, _spender, oldValue.sub(_subtractedValue));
    }
    emit Approval(msg.sender, _spender, allowance(msg.sender, _spender));
    return true;
  }


  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * Issuer can only issue tokens up to the lesser of assetsOnDeposit and
   * assetsCertified.  This prevents issuing uncertified tokens and ensures
   * that every token issued has exactly one unit of the asset backing it.
   * @param _units Total amount of additional tokens to issue
   */
  function issueTokensForAssets( uint256 _units ) public onlyIssuer {

    uint256 newSupply_ = totalSupply().add(_units);

    // Find the greater of assetsOnDeposit and assetsCertified
    uint256 limit_ = 0;
    if ( assetsOnDeposit() > assetsCertified() )
      limit_ = assetsOnDeposit();
    else
      limit_ = assetsCertified();

    // the new supply can't be larger than our issuance limit
    require( newSupply_ <= limit_ );

    // Increase the total supply
    increaseTotalSupply( _units );

    // Increase the issuer's balance
    setBalanceOf(issuer(), balanceOf(issuer()).add(_units));

    emit TokensIssued(issuer(), _units);
  }

}

// File: contracts/LD2Zero.sol

/// @title The LD2-style ERC20 token for LD2.zero
/// @author Steven Brendtro
contract LD2Zero is LD2Token {

  string public name = "LD2.zero";
  string public symbol = "XLDZ";
  // Decimals are stored in RocketStorage
  // uint8 public token.decimals = 18;

  /*** Constructor ***********/

  /// @dev LD2Zero constructor
  constructor(address _rocketStorageAddress) RocketBase(_rocketStorageAddress) public {
    // Set the decimals
    if(decimals() == 0) {
      rocketStorage.setUint(keccak256("token.decimals"),18);
    }
  }

  function decimals() public view returns (uint8) {
    return uint8(rocketStorage.getUint(keccak256("token.decimals")));
  }

}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"increaseAssetsCertified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDepository","type":"address"}],"name":"setDepository","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"releaseAssets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"issueTokensForAssets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"auditor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"receiveAssets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"decreaseAssetsCertified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"assetsOnDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"assetsCertified","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newIssuer","type":"address"}],"name":"setIssuer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_total","type":"uint256"}],"name":"setAssetsOnDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"redemptionPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpauseRedemption","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseRedemption","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAuditor","type":"address"}],"name":"setAuditor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_total","type":"uint256"}],"name":"setAssetsCertified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"depository","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_rocketStorageAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"issuer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokensIssued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"depository","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AssetsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"auditor","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"CertificationUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"PauseRedemption","type":"event"},{"anonymous":false,"inputs":[],"name":"UnpauseRedemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousIssuer","type":"address"},{"indexed":true,"name":"newIssuer","type":"address"}],"name":"IssuerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAuditor","type":"address"},{"indexed":true,"name":"newAuditor","type":"address"}],"name":"AuditorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousDepository","type":"address"},{"indexed":true,"name":"newDepository","type":"address"}],"name":"DepositoryTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newContractAddress","type":"address"},{"indexed":false,"name":"created","type":"uint256"}],"name":"ContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_oldContractAddress","type":"address"},{"indexed":true,"name":"_newContractAddress","type":"address"},{"indexed":false,"name":"created","type":"uint256"}],"name":"ContractUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","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"}]

Contract Creation Code
608060405260008060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600881526020017f4c44322e7a65726f000000000000000000000000000000000000000000000000815250600190805190602001906200009292919062000385565b506040805190810160405280600481526020017f584c445a0000000000000000000000000000000000000000000000000000000081525060029080519060200190620000e092919062000385565b50348015620000ee57600080fd5b5060405160208062003ee9833981018060405281019080805190602001909291905050508080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060006200017062000273640100000000026401000000009004565b60ff1614156200026c57600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e019050604051809103902060126040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156200025257600080fd5b505af115801562000267573d6000803e3d6000fd5b505050505b5062000434565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156200034357600080fd5b505af115801562000358573d6000803e3d6000fd5b505050506040513d60208110156200036f57600080fd5b8101908080519060200190929190505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c857805160ff1916838001178555620003f9565b82800160010185558215620003f9579182015b82811115620003f8578251825591602001919060010190620003db565b5b5090506200040891906200040c565b5090565b6200043191905b808211156200042d57600081600090555060010162000413565b5090565b90565b613aa580620004446000396000f30060806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461022057806318160ddd146102855780631d143848146102b05780631d532a971461030757806323b872dd146103345780632f54bf6e146103b9578063313ce5671461041457806337472c4b146104455780633936e99a1461048857806339cef0b7146104b55780633ec045a6146104e25780634e98a5b31461053957806350116afb1461056657806352353e5b146105935780635445cbf3146105be57806354fd4d50146105e957806355cc4e571461061a5780635b5e7bbe1461065d578063661884631461068a57806370a08231146106ef57806373a95ddd146107465780638d044c061461077557806392bccb801461078c57806395d89b41146107a35780639f20325514610833578063a784d96914610876578063a9059cbb146108a3578063bedd12a514610908578063d73dd6231461095f578063dd62ed3e146109c4575b600080fd5b34801561019c57600080fd5b506101a5610a3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ad9565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a610b55565b6040518082815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5610c64565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031357600080fd5b5061033260048036038101908080359060200190929190505050610d73565b005b34801561034057600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f12565b604051808215151515815260200191505060405180910390f35b3480156103c557600080fd5b506103fa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561042057600080fd5b506104296111d8565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045157600080fd5b50610486600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e7565b005b34801561049457600080fd5b506104b3600480360381019080803590602001909291905050506114e0565b005b3480156104c157600080fd5b506104e06004803603810190808035906020019092919050505061179b565b005b3480156104ee57600080fd5b506104f76118d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054557600080fd5b50610564600480360381019080803590602001909291905050506119e2565b005b34801561057257600080fd5b5061059160048036038101908080359060200190929190505050611b81565b005b34801561059f57600080fd5b506105a8611e3c565b6040518082815260200191505060405180910390f35b3480156105ca57600080fd5b506105d3611f4b565b6040518082815260200191505060405180910390f35b3480156105f557600080fd5b506105fe61205a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062657600080fd5b5061065b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061206c565b005b34801561066957600080fd5b5061068860048036038101908080359060200190929190505050612265565b005b34801561069657600080fd5b506106d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612515565b604051808215151515815260200191505060405180910390f35b3480156106fb57600080fd5b50610730600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125d4565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b5061075b612728565b604051808215151515815260200191505060405180910390f35b34801561078157600080fd5b5061078a612837565b005b34801561079857600080fd5b506107a16129aa565b005b3480156107af57600080fd5b506107b8612b1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f85780820151818401526020810190506107dd565b50505050905090810190601f1680156108255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bbc565b005b34801561088257600080fd5b506108a160048036038101908080359060200190929190505050612db5565b005b3480156108af57600080fd5b506108ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613065565b604051808215151515815260200191505060405180910390f35b34801561091457600080fd5b5061091d613170565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096b57600080fd5b506109aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061327f565b604051808215151515815260200191505060405180910390f35b3480156109d057600080fd5b50610a25600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061331f565b6040518082815260200191505060405180910390f35b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b505050505081565b6000610ae63384846134b7565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b505050506040513d6020811015610c4e57600080fd5b8101908080519060200190929190505050905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e6973737565720000000000000000000000000000000000000000815250600c01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d6020811015610d5d57600080fd5b8101908080519060200190929190505050905090565b6000610d7d6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610db657600080fd5b610dd082610dc2611f4b565b61363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3826040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610f4f57600080fd5b610f58846125d4565b8211151515610f6657600080fd5b610f70843361331f565b8211151515610f7e57600080fd5b610fa284610f9d84610f8f886125d4565b61364e90919063ffffffff16565b613667565b610fc683610fc184610fb3876125d4565b61363090919063ffffffff16565b613667565b610fec8433610fe785610fd9893361331f565b61364e90919063ffffffff16565b6134b7565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca8360405180807f6163636573732e726f6c65000000000000000000000000000000000000000000815250600b01807f6f776e65720000000000000000000000000000000000000000000000000000008152506005018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b81019080805190602001909291905050509050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b505050506040513d60208110156112d157600080fd5b8101908080519060200190929190505050905090565b6113266040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561136257600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e6465706f7369746f72790000000000000000000000000000000081525060100190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1661149b613170565b73ffffffffffffffffffffffffffffffffffffffff167fb5259c65bbd39a8ca451c496a6a75cc125e30888d4e5cb42e082cbf870f7f98460405160405180910390a350565b6000806114eb613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561152457600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b810190808051906020019092919050505091506116498361163b611e3c565b61364e90919063ffffffff16565b905081811015151561165a57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561173057600080fd5b505af1158015611744573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff826040518082815260200191505060405180910390a2505050565b6000806117a6610c64565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117df57600080fd5b6117f9836117eb610b55565b61363090919063ffffffff16565b915060009050611807611f4b565b61180f611e3c565b11156118245761181d611e3c565b905061182f565b61182c611f4b565b90505b80821115151561183e57600080fd5b611847836137bc565b611879611852610c64565b61187485611866611861610c64565b6125d4565b61363090919063ffffffff16565b613667565b611881610c64565b73ffffffffffffffffffffffffffffffffffffffff167f21d739f160a7464fddaac4a1d1517d84e76b75618a053943b345c408c4160fe0846040518082815260200191505060405180910390a2505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e61756469746f7200000000000000000000000000000000000000815250600d01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b505050506040513d60208110156119cc57600080fd5b8101908080519060200190929190505050905090565b60006119ec613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2557600080fd5b611a3f82611a31611e3c565b61363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff826040518082815260200191505060405180910390a25050565b600080611b8c6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bc557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611c9357600080fd5b505af1158015611ca7573d6000803e3d6000fd5b505050506040513d6020811015611cbd57600080fd5b81019080805190602001909291905050509150611cea83611cdc611f4b565b61364e90919063ffffffff16565b9050818110151515611cfb57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611dd157600080fd5b505af1158015611de5573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3826040518082815260200191505060405180910390a2505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f6973737561626c652e6173736574734f6e4465706f7369740000000000000000815250601801905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050506040513d6020811015611f3557600080fd5b8101908080519060200190929190505050905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f6973737561626c652e6173736574734365727469666965640000000000000000815250601801905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561201a57600080fd5b505af115801561202e573d6000803e3d6000fd5b505050506040513d602081101561204457600080fd5b8101908080519060200190929190505050905090565b6000809054906101000a900460ff1681565b6120ab6040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156120e757600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e6973737565720000000000000000000000000000000000000000815250600c0190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156121e957600080fd5b505af11580156121fd573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16612220610c64565b73ffffffffffffffffffffffffffffffffffffffff167fd7850b647d2d788d7d51865cb8181f56b7ee1fbab1a965018c2168bc9b2025cd60405160405180910390a350565b600061226f613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122a857600080fd5b6122b0612728565b15156122bb57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050506040513d60208110156123b357600080fd5b810190808051906020019092919050505090508082101515156123d557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff836040518082815260200191505060405180910390a25050565b600080612522338561331f565b90508083111561253d57612538338560006134b7565b61255b565b61255a3385612555868561364e90919063ffffffff16565b6134b7565b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256125b4338861331f565b6040518082815260200191505060405180910390a3600191505092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f58360405180807f746f6b656e2e62616c616e636573000000000000000000000000000000000000815250600e018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050506040513d602081101561271057600080fd5b81019080805190602001909291905050509050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca60405180807f746f6b656e2e726564656d7074696f6e50617573656400000000000000000000815250601601905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156127f757600080fd5b505af115801561280b573d6000803e3d6000fd5b505050506040513d602081101561282157600080fd5b8101908080519060200190929190505050905090565b6128766040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b61287e612728565b151561288957600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced60405180807f746f6b656e2e726564656d7074696f6e506175736564000000000000000000008152506016019050604051809103902060006040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b15801561296457600080fd5b505af1158015612978573d6000803e3d6000fd5b505050507fbce743db9bf1569865d948ae209f4b31bdc56ae5ec378043db68b4fa9c7d357460405160405180910390a1565b6129e96040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b6129f1612728565b1515156129fd57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced60405180807f746f6b656e2e726564656d7074696f6e506175736564000000000000000000008152506016019050604051809103902060016040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b158015612ad857600080fd5b505af1158015612aec573d6000803e3d6000fd5b505050507fb01a4065e58695e97210d46a2000a27c3294895b909a24c827d86bb0808d998a60405160405180910390a1565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bb45780601f10612b8957610100808354040283529160200191612bb4565b820191906000526020600020905b815481529060010190602001808311612b9757829003601f168201915b505050505081565b612bfb6040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c3757600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e61756469746f7200000000000000000000000000000000000000815250600d0190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015612d3957600080fd5b505af1158015612d4d573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16612d706118d3565b73ffffffffffffffffffffffffffffffffffffffff167f702d4284a49e256c67224cbd6cc10ea64895d336988b4a2dccc6d827a8fb4d8260405160405180910390a350565b6000612dbf6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612df857600080fd5b612e00612728565b1515612e0b57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612ed957600080fd5b505af1158015612eed573d6000803e3d6000fd5b505050506040513d6020811015612f0357600080fd5b81019080805190602001909291905050509050808210151515612f2557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015612ffb57600080fd5b505af115801561300f573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3836040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156130a257600080fd5b6130ab336125d4565b82111515156130b957600080fd5b6130dd336130d8846130ca336125d4565b61364e90919063ffffffff16565b613667565b613101836130fc846130ee876125d4565b61363090919063ffffffff16565b613667565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e6465706f7369746f727900000000000000000000000000000000815250601001905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561323f57600080fd5b505af1158015613253573d6000803e3d6000fd5b505050506040513d602081101561326957600080fd5b8101908080519060200190929190505050905090565b60006132a733846132a285613294338961331f565b61363090919063ffffffff16565b6134b7565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925613300338761331f565b6040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f5848460405180807f746f6b656e2e616c6c6f77656400000000000000000000000000000000000000815250600d018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561347457600080fd5b505af1158015613488573d6000803e3d6000fd5b505050506040513d602081101561349e57600080fd5b8101908080519060200190929190505050905092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a848460405180807f746f6b656e2e616c6c6f77656400000000000000000000000000000000000000815250600d018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561361357600080fd5b505af1158015613627573d6000803e3d6000fd5b50505050505050565b600080828401905083811015151561364457fe5b8091505092915050565b600082821115151561365c57fe5b818303905092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8360405180807f746f6b656e2e62616c616e636573000000000000000000000000000000000000815250600e018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561378057600080fd5b505af1158015613794573d6000803e3d6000fd5b505050505050565b600115156137aa83836138cf565b15151415156137b857600080fd5b5050565b60006137c6610b55565b90506137db828261363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f746f6b656e2e746f74616c537570706c7900000000000000000000000000000081525060110190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156138b357600080fd5b505af11580156138c7573d6000803e3d6000fd5b505050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca848460405180807f6163636573732e726f6c65000000000000000000000000000000000000000000815250600b0183805190602001908083835b60208310151561396d5780518252602082019150602081019050602083039250613948565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613a3657600080fd5b505af1158015613a4a573d6000803e3d6000fd5b505050506040513d6020811015613a6057600080fd5b81019080805190602001909291905050509050929150505600a165627a7a7230582073ba48b577c606033328cba5d9b557f9f0563678c95115f31dd557fbf62d663400290000000000000000000000006816184f231aa6af7f959d99ec0ace5731ab33f0


    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006816184f231aa6af7f959d99ec0ace5731ab33f0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006816184f231aa6af7f959d99ec0ace5731ab33f0


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