ETH Price: $3,226.12 (-2.56%)
Gas: 40 Gwei

Contract

0xe65187714Eb725C76012dEFd18aB7B495fB25f31
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute104432052020-07-12 6:53:501584 days ago1594536830IN
0xe6518771...95fB25f31
0 ETH0.0411455417
Execute103882982020-07-03 19:25:101593 days ago1593804310IN
0xe6518771...95fB25f31
0 ETH0.0050447923.2
Execute103584222020-06-29 3:44:301597 days ago1593402270IN
0xe6518771...95fB25f31
0.00539779 ETH0.0056698620
Execute102778542020-06-16 16:23:131610 days ago1592324593IN
0xe6518771...95fB25f31
0 ETH0.0111951725
Execute102686532020-06-15 6:17:381611 days ago1592201858IN
0xe6518771...95fB25f31
0 ETH0.1099531436
Execute101753062020-05-31 18:49:331626 days ago1590950973IN
0xe6518771...95fB25f31
5.02 ETH0.0025733718
Execute101752852020-05-31 18:43:251626 days ago1590950605IN
0xe6518771...95fB25f31
0 ETH0.0057372915
Execute101752702020-05-31 18:40:131626 days ago1590950413IN
0xe6518771...95fB25f31
0 ETH0.0393259619.5
Execute101661032020-05-30 8:39:591627 days ago1590827999IN
0xe6518771...95fB25f31
10 ETH0.0038600527.00000123
Execute101658682020-05-30 7:48:501627 days ago1590824930IN
0xe6518771...95fB25f31
0 ETH0.0084262822
Execute101179632020-05-22 21:06:121635 days ago1590181572IN
0xe6518771...95fB25f31
0 ETH0.0395842615
Execute100855892020-05-17 19:52:391640 days ago1589745159IN
0xe6518771...95fB25f31
0 ETH0.0205985310
Execute100691962020-05-15 6:42:091642 days ago1589524929IN
0xe6518771...95fB25f31
0 ETH0.0363446118
Execute100470672020-05-11 20:28:021646 days ago1589228882IN
0xe6518771...95fB25f31
0 ETH0.0197979810
Execute100466052020-05-11 18:47:371646 days ago1589222857IN
0xe6518771...95fB25f31
0 ETH0.0403795817.62749342
Execute100400662020-05-10 18:27:421647 days ago1589135262IN
0xe6518771...95fB25f31
0 ETH0.0263469511
Execute100358982020-05-10 2:57:331647 days ago1589079453IN
0xe6518771...95fB25f31
0 ETH0.0823224839
Execute100352892020-05-10 0:42:591648 days ago1589071379IN
0xe6518771...95fB25f31
0 ETH0.1154695550
Execute100275902020-05-08 19:49:201649 days ago1588967360IN
0xe6518771...95fB25f31
0 ETH0.0226530311
Execute100123802020-05-06 11:16:481651 days ago1588763808IN
0xe6518771...95fB25f31
0 ETH0.021552869
Execute100041292020-05-05 4:42:561652 days ago1588653776IN
0xe6518771...95fB25f31
0 ETH0.013454686.7
Execute99979652020-05-04 5:57:511653 days ago1588571871IN
0xe6518771...95fB25f31
0 ETH0.007099873
Execute99785592020-05-01 5:53:081656 days ago1588312388IN
0xe6518771...95fB25f31
0 ETH0.016807267
Execute99658722020-04-29 6:33:201658 days ago1588142000IN
0xe6518771...95fB25f31
0 ETH0.0207086510
Execute99611502020-04-28 12:59:351659 days ago1588078775IN
0xe6518771...95fB25f31
0 ETH0.014453876.99999999
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
103584222020-06-29 3:44:301597 days ago1593402270
0xe6518771...95fB25f31
0.00006202 ETH
103584222020-06-29 3:44:301597 days ago1593402270
0xe6518771...95fB25f31
0.00006202 ETH
103584222020-06-29 3:44:301597 days ago1593402270
0xe6518771...95fB25f31
0.00539779 ETH
102686532020-06-15 6:17:381611 days ago1592201858
0xe6518771...95fB25f31
20 ETH
102686532020-06-15 6:17:381611 days ago1592201858
0xe6518771...95fB25f31
20 ETH
101753062020-05-31 18:49:331626 days ago1590950973
0xe6518771...95fB25f31
5.02 ETH
101752702020-05-31 18:40:131626 days ago1590950413
0xe6518771...95fB25f31
4.98501141 ETH
101752702020-05-31 18:40:131626 days ago1590950413
0xe6518771...95fB25f31
4.98501141 ETH
101661032020-05-30 8:39:591627 days ago1590827999
0xe6518771...95fB25f31
10 ETH
101179632020-05-22 21:06:121635 days ago1590181572
0xe6518771...95fB25f31
10.03 ETH
101179632020-05-22 21:06:121635 days ago1590181572
0xe6518771...95fB25f31
10.03 ETH
100855892020-05-17 19:52:391640 days ago1589745159
0xe6518771...95fB25f31
5.04373828 ETH
100855892020-05-17 19:52:391640 days ago1589745159
0xe6518771...95fB25f31
5.04373828 ETH
100691962020-05-15 6:42:091642 days ago1589524929
0xe6518771...95fB25f31
5.07275314 ETH
100691962020-05-15 6:42:091642 days ago1589524929
0xe6518771...95fB25f31
5.07275314 ETH
100470672020-05-11 20:28:021646 days ago1589228882
0xe6518771...95fB25f31
9.86863098 ETH
100470672020-05-11 20:28:021646 days ago1589228882
0xe6518771...95fB25f31
9.86863098 ETH
100466052020-05-11 18:47:371646 days ago1589222857
0xe6518771...95fB25f31
20 ETH
100466052020-05-11 18:47:371646 days ago1589222857
0xe6518771...95fB25f31
20 ETH
100400662020-05-10 18:27:421647 days ago1589135262
0xe6518771...95fB25f31
10.04118122 ETH
100400662020-05-10 18:27:421647 days ago1589135262
0xe6518771...95fB25f31
10.04118122 ETH
100358982020-05-10 2:57:331647 days ago1589079453
0xe6518771...95fB25f31
10 ETH
100358982020-05-10 2:57:331647 days ago1589079453
0xe6518771...95fB25f31
10 ETH
100352892020-05-10 0:42:591648 days ago1589071379
0xe6518771...95fB25f31
15 ETH
100352892020-05-10 0:42:591648 days ago1589071379
0xe6518771...95fB25f31
15 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.