ETH Price: $2,672.73 (+10.26%)
Gas: 1 Gwei

Contract

0x8Ec1675d89C4fF8579e461d593700292B9967B46
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute103025832020-06-20 12:15:271510 days ago1592655327IN
0x8Ec1675d...2B9967B46
0 ETH0.1064344327
Execute100472322020-05-11 21:01:351550 days ago1589230895IN
0x8Ec1675d...2B9967B46
0 ETH0.0033489215.3
Execute100366562020-05-10 5:45:281552 days ago1589089528IN
0x8Ec1675d...2B9967B46
0 ETH0.0071578530
Execute100267512020-05-08 16:47:211553 days ago1588956441IN
0x8Ec1675d...2B9967B46
0 ETH0.0110044624.2
Execute97795332020-03-31 12:37:591591 days ago1585658279IN
0x8Ec1675d...2B9967B46
0 ETH0.0043358411
Execute97550652020-03-27 18:22:071595 days ago1585333327IN
0x8Ec1675d...2B9967B46
0 ETH0.002365086
Execute97550392020-03-27 18:15:481595 days ago1585332948IN
0x8Ec1675d...2B9967B46
0 ETH0.003153348
Execute97375362020-03-25 1:12:011598 days ago1585098721IN
0x8Ec1675d...2B9967B46
0 ETH0.003153348
Execute97083972020-03-20 11:54:021602 days ago1584705242IN
0x8Ec1675d...2B9967B46
0 ETH0.0047301612
Execute97037732020-03-19 18:37:071603 days ago1584643027IN
0x8Ec1675d...2B9967B46
0 ETH0.0067008517
Execute96848362020-03-16 20:45:181606 days ago1584391518IN
0x8Ec1675d...2B9967B46
0 ETH0.001738597
Execute96828302020-03-16 13:20:421606 days ago1584364842IN
0x8Ec1675d...2B9967B46
0 ETH0.0119196448
Execute96827062020-03-16 12:56:171606 days ago1584363377IN
0x8Ec1675d...2B9967B46
0 ETH0.0121679749
Execute96826862020-03-16 12:50:561606 days ago1584363056IN
0x8Ec1675d...2B9967B46
0 ETH0.0174864448
Execute96782132020-03-15 20:17:181607 days ago1584303438IN
0x8Ec1675d...2B9967B46
0 ETH0.001241635
Execute96781732020-03-15 20:09:441607 days ago1584302984IN
0x8Ec1675d...2B9967B46
0 ETH0.002914418
Execute96781652020-03-15 20:08:361607 days ago1584302916IN
0x8Ec1675d...2B9967B46
0 ETH0.00198668
Execute96781502020-03-15 20:06:021607 days ago1584302762IN
0x8Ec1675d...2B9967B46
0 ETH0.002914418
Execute96781432020-03-15 20:04:391607 days ago1584302679IN
0x8Ec1675d...2B9967B46
0 ETH0.00198678
Execute96781322020-03-15 20:02:251607 days ago1584302545IN
0x8Ec1675d...2B9967B46
0 ETH0.002914418
Execute96777442020-03-15 18:35:151607 days ago1584297315IN
0x8Ec1675d...2B9967B46
0.01 ETH0.002680895
Execute96777172020-03-15 18:29:171607 days ago1584296957IN
0x8Ec1675d...2B9967B46
0 ETH0.001166655
Execute96777092020-03-15 18:27:421607 days ago1584296862IN
0x8Ec1675d...2B9967B46
0 ETH0.001241695
Execute96776642020-03-15 18:18:361607 days ago1584296316IN
0x8Ec1675d...2B9967B46
0 ETH0.002854236
Execute96733412020-03-15 2:19:181608 days ago1584238758IN
0x8Ec1675d...2B9967B46
0 ETH0.001986518
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
96826862020-03-16 12:50:561606 days ago1584363056
0x8Ec1675d...2B9967B46
75.0000001 ETH
96826862020-03-16 12:50:561606 days ago1584363056
0x8Ec1675d...2B9967B46
75.0000001 ETH
96781732020-03-15 20:09:441607 days ago1584302984
0x8Ec1675d...2B9967B46
21.56000001 ETH
96781732020-03-15 20:09:441607 days ago1584302984
0x8Ec1675d...2B9967B46
21.56000001 ETH
96781502020-03-15 20:06:021607 days ago1584302762
0x8Ec1675d...2B9967B46
50.00000006 ETH
96781502020-03-15 20:06:021607 days ago1584302762
0x8Ec1675d...2B9967B46
50.00000006 ETH
96781322020-03-15 20:02:251607 days ago1584302545
0x8Ec1675d...2B9967B46
50.00000132 ETH
96781322020-03-15 20:02:251607 days ago1584302545
0x8Ec1675d...2B9967B46
50.00000132 ETH
96777442020-03-15 18:35:151607 days ago1584297315
0x8Ec1675d...2B9967B46
0.01 ETH
96599102020-03-13 0:14:381610 days ago1584058478
0x8Ec1675d...2B9967B46
18.5 ETH
96598362020-03-13 0:02:161610 days ago1584057736
0x8Ec1675d...2B9967B46
47 ETH
96598152020-03-12 23:56:181610 days ago1584057378
0x8Ec1675d...2B9967B46
32 ETH
96589892020-03-12 21:00:001610 days ago1584046800
0x8Ec1675d...2B9967B46
10 ETH
96589892020-03-12 21:00:001610 days ago1584046800
0x8Ec1675d...2B9967B46
10 ETH
96565012020-03-12 11:46:541610 days ago1584013614
0x8Ec1675d...2B9967B46
7.00000001 ETH
96565012020-03-12 11:46:541610 days ago1584013614
0x8Ec1675d...2B9967B46
7.00000001 ETH
94754052020-02-13 15:09:201638 days ago1581606560
0x8Ec1675d...2B9967B46
37 ETH
89809752019-11-22 14:46:511721 days ago1574434011
0x8Ec1675d...2B9967B46
95 ETH
83500412019-08-14 17:38:041821 days ago1565804284
0x8Ec1675d...2B9967B46
30.00000002 ETH
83500412019-08-14 17:38:041821 days ago1565804284
0x8Ec1675d...2B9967B46
30.00000002 ETH
83500062019-08-14 17:30:461821 days ago1565803846
0x8Ec1675d...2B9967B46
20.00000002 ETH
83500062019-08-14 17:30:461821 days ago1565803846
0x8Ec1675d...2B9967B46
20.00000002 ETH
82847582019-08-04 14:35:461831 days ago1564929346
0x8Ec1675d...2B9967B46
12 ETH
82769542019-08-03 9:41:071832 days ago1564825267
0x8Ec1675d...2B9967B46
447 ETH
82767422019-08-03 8:48:211832 days ago1564822101  Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

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

Contract Name:
UserWallet

Compiler Version
v0.5.2+commit.1df8f40c

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.5.2;

/**
 * @title RegistryInterface Interface 
 */
interface RegistryInterface {
    function logic(address logicAddr) external view returns (bool);
    function record(address currentOwner, address nextOwner) external;
}


/**
 * @title Address Registry Record
 */
contract AddressRecord {

    /**
     * @dev address registry of system, logic and wallet addresses
     */
    address public registry;

    /**
     * @dev Throws if the logic is not authorised
     */
    modifier logicAuth(address logicAddr) {
        require(logicAddr != address(0), "logic-proxy-address-required");
        require(RegistryInterface(registry).logic(logicAddr), "logic-not-authorised");
        _;
    }

}


/**
 * @title User Auth
 */
contract UserAuth is AddressRecord {

    event LogSetOwner(address indexed owner);
    address public owner;

    /**
     * @dev Throws if not called by owner or contract itself
     */
    modifier auth {
        require(isAuth(msg.sender), "permission-denied");
        _;
    }

    /**
     * @dev sets new owner
     */
    function setOwner(address nextOwner) public auth {
        RegistryInterface(registry).record(owner, nextOwner);
        owner = nextOwner;
        emit LogSetOwner(nextOwner);
    }

    /**
     * @dev checks if called by owner or contract itself
     * @param src is the address initiating the call
     */
    function isAuth(address src) public view returns (bool) {
        if (src == owner) {
            return true;
        } else if (src == address(this)) {
            return true;
        }
        return false;
    }
}


/**
 * @dev logging the execute events
 */
contract UserNote {
    event LogNote(
        bytes4 indexed sig,
        address indexed guy,
        bytes32 indexed foo,
        bytes32 bar,
        uint wad,
        bytes fax
    );

    modifier note {
        bytes32 foo;
        bytes32 bar;
        assembly {
            foo := calldataload(4)
            bar := calldataload(36)
        }
        emit LogNote(
            msg.sig, 
            msg.sender, 
            foo, 
            bar, 
            msg.value,
            msg.data
        );
        _;
    }
}


/**
 * @title User Owned Contract Wallet
 */
contract UserWallet is UserAuth, UserNote {

    event LogExecute(address target, uint srcNum, uint sessionNum);

    /**
     * @dev sets the "address registry", owner's last activity, owner's active period and initial owner
     */
    constructor() public {
        registry = msg.sender;
        owner = msg.sender;
    }

    function() external payable {}

    /**
     * @dev Execute authorised calls via delegate call
     * @param _target logic proxy address
     * @param _data delegate call data
     * @param _src to find the source
     * @param _session to find the session
     */
    function execute(
        address _target,
        bytes memory _data,
        uint _src,
        uint _session
    ) 
        public
        payable
        note
        auth
        logicAuth(_target)
        returns (bytes memory response)
    {
        emit LogExecute(
            _target,
            _src,
            _session
        );
        
        // call contract in current context
        assembly {
            let succeeded := delegatecall(sub(gas, 5000), _target, add(_data, 0x20), mload(_data), 0, 0)
            let size := returndatasize

            response := mload(0x40)
            mstore(0x40, add(response, and(add(add(size, 0x20), 0x1f), not(0x1f))))
            mstore(response, size)
            returndatacopy(add(response, 0x20), 0, size)

            switch iszero(succeeded)
                case 1 {
                    // throw if delegatecall failed
                    revert(add(response, 0x20), size)
                }
        }
    }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"nextOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"isAuth","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"registry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"},{"name":"_src","type":"uint256"},{"name":"_session","type":"uint256"}],"name":"execute","outputs":[{"name":"response","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"srcNum","type":"uint256"},{"indexed":false,"name":"sessionNum","type":"uint256"}],"name":"LogExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":false,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]

Deployed Bytecode

0x608060405260043610610067576000357c01000000000000000000000000000000000000000000000000000000009004806313af4035146100695780632520e7ff146100ba5780637b103999146101235780638da5cb5b1461017a578063f3541901146101d1575b005b34801561007557600080fd5b506100b86004803603602081101561008c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610339565b005b3480156100c657600080fd5b50610109600480360360208110156100dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610567565b604051808215151515815260200191505060405180910390f35b34801561012f57600080fd5b5061013861060f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561018657600080fd5b5061018f610634565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102be600480360360808110156101e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561022457600080fd5b82018360208201111561023657600080fd5b8035906020019184600183028401116401000000008311171561025857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019092919050505061065a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fe5780820151818401526020810190506102e3565b50505050905090810190601f16801561032b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61034233610567565b15156103b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2d64656e69656400000000000000000000000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339035d56600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b5050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105c8576001905061060a565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610605576001905061060a565b600090505b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060043591506024359050813373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f644843f351d3fba4abcd60109eaff9f54bac8fb8ccf0bab941009c21df21cf31843460003660405180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a461074233610567565b15156107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2d64656e69656400000000000000000000000000000081525060200191505060405180910390fd5b86600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6c6f6769632d70726f78792d616464726573732d72657175697265640000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166311390441826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d602081101561094057600080fd5b810190808051906020019092919050505015156109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6c6f6769632d6e6f742d617574686f726973656400000000000000000000000081525060200191505060405180910390fd5b7fbd37415aaf130f9a169d66bc22d669b6a5aa55f384e7b41d105714eb8277b341888787604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1600080885160208a018b6113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e811560018114610a7857610a7f565b8160208801fd5b50505050505094935050505056fea165627a7a72305820a70df5c3d70f52cf6a410ed7bf147d9052fbab8b4e98568082f924a8dd7f63c90029

Swarm Source

bzzr://a70df5c3d70f52cf6a410ed7bf147d9052fbab8b4e98568082f924a8dd7f63c9

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.