ETH Price: $3,155.38 (+0.36%)
Gas: 2 Gwei

Contract

0xf824E25DB6135c242baDD551B1A86D5c490a368e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Init42133152017-08-28 16:01:492511 days ago1503936109IN
0xf824E25D...c490a368e
0 ETH0.000173424
0x6060604042133142017-08-28 16:01:482511 days ago1503936108IN
 Contract Creation
0 ETH0.003749084

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
143742072022-03-12 20:51:51853 days ago1647118311
0xf824E25D...c490a368e
0 ETH
143742072022-03-12 20:51:51853 days ago1647118311
0xf824E25D...c490a368e
0 ETH
128682832021-07-21 6:44:441088 days ago1626849884
0xf824E25D...c490a368e
0 ETH
128682832021-07-21 6:44:441088 days ago1626849884
0xf824E25D...c490a368e
0 ETH
128682662021-07-21 6:41:251088 days ago1626849685
0xf824E25D...c490a368e
0 ETH
128682662021-07-21 6:41:251088 days ago1626849685
0xf824E25D...c490a368e
0 ETH
126622762021-06-19 2:54:351120 days ago1624071275
0xf824E25D...c490a368e
0 ETH
126622762021-06-19 2:54:351120 days ago1624071275
0xf824E25D...c490a368e
0 ETH
124764952021-05-21 8:00:031149 days ago1621584003
0xf824E25D...c490a368e
0 ETH
124764952021-05-21 8:00:031149 days ago1621584003
0xf824E25D...c490a368e
0 ETH
114198112020-12-09 16:38:501312 days ago1607531930
0xf824E25D...c490a368e
0 ETH
114198112020-12-09 16:38:501312 days ago1607531930
0xf824E25D...c490a368e
0 ETH
112234632020-11-09 13:07:421342 days ago1604927262
0xf824E25D...c490a368e
0 ETH
112234632020-11-09 13:07:421342 days ago1604927262
0xf824E25D...c490a368e
0 ETH
111953882020-11-05 5:47:241346 days ago1604555244
0xf824E25D...c490a368e
0 ETH
111953882020-11-05 5:47:241346 days ago1604555244
0xf824E25D...c490a368e
0 ETH
110865922020-10-19 13:09:321363 days ago1603112972
0xf824E25D...c490a368e
0 ETH
110865922020-10-19 13:09:321363 days ago1603112972
0xf824E25D...c490a368e
0 ETH
109760002020-10-02 10:10:041380 days ago1601633404
0xf824E25D...c490a368e
0 ETH
109760002020-10-02 10:10:041380 days ago1601633404
0xf824E25D...c490a368e
0 ETH
102440432020-06-11 11:10:301493 days ago1591873830
0xf824E25D...c490a368e
0 ETH
102440432020-06-11 11:10:301493 days ago1591873830
0xf824E25D...c490a368e
0 ETH
101931592020-06-03 13:45:021501 days ago1591191902
0xf824E25D...c490a368e
0 ETH
101931592020-06-03 13:45:021501 days ago1591191902
0xf824E25D...c490a368e
0 ETH
100723292020-05-15 18:29:271519 days ago1589567367
0xf824E25D...c490a368e
0 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xF4A87EC9...7D52D04e7
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Asset

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-11
*/

pragma solidity 0.4.11;

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

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

/**
 * @title EToken2 Asset implementation contract.
 *
 * Basic asset implementation contract, without any additional logic.
 * Every other asset implementation contracts should derive from this one.
 * Receives calls from the proxy, and calls back immediatly without arguments modification.
 *
 * Note: all the non constant functions return false instead of throwing in case if state change
 * didn't happen yet.
 */
contract Asset is AssetInterface {
    // Assigned asset proxy contract, immutable.
    AssetProxy public proxy;

    /**
     * Only assigned proxy is allowed to call.
     */
    modifier onlyProxy() {
        if (proxy == msg.sender) {
            _;
        }
    }

    /**
     * Sets asset proxy address.
     *
     * Can be set only once.
     *
     * @param _proxy asset proxy contract address.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function init(AssetProxy _proxy) returns(bool) {
        if (address(proxy) != 0x0) {
            return false;
        }
        proxy = _proxy;
        return true;
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferWithReference(address _to, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        return _transferWithReference(_to, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferWithReference(address _to, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromWithReference(_sender, _to, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        return _transferToICAPWithReference(_icap, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromToICAPWithReference(_sender, _icap, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        return _transferFromWithReference(_from, _to, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromWithReference(_from, _to, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) onlyProxy() returns(bool) {
        return _transferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _transferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) internal returns(bool) {
        return proxy._forwardTransferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return success.
     * @dev function is final, and must not be overridden.
     */
    function _performApprove(address _spender, uint _value, address _sender) onlyProxy() returns(bool) {
        return _approve(_spender, _value, _sender);
    }

    /**
     * Calls back without modifications.
     *
     * @return success.
     * @dev function is virtual, and meant to be overridden.
     */
    function _approve(address _spender, uint _value, address _sender) internal returns(bool) {
        return proxy._forwardApprove(_spender, _value, _sender);
    }

    /**
     * Passes execution into virtual function.
     *
     * Can only be called by assigned asset proxy.
     *
     * @return bytes32 result.
     * @dev function is final, and must not be overridden.
     */
    function _performGeneric(bytes _data, address _sender) payable onlyProxy() returns(bytes32) {
        return _generic(_data, _sender);
    }

    modifier onlyMe() {
        if (this == msg.sender) {
            _;
        }
    }

    // Most probably the following should never be redefined in child contracts.
    address genericSender;
    function _generic(bytes _data, address _sender) internal returns(bytes32) {
        // Restrict reentrancy.
        if (genericSender != 0x0) {
            throw;
        }
        genericSender = _sender;
        bytes32 result = _callReturn(this, _data, msg.value);
        delete genericSender;
        return result;
    }

    function _callReturn(address _target, bytes _data, uint _value) internal returns(bytes32 result) {
        bool success;
        assembly {
            success := call(div(mul(gas, 63), 64), _target, _value, add(_data, 32), mload(_data), 0, 32)
            result := mload(0)
        }
        if (!success) {
            throw;
        }
    }

    // Decsendants should use _sender() instead of msg.sender to properly process proxied calls.
    function _sender() constant internal returns(address) {
        return this == msg.sender ? genericSender : msg.sender;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_proxy","type":"address"}],"name":"init","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_data","type":"bytes"},{"name":"_sender","type":"address"}],"name":"_performGeneric","outputs":[{"name":"","type":"bytes32"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_sender","type":"address"}],"name":"_performApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_performTransferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"proxy","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"}]

Deployed Bytecode

0x6060604052361561008b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631962df71811461008d57806319ab453c14610129578063c10796df14610166578063cca97025146101ec578063db00b84814610290578063e34f713714610308578063eb58705b1461034f578063ec556889146103ed575bfe5b341561009557fe5b604080516020600460443581810135601f810184900484028501840190955284845261011594823573ffffffffffffffffffffffffffffffffffffffff169460248035956064949293919092019181908401838280828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250610426915050565b604080519115158252519081900360200190f35b341561013157fe5b61011573ffffffffffffffffffffffffffffffffffffffff60043516610464565b604080519115158252519081900360200190f35b341561016e57fe5b604080516020600460443581810135601f81018490048402850184019095528484526101159482359460248035956064949293919092019181908401838280828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506104d4915050565b604080519115158252519081900360200190f35b34156101f457fe5b604080516020600460643581810135601f810184900484028501840190955284845261011594823573ffffffffffffffffffffffffffffffffffffffff9081169560248035909216956044359594608494929301919081908401838280828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250610512915050565b604080519115158252519081900360200190f35b6102f6600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff169250610552915050565b60408051918252519081900360200190f35b341561031057fe5b61011573ffffffffffffffffffffffffffffffffffffffff600435811690602435906044351661058c565b604080519115158252519081900360200190f35b341561035757fe5b604080516020600460643581810135601f810184900484028501840190955284845261011594823573ffffffffffffffffffffffffffffffffffffffff1694602480359560443595946084949201919081908401838280828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506105c8915050565b604080519115158252519081900360200190f35b34156103f557fe5b6103fd610608565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561045a5761045785858585610624565b90505b5b5b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561048b575060006104cf565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560015b919050565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116141561045a5761045785858585610776565b90505b5b5b949350505050565b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614156105475761054486868686866108c7565b90505b5b5b95945050505050565b600080543373ffffffffffffffffffffffffffffffffffffffff90811691161415610584576105818383610a1a565b90505b5b5b92915050565b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614156105bf576105bc848484610ac3565b90505b5b5b9392505050565b600080543373ffffffffffffffffffffffffffffffffffffffff90811691161415610547576105448686868686610b68565b90505b5b5b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000805460408051602090810184905290517f14cba00200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483018181528a83166024850152604484018a9052608484019190915260a060648401908152885160a4850152885192909516946314cba0029488948c948c948c9488949193909260c490910191860190808383821561070b575b80518252602083111561070b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106cd565b505050905090810190601f1680156107375780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b151561075657fe5b6102c65a03f1151561076457fe5b5050604051519150505b949350505050565b6000805460408051602090810184905290517f9b487f3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301818152602484018b9052604484018a9052608484019190915260a060648401908152885160a485015288519290951694639b487f3f9488948c948c948c9488949193909260c490910191860190808383821561070b575b80518252602083111561070b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106cd565b505050905090810190601f1680156107375780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b151561075657fe5b6102c65a03f1151561076457fe5b5050604051519150505b949350505050565b6000805460408051602090810184905290517f14cba00200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301908152898216602484015260448301899052868216608484015260a060648401908152885160a4850152885192909516946314cba002948c948c948c948c948c949193909260c49091019186019080838382156109ae575b8051825260208311156109ae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610970565b505050905090810190601f1680156109da5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15156109f957fe5b6102c65a03f11515610a0757fe5b5050604051519150505b95945050505050565b600154600090819073ffffffffffffffffffffffffffffffffffffffff1615610a435760006000fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055610a8e308534610cba565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591508190505b5092915050565b6000805460408051602090810184905281517f7bcdc2f000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201889052868116604483015292519290931692637bcdc2f0926064808301939282900301818787803b1515610b4957fe5b6102c65a03f11515610b5757fe5b5050604051519150505b9392505050565b6000805460408051602090810184905290517f9b487f3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301908152602483018a905260448301899052868216608484015260a060648401908152885160a485015288519290951694639b487f3f948c948c948c948c948c949193909260c49091019186019080838382156109ae575b8051825260208311156109ae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610970565b505050905090810190601f1680156109da5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15156109f957fe5b6102c65a03f11515610a0757fe5b5050604051519150505b95945050505050565b600060006020600085516020870186896040603f5a0204f190506000519150801515610ce65760006000fd5b5b5093925050505600a165627a7a72305820cef8206b00df09a08833a3eb8ea1f38564301d640ffadc97580a3179f0d69e910029

Swarm Source

bzzr://cef8206b00df09a08833a3eb8ea1f38564301d640ffadc97580a3179f0d69e91

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.