ETH Price: $2,637.57 (+0.62%)

Contract

0x8581C388a30518884522Fb177a92fc2193510814
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute89635472019-11-19 17:08:571795 days ago1574183337IN
0x8581C388...193510814
0 ETH0.000391241
Execute89634992019-11-19 16:55:401795 days ago1574182540IN
0x8581C388...193510814
0 ETH0.000247551
Execute88821302019-11-06 5:48:511809 days ago1573019331IN
0x8581C388...193510814
0 ETH0.000279441.3
Execute88821302019-11-06 5:48:511809 days ago1573019331IN
0x8581C388...193510814
0 ETH0.000173011
Execute88820842019-11-06 5:36:261809 days ago1573018586IN
0x8581C388...193510814
0 ETH0.000599031
Execute87594242019-10-17 15:55:061828 days ago1571327706IN
0x8581C388...193510814
0 ETH0.000376211
Execute87594242019-10-17 15:55:061828 days ago1571327706IN
0x8581C388...193510814
0 ETH0.000530731.15
Execute87594242019-10-17 15:55:061828 days ago1571327706IN
0x8581C388...193510814
0 ETH0.000284951.15
Execute87594132019-10-17 15:52:171828 days ago1571327537IN
0x8581C388...193510814
0 ETH0.000066041.32
Execute87594132019-10-17 15:52:171828 days ago1571327537IN
0x8581C388...193510814
0 ETH0.000066041.32
Execute87572792019-10-17 7:34:201829 days ago1571297660IN
0x8581C388...193510814
0 ETH0.000885742.4
Execute87572452019-10-17 7:25:281829 days ago1571297128IN
0x8581C388...193510814
0 ETH0.000225061.2
Execute87572242019-10-17 7:20:251829 days ago1571296825IN
0x8581C388...193510814
0.003 ETH0.000176711
Execute87571562019-10-17 7:06:281829 days ago1571295988IN
0x8581C388...193510814
0 ETH0.000342311.5
Execute87571432019-10-17 7:03:461829 days ago1571295826IN
0x8581C388...193510814
0 ETH0.000228211
Execute87571402019-10-17 7:03:011829 days ago1571295781IN
0x8581C388...193510814
0 ETH0.000215171
Execute87570812019-10-17 6:49:581829 days ago1571294998IN
0x8581C388...193510814
0 ETH0.001405162
Execute87570772019-10-17 6:48:431829 days ago1571294923IN
0x8581C388...193510814
0 ETH0.000758042
Execute87570682019-10-17 6:47:051829 days ago1571294825IN
0x8581C388...193510814
0 ETH0.000677211.8
Execute87570682019-10-17 6:47:051829 days ago1571294825IN
0x8581C388...193510814
0 ETH0.000247671
Execute87570682019-10-17 6:47:051829 days ago1571294825IN
0x8581C388...193510814
0 ETH0.000444591
Execute87570182019-10-17 6:36:001829 days ago1571294160IN
0x8581C388...193510814
0 ETH0.001168953
Execute87514812019-10-16 9:48:441830 days ago1571219324IN
0x8581C388...193510814
0 ETH0.00021551
Execute87514732019-10-16 9:47:471830 days ago1571219267IN
0x8581C388...193510814
0 ETH0.000612741
Execute87514682019-10-16 9:46:581830 days ago1571219218IN
0x8581C388...193510814
0 ETH0.000239821
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
87572242019-10-17 7:20:251829 days ago1571296825
0x8581C388...193510814
0.003 ETH
87514022019-10-16 9:31:531830 days ago1571218313
0x8581C388...193510814
0.00011849 ETH
87514022019-10-16 9:31:531830 days ago1571218313
0x8581C388...193510814
0.00011849 ETH
87514022019-10-16 9:31:531830 days ago1571218313
0x8581C388...193510814
0.01134663 ETH
87507832019-10-16 7:09:221830 days ago1571209762
0x8581C388...193510814
0.00899999 ETH
87507832019-10-16 7:09:221830 days ago1571209762
0x8581C388...193510814
0.00899999 ETH
87505962019-10-16 6:26:291830 days ago1571207189
0x8581C388...193510814
0.012 ETH
87505632019-10-16 6:19:321830 days ago1571206772
0x8581C388...193510814
0.003 ETH
87505632019-10-16 6:19:321830 days ago1571206772
0x8581C388...193510814
0.003 ETH
87505612019-10-16 6:19:071830 days ago1571206747
0x8581C388...193510814
0.00006682 ETH
87505612019-10-16 6:19:071830 days ago1571206747
0x8581C388...193510814
0.00006682 ETH
87505612019-10-16 6:19:071830 days ago1571206747
0x8581C388...193510814
0.00690342 ETH
87480182019-10-15 20:28:321830 days ago1571171312
0x8581C388...193510814
0.012 ETH
87478872019-10-15 20:01:231830 days ago1571169683
0x8581C388...193510814
0.00388719 ETH
87353752019-10-13 21:04:141832 days ago1571000654
0x8581C388...193510814
0.009 ETH
87353752019-10-13 21:04:141832 days ago1571000654
0x8581C388...193510814
0.01 ETH
87349462019-10-13 19:28:101832 days ago1570994890
0x8581C388...193510814
0.00094231 ETH
87349462019-10-13 19:28:101832 days ago1570994890
0x8581C388...193510814
0.00094231 ETH
87349462019-10-13 19:28:101832 days ago1570994890
0x8581C388...193510814
0.09330572 ETH
87349452019-10-13 19:27:151832 days ago1570994835
0x8581C388...193510814
0.09 ETH
87341192019-10-13 16:19:051832 days ago1570983545
0x8581C388...193510814
0.08 ETH
87341192019-10-13 16:19:051832 days ago1570983545
0x8581C388...193510814
0.08 ETH
87290962019-10-12 21:24:241833 days ago1570915464
0x8581C388...193510814
0.00016854 ETH
87290962019-10-12 21:24:241833 days ago1570915464
0x8581C388...193510814
0.00016854 ETH
87290962019-10-12 21:24:241833 days ago1570915464
0x8581C388...193510814
0.01688743 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.