ETH Price: $2,642.65 (+1.07%)

Contract

0x5E9caBC117d435Ee63F08E56F2Aebd0510B3BBa8
 
Transaction Hash
Method
Block
From
To
Execute96590322020-03-12 21:09:121681 days ago1584047352IN
0x5E9caBC1...510B3BBa8
0 ETH0.0091935775
Execute96409762020-03-10 2:16:301684 days ago1583806590IN
0x5E9caBC1...510B3BBa8
5 ETH0.000289572
Execute95874202020-03-01 20:52:041692 days ago1583095924IN
0x5E9caBC1...510B3BBa8
0 ETH0.000780561
Execute95296432020-02-21 23:42:521701 days ago1582328572IN
0x5E9caBC1...510B3BBa8
0 ETH0.000168381
Execute94842232020-02-14 23:49:371708 days ago1581724177IN
0x5E9caBC1...510B3BBa8
0 ETH0.0002361
Execute94722822020-02-13 3:41:101710 days ago1581565270IN
0x5E9caBC1...510B3BBa8
0 ETH0.000774584.6
Execute94715532020-02-13 1:01:591710 days ago1581555719IN
0x5E9caBC1...510B3BBa8
0 ETH0.000944944
Execute94504482020-02-09 19:22:461713 days ago1581276166IN
0x5E9caBC1...510B3BBa8
0 ETH0.000336772
Execute94326042020-02-07 1:18:201716 days ago1581038300IN
0x5E9caBC1...510B3BBa8
0 ETH0.00060623.6
Execute94266092020-02-06 3:05:591717 days ago1580958359IN
0x5E9caBC1...510B3BBa8
0 ETH0.00210068
Execute94047572020-02-02 18:37:151720 days ago1580668635IN
0x5E9caBC1...510B3BBa8
0 ETH0.000336772
Execute93939312020-02-01 2:52:421722 days ago1580525562IN
0x5E9caBC1...510B3BBa8
0 ETH0.000336772
Execute93009972020-01-17 20:44:021736 days ago1579293842IN
0x5E9caBC1...510B3BBa8
0 ETH0.000168381
Execute92826882020-01-15 1:27:411739 days ago1579051661IN
0x5E9caBC1...510B3BBa8
0 ETH0.000168381
Execute92546962020-01-10 18:29:191743 days ago1578680959IN
0x5E9caBC1...510B3BBa8
0 ETH0.000168381
Execute92241892020-01-06 2:34:071748 days ago1578278047IN
0x5E9caBC1...510B3BBa8
0 ETH0.000505163
Execute91059772019-12-14 15:31:471770 days ago1576337507IN
0x5E9caBC1...510B3BBa8
0 ETH0.000442542.2
Execute91059592019-12-14 15:26:131770 days ago1576337173IN
0x5E9caBC1...510B3BBa8
2.43 ETH0.000448833.1
Execute90869042019-12-11 4:32:441774 days ago1576038764IN
0x5E9caBC1...510B3BBa8
0 ETH0.001010336
Execute90134202019-11-28 3:49:041787 days ago1574912944IN
0x5E9caBC1...510B3BBa8
0 ETH0.001012965
Execute89839652019-11-23 2:40:181792 days ago1574476818IN
0x5E9caBC1...510B3BBa8
7.5 ETH0.0018161310
Execute89839572019-11-23 2:38:381792 days ago1574476718IN
0x5E9caBC1...510B3BBa8
0 ETH0.0021494910
Execute89839442019-11-23 2:35:121792 days ago1574476512IN
0x5E9caBC1...510B3BBa8
9 ETH0.0018161310
Execute89781652019-11-22 3:29:571793 days ago1574393397IN
0x5E9caBC1...510B3BBa8
0.5 ETH0.0018161310
Execute89781592019-11-22 3:29:171793 days ago1574393357IN
0x5E9caBC1...510B3BBa8
0 ETH0.0046010612
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
96590322020-03-12 21:09:121681 days ago1584047352
0x5E9caBC1...510B3BBa8
2.13113363 ETH
96590322020-03-12 21:09:121681 days ago1584047352
0x5E9caBC1...510B3BBa8
2.13113363 ETH
96409762020-03-10 2:16:301684 days ago1583806590
0x5E9caBC1...510B3BBa8
5 ETH
95874202020-03-01 20:52:041692 days ago1583095924
0x5E9caBC1...510B3BBa8
3.1 ETH
95874202020-03-01 20:52:041692 days ago1583095924
0x5E9caBC1...510B3BBa8
3.1 ETH
95296432020-02-21 23:42:521701 days ago1582328572
0x5E9caBC1...510B3BBa8
2.5 ETH
95296432020-02-21 23:42:521701 days ago1582328572
0x5E9caBC1...510B3BBa8
2.5 ETH
94722822020-02-13 3:41:101710 days ago1581565270
0x5E9caBC1...510B3BBa8
4 ETH
94722822020-02-13 3:41:101710 days ago1581565270
0x5E9caBC1...510B3BBa8
4 ETH
94504482020-02-09 19:22:461713 days ago1581276166
0x5E9caBC1...510B3BBa8
7 ETH
94504482020-02-09 19:22:461713 days ago1581276166
0x5E9caBC1...510B3BBa8
7 ETH
94326042020-02-07 1:18:201716 days ago1581038300
0x5E9caBC1...510B3BBa8
10 ETH
94326042020-02-07 1:18:201716 days ago1581038300
0x5E9caBC1...510B3BBa8
10 ETH
94047572020-02-02 18:37:151720 days ago1580668635
0x5E9caBC1...510B3BBa8
1 ETH
94047572020-02-02 18:37:151720 days ago1580668635
0x5E9caBC1...510B3BBa8
1 ETH
93939312020-02-01 2:52:421722 days ago1580525562
0x5E9caBC1...510B3BBa8
2 ETH
93939312020-02-01 2:52:421722 days ago1580525562
0x5E9caBC1...510B3BBa8
2 ETH
93009972020-01-17 20:44:021736 days ago1579293842
0x5E9caBC1...510B3BBa8
5 ETH
93009972020-01-17 20:44:021736 days ago1579293842
0x5E9caBC1...510B3BBa8
5 ETH
92826882020-01-15 1:27:411739 days ago1579051661
0x5E9caBC1...510B3BBa8
5 ETH
92826882020-01-15 1:27:411739 days ago1579051661
0x5E9caBC1...510B3BBa8
5 ETH
92546962020-01-10 18:29:191743 days ago1578680959
0x5E9caBC1...510B3BBa8
5 ETH
92546962020-01-10 18:29:191743 days ago1578680959
0x5E9caBC1...510B3BBa8
5 ETH
92241892020-01-06 2:34:071748 days ago1578278047
0x5E9caBC1...510B3BBa8
1 ETH
92241892020-01-06 2:34:071748 days ago1578278047
0x5E9caBC1...510B3BBa8
1 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.