ETH Price: $2,567.51 (+1.20%)

Contract

0x23b8CCA9b21c884a7eA65b527E88378643712aCB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute102078882020-06-05 20:23:421568 days ago1591388622IN
0x23b8CCA9...643712aCB
0 ETH0.0048665416.85
Execute102078812020-06-05 20:22:461568 days ago1591388566IN
0x23b8CCA9...643712aCB
0 ETH0.0063730317.59879459
Execute102078742020-06-05 20:21:341568 days ago1591388494IN
0x23b8CCA9...643712aCB
5.23281208 ETH0.008450817.59879459
Execute102078102020-06-05 20:09:021568 days ago1591387742IN
0x23b8CCA9...643712aCB
0 ETH0.0052732217.2
Execute102076092020-06-05 19:27:571568 days ago1591385277IN
0x23b8CCA9...643712aCB
0 ETH0.0063628717.6
Execute102075822020-06-05 19:22:031568 days ago1591384923IN
0x23b8CCA9...643712aCB
14.70165809 ETH0.0087193517.71935554
Execute102075002020-06-05 19:05:101568 days ago1591383910IN
0x23b8CCA9...643712aCB
0 ETH0.0058023618.92593172
Execute102074942020-06-05 19:03:481568 days ago1591383828IN
0x23b8CCA9...643712aCB
0 ETH0.0061849217.11
Execute102074582020-06-05 18:55:301568 days ago1591383330IN
0x23b8CCA9...643712aCB
9.65941733 ETH0.008637317.380001
Execute102074402020-06-05 18:51:461568 days ago1591383106IN
0x23b8CCA9...643712aCB
0 ETH0.0054347317.72679797
Execute100454262020-05-11 14:20:001594 days ago1589206800IN
0x23b8CCA9...643712aCB
0.19 ETH0.0021495614.91999995
Execute100454032020-05-11 14:15:331594 days ago1589206533IN
0x23b8CCA9...643712aCB
0 ETH0.0088349514.91999995
Execute100396042020-05-10 16:48:501595 days ago1589129330IN
0x23b8CCA9...643712aCB
1.89 ETH0.003169622.00000023
Execute100395962020-05-10 16:46:161595 days ago1589129176IN
0x23b8CCA9...643712aCB
0 ETH0.0133976222.00000023
Execute100355702020-05-10 1:41:581595 days ago1589074918IN
0x23b8CCA9...643712aCB
0.1 ETH0.0031119721.6
Execute100324952020-05-09 14:07:091596 days ago1589033229IN
0x23b8CCA9...643712aCB
0 ETH0.0308642915.2
Execute100274832020-05-08 19:26:431596 days ago1588966003IN
0x23b8CCA9...643712aCB
0 ETH0.0244291912
Execute100204782020-05-07 17:35:441598 days ago1588872944IN
0x23b8CCA9...643712aCB
0 ETH0.0346030917
Execute99714372020-04-30 3:06:471605 days ago1588216007IN
0x23b8CCA9...643712aCB
0 ETH0.0203222210
Execute99621092020-04-28 16:40:341607 days ago1588092034IN
0x23b8CCA9...643712aCB
0 ETH0.013499076.6
Execute99419442020-04-25 13:35:311610 days ago1587821731IN
0x23b8CCA9...643712aCB
0 ETH0.015729087.5
Execute99369262020-04-24 18:50:091610 days ago1587754209IN
0x23b8CCA9...643712aCB
0 ETH0.006120763
Execute99172922020-04-21 17:55:291613 days ago1587491729IN
0x23b8CCA9...643712aCB
0 ETH0.011535545.50000023
Execute98902922020-04-17 13:54:391618 days ago1587131679IN
0x23b8CCA9...643712aCB
0 ETH0.012686385.72000023
Execute98710062020-04-14 14:03:151621 days ago1586872995IN
0x23b8CCA9...643712aCB
0 ETH0.016173368
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
102078882020-06-05 20:23:421568 days ago1591388622
0x23b8CCA9...643712aCB
24.37253409 ETH
102078882020-06-05 20:23:421568 days ago1591388622
0x23b8CCA9...643712aCB
24.37253409 ETH
102078742020-06-05 20:21:341568 days ago1591388494
0x23b8CCA9...643712aCB
0.05000921 ETH
102078742020-06-05 20:21:341568 days ago1591388494
0x23b8CCA9...643712aCB
0.05000921 ETH
102078742020-06-05 20:21:341568 days ago1591388494
0x23b8CCA9...643712aCB
5.23281208 ETH
102078102020-06-05 20:09:021568 days ago1591387742
0x23b8CCA9...643712aCB
5.00000005 ETH
102078102020-06-05 20:09:021568 days ago1591387742
0x23b8CCA9...643712aCB
5.00000005 ETH
102075822020-06-05 19:22:031568 days ago1591384923
0x23b8CCA9...643712aCB
0.12921146 ETH
102075822020-06-05 19:22:031568 days ago1591384923
0x23b8CCA9...643712aCB
0.12921146 ETH
102075822020-06-05 19:22:031568 days ago1591384923
0x23b8CCA9...643712aCB
14.70165809 ETH
102075002020-06-05 19:05:101568 days ago1591383910
0x23b8CCA9...643712aCB
15.00000001 ETH
102075002020-06-05 19:05:101568 days ago1591383910
0x23b8CCA9...643712aCB
15.00000001 ETH
102074582020-06-05 18:55:301568 days ago1591383330
0x23b8CCA9...643712aCB
0.09618684 ETH
102074582020-06-05 18:55:301568 days ago1591383330
0x23b8CCA9...643712aCB
0.09618684 ETH
102074582020-06-05 18:55:301568 days ago1591383330
0x23b8CCA9...643712aCB
9.65941733 ETH
102074402020-06-05 18:51:461568 days ago1591383106
0x23b8CCA9...643712aCB
10.00000001 ETH
102074402020-06-05 18:51:461568 days ago1591383106
0x23b8CCA9...643712aCB
10.00000001 ETH
100454262020-05-11 14:20:001594 days ago1589206800
0x23b8CCA9...643712aCB
0.19 ETH
100396042020-05-10 16:48:501595 days ago1589129330
0x23b8CCA9...643712aCB
1.89 ETH
100355702020-05-10 1:41:581595 days ago1589074918
0x23b8CCA9...643712aCB
0.1 ETH
100324952020-05-09 14:07:091596 days ago1589033229
0x23b8CCA9...643712aCB
1.42244488 ETH
100324952020-05-09 14:07:091596 days ago1589033229
0x23b8CCA9...643712aCB
1.42244488 ETH
100274832020-05-08 19:26:431596 days ago1588966003
0x23b8CCA9...643712aCB
4.69408117 ETH
100274832020-05-08 19:26:431596 days ago1588966003
0x23b8CCA9...643712aCB
4.69408117 ETH
100204782020-05-07 17:35:441598 days ago1588872944
0x23b8CCA9...643712aCB
7.20632615 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.