Sponsored:   Ubex.com - Crypto Valley IAB member. Traded on Bitforex, Bitmart, Btc-Alpha, IDEX, Bilaxy, soon on Lbank.
 Latest 25 txns From a total of 34538 Transactions
(+7 PendingTxns)

TxHash Age From To Value [TxFee]
0xad0c23326369d87284d47ac7a2e8fe4d50f2e6e9b473e69df43559449feaeebf(pending)0x347199e8fa2436e03735613ff8e0f5e8c73b4109  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0x511bcdca4154eadd9282d4dd5e79adce59cf5d9b915441bf6e265543ad8d3f8b(pending)0x11d3b910576f7a53cb2bc17872f70b8fd39d37a4  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0x929cd7b1907eb43f9657d1dcda762f1de06f9b1b7bb845a9579ac9d0d8c21743(pending)0x73f51c4a269414bb2989186a2930f3b14c1158e4  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0xc7a30c08f3171588ef5b9ae33817de4f1f9c0902b5e5a2f2ed1c8b0ba551f32c(pending)0xb1e706ee852d60689eb2e79da319febc647db18c  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0x76f395fca5b41474b8ae235a22b3140b34308aafb024ebc4854a4d5fbed7c3c8(pending)0x502b7ab1ba8ae2736e9571249658060cd8d3939a  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0xc07c1f9b600b6a72ea670d02058412bea015ec03b00986ea5568b19535ef8ac0(pending)0x46a5f2d560fef25067f5e636fe6197fdf0f4c4a8  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0x9872613891352277648706b95f976634dd236f62b03f1c1e05c51e35e85f421a(pending)0x47a73748125d67c2de8624cf3cf146903601c8ff  IN  0xd0929d411954c47438dc1d871dd6081f5c5e149c0 Ether(Pending)
0xe06cd328e8796f374828a3996a1b515f4a74f52a09fb30aeffb0646abf0a91a225 mins agoBittrex_1  IN   Refereum0 Ether0.0040858
0x6f76765dfc776b516b811e253a0489224b39f54f407b868b77e6116e9b21f8cf34 mins ago0xba826fec90cefdf6706858e5fbafcb27a290fbe0  IN   Refereum0 Ether0.003936244
0xd910d39fbcee4b6f364add48ec8b1443dd2c3b43d04699d59a55f9546fb1f5a11 hr 24 mins agoBittrex_1  IN   Refereum0 Ether0.0040826
0xc0d699f1700bf123f4d4b49b48b6b419d74616f6bd90350af5e4f03d6f4daa791 hr 39 mins ago0xba826fec90cefdf6706858e5fbafcb27a290fbe0  IN   Refereum0 Ether0.003736096
0x5a7972f44ba1817813fd8b40860db409c0c2c1590904b91bdbb7661b173b96f71 hr 39 mins ago0x2e601aa9e453afe9e6960e9f91396e63c5fe67ae  IN   Refereum0 Ether0.001051545
0xc5f9edf3e268b15fde850d4ee3436f9d56b8741ef8681870e883ce288faf99061 hr 47 mins agoOkex  IN   Refereum0 Ether0.0033326
0xbc46df4bec33e58335f685472916bbd3edc0140c5fe412f70799f8d38db36e0b1 hr 49 mins ago0xba826fec90cefdf6706858e5fbafcb27a290fbe0  IN   Refereum0 Ether0.007367188
0x420eb25df714d4487179a646402c3d81827f5d41c469287862ebbbdd968887eb1 hr 49 mins ago0x5eb5af661755d4b32b9989e7c38af78b9d9f07b8  IN   Refereum0 Ether0.001121648
0x05e17d1b30ff163d367b68984a11429ef95d6e01779a75b500485b679cff28be2 hrs 21 mins agoOkex  IN   Refereum0 Ether0.0033294
0xe9f34dce08f134059cc8265bf50822c85c2e096e4662a8bf0869072f1fef38e82 hrs 30 mins agoOkex  IN   Refereum0 Ether0.0040794
0x2951e0d534b26cd94128bf6b20e284523a878470f7cbe23d429f6b170d5674e72 hrs 37 mins agoOkex  IN   Refereum0 Ether0.0033326
0xa3bb4fd5ed48b83e4e62570192db0afac328dc20a93fa6c07a0d4d720fbf23255 hrs 1 min ago0x613768e1b0abf6e14956bf496d7ff05e47812719  IN   Refereum0 Ether0.0033294
0x4b617f990e1e5e21c6d933d3a8b3635f036769e2ba77d2ef7028b0c997c232905 hrs 5 mins agoGate.io_1  IN   Refereum0 Ether0.00063770212
0x67024d17bb94da57c954909faabdcde0da30b3e2fb375a617f0850d70e4981095 hrs 5 mins ago0xf7ccd48be955ffca004beca8b6ca856335c756ce  IN   Refereum0 Ether0.0033294
0x29e733da054e3a757b46c5f988b1798a5437929f4cae68f6a4bcba62ef4bff575 hrs 15 mins agoOkex  IN   Refereum0 Ether0.0040826
0xdc3a55d58a6e31288bd5cfe888c36a4f1403ad430325396e7d179b5729f0b05d5 hrs 19 mins ago0xe364d8a08d13fefe45093f6802d81d3ab020b54a  IN   Refereum0 Ether0.00020661833
0x9239508b689e16e11db42fd8b3a15e6a9f0fc558a2f2e5a3d8a8a8fa1a1603245 hrs 21 mins ago0x355941cf7ac065310fd4023e1b913209f076a48a  IN   Refereum0 Ether0.00020661833
0x5a04d1c888c4fe7e9483be9a799d7bdf4b9d849538383c524b8fa2599c5b45a15 hrs 25 mins ago0x6df888cedf2cc9b9dd8e57e8851b9beb04ceddd0  IN   Refereum0 Ether0.00020661833
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 10 Internal Transactions

ParentTxHash Block Age From To Value
0x0e9bd4aa825bdd231066804de59da9e13a7b849d7d7a1c16fd644a2265f1eda4602820361 days 35 mins ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.016 Ether
0xf7b9f2de8ec13cbb9dc791d8b8bc2f7bc8f0a04de0d0d9b211d42ea790665dc35720967113 days 21 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.005 Ether
0x3faa84dd300ad4fb55c2c6fe32349836e2c26607374e7afa8c0fb32898bdbf375313835184 days 51 mins ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.0005 Ether
0xe621b0462afa94d10ad2652524310a7790b7938c42c5b7b7d95fd8161e0c32005253963194 days 2 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.089424 Ether
0xb15cf0f18e5b8586439dabbb9a13ad2ed06051a8c5199960fec9f77664460a665253944194 days 2 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.04555673 Ether
0xed3522837c249a7025249c7a2a4485f7e65b1683d5c84776b6818220889e3cad5174763207 days 13 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.0001 Ether
0xc38e440ef032eb0ff12a3872f6c687f28ba7b0e44172cc99ef2c778e2828ee195057477227 days 9 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.441512 Ether
0xa0b8893ecf300aaa207cc8d9e85ac4700d9319fa3a86fe536ff97d7f518f9e725020325233 days 15 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.088496 Ether
0xa0c459d2260af165cd1a6d3174c6183e6074d5728e455727c34b0e84e649b5b74996078237 days 18 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.210066974 Ether
0x2a8774717a95383700c231d0ed1b05acd2f5460c0794a34fd1013091f9c29f934977257240 days 22 hrs ago0xd0929d411954c47438dc1d871dd6081f5c5e149c0xdfb0acd77b0a9538d2d1b05399a1f254a541076f0.1 Ether
[ Download CSV Export  ] 
Contract Name: Refereum
Compiler Text: v0.4.11+commit.68ef5810
Optimization Enabled: Yes
Runs (Optimiser):  10000



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.11;

contract RegistryICAPInterface {
    function parse(bytes32 _icap) constant returns(address, bytes32, bool);
    function institutions(bytes32 _institution) constant returns(address);
}

contract EToken2Interface {
    function registryICAP() constant returns(RegistryICAPInterface);
    function baseUnit(bytes32 _symbol) constant returns(uint8);
    function description(bytes32 _symbol) constant returns(string);
    function owner(bytes32 _symbol) constant returns(address);
    function isOwner(address _owner, bytes32 _symbol) constant returns(bool);
    function totalSupply(bytes32 _symbol) constant returns(uint);
    function balanceOf(address _holder, bytes32 _symbol) constant returns(uint);
    function isLocked(bytes32 _symbol) constant returns(bool);
    function issueAsset(bytes32 _symbol, uint _value, string _name, string _description, uint8 _baseUnit, bool _isReissuable) returns(bool);
    function reissueAsset(bytes32 _symbol, uint _value) returns(bool);
    function revokeAsset(bytes32 _symbol, uint _value) returns(bool);
    function setProxy(address _address, bytes32 _symbol) returns(bool);
    function lockAsset(bytes32 _symbol) returns(bool);
    function proxyTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function proxyApprove(address _spender, uint _value, bytes32 _symbol, address _sender) returns(bool);
    function allowance(address _from, address _spender, bytes32 _symbol) constant returns(uint);
    function proxyTransferFromWithReference(address _from, address _to, uint _value, bytes32 _symbol, string _reference, address _sender) returns(bool);
}

contract AssetInterface {
    function _performTransferWithReference(address _to, uint _value, string _reference, address _sender) returns(bool);
    function _performTransferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function _performApprove(address _spender, uint _value, address _sender) returns(bool);
    function _performTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function _performTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function _performGeneric(bytes _data, address _sender) payable returns(bytes32) {
        throw;
    }
}

contract ERC20Interface {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed from, address indexed spender, uint256 value);

    function totalSupply() constant returns(uint256 supply);
    function balanceOf(address _owner) constant returns(uint256 balance);
    function transfer(address _to, uint256 _value) returns(bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns(bool success);
    function approve(address _spender, uint256 _value) returns(bool success);
    function allowance(address _owner, address _spender) constant returns(uint256 remaining);

    // function symbol() constant returns(string);
    function decimals() constant returns(uint8);
    // function name() constant returns(string);
}

contract AssetProxyInterface {
    function _forwardApprove(address _spender, uint _value, address _sender) returns(bool);
    function _forwardTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function _forwardTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function balanceOf(address _owner) constant returns(uint);
}

contract Bytes32 {
    function _bytes32(string _input) internal constant returns(bytes32 result) {
        assembly {
            result := mload(add(_input, 32))
        }
    }
}

/**
 * @title EToken2 Asset Proxy.
 *
 * Proxy implements ERC20 interface and acts as a gateway to a single EToken2 asset.
 * Proxy adds etoken2Symbol and caller(sender) when forwarding requests to EToken2.
 * Every request that is made by caller first sent to the specific asset implementation
 * contract, which then calls back to be forwarded onto EToken2.
 *
 * Calls flow: Caller ->
 *             Proxy.func(...) ->
 *             Asset._performFunc(..., Caller.address) ->
 *             Proxy._forwardFunc(..., Caller.address) ->
 *             Platform.proxyFunc(..., symbol, Caller.address)
 *
 * Generic call flow: Caller ->
 *             Proxy.unknownFunc(...) ->
 *             Asset._performGeneric(..., Caller.address) ->
 *             Asset.unknownFunc(...)
 *
 * Asset implementation contract is mutable, but each user have an option to stick with
 * old implementation, through explicit decision made in timely manner, if he doesn't agree
 * with new rules.
 * Each user have a possibility to upgrade to latest asset contract implementation, without the
 * possibility to rollback.
 *
 * Note: all the non constant functions return false instead of throwing in case if state change
 * didn't happen yet.
 */
contract Refereum is ERC20Interface, AssetProxyInterface, Bytes32 {
    // Assigned EToken2, immutable.
    EToken2Interface public etoken2;

    // Assigned symbol, immutable.
    bytes32 public etoken2Symbol;

    // Assigned name, immutable. For UI.
    string public name;
    string public symbol;

    /**
     * Sets EToken2 address, assigns symbol and name.
     *
     * Can be set only once.
     *
     * @param _etoken2 EToken2 contract address.
     * @param _symbol assigned symbol.
     * @param _name assigned name.
     *
     * @return success.
     */
    function init(EToken2Interface _etoken2, string _symbol, string _name) returns(bool) {
        if (address(etoken2) != 0x0) {
            return false;
        }
        etoken2 = _etoken2;
        etoken2Symbol = _bytes32(_symbol);
        name = _name;
        symbol = _symbol;
        return true;
    }

    /**
     * Only EToken2 is allowed to call.
     */
    modifier onlyEToken2() {
        if (msg.sender == address(etoken2)) {
            _;
        }
    }

    /**
     * Only current asset owner is allowed to call.
     */
    modifier onlyAssetOwner() {
        if (etoken2.isOwner(msg.sender, etoken2Symbol)) {
            _;
        }
    }

    /**
     * Returns asset implementation contract for current caller.
     *
     * @return asset implementation contract.
     */
    function _getAsset() internal returns(AssetInterface) {
        return AssetInterface(getVersionFor(msg.sender));
    }

    function recoverTokens(uint _value) onlyAssetOwner() returns(bool) {
        return this.transferWithReference(msg.sender, _value, 'Tokens recovery');
    }

    /**
     * Returns asset total supply.
     *
     * @return asset total supply.
     */
    function totalSupply() constant returns(uint) {
        return etoken2.totalSupply(etoken2Symbol);
    }

    /**
     * Returns asset balance for a particular holder.
     *
     * @param _owner holder address.
     *
     * @return holder balance.
     */
    function balanceOf(address _owner) constant returns(uint) {
        return etoken2.balanceOf(_owner, etoken2Symbol);
    }

    /**
     * Returns asset allowance from one holder to another.
     *
     * @param _from holder that allowed spending.
     * @param _spender holder that is allowed to spend.
     *
     * @return holder to spender allowance.
     */
    function allowance(address _from, address _spender) constant returns(uint) {
        return etoken2.allowance(_from, _spender, etoken2Symbol);
    }

    /**
     * Returns asset decimals.
     *
     * @return asset decimals.
     */
    function decimals() constant returns(uint8) {
        return etoken2.baseUnit(etoken2Symbol);
    }

    /**
     * Transfers asset balance from the caller to specified receiver.
     *
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transfer(address _to, uint _value) returns(bool) {
        return transferWithReference(_to, _value, '');
    }

    /**
     * Transfers asset balance from the caller to specified receiver adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferWithReference(address _to, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferWithReference(_to, _value, _reference, msg.sender);
    }

    /**
     * Transfers asset balance from the caller to specified ICAP.
     *
     * @param _icap recipient ICAP to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferToICAP(bytes32 _icap, uint _value) returns(bool) {
        return transferToICAPWithReference(_icap, _value, '');
    }

    /**
     * Transfers asset balance from the caller to specified ICAP adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _icap recipient ICAP to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferToICAPWithReference(bytes32 _icap, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferToICAPWithReference(_icap, _value, _reference, msg.sender);
    }

    /**
     * Prforms allowance transfer of asset balance between holders.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferFrom(address _from, address _to, uint _value) returns(bool) {
        return transferFromWithReference(_from, _to, _value, '');
    }

    /**
     * Prforms allowance transfer of asset balance between holders adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferFromWithReference(address _from, address _to, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferFromWithReference(_from, _to, _value, _reference, msg.sender);
    }

    /**
     * Performs transfer call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyTransferFromWithReference(_from, _to, _value, etoken2Symbol, _reference, _sender);
    }

    /**
     * Prforms allowance transfer of asset balance between holders.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferFromToICAP(address _from, bytes32 _icap, uint _value) returns(bool) {
        return transferFromToICAPWithReference(_from, _icap, _value, '');
    }

    /**
     * Prforms allowance transfer of asset balance between holders adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferFromToICAPWithReference(_from, _icap, _value, _reference, msg.sender);
    }

    /**
     * Performs allowance transfer to ICAP call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyTransferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }

    /**
     * Sets asset spending allowance for a specified spender.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _spender holder address to set allowance to.
     * @param _value amount to allow.
     *
     * @return success.
     */
    function approve(address _spender, uint _value) returns(bool) {
        return _getAsset()._performApprove(_spender, _value, msg.sender);
    }

    /**
     * Performs allowance setting call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _spender holder address to set allowance to.
     * @param _value amount to allow.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardApprove(address _spender, uint _value, address _sender) onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyApprove(_spender, _value, etoken2Symbol, _sender);
    }

    /**
     * Emits ERC20 Transfer event on this contract.
     *
     * Can only be, and, called by assigned EToken2 when asset transfer happens.
     */
    function emitTransfer(address _from, address _to, uint _value) onlyEToken2() {
        Transfer(_from, _to, _value);
    }

    /**
     * Emits ERC20 Approval event on this contract.
     *
     * Can only be, and, called by assigned EToken2 when asset allowance set happens.
     */
    function emitApprove(address _from, address _spender, uint _value) onlyEToken2() {
        Approval(_from, _spender, _value);
    }

    /**
     * Resolves asset implementation contract for the caller and forwards there transaction data,
     * along with the value. This allows for proxy interface growth.
     */
    function () payable {
        bytes32 result = _getAsset()._performGeneric.value(msg.value)(msg.data, msg.sender);
        assembly {
            mstore(0, result)
            return(0, 32)
        }
    }

    /**
     * Indicates an upgrade freeze-time start, and the next asset implementation contract.
     */
    event UpgradeProposal(address newVersion);

    // Current asset implementation contract address.
    address latestVersion;

    // Proposed next asset implementation contract address.
    address pendingVersion;

    // Upgrade freeze-time start.
    uint pendingVersionTimestamp;

    // Timespan for users to review the new implementation and make decision.
    uint constant UPGRADE_FREEZE_TIME = 3 days;

    // Asset implementation contract address that user decided to stick with.
    // 0x0 means that user uses latest version.
    mapping(address => address) userOptOutVersion;

    /**
     * Only asset implementation contract assigned to sender is allowed to call.
     */
    modifier onlyImplementationFor(address _sender) {
        if (getVersionFor(_sender) == msg.sender) {
            _;
        }
    }

    /**
     * Returns asset implementation contract address assigned to sender.
     *
     * @param _sender sender address.
     *
     * @return asset implementation contract address.
     */
    function getVersionFor(address _sender) constant returns(address) {
        return userOptOutVersion[_sender] == 0 ? latestVersion : userOptOutVersion[_sender];
    }

    /**
     * Returns current asset implementation contract address.
     *
     * @return asset implementation contract address.
     */
    function getLatestVersion() constant returns(address) {
        return latestVersion;
    }

    /**
     * Returns proposed next asset implementation contract address.
     *
     * @return asset implementation contract address.
     */
    function getPendingVersion() constant returns(address) {
        return pendingVersion;
    }

    /**
     * Returns upgrade freeze-time start.
     *
     * @return freeze-time start.
     */
    function getPendingVersionTimestamp() constant returns(uint) {
        return pendingVersionTimestamp;
    }

    /**
     * Propose next asset implementation contract address.
     *
     * Can only be called by current asset owner.
     *
     * Note: freeze-time should not be applied for the initial setup.
     *
     * @param _newVersion asset implementation contract address.
     *
     * @return success.
     */
    function proposeUpgrade(address _newVersion) onlyAssetOwner() returns(bool) {
        // Should not already be in the upgrading process.
        if (pendingVersion != 0x0) {
            return false;
        }
        // New version address should be other than 0x0.
        if (_newVersion == 0x0) {
            return false;
        }
        // Don't apply freeze-time for the initial setup.
        if (latestVersion == 0x0) {
            latestVersion = _newVersion;
            return true;
        }
        pendingVersion = _newVersion;
        pendingVersionTimestamp = now;
        UpgradeProposal(_newVersion);
        return true;
    }

    /**
     * Cancel the pending upgrade process.
     *
     * Can only be called by current asset owner.
     *
     * @return success.
     */
    function purgeUpgrade() onlyAssetOwner() returns(bool) {
        if (pendingVersion == 0x0) {
            return false;
        }
        delete pendingVersion;
        delete pendingVersionTimestamp;
        return true;
    }

    /**
     * Finalize an upgrade process setting new asset implementation contract address.
     *
     * Can only be called after an upgrade freeze-time.
     *
     * @return success.
     */
    function commitUpgrade() returns(bool) {
        if (pendingVersion == 0x0) {
            return false;
        }
        if (pendingVersionTimestamp + UPGRADE_FREEZE_TIME > now) {
            return false;
        }
        latestVersion = pendingVersion;
        delete pendingVersion;
        delete pendingVersionTimestamp;
        return true;
    }

    /**
     * Disagree with proposed upgrade, and stick with current asset implementation
     * until further explicit agreement to upgrade.
     *
     * @return success.
     */
    function optOut() returns(bool) {
        if (userOptOutVersion[msg.sender] != 0x0) {
            return false;
        }
        userOptOutVersion[msg.sender] = latestVersion;
        return true;
    }

    /**
     * Implicitly agree to upgrade to current and future asset implementation upgrades,
     * until further explicit disagreement.
     *
     * @return success.
     */
    function optIn() returns(bool) {
        delete userOptOutVersion[msg.sender];
        return true;
    }

    // Backwards compatibility.
    function multiAsset() constant returns(EToken2Interface) {
        return etoken2;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"multiAsset","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"commitUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getLatestVersion","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_forwardTransferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitApprove","outputs":[],"payable":false,"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,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"recoverTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"etoken2","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersionTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"purgeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"optIn","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"transferToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_sender","type":"address"}],"name":"_forwardApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_forwardTransferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"transferFromToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"etoken2Symbol","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersion","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_etoken2","type":"address"},{"name":"_symbol","type":"string"},{"name":"_name","type":"string"}],"name":"init","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"address"}],"name":"proposeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"optOut","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"getVersionFor","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newVersion","type":"address"}],"name":"UpgradeProposal","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":"from","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000c57fe5b5b6125a08061001c6000396000f300606060405236156101a95763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663029a8bf781146102a357806306fdde03146102dc578063095ea7b31461036c5780630ba12c83146103ac5780630e6d1de9146103d057806314cba0021461040957806318160ddd146104ad57806323385089146104cf57806323b872dd1461050357806323de66511461054957806330599fc51461057d578063313ce567146105a4578063406838b3146105ca5780634bfaf2e8146106035780634dfe950d146106255780635b48684e146106495780636461fe391461066d57806370a08231146106f9578063733480b71461073457806377fe38a41461075e5780637bcdc2f0146107cc57806395d89b41146108135780639b487f3f146108a3578063a48a663c14610941578063a525f42c146109c7578063a66e6e5c14610a0a578063a883fb9014610a2c578063a9059cbb14610a65578063ac35caee14610aa5578063b2b45df514610b29578063c915fc9314610be7578063d4eec5a614610c24578063dd62ed3e14610c48578063fe8beb7114610c89575b6102a15b60006101b7610cdb565b73ffffffffffffffffffffffffffffffffffffffff1663db00b84834600036336000604051602001526040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285858281815260200192508082843782019150509450505050506020604051808303818588803b151561027957fe5b6125ee5a03f1151561028757fe5b505050506040518051905090508060005260206000f35b50565b005b34156102ab57fe5b6102b3610cec565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34156102e457fe5b6102ec610d09565b604080516020808252835181830152835191928392908301918501908083838215610332575b80518252602083111561033257601f199092019160209182019101610312565b505050905090810190601f16801561035e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037457fe5b61039873ffffffffffffffffffffffffffffffffffffffff60043516602435610db2565b604080519115158252519081900360200190f35b34156103b457fe5b610398610eb5565b604080519115158252519081900360200190f35b34156103d857fe5b6102b3610f4c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b341561041157fe5b604080516020600460643581810135601f810184900484028501840190955284845261039894823573ffffffffffffffffffffffffffffffffffffffff9081169560248035909216956044359594608494929301919081908401838280828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250610f69915050565b604080519115158252519081900360200190f35b34156104b557fe5b6104bd6110ec565b60408051918252519081900360200190f35b34156104d757fe5b6102a173ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611181565b005b341561050b57fe5b61039873ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611212565b604080519115158252519081900360200190f35b341561055157fe5b6102a173ffffffffffffffffffffffffffffffffffffffff6004358116906024351660443561123a565b005b341561058557fe5b6103986004356112cb565b604080519115158252519081900360200190f35b34156105ac57fe5b6105b4611438565b6040805160ff9092168252519081900360200190f35b34156105d257fe5b6102b36114cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b341561060b57fe5b6104bd6114e9565b60408051918252519081900360200190f35b341561062d57fe5b6103986114f0565b604080519115158252519081900360200190f35b341561065157fe5b6103986115e9565b604080519115158252519081900360200190f35b341561067557fe5b604080516020600460643581810135601f810184900484028501840190955284845261039894823573ffffffffffffffffffffffffffffffffffffffff90811695602480359092169560443595946084949293019190819084018382808284375094965061163a95505050505050565b604080519115158252519081900360200190f35b341561070157fe5b6104bd73ffffffffffffffffffffffffffffffffffffffff600435166117ea565b60408051918252519081900360200190f35b341561073c57fe5b610398600435602435611888565b604080519115158252519081900360200190f35b341561076657fe5b604080516020600460443581810135601f81018490048402850184019095528484526103989482359460248035956064949293919092019181908401838280828437509496506118ae95505050505050565b604080519115158252519081900360200190f35b34156107d457fe5b61039873ffffffffffffffffffffffffffffffffffffffff6004358116906024359060443516611a05565b604080519115158252519081900360200190f35b341561081b57fe5b6102ec611afc565b604080516020808252835181830152835191928392908301918501908083838215610332575b80518252602083111561033257601f199092019160209182019101610312565b505050905090810190601f16801561035e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108ab57fe5b604080516020600460643581810135601f810184900484028501840190955284845261039894823573ffffffffffffffffffffffffffffffffffffffff1694602480359560443595946084949201919081908401838280828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250611ba8915050565b604080519115158252519081900360200190f35b341561094957fe5b604080516020600460643581810135601f810184900484028501840190955284845261039894823573ffffffffffffffffffffffffffffffffffffffff169460248035956044359594608494920191908190840183828082843750949650611d1f95505050505050565b604080519115158252519081900360200190f35b34156109cf57fe5b61039873ffffffffffffffffffffffffffffffffffffffff60043516602435604435611eab565b604080519115158252519081900360200190f35b3415610a1257fe5b6104bd611ed3565b60408051918252519081900360200190f35b3415610a3457fe5b6102b3611ed9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3415610a6d57fe5b61039873ffffffffffffffffffffffffffffffffffffffff60043516602435611ef6565b604080519115158252519081900360200190f35b3415610aad57fe5b604080516020600460443581810135601f810184900484028501840190955284845261039894823573ffffffffffffffffffffffffffffffffffffffff16946024803595606494929391909201918190840183828082843750949650611f1c95505050505050565b604080519115158252519081900360200190f35b3415610b3157fe5b60408051602060046024803582810135601f810185900485028601850190965285855261039895833573ffffffffffffffffffffffffffffffffffffffff16959394604494939290920191819084018382808284375050604080516020601f89358b0180359182018390048302840183019094528083529799988101979196509182019450925082915084018382808284375094965061209795505050505050565b604080519115158252519081900360200190f35b3415610bef57fe5b61039873ffffffffffffffffffffffffffffffffffffffff6004351661213e565b604080519115158252519081900360200190f35b3415610c2c57fe5b610398612311565b604080519115158252519081900360200190f35b3415610c5057fe5b6104bd73ffffffffffffffffffffffffffffffffffffffff600435811690602435166123a4565b60408051918252519081900360200190f35b3415610c9157fe5b6102b373ffffffffffffffffffffffffffffffffffffffff6004351661244b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6000610ce63361244b565b90505b90565b60005473ffffffffffffffffffffffffffffffffffffffff165b90565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f81018490048402820184019092528181529291830182828015610daa5780601f10610d7f57610100808354040283529160200191610daa565b820191906000526020600020905b815481529060010190602001808311610d8d57829003601f168201915b505050505081565b6000610dbc610cdb565b73ffffffffffffffffffffffffffffffffffffffff1663e34f71378484336000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1515610e9757fe5b6102c65a03f11515610ea557fe5b5050604051519150505b92915050565b60055460009073ffffffffffffffffffffffffffffffffffffffff161515610edf57506000610ce9565b426203f480600654011115610ef657506000610ce9565b5060058054600480547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055600060065560015b90565b60045473ffffffffffffffffffffffffffffffffffffffff165b90565b6000813373ffffffffffffffffffffffffffffffffffffffff16610f8c8261244b565b73ffffffffffffffffffffffffffffffffffffffff1614156110e0576000805460015460408051602090810194909452517f161ff66200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483019081528b82166024840152604483018b90526064830184905288821660a484015260c0608484019081528a5160c48501528a51929095169563161ff662958e958e958e9591948e948e949193919260e4019190860190808383821561107c575b80518252602083111561107c57601f19909201916020918201910161105c565b505050905090810190601f1680156110a85780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b15156110c857fe5b6102c65a03f115156110d657fe5b5050604051519250505b5b5b5095945050505050565b6000805460015460408051602090810185905281517fb524abcf0000000000000000000000000000000000000000000000000000000081526004810193909352905173ffffffffffffffffffffffffffffffffffffffff9093169263b524abcf92602480820193929182900301818787803b151561116657fe5b6102c65a03f1151561117457fe5b5050604051519150505b90565b6000543373ffffffffffffffffffffffffffffffffffffffff9081169116141561120b578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5b5b505050565b6000611230848484602060405190810160405280600081525061163a565b90505b9392505050565b6000543373ffffffffffffffffffffffffffffffffffffffff9081169116141561120b578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5b5b505050565b6000805460015460408051602090810185905281517fe96b462a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b151561134c57fe5b6102c65a03f1151561135a57fe5b50506040515115905061143157604080516000602091820181905282517fac35caee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff33811660048301526024820187905260606044830152600f60648301527f546f6b656e73207265636f76657279000000000000000000000000000000000060848301529351309094169363ac35caee9360a48084019491938390030190829087803b151561141957fe5b6102c65a03f1151561142757fe5b5050604051519150505b5b5b919050565b6000805460015460408051602090810185905281517fdc86e6f00000000000000000000000000000000000000000000000000000000081526004810193909352905173ffffffffffffffffffffffffffffffffffffffff9093169263dc86e6f092602480820193929182900301818787803b151561116657fe5b6102c65a03f1151561117457fe5b5050604051519150505b90565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006545b90565b6000805460015460408051602090810185905281517fe96b462a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b151561157157fe5b6102c65a03f1151561157f57fe5b505060405151159050610ce95760055473ffffffffffffffffffffffffffffffffffffffff1615156115b357506000610ce9565b50600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600060065560015b5b5b90565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560015b90565b6000611644610cdb565b73ffffffffffffffffffffffffffffffffffffffff1663cca9702586868686336000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182810382528481815181526020019150805190602001908083836000831461177f575b80518252602083111561177f57601f19909201916020918201910161175f565b505050905090810190601f1680156117ab5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15156117ca57fe5b6102c65a03f115156117d857fe5b5050604051519150505b949350505050565b6000805460015460408051602090810185905281517f4d30b6be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482019490945291519290931692634d30b6be9260448084019382900301818787803b151561141957fe5b6102c65a03f1151561142757fe5b5050604051519150505b919050565b60006118a5838360206040519081016040528060008152506118ae565b90505b92915050565b60006118b8610cdb565b73ffffffffffffffffffffffffffffffffffffffff1663c10796df858585336000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808560001916600019168152602001848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182810382528481815181526020019150805190602001908083836000831461199c575b80518252602083111561199c57601f19909201916020918201910161197c565b505050905090810190601f1680156119c85780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156119e657fe5b6102c65a03f115156119f457fe5b5050604051519150505b9392505050565b6000813373ffffffffffffffffffffffffffffffffffffffff16611a288261244b565b73ffffffffffffffffffffffffffffffffffffffff161415611af2576000805460015460408051602090810185905281517f14712e2f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018b905260448201949094528884166064820152915192909316936314712e2f9360848084019491939192918390030190829087803b1515611ada57fe5b6102c65a03f11515611ae857fe5b5050604051519250505b5b5b509392505050565b6003805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610daa5780601f10610d7f57610100808354040283529160200191610daa565b820191906000526020600020905b815481529060010190602001808311610d8d57829003601f168201915b505050505081565b6000813373ffffffffffffffffffffffffffffffffffffffff16611bcb8261244b565b73ffffffffffffffffffffffffffffffffffffffff1614156110e0576000805460408051602090810193909352517fa69032ee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301908152602483018b9052604483018a9052878216608484015260a060648401908152895160a48501528951929094169463a69032ee948d948d948d948d948d949193919260c490920191908601908083838215611cb0575b805182526020831115611cb057601f199092019160209182019101611c90565b505050905090810190601f168015611cdc5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15156110c857fe5b6102c65a03f115156110d657fe5b5050604051519250505b5b5b5095945050505050565b6000611d29610cdb565b73ffffffffffffffffffffffffffffffffffffffff1663eb58705b86868686336000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560001916600019168152602001848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182810382528481815181526020019150805190602001908083836000831461177f575b80518252602083111561177f57601f19909201916020918201910161175f565b505050905090810190601f1680156117ab5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15156117ca57fe5b6102c65a03f115156117d857fe5b5050604051519150505b949350505050565b60006112308484846020604051908101604052806000815250611d1f565b90505b9392505050565b60015481565b60055473ffffffffffffffffffffffffffffffffffffffff165b90565b60006118a583836020604051908101604052806000815250611f1c565b90505b92915050565b6000611f26610cdb565b73ffffffffffffffffffffffffffffffffffffffff16631962df71858585336000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182810382528481815181526020019150805190602001908083836000831461199c575b80518252602083111561199c57601f19909201916020918201910161197c565b505050905090810190601f1680156119c85780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156119e657fe5b6102c65a03f115156119f457fe5b5050604051519150505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156120be57506000611233565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055612107836124c9565b600155815161211d9060029060208501906124d4565b5082516121319060039060208601906124d4565b50600190505b9392505050565b6000805460015460408051602090810185905281517fe96b462a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b15156121bf57fe5b6102c65a03f115156121cd57fe5b5050604051511590506114315760055473ffffffffffffffffffffffffffffffffffffffff161561220057506000611431565b73ffffffffffffffffffffffffffffffffffffffff8216151561222557506000611431565b60045473ffffffffffffffffffffffffffffffffffffffff16151561228c5750600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556001611431565b6005805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091554260065560408051918252517faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a9181900360200190a15060015b5b5b919050565b73ffffffffffffffffffffffffffffffffffffffff3381166000908152600760205260408120549091161561234857506000610ce9565b506004543373ffffffffffffffffffffffffffffffffffffffff908116600090815260076020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190921617905560015b90565b6000805460015460408051602090810185905281517f1c8d5d3800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528781166024830152604482019490945291519290931692631c8d5d389260648084019382900301818787803b1515610e9757fe5b6102c65a03f11515610ea557fe5b5050604051519150505b92915050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260076020526040812054909116156124a75773ffffffffffffffffffffffffffffffffffffffff808316600090815260076020526040902054166124c1565b60045473ffffffffffffffffffffffffffffffffffffffff165b90505b919050565b60208101515b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061251557805160ff1916838001178555612542565b82800160010185558215612542579182015b82811115612542578251825591602001919060010190612527565b5b5061254f929150612553565b5090565b610ce991905b8082111561254f5760008155600101612559565b5090565b905600a165627a7a7230582098e94b8b6bc6c305ad672235323039c0f64eae1b06a90d411d66a33af7ccf5060029

   Swarm Source:
bzzr://98e94b8b6bc6c305ad672235323039c0f64eae1b06a90d411d66a33af7ccf506

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.