ETH Price: $2,709.41 (+0.22%)

Contract

0x5212F225f58B8Cd4C1Cf2A10DCF047449DCB5d86
 

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Execute108862882020-09-18 12:59:311610 days ago1600433971IN
0x5212F225...49DCB5d86
0 ETH0.00700501150.1
Execute103562922020-06-28 19:50:581692 days ago1593373858IN
0x5212F225...49DCB5d86
0 ETH0.0530597320.1
Execute102834272020-06-17 13:06:051703 days ago1592399165IN
0x5212F225...49DCB5d86
0 ETH0.0226162840
Execute100595292020-05-13 18:53:161738 days ago1589395996IN
0x5212F225...49DCB5d86
0 ETH0.0026667113.1
Execute99851782020-05-02 6:32:251750 days ago1588401145IN
0x5212F225...49DCB5d86
0 ETH0.001653775.01
Execute98577272020-04-12 13:20:391769 days ago1586697639IN
0x5212F225...49DCB5d86
0 ETH0.005661894.1
Execute97935112020-04-02 16:09:251779 days ago1585843765IN
0x5212F225...49DCB5d86
0 ETH0.00341349.1
Execute97598232020-03-28 11:57:071784 days ago1585396627IN
0x5212F225...49DCB5d86
0 ETH0.00181193.6
Execute97576922020-03-28 4:01:501785 days ago1585368110IN
0x5212F225...49DCB5d86
100 ETH0.000309562.1
Execute97338372020-03-24 11:10:261788 days ago1585048226IN
0x5212F225...49DCB5d86
9.4527127 ETH0.002944315.1
Execute97338142020-03-24 11:06:371788 days ago1585047997IN
0x5212F225...49DCB5d86
0 ETH0.000858725.1
Execute97338122020-03-24 11:05:521788 days ago1585047952IN
0x5212F225...49DCB5d86
0 ETH0.000858785.1
Execute97338062020-03-24 11:05:001788 days ago1585047900IN
0x5212F225...49DCB5d86
0 ETH0.002566925.1
Execute97337622020-03-24 10:55:301788 days ago1585047330IN
0x5212F225...49DCB5d86
0 ETH0.015475456.7
Execute97337492020-03-24 10:52:161788 days ago1585047136IN
0x5212F225...49DCB5d86
0 ETH0.014183326.1
Execute97082122020-03-20 11:07:551792 days ago1584702475IN
0x5212F225...49DCB5d86
0 ETH0.021379096.1
Execute96934172020-03-18 4:28:011795 days ago1584505681IN
0x5212F225...49DCB5d86
0 ETH0.000558272.1
Execute96934052020-03-18 4:25:481795 days ago1584505548IN
0x5212F225...49DCB5d86
0 ETH0.001117972.1
Execute96934012020-03-18 4:24:321795 days ago1584505472IN
0x5212F225...49DCB5d86
0 ETH0.001682252.1
Execute96819142020-03-16 10:08:061797 days ago1584353286IN
0x5212F225...49DCB5d86
30.5 ETH0.003156324.2
Execute96819052020-03-16 10:06:061797 days ago1584353166IN
0x5212F225...49DCB5d86
0 ETH0.0149956222.86550001
Execute96818862020-03-16 10:01:341797 days ago1584352894IN
0x5212F225...49DCB5d86
0 ETH0.0080357120.1
Execute96563142020-03-12 11:01:251800 days ago1584010885IN
0x5212F225...49DCB5d86
0 ETH0.04478155112.11
Execute95940142020-03-02 21:05:211810 days ago1583183121IN
0x5212F225...49DCB5d86
6 ETH0.00030942.1
Execute95929282020-03-02 16:54:341810 days ago1583168074IN
0x5212F225...49DCB5d86
0 ETH0.001158583.1
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
99851782020-05-02 6:32:251750 days ago1588401145
0x5212F225...49DCB5d86
5.4 ETH
99851782020-05-02 6:32:251750 days ago1588401145
0x5212F225...49DCB5d86
5.4 ETH
97598232020-03-28 11:57:071784 days ago1585396627
0x5212F225...49DCB5d86
100.00000014 ETH
97598232020-03-28 11:57:071784 days ago1585396627
0x5212F225...49DCB5d86
100.00000014 ETH
97576922020-03-28 4:01:501785 days ago1585368110
0x5212F225...49DCB5d86
100 ETH
97338372020-03-24 11:10:261788 days ago1585048226
0x5212F225...49DCB5d86
0.08714769 ETH
97338372020-03-24 11:10:261788 days ago1585048226
0x5212F225...49DCB5d86
0.08714769 ETH
97338372020-03-24 11:10:261788 days ago1585048226
0x5212F225...49DCB5d86
9.4527127 ETH
97338142020-03-24 11:06:371788 days ago1585047997
0x5212F225...49DCB5d86
9.43 ETH
97338142020-03-24 11:06:371788 days ago1585047997
0x5212F225...49DCB5d86
9.43 ETH
97338122020-03-24 11:05:521788 days ago1585047952
0x5212F225...49DCB5d86
44.6 ETH
97338122020-03-24 11:05:521788 days ago1585047952
0x5212F225...49DCB5d86
44.6 ETH
97338062020-03-24 11:05:001788 days ago1585047900
0x5212F225...49DCB5d86
9.00000001 ETH
97338062020-03-24 11:05:001788 days ago1585047900
0x5212F225...49DCB5d86
9.00000001 ETH
97337622020-03-24 10:55:301788 days ago1585047330
0x5212F225...49DCB5d86
10 ETH
97337622020-03-24 10:55:301788 days ago1585047330
0x5212F225...49DCB5d86
10 ETH
97337492020-03-24 10:52:161788 days ago1585047136
0x5212F225...49DCB5d86
50 ETH
97337492020-03-24 10:52:161788 days ago1585047136
0x5212F225...49DCB5d86
50 ETH
97082122020-03-20 11:07:551792 days ago1584702475
0x5212F225...49DCB5d86
34 ETH
97082122020-03-20 11:07:551792 days ago1584702475
0x5212F225...49DCB5d86
34 ETH
96819142020-03-16 10:08:061797 days ago1584353286
0x5212F225...49DCB5d86
30.5 ETH
95940142020-03-02 21:05:211810 days ago1583183121
0x5212F225...49DCB5d86
6 ETH
95321972020-02-22 9:00:101820 days ago1582362010
0x5212F225...49DCB5d86
5.00000003 ETH
95321972020-02-22 9:00:101820 days ago1582362010
0x5212F225...49DCB5d86
5.00000003 ETH
94794742020-02-14 6:09:491828 days ago1581660589
0x5212F225...49DCB5d86
21 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.