ETH Price: $3,339.11 (-0.01%)
 

Overview

Max Total Supply

10,000,000 WSH

Holders

641

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 10 Decimals)

Balance
52 WSH

Value
$0.00
0xf715e94e1d626c85324a6c9553a1f55c5cfea4aa
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ChronoBankAssetProxy

Compiler Version
v0.4.14+commit.c2215d46

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-12
*/

pragma solidity ^0.4.11;


contract ChronoBankPlatform {
    mapping(bytes32 => address) public proxies;

    function symbols(uint _idx) public constant returns (bytes32);
    function symbolsCount() public constant returns (uint);

    function name(bytes32 _symbol) returns(string);
    function setProxy(address _address, bytes32 _symbol) returns(uint errorCode);
    function isCreated(bytes32 _symbol) constant returns(bool);
    function isOwner(address _owner, bytes32 _symbol) returns(bool);
    function owner(bytes32 _symbol) constant returns(address);
    function totalSupply(bytes32 _symbol) returns(uint);
    function balanceOf(address _holder, bytes32 _symbol) returns(uint);
    function allowance(address _from, address _spender, bytes32 _symbol) returns(uint);
    function baseUnit(bytes32 _symbol) returns(uint8);
    function proxyTransferWithReference(address _to, uint _value, bytes32 _symbol, string _reference, address _sender) returns(uint errorCode);
    function proxyTransferFromWithReference(address _from, address _to, uint _value, bytes32 _symbol, string _reference, address _sender) returns(uint errorCode);
    function proxyApprove(address _spender, uint _value, bytes32 _symbol, address _sender) returns(uint errorCode);
    function issueAsset(bytes32 _symbol, uint _value, string _name, string _description, uint8 _baseUnit, bool _isReissuable) returns(uint errorCode);
    function issueAsset(bytes32 _symbol, uint _value, string _name, string _description, uint8 _baseUnit, bool _isReissuable, address _account) returns(uint errorCode);
    function reissueAsset(bytes32 _symbol, uint _value) returns(uint errorCode);
    function revokeAsset(bytes32 _symbol, uint _value) returns(uint errorCode);
    function isReissuable(bytes32 _symbol) returns(bool);
    function changeOwnership(bytes32 _symbol, address _newOwner) returns(uint errorCode);
}

contract ChronoBankAsset {
    function __transferWithReference(address _to, uint _value, string _reference, address _sender) returns(bool);
    function __transferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function __approve(address _spender, uint _value, address _sender) returns(bool);
    function __process(bytes _data, address _sender) payable {
        revert();
    }
}

contract ERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed from, address indexed spender, uint256 value);
    string public symbol;

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

/**
 * @title ChronoBank Asset Proxy.
 *
 * Proxy implements ERC20 interface and acts as a gateway to a single platform asset.
 * Proxy adds symbol and caller(sender) when forwarding requests to platform.
 * Every request that is made by caller first sent to the specific asset implementation
 * contract, which then calls back to be forwarded onto platform.
 *
 * Calls flow: Caller ->
 *             Proxy.func(...) ->
 *             Asset.__func(..., Caller.address) ->
 *             Proxy.__func(..., Caller.address) ->
 *             Platform.proxyFunc(..., symbol, Caller.address)
 *
 * 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 ChronoBankAssetProxy is ERC20 {

     // Supports ChronoBankPlatform ability to return error codes from methods
     uint constant OK = 1;

     // Assigned platform, immutable.
     ChronoBankPlatform public chronoBankPlatform;

     // Assigned symbol, immutable.
     bytes32 public smbl;

     // Assigned name, immutable.
     string public name;

     string public symbol;

     /**
      * Sets platform address, assigns symbol and name.
      *
      * Can be set only once.
      *
      * @param _chronoBankPlatform platform contract address.
      * @param _symbol assigned symbol.
      * @param _name assigned name.
      *
      * @return success.
      */
     function init(ChronoBankPlatform _chronoBankPlatform, string _symbol, string _name) returns(bool) {
         if (address(chronoBankPlatform) != 0x0) {
             return false;
         }
         chronoBankPlatform = _chronoBankPlatform;
         symbol = _symbol;
         smbl = stringToBytes32(_symbol);
         name = _name;
         return true;
     }

     function stringToBytes32(string memory source) returns (bytes32 result) {
         assembly {
            result := mload(add(source, 32))
         }
     }

     /**
      * Only platform is allowed to call.
      */
     modifier onlyChronoBankPlatform() {
         if (msg.sender == address(chronoBankPlatform)) {
             _;
         }
     }

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

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

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

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

     /**
      * 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 chronoBankPlatform.allowance(_from, _spender, smbl);
     }

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

     /**
      * 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) {
         if (_to != 0x0) {
           return _transferWithReference(_to, _value, "");
         }
         else {
             return false;
         }
     }

     /**
      * Transfers asset balance from the caller to specified receiver adding specified comment.
      *
      * @param _to holder address to give to.
      * @param _value amount to transfer.
      * @param _reference transfer comment to be included in a platform's Transfer event.
      *
      * @return success.
      */
     function transferWithReference(address _to, uint _value, string _reference) returns(bool) {
         if (_to != 0x0) {
             return _transferWithReference(_to, _value, _reference);
         }
         else {
             return false;
         }
     }

     /**
      * Resolves asset implementation contract for the caller and forwards there arguments along with
      * the caller address.
      *
      * @return success.
      */
     function _transferWithReference(address _to, uint _value, string _reference) internal returns(bool) {
         return _getAsset().__transferWithReference(_to, _value, _reference, msg.sender);
     }

     /**
      * Performs transfer call on the platform by the name of specified sender.
      *
      * Can only be called by asset implementation contract assigned to sender.
      *
      * @param _to holder address to give to.
      * @param _value amount to transfer.
      * @param _reference transfer comment to be included in a platform's Transfer event.
      * @param _sender initial caller.
      *
      * @return success.
      */
     function __transferWithReference(address _to, uint _value, string _reference, address _sender) onlyAccess(_sender) returns(bool) {
         return chronoBankPlatform.proxyTransferWithReference(_to, _value, smbl, _reference, _sender) == OK;
     }

     /**
      * 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) {
         if (_to != 0x0) {
             return _getAsset().__transferFromWithReference(_from, _to, _value, "", msg.sender);
          }
          else {
              return false;
          }
     }

     /**
      * Performs allowance transfer call on the platform 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 platform's Transfer event.
      * @param _sender initial caller.
      *
      * @return success.
      */
     function __transferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) onlyAccess(_sender) returns(bool) {
         return chronoBankPlatform.proxyTransferFromWithReference(_from, _to, _value, smbl, _reference, _sender) == OK;
     }

     /**
      * Sets asset spending allowance for a specified spender.
      *
      * @param _spender holder address to set allowance to.
      * @param _value amount to allow.
      *
      * @return success.
      */
     function approve(address _spender, uint _value) returns(bool) {
         if (_spender != 0x0) {
              return _getAsset().__approve(_spender, _value, msg.sender);
         }
         else {
             return false;
         }
     }

     /**
      * Performs allowance setting call on the platform 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 __approve(address _spender, uint _value, address _sender) onlyAccess(_sender) returns(bool) {
         return chronoBankPlatform.proxyApprove(_spender, _value, smbl, _sender) == OK;
     }

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

     /**
      * Emits ERC20 Approval event on this contract.
      *
      * Can only be, and, called by assigned platform when asset allowance set happens.
      */
     function emitApprove(address _from, address _spender, uint _value) onlyChronoBankPlatform() {
         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 {
         _getAsset().__process.value(msg.value)(msg.data, msg.sender);
     }

     /**
      * 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 onlyAccess(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;
     }
 }

Contract Security Audit

Contract ABI

[{"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":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":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"chronoBankPlatform","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":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"__transferWithReference","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":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_sender","type":"address"}],"name":"__approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"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":"_chronoBankPlatform","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":true,"inputs":[],"name":"smbl","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"source","type":"string"}],"name":"stringToBytes32","outputs":[{"name":"result","type":"bytes32"}],"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":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"__transferFromWithReference","outputs":[{"name":"","type":"bool"}],"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"}]

6060604052341561000f57600080fd5b5b6118cf8061001f6000396000f3006060604052361561014e5763ffffffff60e060020a60003504166306fdde0381146101e2578063095ea7b31461026d5780630ba12c83146102a35780630e6d1de9146102ca57806318160ddd146102f9578063233850891461031e57806323b872dd1461034857806323de665114610384578063313ce567146103ae57806349752baf146103d75780634bfaf2e8146104065780634dfe950d1461042b5780635b48684e146104525780636a630ee71461047957806370a08231146104fd5780637b7054c81461052e57806395d89b411461056b578063a883fb90146105f6578063a9059cbb14610625578063ac35caee1461065b578063b2b45df5146106d4578063c915fc9314610789578063cb4e75bb146107bc578063cfb51928146107e1578063d4eec5a614610844578063dd62ed3e1461086b578063ec698a28146108a2578063fe8beb711461092d575b5b610157610968565b600160a060020a031663f2d6e0ab346000363360405160e060020a63ffffffff8716028152600160a060020a03821660248201526040600482019081526044820184905290819060640185858082843782019150509450505050506000604051808303818588803b15156101ca57600080fd5b6125ee5a03f115156101db57600080fd5b505050505b005b34156101ed57600080fd5b6101f5610979565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102325780820151818401525b602001610219565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027857600080fd5b61028f600160a060020a0360043516602435610a17565b604051901515815260200160405180910390f35b34156102ae57600080fd5b61028f610ac5565b604051901515815260200160405180910390f35b34156102d557600080fd5b6102dd610b2a565b604051600160a060020a03909116815260200160405180910390f35b341561030457600080fd5b61030c610b3a565b60405190815260200160405180910390f35b341561032957600080fd5b6101e0600160a060020a0360043581169060243516604435610bb1565b005b341561035357600080fd5b61028f600160a060020a0360043581169060243516604435610c17565b604051901515815260200160405180910390f35b341561038f57600080fd5b6101e0600160a060020a0360043581169060243516604435610cdd565b005b34156103b957600080fd5b6103c1610d43565b60405160ff909116815260200160405180910390f35b34156103e257600080fd5b6102dd610dba565b604051600160a060020a03909116815260200160405180910390f35b341561041157600080fd5b61030c610dc9565b60405190815260200160405180910390f35b341561043657600080fd5b61028f610dd0565b604051901515815260200160405180910390f35b341561045d57600080fd5b61028f610e8e565b604051901515815260200160405180910390f35b341561048457600080fd5b61028f60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250610eba915050565b604051901515815260200160405180910390f35b341561050857600080fd5b61030c600160a060020a0360043516610ff9565b60405190815260200160405180910390f35b341561053957600080fd5b61028f600160a060020a036004358116906024359060443516611081565b604051901515815260200160405180910390f35b341561057657600080fd5b6101f561114c565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102325780820151818401525b602001610219565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060157600080fd5b6102dd6111ea565b604051600160a060020a03909116815260200160405180910390f35b341561063057600080fd5b61028f600160a060020a03600435166024356111fa565b604051901515815260200160405180910390f35b341561066657600080fd5b61028f60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061123a95505050505050565b604051901515815260200160405180910390f35b34156106df57600080fd5b61028f60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061126d95505050505050565b604051901515815260200160405180910390f35b341561079457600080fd5b61028f600160a060020a03600435166112e4565b604051901515815260200160405180910390f35b34156107c757600080fd5b61030c611437565b60405190815260200160405180910390f35b34156107ec57600080fd5b61030c60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061143d95505050505050565b60405190815260200160405180910390f35b341561084f57600080fd5b61028f61144c565b604051901515815260200160405180910390f35b341561087657600080fd5b61030c600160a060020a03600435811690602435166114ad565b60405190815260200160405180910390f35b34156108ad57600080fd5b61028f600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250611544915050565b604051901515815260200160405180910390f35b341561093857600080fd5b6102dd600160a060020a036004351661168f565b604051600160a060020a03909116815260200160405180910390f35b60006109733361168f565b90505b90565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0f5780601f106109e457610100808354040283529160200191610a0f565b820191906000526020600020905b8154815290600101906020018083116109f257829003601f168201915b505050505081565b6000600160a060020a03831615610aba57610a30610968565b600160a060020a0316637b7054c884843360006040516020015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515610a9857600080fd5b6102c65a03f11515610aa957600080fd5b505050604051805190509050610abe565b5060005b5b92915050565b600654600090600160a060020a03161515610ae257506000610976565b426203f480600754011115610af957506000610976565b506006805460058054600160a060020a0319908116600160a060020a03841617909155169055600060075560015b90565b600554600160a060020a03165b90565b600154600254600091600160a060020a03169063b524abcf90836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b9157600080fd5b6102c65a03f11515610ba257600080fd5b50505060405180519150505b90565b60015433600160a060020a0390811691161415610c105781600160a060020a031683600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a35b5b5b505050565b6000600160a060020a03831615610cd157610c30610968565b600160a060020a031663ec698a288585853360006040516020015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292841660248401526044830191909152909116608482015260a06064820152600060a482015260e401602060405180830381600087803b1515610caf57600080fd5b6102c65a03f11515610cc057600080fd5b505050604051805190509050610cd5565b5060005b5b9392505050565b60015433600160a060020a0390811691161415610c105781600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b5b5b505050565b600154600254600091600160a060020a03169063dc86e6f090836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b9157600080fd5b6102c65a03f11515610ba257600080fd5b50505060405180519150505b90565b600154600160a060020a031681565b6007545b90565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e3657600080fd5b6102c65a03f11515610e4757600080fd5b505050604051805190501561097657600654600160a060020a03161515610e7057506000610976565b5060068054600160a060020a0319169055600060075560015b5b5b90565b600160a060020a03331660009081526008602052604090208054600160a060020a031916905560015b90565b60008133600160a060020a0316610ed08261168f565b600160a060020a03161415610fee5760018054600254600160a060020a03909116906357a96dd09089908990898960006040516020015260405160e060020a63ffffffff8816028152600160a060020a03808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015610f805780820151818401525b602001610f67565b50505050905090810190601f168015610fad5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b505050604051805190501491505b5b5b50949350505050565b600154600254600091600160a060020a031690634d30b6be908490846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561105f57600080fd5b6102c65a03f1151561107057600080fd5b50505060405180519150505b919050565b60008133600160a060020a03166110978261168f565b600160a060020a031614156111425760018054600254600160a060020a03909116906314712e2f90889088908860006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935260448301919091529091166064820152608401602060405180830381600087803b151561112357600080fd5b6102c65a03f1151561113457600080fd5b505050604051805190501491505b5b5b509392505050565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0f5780601f106109e457610100808354040283529160200191610a0f565b820191906000526020600020905b8154815290600101906020018083116109f257829003601f168201915b505050505081565b600654600160a060020a03165b90565b6000600160a060020a03831615610aba5761122483836020604051908101604052600081526116e6565b9050610abe565b506000610abe565b5b92915050565b6000600160a060020a03841615610cd1576112568484846116e6565b9050610cd5565b506000610cd5565b5b9392505050565b600154600090600160a060020a03161561128957506000610cd5565b60018054600160a060020a031916600160a060020a03861617905560048380516112b7929160200190611803565b506112c18361143d565b60025560038280516112d7929160200190611803565b50600190505b9392505050565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561134a57600080fd5b6102c65a03f1151561135b57600080fd5b505050604051805190501561107c57600654600160a060020a0316156113835750600061107c565b600160a060020a038216151561139b5750600061107c565b600554600160a060020a031615156113d0575060058054600160a060020a031916600160a060020a038316179055600161107c565b60068054600160a060020a031916600160a060020a038416179055426007557faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a82604051600160a060020a03909116815260200160405180910390a15060015b5b5b919050565b60025481565b6000602082015190505b919050565b600160a060020a033381166000908152600860205260408120549091161561147657506000610976565b5060055433600160a060020a0390811660009081526008602052604090208054600160a060020a0319169190921617905560015b90565b600154600254600091600160a060020a031690631c8d5d389085908590856040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561152157600080fd5b6102c65a03f1151561153257600080fd5b50505060405180519150505b92915050565b60008133600160a060020a031661155a8261168f565b600160a060020a031614156116835760018054600254600160a060020a039091169063161ff662908a908a908a908a8a60006040516020015260405160e060020a63ffffffff8916028152600160a060020a03808816600483019081528782166024840152604483018790526064830186905290831660a483015260c060848301908152909160c40184818151815260200191508051906020019080838360005b838110156116145780820151818401525b6020016115fb565b50505050905090810190601f1680156116415780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b151561166457600080fd5b6102c65a03f1151561167557600080fd5b505050604051805190501491505b5b5b5095945050505050565b600160a060020a03808216600090815260086020526040812054909116156116d157600160a060020a03808316600090815260086020526040902054166116de565b600554600160a060020a03165b90505b919050565b60006116f0610968565b600160a060020a0316636a630ee7858585336000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a031681526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b838110156117915780820151818401525b602001611778565b50505050905090810190601f1680156117be5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156117df57600080fd5b6102c65a03f115156117f057600080fd5b50505060405180519150505b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061184457805160ff1916838001178555611871565b82800160010185558215611871579182015b82811115611871578251825591602001919060010190611856565b5b5061187e929150611882565b5090565b61097691905b8082111561187e5760008155600101611888565b5090565b905600a165627a7a723058200f4b4257ba268ebdf61c7fe5db344cc912339e56669ab24dc457815f41dad3970029

Deployed Bytecode

0x6060604052361561014e5763ffffffff60e060020a60003504166306fdde0381146101e2578063095ea7b31461026d5780630ba12c83146102a35780630e6d1de9146102ca57806318160ddd146102f9578063233850891461031e57806323b872dd1461034857806323de665114610384578063313ce567146103ae57806349752baf146103d75780634bfaf2e8146104065780634dfe950d1461042b5780635b48684e146104525780636a630ee71461047957806370a08231146104fd5780637b7054c81461052e57806395d89b411461056b578063a883fb90146105f6578063a9059cbb14610625578063ac35caee1461065b578063b2b45df5146106d4578063c915fc9314610789578063cb4e75bb146107bc578063cfb51928146107e1578063d4eec5a614610844578063dd62ed3e1461086b578063ec698a28146108a2578063fe8beb711461092d575b5b610157610968565b600160a060020a031663f2d6e0ab346000363360405160e060020a63ffffffff8716028152600160a060020a03821660248201526040600482019081526044820184905290819060640185858082843782019150509450505050506000604051808303818588803b15156101ca57600080fd5b6125ee5a03f115156101db57600080fd5b505050505b005b34156101ed57600080fd5b6101f5610979565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102325780820151818401525b602001610219565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027857600080fd5b61028f600160a060020a0360043516602435610a17565b604051901515815260200160405180910390f35b34156102ae57600080fd5b61028f610ac5565b604051901515815260200160405180910390f35b34156102d557600080fd5b6102dd610b2a565b604051600160a060020a03909116815260200160405180910390f35b341561030457600080fd5b61030c610b3a565b60405190815260200160405180910390f35b341561032957600080fd5b6101e0600160a060020a0360043581169060243516604435610bb1565b005b341561035357600080fd5b61028f600160a060020a0360043581169060243516604435610c17565b604051901515815260200160405180910390f35b341561038f57600080fd5b6101e0600160a060020a0360043581169060243516604435610cdd565b005b34156103b957600080fd5b6103c1610d43565b60405160ff909116815260200160405180910390f35b34156103e257600080fd5b6102dd610dba565b604051600160a060020a03909116815260200160405180910390f35b341561041157600080fd5b61030c610dc9565b60405190815260200160405180910390f35b341561043657600080fd5b61028f610dd0565b604051901515815260200160405180910390f35b341561045d57600080fd5b61028f610e8e565b604051901515815260200160405180910390f35b341561048457600080fd5b61028f60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250610eba915050565b604051901515815260200160405180910390f35b341561050857600080fd5b61030c600160a060020a0360043516610ff9565b60405190815260200160405180910390f35b341561053957600080fd5b61028f600160a060020a036004358116906024359060443516611081565b604051901515815260200160405180910390f35b341561057657600080fd5b6101f561114c565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102325780820151818401525b602001610219565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060157600080fd5b6102dd6111ea565b604051600160a060020a03909116815260200160405180910390f35b341561063057600080fd5b61028f600160a060020a03600435166024356111fa565b604051901515815260200160405180910390f35b341561066657600080fd5b61028f60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061123a95505050505050565b604051901515815260200160405180910390f35b34156106df57600080fd5b61028f60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061126d95505050505050565b604051901515815260200160405180910390f35b341561079457600080fd5b61028f600160a060020a03600435166112e4565b604051901515815260200160405180910390f35b34156107c757600080fd5b61030c611437565b60405190815260200160405180910390f35b34156107ec57600080fd5b61030c60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061143d95505050505050565b60405190815260200160405180910390f35b341561084f57600080fd5b61028f61144c565b604051901515815260200160405180910390f35b341561087657600080fd5b61030c600160a060020a03600435811690602435166114ad565b60405190815260200160405180910390f35b34156108ad57600080fd5b61028f600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250611544915050565b604051901515815260200160405180910390f35b341561093857600080fd5b6102dd600160a060020a036004351661168f565b604051600160a060020a03909116815260200160405180910390f35b60006109733361168f565b90505b90565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0f5780601f106109e457610100808354040283529160200191610a0f565b820191906000526020600020905b8154815290600101906020018083116109f257829003601f168201915b505050505081565b6000600160a060020a03831615610aba57610a30610968565b600160a060020a0316637b7054c884843360006040516020015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015260248101929092529091166044820152606401602060405180830381600087803b1515610a9857600080fd5b6102c65a03f11515610aa957600080fd5b505050604051805190509050610abe565b5060005b5b92915050565b600654600090600160a060020a03161515610ae257506000610976565b426203f480600754011115610af957506000610976565b506006805460058054600160a060020a0319908116600160a060020a03841617909155169055600060075560015b90565b600554600160a060020a03165b90565b600154600254600091600160a060020a03169063b524abcf90836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b9157600080fd5b6102c65a03f11515610ba257600080fd5b50505060405180519150505b90565b60015433600160a060020a0390811691161415610c105781600160a060020a031683600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a35b5b5b505050565b6000600160a060020a03831615610cd157610c30610968565b600160a060020a031663ec698a288585853360006040516020015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292841660248401526044830191909152909116608482015260a06064820152600060a482015260e401602060405180830381600087803b1515610caf57600080fd5b6102c65a03f11515610cc057600080fd5b505050604051805190509050610cd5565b5060005b5b9392505050565b60015433600160a060020a0390811691161415610c105781600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b5b5b505050565b600154600254600091600160a060020a03169063dc86e6f090836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b9157600080fd5b6102c65a03f11515610ba257600080fd5b50505060405180519150505b90565b600154600160a060020a031681565b6007545b90565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e3657600080fd5b6102c65a03f11515610e4757600080fd5b505050604051805190501561097657600654600160a060020a03161515610e7057506000610976565b5060068054600160a060020a0319169055600060075560015b5b5b90565b600160a060020a03331660009081526008602052604090208054600160a060020a031916905560015b90565b60008133600160a060020a0316610ed08261168f565b600160a060020a03161415610fee5760018054600254600160a060020a03909116906357a96dd09089908990898960006040516020015260405160e060020a63ffffffff8816028152600160a060020a03808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015610f805780820151818401525b602001610f67565b50505050905090810190601f168015610fad5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b505050604051805190501491505b5b5b50949350505050565b600154600254600091600160a060020a031690634d30b6be908490846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561105f57600080fd5b6102c65a03f1151561107057600080fd5b50505060405180519150505b919050565b60008133600160a060020a03166110978261168f565b600160a060020a031614156111425760018054600254600160a060020a03909116906314712e2f90889088908860006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935260448301919091529091166064820152608401602060405180830381600087803b151561112357600080fd5b6102c65a03f1151561113457600080fd5b505050604051805190501491505b5b5b509392505050565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0f5780601f106109e457610100808354040283529160200191610a0f565b820191906000526020600020905b8154815290600101906020018083116109f257829003601f168201915b505050505081565b600654600160a060020a03165b90565b6000600160a060020a03831615610aba5761122483836020604051908101604052600081526116e6565b9050610abe565b506000610abe565b5b92915050565b6000600160a060020a03841615610cd1576112568484846116e6565b9050610cd5565b506000610cd5565b5b9392505050565b600154600090600160a060020a03161561128957506000610cd5565b60018054600160a060020a031916600160a060020a03861617905560048380516112b7929160200190611803565b506112c18361143d565b60025560038280516112d7929160200190611803565b50600190505b9392505050565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561134a57600080fd5b6102c65a03f1151561135b57600080fd5b505050604051805190501561107c57600654600160a060020a0316156113835750600061107c565b600160a060020a038216151561139b5750600061107c565b600554600160a060020a031615156113d0575060058054600160a060020a031916600160a060020a038316179055600161107c565b60068054600160a060020a031916600160a060020a038416179055426007557faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a82604051600160a060020a03909116815260200160405180910390a15060015b5b5b919050565b60025481565b6000602082015190505b919050565b600160a060020a033381166000908152600860205260408120549091161561147657506000610976565b5060055433600160a060020a0390811660009081526008602052604090208054600160a060020a0319169190921617905560015b90565b600154600254600091600160a060020a031690631c8d5d389085908590856040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561152157600080fd5b6102c65a03f1151561153257600080fd5b50505060405180519150505b92915050565b60008133600160a060020a031661155a8261168f565b600160a060020a031614156116835760018054600254600160a060020a039091169063161ff662908a908a908a908a8a60006040516020015260405160e060020a63ffffffff8916028152600160a060020a03808816600483019081528782166024840152604483018790526064830186905290831660a483015260c060848301908152909160c40184818151815260200191508051906020019080838360005b838110156116145780820151818401525b6020016115fb565b50505050905090810190601f1680156116415780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b151561166457600080fd5b6102c65a03f1151561167557600080fd5b505050604051805190501491505b5b5b5095945050505050565b600160a060020a03808216600090815260086020526040812054909116156116d157600160a060020a03808316600090815260086020526040902054166116de565b600554600160a060020a03165b90505b919050565b60006116f0610968565b600160a060020a0316636a630ee7858585336000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a031681526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b838110156117915780820151818401525b602001611778565b50505050905090810190601f1680156117be5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156117df57600080fd5b6102c65a03f115156117f057600080fd5b50505060405180519150505b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061184457805160ff1916838001178555611871565b82800160010185558215611871579182015b82811115611871578251825591602001919060010190611856565b5b5061187e929150611882565b5090565b61097691905b8082111561187e5760008155600101611888565b5090565b905600a165627a7a723058200f4b4257ba268ebdf61c7fe5db344cc912339e56669ab24dc457815f41dad3970029

Swarm Source

bzzr://0f4b4257ba268ebdf61c7fe5db344cc912339e56669ab24dc457815f41dad397
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.