ETH Price: $2,723.15 (-3.64%)

Contract

0x059e63F20124A9faBEC2cc68793c4251D3FB63a9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute112714622020-11-16 21:56:101560 days ago1605563770IN
0x059e63F2...1D3FB63a9
0 ETH0.001788429
Set Owner112584632020-11-14 22:09:501562 days ago1605391790IN
0x059e63F2...1D3FB63a9
0 ETH0.0003709313.1
Execute80375372019-06-27 3:17:352069 days ago1561605455IN
0x059e63F2...1D3FB63a9
0 ETH0.0091396420
Execute80375342019-06-27 3:16:592069 days ago1561605419IN
0x059e63F2...1D3FB63a9
0 ETH0.0030075220
Execute80375272019-06-27 3:15:212069 days ago1561605321IN
0x059e63F2...1D3FB63a9
0 ETH0.0043067820
Execute80375072019-06-27 3:08:432069 days ago1561604923IN
0x059e63F2...1D3FB63a9
0 ETH0.0074713820
Execute80353692019-06-26 19:10:312069 days ago1561576231IN
0x059e63F2...1D3FB63a9
0.023 ETH0.000883275
Execute80305892019-06-26 1:14:212070 days ago1561511661IN
0x059e63F2...1D3FB63a9
0 ETH0.001304356
Execute80303412019-06-26 0:21:262070 days ago1561508486IN
0x059e63F2...1D3FB63a9
0.02 ETH0.00035332
Execute80266212019-06-25 10:37:572070 days ago1561459077IN
0x059e63F2...1D3FB63a9
0 ETH0.0033090820
Execute80266032019-06-25 10:32:492070 days ago1561458769IN
0x059e63F2...1D3FB63a9
0 ETH0.0043599820
Execute80257372019-06-25 7:18:102071 days ago1561447090IN
0x059e63F2...1D3FB63a9
0.03 ETH0.001236577
Execute80256842019-06-25 7:08:512071 days ago1561446531IN
0x059e63F2...1D3FB63a9
0.01653521 ETH0.001737657
Execute80250182019-06-25 4:32:562071 days ago1561437176IN
0x059e63F2...1D3FB63a9
0 ETH0.0027213
Execute80250142019-06-25 4:31:432071 days ago1561437103IN
0x059e63F2...1D3FB63a9
0.01 ETH0.003118613
Execute79464992019-06-12 22:02:162083 days ago1560376936IN
0x059e63F2...1D3FB63a9
0 ETH0.000149492.1

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
80375372019-06-27 3:17:352069 days ago1561605455
0x059e63F2...1D3FB63a9
0.02800007 ETH
80375372019-06-27 3:17:352069 days ago1561605455
0x059e63F2...1D3FB63a9
0.02800007 ETH
80375272019-06-27 3:15:212069 days ago1561605321
0x059e63F2...1D3FB63a9
0.025 ETH
80375272019-06-27 3:15:212069 days ago1561605321
0x059e63F2...1D3FB63a9
0.025 ETH
80353692019-06-26 19:10:312069 days ago1561576231
0x059e63F2...1D3FB63a9
0.023 ETH
80305892019-06-26 1:14:212070 days ago1561511661
0x059e63F2...1D3FB63a9
0.02 ETH
80305892019-06-26 1:14:212070 days ago1561511661
0x059e63F2...1D3FB63a9
0.02 ETH
80303412019-06-26 0:21:262070 days ago1561508486
0x059e63F2...1D3FB63a9
0.02 ETH
80266032019-06-25 10:32:492070 days ago1561458769
0x059e63F2...1D3FB63a9
0.01 ETH
80266032019-06-25 10:32:492070 days ago1561458769
0x059e63F2...1D3FB63a9
0.01 ETH
80257372019-06-25 7:18:102071 days ago1561447090
0x059e63F2...1D3FB63a9
0.03 ETH
80256842019-06-25 7:08:512071 days ago1561446531
0x059e63F2...1D3FB63a9
0.0001706 ETH
80256842019-06-25 7:08:512071 days ago1561446531
0x059e63F2...1D3FB63a9
0.0001706 ETH
80256842019-06-25 7:08:512071 days ago1561446531
0x059e63F2...1D3FB63a9
0.01653521 ETH
80250142019-06-25 4:31:432071 days ago1561437103
0x059e63F2...1D3FB63a9
0.01 ETH
79460912019-06-12 20:28:232083 days ago1560371303  Contract Creation0 ETH
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.