ETH Price: $2,802.03 (+1.29%)

Contract

0x78f9719bd561A40ABaB1d524FF41Ad3b6B5A02a2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute116102332021-01-07 22:28:191507 days ago1610058499IN
0x78f9719b...b6B5A02a2
0 ETH0.0048718579
Execute94191662020-02-04 23:36:581845 days ago1580859418IN
0x78f9719b...b6B5A02a2
0.25024999 ETH0.000314032
Execute93174032020-01-20 9:02:021861 days ago1579510922IN
0x78f9719b...b6B5A02a2
0 ETH0.000149161.1
Execute93138932020-01-19 20:08:381862 days ago1579464518IN
0x78f9719b...b6B5A02a2
0 ETH0.000119751
Execute93138792020-01-19 20:05:061862 days ago1579464306IN
0x78f9719b...b6B5A02a2
0 ETH0.000122371
Execute90603652019-12-06 12:06:361906 days ago1575633996IN
0x78f9719b...b6B5A02a2
0.22531195 ETH0.000662955.5
Execute90284482019-11-30 19:43:221912 days ago1575143002IN
0x78f9719b...b6B5A02a2
0.06153086 ETH0.000132751.1
Execute90012372019-11-25 23:56:261916 days ago1574726186IN
0x78f9719b...b6B5A02a2
0 ETH0.000448842
Execute90012362019-11-25 23:55:571916 days ago1574726157IN
0x78f9719b...b6B5A02a2
0 ETH0.000318342
Execute89985752019-11-25 12:48:101917 days ago1574686090IN
0x78f9719b...b6B5A02a2
0 ETH0.000879976.1
Execute89943762019-11-24 20:07:381918 days ago1574626058IN
0x78f9719b...b6B5A02a2
0.04987637 ETH0.000120611
Execute89815602019-11-22 17:05:321920 days ago1574442332IN
0x78f9719b...b6B5A02a2
0.09588921 ETH0.000603095
Execute89777742019-11-22 1:48:021920 days ago1574387282IN
0x78f9719b...b6B5A02a2
0.24546452 ETH0.000676193
Execute89777692019-11-22 1:46:331920 days ago1574387193IN
0x78f9719b...b6B5A02a2
0.24546452 ETH0.000479153
Execute89771492019-11-21 23:21:211920 days ago1574378481IN
0x78f9719b...b6B5A02a2
0.09899682 ETH0.000120611
Execute89770172019-11-21 22:50:211920 days ago1574376621IN
0x78f9719b...b6B5A02a2
0.08380669 ETH0.000233361
Execute89768272019-11-21 22:05:151920 days ago1574373915IN
0x78f9719b...b6B5A02a2
0 ETH0.000160141
Execute89532752019-11-17 23:36:561924 days ago1574033816IN
0x78f9719b...b6B5A02a2
0 ETH0.000122441
Execute89530832019-11-17 22:53:451924 days ago1574031225IN
0x78f9719b...b6B5A02a2
0 ETH0.000122441
Execute89530582019-11-17 22:49:181924 days ago1574030958IN
0x78f9719b...b6B5A02a2
0 ETH0.000161841
Execute89516242019-11-17 17:08:341925 days ago1574010514IN
0x78f9719b...b6B5A02a2
0.09147107 ETH0.000225251
Execute89516202019-11-17 17:08:131925 days ago1574010493IN
0x78f9719b...b6B5A02a2
0.09147107 ETH0.000159611
Execute87734112019-10-19 20:38:301954 days ago1571517510IN
0x78f9719b...b6B5A02a2
0 ETH0.00005221
Execute87662692019-10-18 17:43:361955 days ago1571420616IN
0x78f9719b...b6B5A02a2
0 ETH0.0005841
Execute87608652019-10-17 21:14:331956 days ago1571346873IN
0x78f9719b...b6B5A02a2
0 ETH0.0006441
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
94191662020-02-04 23:36:581845 days ago1580859418
0x78f9719b...b6B5A02a2
0.25000004 ETH
94191662020-02-04 23:36:581845 days ago1580859418
0x78f9719b...b6B5A02a2
0.00024995 ETH
93174032020-01-20 9:02:021861 days ago1579510922
0x78f9719b...b6B5A02a2
0.00005459 ETH
93174032020-01-20 9:02:021861 days ago1579510922
0x78f9719b...b6B5A02a2
0.00005459 ETH
93138932020-01-19 20:08:381862 days ago1579464518
0x78f9719b...b6B5A02a2
0.22717072 ETH
93138932020-01-19 20:08:381862 days ago1579464518
0x78f9719b...b6B5A02a2
0.22717072 ETH
93138792020-01-19 20:05:061862 days ago1579464306
0x78f9719b...b6B5A02a2
0.34244687 ETH
93138792020-01-19 20:05:061862 days ago1579464306
0x78f9719b...b6B5A02a2
0.34244687 ETH
90603652019-12-06 12:06:361906 days ago1575633996
0x78f9719b...b6B5A02a2
0.22531195 ETH
90284482019-11-30 19:43:221912 days ago1575143002
0x78f9719b...b6B5A02a2
0.06153086 ETH
90012362019-11-25 23:55:571916 days ago1574726157
0x78f9719b...b6B5A02a2
0.25044606 ETH
90012362019-11-25 23:55:571916 days ago1574726157
0x78f9719b...b6B5A02a2
0.25044606 ETH
89985752019-11-25 12:48:101917 days ago1574686090
0x78f9719b...b6B5A02a2
0.03325489 ETH
89985752019-11-25 12:48:101917 days ago1574686090
0x78f9719b...b6B5A02a2
0.03325489 ETH
89943762019-11-24 20:07:381918 days ago1574626058
0x78f9719b...b6B5A02a2
0.04987637 ETH
89815602019-11-22 17:05:321920 days ago1574442332
0x78f9719b...b6B5A02a2
0.09588921 ETH
89777742019-11-22 1:48:021920 days ago1574387282
0x78f9719b...b6B5A02a2
0.24546452 ETH
89777692019-11-22 1:46:331920 days ago1574387193
0x78f9719b...b6B5A02a2
0.24546452 ETH
89771492019-11-21 23:21:211920 days ago1574378481
0x78f9719b...b6B5A02a2
0.09899682 ETH
89770172019-11-21 22:50:211920 days ago1574376621
0x78f9719b...b6B5A02a2
0.00091522 ETH
89770172019-11-21 22:50:211920 days ago1574376621
0x78f9719b...b6B5A02a2
0.00091522 ETH
89770172019-11-21 22:50:211920 days ago1574376621
0x78f9719b...b6B5A02a2
0.08380669 ETH
89768272019-11-21 22:05:151920 days ago1574373915
0x78f9719b...b6B5A02a2
0.52139482 ETH
89768272019-11-21 22:05:151920 days ago1574373915
0x78f9719b...b6B5A02a2
0.52139482 ETH
89532752019-11-17 23:36:561924 days ago1574033816
0x78f9719b...b6B5A02a2
0 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.