Contract Overview | Propy
Balance: 0 Ether
Ether Value: $0
Transactions: 35859 txns
Token Tracker: Propy (PRO)
 Latest 25 transactions from a total of 35859 transactions

TxHash Age From To Value [TxFee]
0x0dc4430e7e3df1669d3f896595789e6b4e0be6dbf7a309f0c2923b78b7762c145 hrs 33 mins ago0x94fe3ad91dacba8ec4b82f56ff7c122181f1535d  IN   Propy0 Ether0.001138545
0x03d35d8c0376171da76958cc5e726086d76bfd464606515512e45fdf859289b45 hrs 34 mins agoBittrex_1  IN   Propy0 Ether0.00328805
0xc460274fbc2a812aa004fcaffea153d30373202b6d23ac0786bf2c550a7798065 hrs 35 mins agoHuobi_11  IN   Propy0 Ether0.005164608
0x5c8d324c709a083fdb89b3f19a967e0b5e9014f966d46e4f3210c2d3f5f9d27c10 hrs 11 mins ago0x191ca0b76235fe7b5d313c4ac2c6c57d335c5b9d  IN   Propy0 Ether0.002340261
0xc57500c57c5484130c3f636e42cd1718ce6ac6ee67a2ca0d8ff272718fb1efec10 hrs 14 mins ago0x191ca0b76235fe7b5d313c4ac2c6c57d335c5b9d  IN   Propy0 Ether0.001098741
0x247c42c5c10f1ac09154215093415e412431c8238d198b00fa10e650ce0d226e11 hrs 23 mins ago0x8ded713600ef76e30db4dd249c22566c494fe773  IN   Propy0 Ether0.011038995
0xed17a078c78ed765d6b35c53ad53d9d88d5bf8231de0a0826dbae9fc3b27110711 hrs 51 mins ago0xb16303d844d7ed73c392d124004dff5b19512312  IN   Propy0 Ether0.000286492
0x9d342b5e47fb10b1de5a3f97697946f8962178e8f4eeecd489e014f7d15a5a4b11 hrs 56 mins ago0xb4b60ed3a33cfa9c3241c037699fd04fd0495472  IN   Propy0 Ether0.00044602
0x3fa5495ba6a53552d4eb7e54240fcc89b453aca32d8d1cf31078b9c98bbb213811 hrs 58 mins ago0xec525729bb895a6bbb58751091c48273ec7dda7c  IN   Propy0 Ether0.006504003
0x9fcc94f717dcf73d4773b0772852e0c04d89c622a50eacae07475fb24010b97a12 hrs 8 mins ago0x2a07316335aef567f1ed7dda10222ce21224b263  IN   Propy0 Ether0.000557667
0x1f67d2267201326fe7c43cea048577560e843c8d9ec011c63af94c1d32eb346c12 hrs 10 mins ago0xb16303d844d7ed73c392d124004dff5b19512312  IN   Propy0 Ether0.000286236
0x580d4aee077fb484182f30bd96b4968f970d700c5a0c9cd951a03c534840803012 hrs 14 mins ago0x269a93abcab4db0cbae9f6d47b5fd766030886a0  IN   Propy0 Ether0.003675441
0xdc50fba5911cebf232780b4cd954d3ad48dae0360d65daa53c3b551f2c31fcf712 hrs 21 mins ago0x492f35e67a43b957a0f155796ba9dceb000b0b09  IN   Propy0 Ether0.0004927275
0xfa97e16bf5e061081c64ec02675789de2fe31e9fd6374374130bf45f01b7492e12 hrs 30 mins ago0x492f35e67a43b957a0f155796ba9dceb000b0b09  IN   Propy0 Ether0.0009483075
0xa2ed463c1700e0df3454d072e26b3211f46c98ec34ff639262e724dc90db9e9413 hrs 37 mins ago0xc8753559e9caafb3a9bcba3d349d89d4162ea55d  IN   Propy0 Ether0.001863862
0x1dac7992379448db1785917fb3ee2ffcad1d14d54f18d4be4be304612383e12813 hrs 48 mins agoFake_Phishing2638  IN   Propy0 Ether0.002696201
0xbabd379fee8a6cae444397ff15f3369a9e3238444e51eb1082c51feca392cb5e17 hrs 56 mins agoBittrex_1  IN   Propy0 Ether0.00632205
0xe1ff01cbd54154c2e3f3bd544ed7eaa64524e3f312b3701fc8f98e78e6ae31ca18 hrs 22 mins agoHuobi_9  IN   Propy0 Ether0.005168704
0xb49aa40713aa3aae68d2c22a4dc08bc7fe1fd3e87ee8cc9fd1de29e1fcffbd7b18 hrs 58 mins agoHuobi_11  IN   Propy0 Ether0.005164608
0x6cb1a2b214c2aa0e58fdb2c8a1179c0f1ff31fda840765d6a65512fdcb26563d20 hrs 20 mins ago0xc0ce34608bd1a400b26bd4defcf255961a1ce45d  IN   Propy0 Ether0.008362875
0xd8d7c5b86a56ad728699b337683f34c52b6dbfd123e5eb461c4ef3b233e5d7ae21 hrs 23 mins ago0xfd45c54c7e368b6e77a8dee7db187c90f42743b1  IN   Propy0 Ether0.003308577
0xbe8d9c5c7819c138a97343aad1dd7311a9d5750f9b8a923a5e8adaa1a10389e121 hrs 52 mins agoHuobi_4  IN   Propy0 Ether0.005164608
0xce1fe5f02eec4baa8acdaf897e47a2ef78b479d280759b37309f1779413b223322 hrs 14 mins agoHuobi_1  IN   Propy0 Ether0.005164608
0xd94c18e9a8087386538084614683b7958644a51c9dbd00e5027cacc1eaccca7022 hrs 36 mins agoHuobi_12  IN   Propy0 Ether0.005164608
0x7532f49029f99c8d286cf7dcdc0d912b587d4a5644e911c8b1afe8d3b6dc6ea523 hrs 1 min agoHuobi_1  IN   Propy0 Ether0.005164608
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 22 Internal Transactions

ParentTxHash Block Age From To Value
0x1976209e799150c5d72501582d552636d636cacc62859df9f4e782e4dd9ad08a5120732271 days 12 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.000000001 Ether
0x787c138279a5fe71b2f049b9372df49c077297e197e4e13eee584324463985424818434323 days 20 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.002 Ether
0x58a8d07b1eba36ff9b9f4a3589e5295067ab082ada34121c53285e924a3a51ce4788401328 days 21 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.29236175 Ether
0x982639874586886fe7c8765d7430a277689f288ab5ea519bf482a778666884684743426336 days 18 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.29 Ether
0xe9d99bbbbbc4db186517e277548f0d7ff1940a07a46a786573b5d398475481e34743381336 days 18 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.3 Ether
0x1ea968ad48b49e4d9aaeab94ce24be95d4906cdf0ec60e5eb972efb9a20aa3384328567412 days 12 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.19 Ether
0x95b195943863c6354d1c1e1c8ec02f109bd1f9d36b45546afd53e01f6beacecb4328561412 days 12 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.19 Ether
0x4371b2f824527c5f3cf3b9101d2fb334fe2e19e0edcc849ea70d0920fc7c554d4248047436 days 21 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.1 Ether
0x61723c23d2ab371d67d1be4d3fecb88c7dc130e7de1e66291e2b6397d310beb54234829440 days 15 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.02 Ether
0x5a923081d607ce20e9ce6b075f6750bec8e2506586914866d15e223c898c3c7d4234759440 days 15 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x8d342b9474033a8ed04ff1ab654c64cf5b71daa10.01 Ether
0x5a42ccc14373c3c1949abb491dadb89a9bd0a13d4363ee5bd31cd65be11a2bc74185056454 days 1 hr ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4250.033 Ether
0x4af57aee1aed4a3e8804220e0db81242a88a0eae46fa02e5d5850596fb67f2ca4184990454 days 2 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4250.018 Ether
0x92970401ce32a4c676557f537bba0745f8c19df0848ae0e93471c164a54b97f04183628454 days 10 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4252 Ether
0x176c375159c394c854d82e35c99863afbc8d1813cb0d0f1b640afb7f60bc17b04183626454 days 10 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4252 Ether
0x7ef90eaaec3ed94ac4e165429cdf163be3b974fda33431c994607694041e3bac4162735459 days 10 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4251 Ether
0x7ef90eaaec3ed94ac4e165429cdf163be3b974fda33431c994607694041e3bac4162735459 days 10 hrs ago0x7ea2df0f49d1cf7cb3a328f0038822b08aeb0ac10x226bb599a12c826476e3a771454697ea52e9e2201 Ether
0xd36726510c987bf5d881d8c90c1a4d5c3ce3ba0db2930d6aa8cd9b4781b9f9c64162484459 days 12 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4250.01 Ether
0xd7451f4434589ea4f24f183832fe027e7452205a72f59bca326f8e85d8c2772b4161011459 days 20 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4254 Ether
0x20013e382edec7be97f57afa0a682d4695d5b7b5545a12cd059698f24acaa1b14160997459 days 20 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4255.1 Ether
0xd6c225e1554a2b1eab673378b313aff28815d70b96c8005194b3ede3818bb5904160997459 days 20 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4255 Ether
0x4a064d57d5e3ef2043ce5ab27e26118e19465c9f076ddbf507d3b8ce3873a2894160995459 days 20 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4255 Ether
0xd90655618dcdf2e822128d0c30f82aa3c22bec79b3a83ae438e9d52147ef59494160988459 days 20 hrs ago0x226bb599a12c826476e3a771454697ea52e9e2200x729aa9df8b31969ac73110de62823d2f607ae4251.5 Ether
[ Download CSV Export  ] 
Contract Name: PropyToken
Compiler Text: v0.4.8+commit.60cc1668
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/**
 * This software is a subject to Ambisafe License Agreement.
 * No use or distribution is allowed without written permission from Ambisafe.
 * https://www.ambisafe.co/terms-of-use/
 */

pragma solidity 0.4.8;

contract EToken2 {
    function baseUnit(bytes32 _symbol) constant returns(uint8);
    function name(bytes32 _symbol) constant returns(string);
    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 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 Asset {
    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 ERC20 {
    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 decimals() constant returns(uint8);
}

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);
}

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 AssetProxy is ERC20, AssetProxyInterface, Bytes32 {
    // Assigned EToken2, immutable.
    EToken2 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(EToken2 _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(Asset) {
        return Asset(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(EToken2) {
        return etoken2;
    }
}

contract PropyToken is AssetProxy {
    function change(string _symbol, string _name) onlyAssetOwner() returns(bool) {
        if (etoken2.isLocked(etoken2Symbol)) {
            return false;
        }
        name = _name;
        symbol = _symbol;
        return true;
    }
}

    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":false,"inputs":[{"name":"_symbol","type":"string"},{"name":"_name","type":"string"}],"name":"change","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
606060405234610000575b612184806100196000396000f3006060604052361561019b5763ffffffff60e060020a600035041663029a8bf7811461024f57806306fdde0314610278578063095ea7b3146103055780630ba12c83146103355780630e6d1de91461035657806314cba0021461037f57806318160ddd14610406578063233850891461042557806323b872dd1461044957806323de66511461047f57806330599fc5146104a3578063313ce567146104c7578063406838b3146104ea5780634bfaf2e8146105135780634dfe950d146105325780635b48684e146105535780636461fe391461057457806370a08231146105f0578063733480b71461061b57806377fe38a4146106425780637bcdc2f0146106ad57806383841e0c146106e457806395d89b41146107885780639b487f3f14610815578063a48a663c14610896578063a525f42c1461090c578063a66e6e5c1461093f578063a883fb901461095e578063a9059cbb14610987578063ac35caee146109b7578063b2b45df514610a2b578063c915fc9314610ad9578063d4eec5a614610b06578063dd62ed3e14610b27578063fe8beb7114610b58575b61024d5b60006101a9610b8d565b600160a060020a031663db00b84834600036336000604051602001526040518563ffffffff1660e060020a028152600401808060200183600160a060020a0316600160a060020a03168152602001828103825285858281815260200192508082843782019150509450505050506020604051808303818588803b156100005761235a5a03f11561000057505050506040518051905090508060005260206000f35b50565b005b346100005761025c610b9e565b60408051600160a060020a039092168252519081900360200190f35b3461000057610285610bae565b6040805160208082528351818301528351919283929083019185019080838382156102cb575b8051825260208311156102cb57601f1990920191602091820191016102ab565b505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610321600160a060020a0360043516602435610c39565b604080519115158252519081900360200190f35b3461000057610321610cdb565b604080519115158252519081900360200190f35b346100005761025c610d40565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460643581810135601f8101849004840285018401909552848452610321948235600160a060020a0390811695602480359092169560443595946084949293019190819084018382808284375094965050509235600160a060020a03169250610d50915050565b604080519115158252519081900360200190f35b3461000057610413610ea5565b60408051918252519081900360200190f35b346100005761024d600160a060020a0360043581169060243516604435610f26565b005b3461000057610321600160a060020a0360043581169060243516604435610f90565b604080519115158252519081900360200190f35b346100005761024d600160a060020a0360043581169060243516604435610fb8565b005b3461000057610321600435611022565b604080519115158252519081900360200190f35b34610000576104d4611151565b6040805160ff9092168252519081900360200190f35b346100005761025c6111d2565b60408051600160a060020a039092168252519081900360200190f35b34610000576104136111e1565b60408051918252519081900360200190f35b34610000576103216111e8565b604080519115158252519081900360200190f35b3461000057610321611292565b604080519115158252519081900360200190f35b3461000057604080516020600460643581810135601f8101849004840285018401909552848452610321948235600160a060020a039081169560248035909216956044359594608494929301919081908401838280828437509496506112be95505050505050565b604080519115158252519081900360200190f35b3461000057610413600160a060020a03600435166113f3565b60408051918252519081900360200190f35b346100005761032160043560243561147d565b604080519115158252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526103219482359460248035956064949293919092019181908401838280828437509496506114a395505050505050565b604080519115158252519081900360200190f35b3461000057610321600160a060020a0360043581169060243590604435166115b3565b604080519115158252519081900360200190f35b3461000057610321600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f89358b0180359182018390048302840183019094528083529799988101979196509182019450925082915084018382808284375094965061167c95505050505050565b604080519115158252519081900360200190f35b34610000576102856118be565b6040805160208082528351818301528351919283929083019185019080838382156102cb575b8051825260208311156102cb57601f1990920191602091820191016102ab565b505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057604080516020600460643581810135601f8101849004840285018401909552848452610321948235600160a060020a0316946024803595604435959460849492019190819084018382808284375094965050509235600160a060020a0316925061194c915050565b604080519115158252519081900360200190f35b3461000057604080516020600460643581810135601f8101849004840285018401909552848452610321948235600160a060020a03169460248035956044359594608494920191908190840183828082843750949650611a9595505050505050565b604080519115158252519081900360200190f35b3461000057610321600160a060020a0360043516602435604435611bc0565b604080519115158252519081900360200190f35b3461000057610413611be8565b60408051918252519081900360200190f35b346100005761025c611bee565b60408051600160a060020a039092168252519081900360200190f35b3461000057610321600160a060020a0360043516602435611bfe565b604080519115158252519081900360200190f35b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610321948235600160a060020a0316946024803595606494929391909201918190840183828082843750949650611c2495505050505050565b604080519115158252519081900360200190f35b346100005760408051602060046024803582810135601f8101859004850286018501909652858552610321958335600160a060020a0316959394604494939290920191819084018382808284375050604080516020601f89358b01803591820183900483028401830190945280835297999881019791965091820194509250829150840183828082843750949650611d3e95505050505050565b604080519115158252519081900360200190f35b3461000057610321600160a060020a0360043516611eca565b604080519115158252519081900360200190f35b3461000057610321612002565b604080519115158252519081900360200190f35b3461000057610413600160a060020a0360043581169060243516612063565b60408051918252519081900360200190f35b346100005761025c600160a060020a03600435166120f6565b60408051600160a060020a039092168252519081900360200190f35b6000610b98336120f6565b90505b90565b600054600160a060020a03165b90565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b505050505081565b6000610c43610b8d565b600160a060020a031663e34f71378484336000604051602001526040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200182600160a060020a0316600160a060020a031681526020019350505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b92915050565b600554600090600160a060020a03161515610cf857506000610b9b565b426203f480600654011115610d0f57506000610b9b565b506005805460048054600160a060020a0319908116600160a060020a03841617909155169055600060065560015b90565b600454600160a060020a03165b90565b60008133600160a060020a0316610d66826120f6565b600160a060020a03161415610e99576000805460015460408051602090810194909452517f161ff662000000000000000000000000000000000000000000000000000000008152600160a060020a038b8116600483019081528b82166024840152604483018b90526064830184905288821660a484015260c0608484019081528a5160c48501528a51929095169563161ff662958e958e958e9591948e948e949193919260e40191908601908083838215610e3c575b805182526020831115610e3c57601f199092019160209182019101610e1c565b505050905090810190601f168015610e685780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b156100005760325a03f115610000575050604051519250505b5b5b5095945050505050565b6000805460015460408051602090810185905281517fb524abcf00000000000000000000000000000000000000000000000000000000815260048101939093529051600160a060020a039093169263b524abcf92602480820193929182900301818787803b156100005760325a03f115610000575050604051519150505b90565b60005433600160a060020a0390811691161415610f895781600160a060020a031683600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5b5b505050565b6000610fae84848460206040519081016040528060008152506112be565b90505b9392505050565b60005433600160a060020a0390811691161415610f895781600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5b5b505050565b60008054600154604080516020908101859052815160e160020a6374b5a315028152600160a060020a03338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b156100005760325a03f1156100005750506040515115905061114a57604080516000602091820181905282517fac35caee000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301526024820187905260606044830152600f60648301527f546f6b656e73207265636f76657279000000000000000000000000000000000060848301529351309094169363ac35caee9360a48084019491938390030190829087803b156100005760325a03f115610000575050604051519150505b5b5b919050565b6000805460015460408051602090810185905281517fdc86e6f000000000000000000000000000000000000000000000000000000000815260048101939093529051600160a060020a039093169263dc86e6f092602480820193929182900301818787803b156100005760325a03f115610000575050604051519150505b90565b600054600160a060020a031681565b6006545b90565b60008054600154604080516020908101859052815160e160020a6374b5a315028152600160a060020a03338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b156100005760325a03f11561000057505060405151159050610b9b57600554600160a060020a0316151561127457506000610b9b565b5060058054600160a060020a0319169055600060065560015b5b5b90565b600160a060020a03331660009081526007602052604090208054600160a060020a031916905560015b90565b60006112c8610b8d565b600160a060020a031663cca9702586868686336000604051602001526040518663ffffffff1660e060020a0281526004018086600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a031681526020018481526020018060200183600160a060020a0316600160a060020a0316815260200182810382528481815181526020019150805190602001908083836000831461138f575b80518252602083111561138f57601f19909201916020918201910161136f565b505050905090810190601f1680156113bb5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b949350505050565b6000805460015460408051602090810185905281517f4d30b6be000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482019490945291519290931692634d30b6be9260448084019382900301818787803b156100005760325a03f115610000575050604051519150505b919050565b600061149a838360206040519081016040528060008152506114a3565b90505b92915050565b60006114ad610b8d565b600160a060020a031663c10796df858585336000604051602001526040518563ffffffff1660e060020a0281526004018085600019166000191681526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360008314611551575b80518252602083111561155157601f199092019160209182019101611531565b505050905090810190601f16801561157d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b9392505050565b60008133600160a060020a03166115c9826120f6565b600160a060020a03161415611672576000805460015460408051602090810185905281517f14712e2f000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152602482018b905260448201949094528884166064820152915192909316936314712e2f9360848084019491939192918390030190829087803b156100005760325a03f115610000575050604051519250505b5b5b509392505050565b60008054600154604080516020908101859052815160e160020a6374b5a315028152600160a060020a03338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b156100005760325a03f11561000057505060405151159050610cd5576000805460015460408051602090810185905281517f32a16f4e00000000000000000000000000000000000000000000000000000000815260048101939093529051600160a060020a03909316936332a16f4e936024808501949192918390030190829087803b156100005760325a03f1156100005750506040515115905061177957506000610cd5565b8160029080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106117c557805160ff19168380011785556117f2565b828001600101855582156117f2579182015b828111156117f25782518255916020019190600101906117d7565b5b506118139291505b8082111561180f57600081556001016117fb565b5090565b50508260039080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061186157805160ff191683800117855561188e565b8280016001018555821561188e579182015b8281111561188e578251825591602001919060010190611873565b5b506118af9291505b8082111561180f57600081556001016117fb565b5090565b5050600190505b5b5b92915050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b505050505081565b60008133600160a060020a0316611962826120f6565b600160a060020a03161415610e99576000805460408051602090810193909352517fa69032ee000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301908152602483018b9052604483018a9052878216608484015260a060648401908152895160a48501528951929094169463a69032ee948d948d948d948d948d949193919260c490920191908601908083838215611a2d575b805182526020831115611a2d57601f199092019160209182019101611a0d565b505050905090810190601f168015611a595780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b156100005760325a03f115610000575050604051519250505b5b5b5095945050505050565b6000611a9f610b8d565b600160a060020a031663eb58705b86868686336000604051602001526040518663ffffffff1660e060020a0281526004018086600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018060200183600160a060020a0316600160a060020a0316815260200182810382528481815181526020019150805190602001908083836000831461138f575b80518252602083111561138f57601f19909201916020918201910161136f565b505050905090810190601f1680156113bb5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b949350505050565b6000610fae8484846020604051908101604052806000815250611a95565b90505b9392505050565b60015481565b600554600160a060020a03165b90565b600061149a83836020604051908101604052806000815250611c24565b90505b92915050565b6000611c2e610b8d565b600160a060020a0316631962df71858585336000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a031681526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360008314611551575b80518252602083111561155157601f199092019160209182019101611531565b505050905090810190601f16801561157d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b9392505050565b60008054600160a060020a031615611d5857506000610fb1565b60008054600160a060020a031916600160a060020a038616179055611d7c8361214d565b600181600019169055508160029080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dd257805160ff1916838001178555611dff565b82800160010185558215611dff579182015b82811115611dff578251825591602001919060010190611de4565b5b50611e209291505b8082111561180f57600081556001016117fb565b5090565b50508260039080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e6e57805160ff1916838001178555611e9b565b82800160010185558215611e9b579182015b82811115611e9b578251825591602001919060010190611e80565b5b50611ebc9291505b8082111561180f57600081556001016117fb565b5090565b5050600190505b9392505050565b60008054600154604080516020908101859052815160e160020a6374b5a315028152600160a060020a03338116600483015260248201949094529151929093169263e96b462a9260448084019382900301818787803b156100005760325a03f1156100005750506040515115905061114a57600554600160a060020a031615611f555750600061114a565b600160a060020a0382161515611f6d5750600061114a565b600454600160a060020a03161515611fa2575060048054600160a060020a031916600160a060020a038316179055600161114a565b60058054600160a060020a038416600160a060020a031990911681179091554260065560408051918252517faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a9181900360200190a15060015b5b5b919050565b600160a060020a033381166000908152600760205260408120549091161561202c57506000610b9b565b5060045433600160a060020a0390811660009081526007602052604090208054600160a060020a0319169190921617905560015b90565b6000805460015460408051602090810185905281517f1c8d5d38000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301528781166024830152604482019490945291519290931692631c8d5d389260648084019382900301818787803b156100005760325a03f115610000575050604051519150505b92915050565b600160a060020a038082166000908152600760205260408120549091161561213857600160a060020a0380831660009081526007602052604090205416612145565b600454600160a060020a03165b90505b919050565b60208101515b9190505600a165627a7a72305820921b47fe3810a9ce6b238d40c647951315aa5f116d1c85ffe01639754dfda9a60029

   Swarm Source:
bzzr://921b47fe3810a9ce6b238d40c647951315aa5f116d1c85ffe01639754dfda9a6

 

View All
Block Age transaction Difficulty GasUsed 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.