ETH Price: $2,820.72 (+14.96%)
 
Transaction Hash
Method
Block
From
To
Execute109474552020-09-27 23:09:141590 days ago1601248154IN
0x211C8f2F...77077d406
0 ETH0.0023334550
Execute95322472020-02-22 9:11:251808 days ago1582362685IN
0x211C8f2F...77077d406
0 ETH0.000583141
Execute95266862020-02-21 12:53:081809 days ago1582289588IN
0x211C8f2F...77077d406
0.02268143 ETH0.000781382.2
Execute95265342020-02-21 12:18:291809 days ago1582287509IN
0x211C8f2F...77077d406
0.08432984 ETH0.000573811.7
Execute95251712020-02-21 7:08:441809 days ago1582268924IN
0x211C8f2F...77077d406
0 ETH0.000741515
Execute95220972020-02-20 19:49:581810 days ago1582228198IN
0x211C8f2F...77077d406
0.04158653 ETH0.000342261
Execute95164042020-02-19 22:39:511811 days ago1582151991IN
0x211C8f2F...77077d406
0.0788291 ETH0.00189025.6
Execute95160912020-02-19 21:26:371811 days ago1582147597IN
0x211C8f2F...77077d406
0 ETH0.000696741
Execute95160712020-02-19 21:22:431811 days ago1582147363IN
0x211C8f2F...77077d406
0 ETH0.00029082
Execute95160602020-02-19 21:20:591811 days ago1582147259IN
0x211C8f2F...77077d406
0 ETH0.000291372
Execute95158212020-02-19 20:26:321811 days ago1582143992IN
0x211C8f2F...77077d406
0.02656194 ETH0.000540021.6
Execute95158102020-02-19 20:24:531811 days ago1582143893IN
0x211C8f2F...77077d406
0 ETH0.000146431
Execute95152142020-02-19 18:10:181811 days ago1582135818IN
0x211C8f2F...77077d406
0.01496502 ETH0.000161531
Execute95128012020-02-19 9:22:291811 days ago1582104149IN
0x211C8f2F...77077d406
0.01963876 ETH0.001401076
Execute95097142020-02-18 22:02:311812 days ago1582063351IN
0x211C8f2F...77077d406
0.03373055 ETH0.000355171
Execute95095962020-02-18 21:38:011812 days ago1582061881IN
0x211C8f2F...77077d406
0 ETH0.000590611
Execute95095362020-02-18 21:25:071812 days ago1582061107IN
0x211C8f2F...77077d406
0 ETH0.000384811
Execute95095232020-02-18 21:22:371812 days ago1582060957IN
0x211C8f2F...77077d406
0.01001 ETH0.000187091.2
Execute95095132020-02-18 21:20:451812 days ago1582060845IN
0x211C8f2F...77077d406
0 ETH0.000616211
Execute95094882020-02-18 21:15:121812 days ago1582060512IN
0x211C8f2F...77077d406
0 ETH0.000532141.2
Execute95094642020-02-18 21:10:091812 days ago1582060209IN
0x211C8f2F...77077d406
0 ETH0.000424231.01
Execute95091492020-02-18 19:58:351812 days ago1582055915IN
0x211C8f2F...77077d406
0.01664658 ETH0.00033621
Execute95048142020-02-18 3:56:211813 days ago1581998181IN
0x211C8f2F...77077d406
0.02655311 ETH0.001644953
Execute95028142020-02-17 20:32:581813 days ago1581971578IN
0x211C8f2F...77077d406
0.01914478 ETH0.000163631
Execute95028082020-02-17 20:31:561813 days ago1581971516IN
0x211C8f2F...77077d406
0.01880797 ETH0.000431841
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
95266862020-02-21 12:53:081809 days ago1582289588
0x211C8f2F...77077d406
0.00022456 ETH
95266862020-02-21 12:53:081809 days ago1582289588
0x211C8f2F...77077d406
0.00022456 ETH
95266862020-02-21 12:53:081809 days ago1582289588
0x211C8f2F...77077d406
0.02268143 ETH
95265342020-02-21 12:18:291809 days ago1582287509
0x211C8f2F...77077d406
0.00085082 ETH
95265342020-02-21 12:18:291809 days ago1582287509
0x211C8f2F...77077d406
0.00085082 ETH
95265342020-02-21 12:18:291809 days ago1582287509
0x211C8f2F...77077d406
0.08432984 ETH
95251712020-02-21 7:08:441809 days ago1582268924
0x211C8f2F...77077d406
0.02374645 ETH
95251712020-02-21 7:08:441809 days ago1582268924
0x211C8f2F...77077d406
0.02374645 ETH
95220972020-02-20 19:49:581810 days ago1582228198
0x211C8f2F...77077d406
0.00048806 ETH
95220972020-02-20 19:49:581810 days ago1582228198
0x211C8f2F...77077d406
0.00048806 ETH
95220972020-02-20 19:49:581810 days ago1582228198
0x211C8f2F...77077d406
0.04158653 ETH
95164042020-02-19 22:39:511811 days ago1582151991
0x211C8f2F...77077d406
0.00079541 ETH
95164042020-02-19 22:39:511811 days ago1582151991
0x211C8f2F...77077d406
0.00079541 ETH
95164042020-02-19 22:39:511811 days ago1582151991
0x211C8f2F...77077d406
0.0788291 ETH
95160712020-02-19 21:22:431811 days ago1582147363
0x211C8f2F...77077d406
0.01881575 ETH
95160712020-02-19 21:22:431811 days ago1582147363
0x211C8f2F...77077d406
0.01881575 ETH
95160602020-02-19 21:20:591811 days ago1582147259
0x211C8f2F...77077d406
0.01499892 ETH
95160602020-02-19 21:20:591811 days ago1582147259
0x211C8f2F...77077d406
0.01499892 ETH
95158212020-02-19 20:26:321811 days ago1582143992
0x211C8f2F...77077d406
0.00004835 ETH
95158212020-02-19 20:26:321811 days ago1582143992
0x211C8f2F...77077d406
0.00004835 ETH
95158212020-02-19 20:26:321811 days ago1582143992
0x211C8f2F...77077d406
0.02656194 ETH
95158102020-02-19 20:24:531811 days ago1582143893
0x211C8f2F...77077d406
0.03556425 ETH
95158102020-02-19 20:24:531811 days ago1582143893
0x211C8f2F...77077d406
0.03556425 ETH
95152142020-02-19 18:10:181811 days ago1582135818
0x211C8f2F...77077d406
0.01496502 ETH
95128012020-02-19 9:22:291811 days ago1582104149
0x211C8f2F...77077d406
0.01963876 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.