ETH Price: $2,096.33 (-3.88%)

Contract

0x0365901B575F4e62e1D4B573EC8165251aC2cBDB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute86237752019-09-26 9:48:021991 days ago1569491282IN
0x0365901B...51aC2cBDB
0 ETH0.001099422
Execute86139812019-09-24 20:43:011992 days ago1569357781IN
0x0365901B...51aC2cBDB
0 ETH0.0086588914.5
Execute86139552019-09-24 20:37:421992 days ago1569357462IN
0x0365901B...51aC2cBDB
0 ETH0.0088631314.5
Execute86138632019-09-24 20:20:151992 days ago1569356415IN
0x0365901B...51aC2cBDB
0 ETH0.0054740626
Execute86123482019-09-24 14:39:521993 days ago1569335992IN
0x0365901B...51aC2cBDB
0 ETH0.0222645914.3
Execute86123372019-09-24 14:38:081993 days ago1569335888IN
0x0365901B...51aC2cBDB
0 ETH0.0189243315
Execute85732492019-09-18 11:50:491999 days ago1568807449IN
0x0365901B...51aC2cBDB
0 ETH0.0190721632
Execute85722282019-09-18 8:01:311999 days ago1568793691IN
0x0365901B...51aC2cBDB
0 ETH0.0240136230
Execute85680602019-09-17 16:43:431999 days ago1568738623IN
0x0365901B...51aC2cBDB
0 ETH0.0146310327
Execute85678312019-09-17 15:50:532000 days ago1568735453IN
0x0365901B...51aC2cBDB
0 ETH0.02678725
Execute85678142019-09-17 15:47:212000 days ago1568735241IN
0x0365901B...51aC2cBDB
69 ETH0.0044163525
Execute85604812019-09-16 12:24:262001 days ago1568636666IN
0x0365901B...51aC2cBDB
0 ETH0.0154099422
Execute84443102019-08-29 9:43:352019 days ago1567071815IN
0x0365901B...51aC2cBDB
0 ETH0.0075200110
Execute84443042019-08-29 9:42:082019 days ago1567071728IN
0x0365901B...51aC2cBDB
0 ETH0.0129894410
Execute84442942019-08-29 9:40:472019 days ago1567071647IN
0x0365901B...51aC2cBDB
0 ETH0.0074942710
Execute84320222019-08-27 11:58:562021 days ago1566907136IN
0x0365901B...51aC2cBDB
0 ETH0.001303246
Execute84320152019-08-27 11:56:412021 days ago1566907001IN
0x0365901B...51aC2cBDB
0 ETH0.007913015.65
Execute84320072019-08-27 11:54:372021 days ago1566906877IN
0x0365901B...51aC2cBDB
0 ETH0.00543325.65
Execute84319912019-08-27 11:51:562021 days ago1566906716IN
0x0365901B...51aC2cBDB
0 ETH0.001669737.65
Execute84118542019-08-24 8:16:272024 days ago1566634587IN
0x0365901B...51aC2cBDB
0 ETH0.000598871
Execute84069592019-08-23 14:11:322025 days ago1566569492IN
0x0365901B...51aC2cBDB
0 ETH0.007845710
Execute84065792019-08-23 12:40:542025 days ago1566564054IN
0x0365901B...51aC2cBDB
0 ETH0.0063664711.689843
Execute84065662019-08-23 12:37:222025 days ago1566563842IN
0x0365901B...51aC2cBDB
2.178 ETH0.0019431911
Execute84065302019-08-23 12:28:392025 days ago1566563319IN
0x0365901B...51aC2cBDB
11 ETH0.001768310.01
Execute84062752019-08-23 11:30:582025 days ago1566559858IN
0x0365901B...51aC2cBDB
4 ETH0.000936265.3
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-86139812019-09-24 20:43:011992 days ago1569357781
0x0365901B...51aC2cBDB
19.98298352 ETH
-86139812019-09-24 20:43:011992 days ago1569357781
0x0365901B...51aC2cBDB
19.98298352 ETH
-86139552019-09-24 20:37:421992 days ago1569357462
0x0365901B...51aC2cBDB
31.06119839 ETH
-86139552019-09-24 20:37:421992 days ago1569357462
0x0365901B...51aC2cBDB
31.06119839 ETH
-86138632019-09-24 20:20:151992 days ago1569356415
0x0365901B...51aC2cBDB
16.429 ETH
-86138632019-09-24 20:20:151992 days ago1569356415
0x0365901B...51aC2cBDB
16.429 ETH
-86123482019-09-24 14:39:521993 days ago1569335992
0x0365901B...51aC2cBDB
10.27 ETH
-86123482019-09-24 14:39:521993 days ago1569335992
0x0365901B...51aC2cBDB
10.27 ETH
-86123372019-09-24 14:38:081993 days ago1569335888
0x0365901B...51aC2cBDB
15 ETH
-86123372019-09-24 14:38:081993 days ago1569335888
0x0365901B...51aC2cBDB
15 ETH
-85732492019-09-18 11:50:491999 days ago1568807449
0x0365901B...51aC2cBDB
15.06110094 ETH
-85732492019-09-18 11:50:491999 days ago1568807449
0x0365901B...51aC2cBDB
15.06110094 ETH
-85722282019-09-18 8:01:311999 days ago1568793691
0x0365901B...51aC2cBDB
25.28440213 ETH
-85722282019-09-18 8:01:311999 days ago1568793691
0x0365901B...51aC2cBDB
25.28440213 ETH
-85680602019-09-17 16:43:431999 days ago1568738623
0x0365901B...51aC2cBDB
17.59763005 ETH
-85680602019-09-17 16:43:431999 days ago1568738623
0x0365901B...51aC2cBDB
17.59763005 ETH
-85678312019-09-17 15:50:532000 days ago1568735453
0x0365901B...51aC2cBDB
60.21346976 ETH
-85678312019-09-17 15:50:532000 days ago1568735453
0x0365901B...51aC2cBDB
60.21346976 ETH
-85678142019-09-17 15:47:212000 days ago1568735241
0x0365901B...51aC2cBDB
69 ETH
-85604812019-09-16 12:24:262001 days ago1568636666
0x0365901B...51aC2cBDB
13.11052061 ETH
-85604812019-09-16 12:24:262001 days ago1568636666
0x0365901B...51aC2cBDB
13.11052061 ETH
-84443102019-08-29 9:43:352019 days ago1567071815
0x0365901B...51aC2cBDB
2.864 ETH
-84443102019-08-29 9:43:352019 days ago1567071815
0x0365901B...51aC2cBDB
2.864 ETH
-84443042019-08-29 9:42:082019 days ago1567071728
0x0365901B...51aC2cBDB
10.21799999 ETH
-84443042019-08-29 9:42:082019 days ago1567071728
0x0365901B...51aC2cBDB
10.21799999 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

API
[{"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.