ETH Price: $3,196.38 (+2.10%)

Contract

0xf5C7231632aa9b344093d82deb864fa1C00b8Bde
 
Transaction Hash
Method
Block
From
To
Execute108843702020-09-18 5:49:561518 days ago1600408196IN
0xf5C72316...1C00b8Bde
0 ETH0.01893238307
Execute106653282020-08-15 14:54:411551 days ago1597503281IN
0xf5C72316...1C00b8Bde
0 ETH0.0290722393.5
Execute96522932020-03-11 20:05:341708 days ago1583957134IN
0xf5C72316...1C00b8Bde
0 ETH0.000841945
Execute96484652020-03-11 5:56:421709 days ago1583906202IN
0xf5C72316...1C00b8Bde
0 ETH0.000336772
Execute96467932020-03-10 23:47:461709 days ago1583884066IN
0xf5C72316...1C00b8Bde
0 ETH0.003183054.00000123
Execute96455152020-03-10 19:09:431709 days ago1583867383IN
0xf5C72316...1C00b8Bde
2 ETH0.000723925
Execute96396942020-03-09 21:30:401710 days ago1583789440IN
0xf5C72316...1C00b8Bde
0 ETH0.000708193
Execute96379782020-03-09 15:15:271710 days ago1583766927IN
0xf5C72316...1C00b8Bde
2.7 ETH0.0015926311
Execute96336432020-03-08 22:59:011711 days ago1583708341IN
0xf5C72316...1C00b8Bde
1.9 ETH0.000723925
Execute96321362020-03-08 17:33:441711 days ago1583688824IN
0xf5C72316...1C00b8Bde
0 ETH0.0025123610
Execute96273382020-03-07 23:51:061712 days ago1583625066IN
0xf5C72316...1C00b8Bde
0 ETH0.000168381
Execute96273382020-03-07 23:51:061712 days ago1583625066IN
0xf5C72316...1C00b8Bde
0 ETH0.000795451
Execute96205662020-03-06 23:06:371713 days ago1583535997IN
0xf5C72316...1C00b8Bde
0 ETH0.00079561
Execute95932112020-03-02 17:59:151717 days ago1583171955IN
0xf5C72316...1C00b8Bde
0 ETH0.000752873
Execute95884692020-03-02 0:40:261718 days ago1583109626IN
0xf5C72316...1C00b8Bde
2.5 ETH0.000144781
Execute95821572020-03-01 1:18:011719 days ago1583025481IN
0xf5C72316...1C00b8Bde
0 ETH0.000236241
Execute95732212020-02-28 16:28:251720 days ago1582907305IN
0xf5C72316...1C00b8Bde
0 ETH0.002509333
Execute95678032020-02-27 20:32:441721 days ago1582835564IN
0xf5C72316...1C00b8Bde
0.8 ETH0.000289572
Execute95676652020-02-27 20:01:431721 days ago1582833703IN
0xf5C72316...1C00b8Bde
0 ETH0.000235781
Execute95675842020-02-27 19:41:551721 days ago1582832515IN
0xf5C72316...1C00b8Bde
6 ETH0.000289572
Execute95671382020-02-27 17:54:551721 days ago1582826095IN
0xf5C72316...1C00b8Bde
0 ETH0.000234681
Execute95670842020-02-27 17:46:431721 days ago1582825603IN
0xf5C72316...1C00b8Bde
5 ETH0.000434353
Execute95670652020-02-27 17:41:141721 days ago1582825274IN
0xf5C72316...1C00b8Bde
4 ETH0.000723925
Execute95615522020-02-26 21:20:261722 days ago1582752026IN
0xf5C72316...1C00b8Bde
2.4 ETH0.000144781
Execute95605822020-02-26 17:46:411722 days ago1582739201IN
0xf5C72316...1C00b8Bde
0 ETH0.0022172210
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
106653282020-08-15 14:54:411551 days ago1597503281
0xf5C72316...1C00b8Bde
1.14712903 ETH
106653282020-08-15 14:54:411551 days ago1597503281
0xf5C72316...1C00b8Bde
1.14712903 ETH
96522932020-03-11 20:05:341708 days ago1583957134
0xf5C72316...1C00b8Bde
2 ETH
96522932020-03-11 20:05:341708 days ago1583957134
0xf5C72316...1C00b8Bde
2 ETH
96484652020-03-11 5:56:421709 days ago1583906202
0xf5C72316...1C00b8Bde
5 ETH
96484652020-03-11 5:56:421709 days ago1583906202
0xf5C72316...1C00b8Bde
5 ETH
96467932020-03-10 23:47:461709 days ago1583884066
0xf5C72316...1C00b8Bde
5 ETH
96467932020-03-10 23:47:461709 days ago1583884066
0xf5C72316...1C00b8Bde
5 ETH
96455152020-03-10 19:09:431709 days ago1583867383
0xf5C72316...1C00b8Bde
2 ETH
96379782020-03-09 15:15:271710 days ago1583766927
0xf5C72316...1C00b8Bde
2.7 ETH
96336432020-03-08 22:59:011711 days ago1583708341
0xf5C72316...1C00b8Bde
1.9 ETH
96273382020-03-07 23:51:061712 days ago1583625066
0xf5C72316...1C00b8Bde
7 ETH
96273382020-03-07 23:51:061712 days ago1583625066
0xf5C72316...1C00b8Bde
7 ETH
96273382020-03-07 23:51:061712 days ago1583625066
0xf5C72316...1C00b8Bde
2 ETH
96273382020-03-07 23:51:061712 days ago1583625066
0xf5C72316...1C00b8Bde
2 ETH
96205662020-03-06 23:06:371713 days ago1583535997
0xf5C72316...1C00b8Bde
8 ETH
96205662020-03-06 23:06:371713 days ago1583535997
0xf5C72316...1C00b8Bde
8 ETH
95884692020-03-02 0:40:261718 days ago1583109626
0xf5C72316...1C00b8Bde
2.5 ETH
95732212020-02-28 16:28:251720 days ago1582907305
0xf5C72316...1C00b8Bde
8 ETH
95732212020-02-28 16:28:251720 days ago1582907305
0xf5C72316...1C00b8Bde
8 ETH
95678032020-02-27 20:32:441721 days ago1582835564
0xf5C72316...1C00b8Bde
0.8 ETH
95675842020-02-27 19:41:551721 days ago1582832515
0xf5C72316...1C00b8Bde
6 ETH
95670842020-02-27 17:46:431721 days ago1582825603
0xf5C72316...1C00b8Bde
5 ETH
95670652020-02-27 17:41:141721 days ago1582825274
0xf5C72316...1C00b8Bde
4 ETH
95615522020-02-26 21:20:261722 days ago1582752026
0xf5C72316...1C00b8Bde
2.4 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.