ETH Price: $1,942.03 (+0.87%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Self Destruct27580992016-12-06 12:20:393021 days ago1481026839IN
0x6aBd2b75...7bb9D23e7
0 ETH0.000270920
Transfer27580942016-12-06 12:19:013021 days ago1481026741IN
0x6aBd2b75...7bb9D23e7
0 ETH0.00120
Do Call20361762016-08-08 20:53:233140 days ago1470689603IN
0x6aBd2b75...7bb9D23e7
42 wei0.0022779420

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer27580992016-12-06 12:20:393021 days ago1481026839
0x6aBd2b75...7bb9D23e7
42 wei
Transfer20361762016-08-08 20:53:233140 days ago1470689603
0x6aBd2b75...7bb9D23e7
42 wei
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xc6f701d37ee6bab3322ce52c9d7f8c2129ebede74cd62615c017a17d937e830f


Contract Source Code Verified (Exact Match)

Contract Name:
ThisExternalAssembly

Compiler Version
v0.3.5-2016-08-07-f7af7de

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2016-08-08
*/

contract ThisExternalAssembly {
    uint public numcalls;
    uint public numcallsinternal;
    uint public numfails;
    uint public numsuccesses;
    
    address owner;

    event logCall(uint indexed _numcalls, uint indexed _numcallsinternal);
    
    modifier onlyOwner { if (msg.sender != owner) throw; _ }
    modifier onlyThis { if (msg.sender != address(this)) throw; _ }

    // constructor
    function ThisExternalAssembly() {
        owner = msg.sender;
    }

    function failSend() external onlyThis returns (bool) {
        // storage change + nested external call
        numcallsinternal++;
        owner.send(42);

        // placeholder for state checks
        if (true) throw;

        // never happens in this case
        return true;
    }
    
    function doCall(uint _gas) onlyOwner {
        numcalls++;

        address addr = address(this);
        bytes4 sig = bytes4(sha3("failSend()"));

        bool ret;

        // work around `solc` safeguards for throws in external calls
        // https://ethereum.stackexchange.com/questions/6354/
        assembly {
            let x := mload(0x40) // read "empty memory" pointer
            mstore(x,sig)

            ret := call(
                _gas, // gas amount
                addr, // recipient account
                0,    // value (no need to pass)
                x,    // input start location
                0x4,  // input size - just the sig
                x,    // output start location
                0x1)  // output size (bool - 1 byte)

            //ret := mload(x) // no return value ever written :/
            mstore(0x40,add(x,0x4)) // just in case, roll the tape
        }

        if (ret) { numsuccesses++; }
        else { numfails++; }

        // mostly helps with function identification if disassembled
        logCall(numcalls, numcallsinternal);
    }

    // will clean-up :)
    function selfDestruct() onlyOwner { selfdestruct(owner); }
    
    function() { throw; }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"numsuccesses","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"numfails","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"numcalls","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"numcallsinternal","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"selfDestruct","outputs":[],"type":"function"},{"constant":false,"inputs":[],"name":"failSend","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_gas","type":"uint256"}],"name":"doCall","outputs":[],"type":"function"},{"inputs":[],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_numcalls","type":"uint256"},{"indexed":true,"name":"_numcallsinternal","type":"uint256"}],"name":"logCall","type":"event"}]

606060405260048054600160a060020a0319163317905561020e806100246000396000f3606060405236156100615760e060020a60003504634a943eb381146100695780635d2230d7146100725780636e8b7c231461007b5780638f259117146100845780639cb8a26a1461008d578063b764e273146100ac578063f1bca7a4146100d1575b6100f9610002565b6100fb60035481565b6100fb60025481565b6100fb60005481565b6100fb60015481565b6100f9600454600160a060020a03908116339091161461012157610002565b61010d600030600160a060020a031633600160a060020a031614151561012f57610002565b6100f96004356004546000908190819033600160a060020a0390811691161461016157610002565b005b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b600454600160a060020a0316ff5b6001805481019055600454604051600160a060020a0390911690600090602a9082818181858883f15050505050610002565b6000805460019081018255604080517f6661696c53656e642829000000000000000000000000000000000000000000008152905190819003600a01812080825230965094509182906004908290888af19150600481016040525080156101cf576003805460010190556101d9565b6002805460010190555b6001546000805460405190917fe187a550592d0937aaaf3d9b82a1798666ec120c2af2d58f114ff1f6faaaa96e91a35050505056

Deployed Bytecode

0x606060405236156100615760e060020a60003504634a943eb381146100695780635d2230d7146100725780636e8b7c231461007b5780638f259117146100845780639cb8a26a1461008d578063b764e273146100ac578063f1bca7a4146100d1575b6100f9610002565b6100fb60035481565b6100fb60025481565b6100fb60005481565b6100fb60015481565b6100f9600454600160a060020a03908116339091161461012157610002565b61010d600030600160a060020a031633600160a060020a031614151561012f57610002565b6100f96004356004546000908190819033600160a060020a0390811691161461016157610002565b005b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b600454600160a060020a0316ff5b6001805481019055600454604051600160a060020a0390911690600090602a9082818181858883f15050505050610002565b6000805460019081018255604080517f6661696c53656e642829000000000000000000000000000000000000000000008152905190819003600a01812080825230965094509182906004908290888af19150600481016040525080156101cf576003805460010190556101d9565b6002805460010190555b6001546000805460405190917fe187a550592d0937aaaf3d9b82a1798666ec120c2af2d58f114ff1f6faaaa96e91a35050505056

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  ]
[ 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.