ETH Price: $3,120.69 (+1.61%)
Gas: 2 Gwei

Contract

0x9f0577396EDe6414394Fc97Ae222418E8A96ED24
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer192375012024-02-16 2:30:11145 days ago1708050611IN
0x9f057739...E8A96ED24
0 ETH0.0037657626.31633938
Transfer153594382022-08-17 15:12:11693 days ago1660749131IN
0x9f057739...E8A96ED24
0 ETH0.0028619220
Transfer152825332022-08-05 13:15:07705 days ago1659705307IN
0x9f057739...E8A96ED24
0 ETH0.0014851710.37890097
Transfer125743112021-06-05 11:58:461131 days ago1622894326IN
0x9f057739...E8A96ED24
0 ETH0.0016630615
Transfer115299972020-12-26 14:55:221292 days ago1608994522IN
0x9f057739...E8A96ED24
0 ETH0.0075469261
Transfer114569502020-12-15 9:57:541303 days ago1608026274IN
0x9f057739...E8A96ED24
0 ETH0.0126224291
Transfer111095912020-10-23 1:25:451357 days ago1603416345IN
0x9f057739...E8A96ED24
0 ETH0.0037108830
Transfer102720842020-06-15 18:53:081486 days ago1592247188IN
0x9f057739...E8A96ED24
0 ETH0.0021304734.5
Transfer100247282020-05-08 9:22:231524 days ago1588929743IN
0x9f057739...E8A96ED24
0 ETH0.0024741620
Transfer99013032020-04-19 6:51:521543 days ago1587279112IN
0x9f057739...E8A96ED24
0 ETH0.000123532
Transfer96069432020-03-04 20:43:571589 days ago1583354637IN
0x9f057739...E8A96ED24
0 ETH0.000123721
Transfer88462752019-10-31 11:37:531714 days ago1572521873IN
0x9f057739...E8A96ED24
0 ETH0.000216722
Transfer88117302019-10-25 22:28:481720 days ago1572042528IN
0x9f057739...E8A96ED24
0 ETH0.000216722
Transfer87375202019-10-14 5:11:011731 days ago1571029861IN
0x9f057739...E8A96ED24
0 ETH0.0010842810
Transfer87301392019-10-13 1:15:291733 days ago1570929329IN
0x9f057739...E8A96ED24
0 ETH0.000054210.5
Transfer84795412019-09-03 21:08:101772 days ago1567544890IN
0x9f057739...E8A96ED24
0 ETH0.000433454
Transfer83155462019-08-09 9:13:371797 days ago1565342017IN
0x9f057739...E8A96ED24
0 ETH0.000524166
Transfer82391442019-07-28 12:37:171809 days ago1564317437IN
0x9f057739...E8A96ED24
0 ETH0.0012336410
Transfer80703212019-07-02 5:54:381835 days ago1562046878IN
0x9f057739...E8A96ED24
0 ETH0.000130031.2
Transfer80612132019-06-30 19:54:201837 days ago1561924460IN
0x9f057739...E8A96ED24
0 ETH0.000492944
Transfer80531292019-06-29 13:49:261838 days ago1561816166IN
0x9f057739...E8A96ED24
0 ETH0.0016200414.94999961
Transfer80090462019-06-22 16:40:211845 days ago1561221621IN
0x9f057739...E8A96ED24
0 ETH0.00021662
Transfer79778532019-06-17 19:45:221850 days ago1560800722IN
0x9f057739...E8A96ED24
0 ETH0.000312
Transfer79710112019-06-16 17:57:251851 days ago1560707845IN
0x9f057739...E8A96ED24
0 ETH0.000047621
Transfer79391512019-06-11 18:27:231856 days ago1560277643IN
0x9f057739...E8A96ED24
0 ETH0.000433714
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CAVAssetProxy

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.11;

// File: contracts/CAVAssetInterface.sol

contract CAVAsset {
    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();
    }
}

// File: contracts/CAVPlatformInterface.sol

contract CAVPlatform {
    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);
    function hasAssetRights(address _owner, bytes32 _symbol) public view returns (bool);
}

// File: contracts/ERC20Interface.sol

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

    function decimals() constant returns (uint8);
    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);
}

// File: contracts/CAVAssetProxy.sol

/**
 * @title CAV 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 CAVAssetProxy is ERC20Interface {

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

    // Assigned platform, immutable.
    CAVPlatform public platform;

    // 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 _platform platform contract address.
     * @param _symbol assigned symbol.
     * @param _name assigned name.
     *
     * @return success.
     */
    function init(CAVPlatform _platform, string _symbol, string _name) returns(bool) {
        if (address(platform) != 0x0) {
            return false;
        }
        platform = _platform;
        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 onlyPlatform() {
        if (msg.sender == address(platform)) {
            _;
        }
    }

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

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

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

    /**
     * Returns asset balance for a particular holder.
     *
     * @param _owner holder address.
     *
     * @return holder balance.
     */
    function balanceOf(address _owner) constant returns(uint) {
        return platform.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 platform.allowance(_from, _spender, smbl);
    }

    /**
     * Returns asset decimals.
     *
     * @return asset decimals.
     */
    function decimals() constant returns(uint8) {
        return platform.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 platform.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 platform.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 platform.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) onlyPlatform() {
        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) onlyPlatform() {
        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,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"commitUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getLatestVersion","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"platform","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersionTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"purgeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"optIn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersion","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_platform","type":"address"},{"name":"_symbol","type":"string"},{"name":"_name","type":"string"}],"name":"init","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"address"}],"name":"proposeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"smbl","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"source","type":"string"}],"name":"stringToBytes32","outputs":[{"name":"result","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"optOut","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"getVersionFor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","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"}]

6060604052341561000f57600080fd5b6116138061001e6000396000f3006060604052600436106101505763ffffffff60e060020a60003504166306fdde0381146101e2578063095ea7b31461026c5780630ba12c83146102a25780630e6d1de9146102b557806318160ddd146102e4578063233850891461030957806323b872dd1461033357806323de66511461035b578063313ce567146103835780634bde38c8146103ac5780634bfaf2e8146103bf5780634dfe950d146103d25780635b48684e146103e55780636a630ee7146103f857806370a08231146104685780637b7054c81461048757806395d89b41146104b0578063a883fb90146104c3578063a9059cbb146104d6578063ac35caee146104f8578063b2b45df51461055d578063c915fc93146105fe578063cb4e75bb1461061d578063cfb5192814610630578063d4eec5a614610681578063dd62ed3e14610694578063ec698a28146106b9578063fe8beb7114610730575b61015861074f565b600160a060020a031663f2d6e0ab346000363360405160e060020a63ffffffff8716028152600160a060020a03821660248201526040600482019081526044820184905290819060640185858082843782019150509450505050506000604051808303818588803b15156101cb57600080fd5b6125ee5a03f115156101dc57600080fd5b50505050005b34156101ed57600080fd5b6101f5610760565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610231578082015183820152602001610219565b50505050905090810190601f16801561025e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027757600080fd5b61028e600160a060020a03600435166024356107fe565b604051901515815260200160405180910390f35b34156102ad57600080fd5b61028e6108ab565b34156102c057600080fd5b6102c861090f565b604051600160a060020a03909116815260200160405180910390f35b34156102ef57600080fd5b6102f761091e565b60405190815260200160405180910390f35b341561031457600080fd5b610331600160a060020a0360043581169060243516604435610994565b005b341561033e57600080fd5b61028e600160a060020a03600435811690602435166044356109f8565b341561036657600080fd5b610331600160a060020a0360043581169060243516604435610abd565b341561038e57600080fd5b610396610b20565b60405160ff909116815260200160405180910390f35b34156103b757600080fd5b6102c8610b77565b34156103ca57600080fd5b6102f7610b86565b34156103dd57600080fd5b61028e610b8c565b34156103f057600080fd5b61028e610c47565b341561040357600080fd5b61028e60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250610c72915050565b341561047357600080fd5b6102f7600160a060020a0360043516610dae565b341561049257600080fd5b61028e600160a060020a036004358116906024359060443516610e36565b34156104bb57600080fd5b6101f5610eff565b34156104ce57600080fd5b6102c8610f6a565b34156104e157600080fd5b61028e600160a060020a0360043516602435610f79565b341561050357600080fd5b61028e60048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610faa95505050505050565b341561056857600080fd5b61028e60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650610fcd95505050505050565b341561060957600080fd5b61028e600160a060020a0360043516611042565b341561062857600080fd5b6102f7611192565b341561063b57600080fd5b6102f760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061119895505050505050565b341561068c57600080fd5b61028e6111a5565b341561069f57600080fd5b6102f7600160a060020a0360043581169060243516611205565b34156106c457600080fd5b61028e600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a0316925061129a915050565b341561073b57600080fd5b6102c8600160a060020a03600435166113e2565b600061075a336113e2565b90505b90565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107f65780601f106107cb576101008083540402835291602001916107f6565b820191906000526020600020905b8154815290600101906020018083116107d957829003601f168201915b505050505081565b6000600160a060020a038316156108a15761081761074f565b600160a060020a0316637b7054c884843360006040516020015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015260248101929092529091166044820152606401602060405180830381600087803b151561087f57600080fd5b6102c65a03f1151561089057600080fd5b5050506040518051905090506108a5565b5060005b92915050565b600654600090600160a060020a031615156108c85750600061075d565b426203f4806007540111156108df5750600061075d565b506006805460058054600160a060020a0319908116600160a060020a038416179091551690556000600755600190565b600554600160a060020a031690565b600154600254600091600160a060020a03169063b524abcf90836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561097557600080fd5b6102c65a03f1151561098657600080fd5b505050604051805191505090565b60015433600160a060020a03908116911614156109f35781600160a060020a031683600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a35b505050565b6000600160a060020a03831615610ab257610a1161074f565b600160a060020a031663ec698a288585853360006040516020015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292841660248401526044830191909152909116608482015260a06064820152600060a482015260e401602060405180830381600087803b1515610a9057600080fd5b6102c65a03f11515610aa157600080fd5b505050604051805190509050610ab6565b5060005b9392505050565b60015433600160a060020a03908116911614156109f35781600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3505050565b600154600254600091600160a060020a03169063dc86e6f090836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561097557600080fd5b600154600160a060020a031681565b60075490565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bf257600080fd5b6102c65a03f11515610c0357600080fd5b505050604051805190501561075d57600654600160a060020a03161515610c2c5750600061075d565b5060068054600160a060020a03191690556000600755600190565b600160a060020a03331660009081526008602052604090208054600160a060020a0319169055600190565b60008133600160a060020a0316610c88826113e2565b600160a060020a03161415610da55760018054600254600160a060020a03909116906357a96dd09089908990898960006040516020015260405160e060020a63ffffffff8816028152600160a060020a03808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015610d37578082015183820152602001610d1f565b50505050905090810190601f168015610d645780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515610d8657600080fd5b6102c65a03f11515610d9757600080fd5b505050604051805190501491505b50949350505050565b600154600254600091600160a060020a031690634d30b6be908490846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e1457600080fd5b6102c65a03f11515610e2557600080fd5b50505060405180519150505b919050565b60008133600160a060020a0316610e4c826113e2565b600160a060020a03161415610ef75760018054600254600160a060020a03909116906314712e2f90889088908860006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935260448301919091529091166064820152608401602060405180830381600087803b1515610ed857600080fd5b6102c65a03f11515610ee957600080fd5b505050604051805190501491505b509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107f65780601f106107cb576101008083540402835291602001916107f6565b600654600160a060020a031690565b6000600160a060020a038316156108a157610fa38383602060405190810160405260008152611435565b90506108a5565b6000600160a060020a03841615610ab257610fc6848484611435565b9050610ab6565b600154600090600160a060020a031615610fe957506000610ab6565b60018054600160a060020a031916600160a060020a038616179055600483805161101792916020019061154f565b5061102183611198565b600255600382805161103792916020019061154f565b506001949350505050565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110a857600080fd5b6102c65a03f115156110b957600080fd5b5050506040518051905015610e3157600654600160a060020a0316156110e157506000610e31565b600160a060020a03821615156110f957506000610e31565b600554600160a060020a0316151561112e575060058054600160a060020a031916600160a060020a0383161790556001610e31565b60068054600160a060020a031916600160a060020a038416179055426007557faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a82604051600160a060020a03909116815260200160405180910390a1506001919050565b60025481565b6000602082015192915050565b600160a060020a03338116600090815260086020526040812054909116156111cf5750600061075d565b5060055433600160a060020a0390811660009081526008602052604090208054600160a060020a03191691909216179055600190565b600154600254600091600160a060020a031690631c8d5d389085908590856040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561127957600080fd5b6102c65a03f1151561128a57600080fd5b5050506040518051949350505050565b60008133600160a060020a03166112b0826113e2565b600160a060020a031614156113d85760018054600254600160a060020a039091169063161ff662908a908a908a908a8a60006040516020015260405160e060020a63ffffffff8916028152600160a060020a03808816600483019081528782166024840152604483018790526064830186905290831660a483015260c060848301908152909160c40184818151815260200191508051906020019080838360005b83811015611369578082015183820152602001611351565b50505050905090810190601f1680156113965780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b15156113b957600080fd5b6102c65a03f115156113ca57600080fd5b505050604051805190501491505b5095945050505050565b600160a060020a038082166000908152600860205260408120549091161561142457600160a060020a03808316600090815260086020526040902054166108a5565b5050600554600160a060020a031690565b600061143f61074f565b600160a060020a0316636a630ee7858585336000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a031681526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b838110156114df5780820151838201526020016114c7565b50505050905090810190601f16801561150c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561152d57600080fd5b6102c65a03f1151561153e57600080fd5b505050604051805195945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061159057805160ff19168380011785556115bd565b828001600101855582156115bd579182015b828111156115bd5782518255916020019190600101906115a2565b506115c99291506115cd565b5090565b61075d91905b808211156115c957600081556001016115d35600a165627a7a72305820e966c6b7e83477a817f78d9a4d31adb992bb8162de7f4daa7dbd710557ecb72a0029

Deployed Bytecode

0x6060604052600436106101505763ffffffff60e060020a60003504166306fdde0381146101e2578063095ea7b31461026c5780630ba12c83146102a25780630e6d1de9146102b557806318160ddd146102e4578063233850891461030957806323b872dd1461033357806323de66511461035b578063313ce567146103835780634bde38c8146103ac5780634bfaf2e8146103bf5780634dfe950d146103d25780635b48684e146103e55780636a630ee7146103f857806370a08231146104685780637b7054c81461048757806395d89b41146104b0578063a883fb90146104c3578063a9059cbb146104d6578063ac35caee146104f8578063b2b45df51461055d578063c915fc93146105fe578063cb4e75bb1461061d578063cfb5192814610630578063d4eec5a614610681578063dd62ed3e14610694578063ec698a28146106b9578063fe8beb7114610730575b61015861074f565b600160a060020a031663f2d6e0ab346000363360405160e060020a63ffffffff8716028152600160a060020a03821660248201526040600482019081526044820184905290819060640185858082843782019150509450505050506000604051808303818588803b15156101cb57600080fd5b6125ee5a03f115156101dc57600080fd5b50505050005b34156101ed57600080fd5b6101f5610760565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610231578082015183820152602001610219565b50505050905090810190601f16801561025e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027757600080fd5b61028e600160a060020a03600435166024356107fe565b604051901515815260200160405180910390f35b34156102ad57600080fd5b61028e6108ab565b34156102c057600080fd5b6102c861090f565b604051600160a060020a03909116815260200160405180910390f35b34156102ef57600080fd5b6102f761091e565b60405190815260200160405180910390f35b341561031457600080fd5b610331600160a060020a0360043581169060243516604435610994565b005b341561033e57600080fd5b61028e600160a060020a03600435811690602435166044356109f8565b341561036657600080fd5b610331600160a060020a0360043581169060243516604435610abd565b341561038e57600080fd5b610396610b20565b60405160ff909116815260200160405180910390f35b34156103b757600080fd5b6102c8610b77565b34156103ca57600080fd5b6102f7610b86565b34156103dd57600080fd5b61028e610b8c565b34156103f057600080fd5b61028e610c47565b341561040357600080fd5b61028e60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250610c72915050565b341561047357600080fd5b6102f7600160a060020a0360043516610dae565b341561049257600080fd5b61028e600160a060020a036004358116906024359060443516610e36565b34156104bb57600080fd5b6101f5610eff565b34156104ce57600080fd5b6102c8610f6a565b34156104e157600080fd5b61028e600160a060020a0360043516602435610f79565b341561050357600080fd5b61028e60048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610faa95505050505050565b341561056857600080fd5b61028e60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650610fcd95505050505050565b341561060957600080fd5b61028e600160a060020a0360043516611042565b341561062857600080fd5b6102f7611192565b341561063b57600080fd5b6102f760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061119895505050505050565b341561068c57600080fd5b61028e6111a5565b341561069f57600080fd5b6102f7600160a060020a0360043581169060243516611205565b34156106c457600080fd5b61028e600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a0316925061129a915050565b341561073b57600080fd5b6102c8600160a060020a03600435166113e2565b600061075a336113e2565b90505b90565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107f65780601f106107cb576101008083540402835291602001916107f6565b820191906000526020600020905b8154815290600101906020018083116107d957829003601f168201915b505050505081565b6000600160a060020a038316156108a15761081761074f565b600160a060020a0316637b7054c884843360006040516020015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015260248101929092529091166044820152606401602060405180830381600087803b151561087f57600080fd5b6102c65a03f1151561089057600080fd5b5050506040518051905090506108a5565b5060005b92915050565b600654600090600160a060020a031615156108c85750600061075d565b426203f4806007540111156108df5750600061075d565b506006805460058054600160a060020a0319908116600160a060020a038416179091551690556000600755600190565b600554600160a060020a031690565b600154600254600091600160a060020a03169063b524abcf90836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561097557600080fd5b6102c65a03f1151561098657600080fd5b505050604051805191505090565b60015433600160a060020a03908116911614156109f35781600160a060020a031683600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a35b505050565b6000600160a060020a03831615610ab257610a1161074f565b600160a060020a031663ec698a288585853360006040516020015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292841660248401526044830191909152909116608482015260a06064820152600060a482015260e401602060405180830381600087803b1515610a9057600080fd5b6102c65a03f11515610aa157600080fd5b505050604051805190509050610ab6565b5060005b9392505050565b60015433600160a060020a03908116911614156109f35781600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3505050565b600154600254600091600160a060020a03169063dc86e6f090836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561097557600080fd5b600154600160a060020a031681565b60075490565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bf257600080fd5b6102c65a03f11515610c0357600080fd5b505050604051805190501561075d57600654600160a060020a03161515610c2c5750600061075d565b5060068054600160a060020a03191690556000600755600190565b600160a060020a03331660009081526008602052604090208054600160a060020a0319169055600190565b60008133600160a060020a0316610c88826113e2565b600160a060020a03161415610da55760018054600254600160a060020a03909116906357a96dd09089908990898960006040516020015260405160e060020a63ffffffff8816028152600160a060020a03808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015610d37578082015183820152602001610d1f565b50505050905090810190601f168015610d645780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515610d8657600080fd5b6102c65a03f11515610d9757600080fd5b505050604051805190501491505b50949350505050565b600154600254600091600160a060020a031690634d30b6be908490846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e1457600080fd5b6102c65a03f11515610e2557600080fd5b50505060405180519150505b919050565b60008133600160a060020a0316610e4c826113e2565b600160a060020a03161415610ef75760018054600254600160a060020a03909116906314712e2f90889088908860006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935260448301919091529091166064820152608401602060405180830381600087803b1515610ed857600080fd5b6102c65a03f11515610ee957600080fd5b505050604051805190501491505b509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107f65780601f106107cb576101008083540402835291602001916107f6565b600654600160a060020a031690565b6000600160a060020a038316156108a157610fa38383602060405190810160405260008152611435565b90506108a5565b6000600160a060020a03841615610ab257610fc6848484611435565b9050610ab6565b600154600090600160a060020a031615610fe957506000610ab6565b60018054600160a060020a031916600160a060020a038616179055600483805161101792916020019061154f565b5061102183611198565b600255600382805161103792916020019061154f565b506001949350505050565b600154600254600091600160a060020a03169063e96b462a903390846040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110a857600080fd5b6102c65a03f115156110b957600080fd5b5050506040518051905015610e3157600654600160a060020a0316156110e157506000610e31565b600160a060020a03821615156110f957506000610e31565b600554600160a060020a0316151561112e575060058054600160a060020a031916600160a060020a0383161790556001610e31565b60068054600160a060020a031916600160a060020a038416179055426007557faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a82604051600160a060020a03909116815260200160405180910390a1506001919050565b60025481565b6000602082015192915050565b600160a060020a03338116600090815260086020526040812054909116156111cf5750600061075d565b5060055433600160a060020a0390811660009081526008602052604090208054600160a060020a03191691909216179055600190565b600154600254600091600160a060020a031690631c8d5d389085908590856040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561127957600080fd5b6102c65a03f1151561128a57600080fd5b5050506040518051949350505050565b60008133600160a060020a03166112b0826113e2565b600160a060020a031614156113d85760018054600254600160a060020a039091169063161ff662908a908a908a908a8a60006040516020015260405160e060020a63ffffffff8916028152600160a060020a03808816600483019081528782166024840152604483018790526064830186905290831660a483015260c060848301908152909160c40184818151815260200191508051906020019080838360005b83811015611369578082015183820152602001611351565b50505050905090810190601f1680156113965780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b15156113b957600080fd5b6102c65a03f115156113ca57600080fd5b505050604051805190501491505b5095945050505050565b600160a060020a038082166000908152600860205260408120549091161561142457600160a060020a03808316600090815260086020526040902054166108a5565b5050600554600160a060020a031690565b600061143f61074f565b600160a060020a0316636a630ee7858585336000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a031681526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b838110156114df5780820151838201526020016114c7565b50505050905090810190601f16801561150c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561152d57600080fd5b6102c65a03f1151561153e57600080fd5b505050604051805195945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061159057805160ff19168380011785556115bd565b828001600101855582156115bd579182015b828111156115bd5782518255916020019190600101906115a2565b506115c99291506115cd565b5090565b61075d91905b808211156115c957600081556001016115d35600a165627a7a72305820e966c6b7e83477a817f78d9a4d31adb992bb8162de7f4daa7dbd710557ecb72a0029

Swarm Source

bzzr://e966c6b7e83477a817f78d9a4d31adb992bb8162de7f4daa7dbd710557ecb72a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.