ETH Price: $2,689.96 (-2.55%)

Contract

0x9f94c214BD9064AC698dbb85940C073D37619189
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute80058712019-06-22 5:06:282056 days ago1561179988IN
0x9f94c214...D37619189
0 ETH0.000457651
Execute80058672019-06-22 5:05:032056 days ago1561179903IN
0x9f94c214...D37619189
0.37400767 ETH0.000469221
Execute80058422019-06-22 5:01:032056 days ago1561179663IN
0x9f94c214...D37619189
0 ETH0.000427891
Execute80057862019-06-22 4:50:332056 days ago1561179033IN
0x9f94c214...D37619189
0 ETH0.000301161
Execute80057732019-06-22 4:48:142056 days ago1561178894IN
0x9f94c214...D37619189
0 ETH0.000286191
Execute80056202019-06-22 4:16:162056 days ago1561176976IN
0x9f94c214...D37619189
0.11012173 ETH0.000606193.9
Execute80009982019-06-21 10:37:122057 days ago1561113432IN
0x9f94c214...D37619189
0 ETH0.000241031
Execute80009762019-06-21 10:32:532057 days ago1561113173IN
0x9f94c214...D37619189
0 ETH0.000402461.5
Execute80009502019-06-21 10:26:352057 days ago1561112795IN
0x9f94c214...D37619189
0 ETH0.000226511.1
Execute80008122019-06-21 9:53:062057 days ago1561110786IN
0x9f94c214...D37619189
1 ETH0.000706614
Execute79998452019-06-21 6:24:032057 days ago1561098243IN
0x9f94c214...D37619189
0 ETH0.000617191
Execute79997702019-06-21 6:07:252057 days ago1561097245IN
0x9f94c214...D37619189
0 ETH0.000943954.9
Execute79997392019-06-21 5:59:492057 days ago1561096789IN
0x9f94c214...D37619189
1 ETH0.001107354.9
Execute79822542019-06-18 12:20:562060 days ago1560860456IN
0x9f94c214...D37619189
0 ETH0.000915322
Execute79822342019-06-18 12:16:552060 days ago1560860215IN
0x9f94c214...D37619189
0 ETH0.001118693
Execute79704292019-06-16 15:49:442062 days ago1560700184IN
0x9f94c214...D37619189
0 ETH0.001784673
Execute79704032019-06-16 15:41:522062 days ago1560699712IN
0x9f94c214...D37619189
0 ETH0.001836123
Execute79703902019-06-16 15:40:292062 days ago1560699629IN
0x9f94c214...D37619189
0.1 ETH0.00035332
Execute79701792019-06-16 14:52:152062 days ago1560696735IN
0x9f94c214...D37619189
0 ETH0.000708561.09462493
Execute79701562019-06-16 14:46:482062 days ago1560696408IN
0x9f94c214...D37619189
0 ETH0.000580963
Execute79701182019-06-16 14:38:062062 days ago1560695886IN
0x9f94c214...D37619189
0.1 ETH0.001096924
Execute79694852019-06-16 12:17:272062 days ago1560687447IN
0x9f94c214...D37619189
0 ETH0.000231491.01
Execute79694752019-06-16 12:15:542062 days ago1560687354IN
0x9f94c214...D37619189
0 ETH0.000821983.4
Execute79687982019-06-16 9:49:462062 days ago1560678586IN
0x9f94c214...D37619189
0.00373075 ETH0.000360181
Execute79684502019-06-16 8:31:452062 days ago1560673905IN
0x9f94c214...D37619189
0 ETH0.000663853
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
80058712019-06-22 5:06:282056 days ago1561179988
0x9f94c214...D37619189
2.27657221 ETH
80058712019-06-22 5:06:282056 days ago1561179988
0x9f94c214...D37619189
2.27657221 ETH
80058672019-06-22 5:05:032056 days ago1561179903
0x9f94c214...D37619189
0.00370304 ETH
80058672019-06-22 5:05:032056 days ago1561179903
0x9f94c214...D37619189
0.00370304 ETH
80058672019-06-22 5:05:032056 days ago1561179903
0x9f94c214...D37619189
0.37400767 ETH
80056202019-06-22 4:16:162056 days ago1561176976
0x9f94c214...D37619189
0.11001176 ETH
80056202019-06-22 4:16:162056 days ago1561176976
0x9f94c214...D37619189
0.00010996 ETH
80009982019-06-21 10:37:122057 days ago1561113432
0x9f94c214...D37619189
0.21 ETH
80009982019-06-21 10:37:122057 days ago1561113432
0x9f94c214...D37619189
0.21 ETH
80008122019-06-21 9:53:062057 days ago1561110786
0x9f94c214...D37619189
1 ETH
79998452019-06-21 6:24:032057 days ago1561098243
0x9f94c214...D37619189
0.27657221 ETH
79998452019-06-21 6:24:032057 days ago1561098243
0x9f94c214...D37619189
0.27657221 ETH
79997392019-06-21 5:59:492057 days ago1561096789
0x9f94c214...D37619189
1 ETH
79822542019-06-18 12:20:562060 days ago1560860456
0x9f94c214...D37619189
0.37904289 ETH
79822542019-06-18 12:20:562060 days ago1560860456
0x9f94c214...D37619189
0.37904289 ETH
79704292019-06-16 15:49:442062 days ago1560700184
0x9f94c214...D37619189
0.10608788 ETH
79704292019-06-16 15:49:442062 days ago1560700184
0x9f94c214...D37619189
0.10608788 ETH
79704032019-06-16 15:41:522062 days ago1560699712
0x9f94c214...D37619189
0.03659433 ETH
79704032019-06-16 15:41:522062 days ago1560699712
0x9f94c214...D37619189
0.03659433 ETH
79703902019-06-16 15:40:292062 days ago1560699629
0x9f94c214...D37619189
0.1 ETH
79701792019-06-16 14:52:152062 days ago1560696735
0x9f94c214...D37619189
0.03636066 ETH
79701792019-06-16 14:52:152062 days ago1560696735
0x9f94c214...D37619189
0.03636066 ETH
79701182019-06-16 14:38:062062 days ago1560695886
0x9f94c214...D37619189
0.1 ETH
79694852019-06-16 12:17:272062 days ago1560687447
0x9f94c214...D37619189
0.10000002 ETH
79694852019-06-16 12:17:272062 days ago1560687447
0x9f94c214...D37619189
0.10000002 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.