ETH Price: $2,813.22 (+1.01%)

Contract

0x84bb78991E2B60dD30497F8ce048aA68A4B259bB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute124223052021-05-12 22:38:331382 days ago1620859113IN
0x84bb7899...8A4B259bB
0 ETH0.07946752220
Execute96927942020-03-18 2:13:271803 days ago1584497607IN
0x84bb7899...8A4B259bB
0 ETH0.00123763.3
Execute96927872020-03-18 2:11:571803 days ago1584497517IN
0x84bb7899...8A4B259bB
0 ETH0.000903433
Execute96927832020-03-18 2:10:511803 days ago1584497451IN
0x84bb7899...8A4B259bB
0 ETH0.001240693
Execute96925222020-03-18 1:08:511803 days ago1584493731IN
0x84bb7899...8A4B259bB
0 ETH0.005128842.1
Execute96925142020-03-18 1:07:111803 days ago1584493631IN
0x84bb7899...8A4B259bB
0 ETH0.008934612.8
Execute96925102020-03-18 1:06:271803 days ago1584493587IN
0x84bb7899...8A4B259bB
0 ETH0.006779942.4
Execute96545822020-03-12 4:17:501809 days ago1583986670IN
0x84bb7899...8A4B259bB
69 ETH0.0015842311
Execute96544452020-03-12 3:44:511809 days ago1583984691IN
0x84bb7899...8A4B259bB
16 ETH0.000403222.8
Execute96544182020-03-12 3:40:061809 days ago1583984406IN
0x84bb7899...8A4B259bB
0 ETH0.0052138510
Execute96544102020-03-12 3:38:221809 days ago1583984302IN
0x84bb7899...8A4B259bB
0 ETH0.002248996
Execute96536442020-03-12 0:52:231809 days ago1583974343IN
0x84bb7899...8A4B259bB
0 ETH0.000449811.2
Execute96536262020-03-12 0:49:151809 days ago1583974155IN
0x84bb7899...8A4B259bB
0 ETH0.020857246
Execute96481812020-03-11 4:54:431810 days ago1583902483IN
0x84bb7899...8A4B259bB
0 ETH0.000374841
Execute96481752020-03-11 4:54:011810 days ago1583902441IN
0x84bb7899...8A4B259bB
0 ETH0.008127012
Execute96406802020-03-10 1:10:011811 days ago1583802601IN
0x84bb7899...8A4B259bB
0 ETH0.001416913.78
Execute96383532020-03-09 16:36:131812 days ago1583771773IN
0x84bb7899...8A4B259bB
1 ETH0.0021601315
Execute96344932020-03-09 2:07:561812 days ago1583719676IN
0x84bb7899...8A4B259bB
0 ETH0.014294
Execute96318832020-03-08 16:38:381813 days ago1583685518IN
0x84bb7899...8A4B259bB
0 ETH0.0597586220
Execute96318832020-03-08 16:38:381813 days ago1583685518IN
0x84bb7899...8A4B259bB
0 ETH0.0606055519.3
Execute96318822020-03-08 16:38:371813 days ago1583685517IN
0x84bb7899...8A4B259bB
0 ETH0.0607082419.3
Execute96316472020-03-08 15:43:401813 days ago1583682220IN
0x84bb7899...8A4B259bB
30 ETH0.0015842311
Execute96135722020-03-05 21:19:521815 days ago1583443192IN
0x84bb7899...8A4B259bB
7.5 ETH0.000432023
Execute96026672020-03-04 4:56:251817 days ago1583297785IN
0x84bb7899...8A4B259bB
0 ETH0.000374831
Execute95954592020-03-03 2:17:571818 days ago1583201877IN
0x84bb7899...8A4B259bB
0 ETH0.000749692
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
124223052021-05-12 22:38:331382 days ago1620859113
0x84bb7899...8A4B259bB
0.40511994 ETH
124223052021-05-12 22:38:331382 days ago1620859113
0x84bb7899...8A4B259bB
0.40511994 ETH
96927942020-03-18 2:13:271803 days ago1584497607
0x84bb7899...8A4B259bB
24.00000021 ETH
96927942020-03-18 2:13:271803 days ago1584497607
0x84bb7899...8A4B259bB
24.00000021 ETH
96925222020-03-18 1:08:511803 days ago1584493731
0x84bb7899...8A4B259bB
10.65 ETH
96925222020-03-18 1:08:511803 days ago1584493731
0x84bb7899...8A4B259bB
10.65 ETH
96925142020-03-18 1:07:111803 days ago1584493631
0x84bb7899...8A4B259bB
37.788 ETH
96925142020-03-18 1:07:111803 days ago1584493631
0x84bb7899...8A4B259bB
37.788 ETH
96925102020-03-18 1:06:271803 days ago1584493587
0x84bb7899...8A4B259bB
28.12525687 ETH
96925102020-03-18 1:06:271803 days ago1584493587
0x84bb7899...8A4B259bB
28.12525687 ETH
96545822020-03-12 4:17:501809 days ago1583986670
0x84bb7899...8A4B259bB
69 ETH
96544452020-03-12 3:44:511809 days ago1583984691
0x84bb7899...8A4B259bB
16 ETH
96544102020-03-12 3:38:221809 days ago1583984302
0x84bb7899...8A4B259bB
0.3 ETH
96544102020-03-12 3:38:221809 days ago1583984302
0x84bb7899...8A4B259bB
0.3 ETH
96536442020-03-12 0:52:231809 days ago1583974343
0x84bb7899...8A4B259bB
50.00000003 ETH
96536442020-03-12 0:52:231809 days ago1583974343
0x84bb7899...8A4B259bB
50.00000003 ETH
96536262020-03-12 0:49:151809 days ago1583974155
0x84bb7899...8A4B259bB
100 ETH
96536262020-03-12 0:49:151809 days ago1583974155
0x84bb7899...8A4B259bB
100 ETH
96481812020-03-11 4:54:431810 days ago1583902483
0x84bb7899...8A4B259bB
50.00000001 ETH
96481812020-03-11 4:54:431810 days ago1583902483
0x84bb7899...8A4B259bB
50.00000001 ETH
96481752020-03-11 4:54:011810 days ago1583902441
0x84bb7899...8A4B259bB
150 ETH
96481752020-03-11 4:54:011810 days ago1583902441
0x84bb7899...8A4B259bB
150 ETH
96406802020-03-10 1:10:011811 days ago1583802601
0x84bb7899...8A4B259bB
30 ETH
96406802020-03-10 1:10:011811 days ago1583802601
0x84bb7899...8A4B259bB
30 ETH
96383532020-03-09 16:36:131812 days ago1583771773
0x84bb7899...8A4B259bB
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.