ETH Price: $2,657.78 (+1.49%)

Contract

0x81dCA6497abd7dDFfCa44CAcc285011891721CD0
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute103111312020-06-21 20:04:231694 days ago1592769863IN
0x81dCA649...891721CD0
0 ETH0.0212107620
Execute87615692019-10-17 23:52:251942 days ago1571356345IN
0x81dCA649...891721CD0
0 ETH0.000829591
Execute87039022019-10-08 22:05:511951 days ago1570572351IN
0x81dCA649...891721CD0
0 ETH0.000417088
Execute86618352019-10-02 8:43:151958 days ago1570005795IN
0x81dCA649...891721CD0
0 ETH0.000294631
Execute86617592019-10-02 8:28:441958 days ago1570004924IN
0x81dCA649...891721CD0
0 ETH0.000295621
Execute86534602019-10-01 1:06:121959 days ago1569891972IN
0x81dCA649...891721CD0
0 ETH0.000974761
Execute86500282019-09-30 12:22:411960 days ago1569846161IN
0x81dCA649...891721CD0
0 ETH0.004475962
Execute86497102019-09-30 11:08:401960 days ago1569841720IN
0x81dCA649...891721CD0
0 ETH0.0248880817
Execute86496122019-09-30 10:46:531960 days ago1569840413IN
0x81dCA649...891721CD0
0 ETH0.0289279119.5
Execute86337442019-09-27 23:13:091962 days ago1569625989IN
0x81dCA649...891721CD0
0 ETH0.0175707112
Execute86335712019-09-27 22:34:501962 days ago1569623690IN
0x81dCA649...891721CD0
0 ETH0.0035494913.11
Execute86273392019-09-26 23:02:051963 days ago1569538925IN
0x81dCA649...891721CD0
0 ETH0.000985618.3
Execute86272852019-09-26 22:47:301963 days ago1569538050IN
0x81dCA649...891721CD0
0 ETH0.0095789112.1
Execute86256552019-09-26 16:52:571963 days ago1569516777IN
0x81dCA649...891721CD0
0 ETH0.0274781518.8125
Execute86256402019-09-26 16:49:391963 days ago1569516579IN
0x81dCA649...891721CD0
0 ETH0.0292181620
Execute86256192019-09-26 16:45:501963 days ago1569516350IN
0x81dCA649...891721CD0
2 ETH0.0026553721.5
Execute86256012019-09-26 16:43:161963 days ago1569516196IN
0x81dCA649...891721CD0
6.55357015 ETH0.0114760628.6
Execute86181602019-09-25 12:38:571965 days ago1569415137IN
0x81dCA649...891721CD0
3.05915759 ETH0.0100373225
Execute86136532019-09-24 19:34:171965 days ago1569353657IN
0x81dCA649...891721CD0
0 ETH0.0445427326
Execute85824332019-09-19 22:23:031970 days ago1568931783IN
0x81dCA649...891721CD0
0 ETH0.008685368.62477619
Execute85820792019-09-19 21:04:361970 days ago1568927076IN
0x81dCA649...891721CD0
0 ETH0.0273956218
Execute85577782019-09-16 2:22:011974 days ago1568600521IN
0x81dCA649...891721CD0
0 ETH0.008542379
Execute85577382019-09-16 2:14:211974 days ago1568600061IN
0x81dCA649...891721CD0
0 ETH0.0137909810
Execute85509642019-09-15 0:42:011975 days ago1568508121IN
0x81dCA649...891721CD0
0 ETH0.013131549
Execute85491432019-09-14 17:48:211975 days ago1568483301IN
0x81dCA649...891721CD0
0 ETH0.0149031210
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
86500282019-09-30 12:22:411960 days ago1569846161
0x81dCA649...891721CD0
14 ETH
86500282019-09-30 12:22:411960 days ago1569846161
0x81dCA649...891721CD0
14 ETH
86497102019-09-30 11:08:401960 days ago1569841720
0x81dCA649...891721CD0
5.82376749 ETH
86497102019-09-30 11:08:401960 days ago1569841720
0x81dCA649...891721CD0
5.82376749 ETH
86496122019-09-30 10:46:531960 days ago1569840413
0x81dCA649...891721CD0
11.62947335 ETH
86496122019-09-30 10:46:531960 days ago1569840413
0x81dCA649...891721CD0
11.62947335 ETH
86337442019-09-27 23:13:091962 days ago1569625989
0x81dCA649...891721CD0
8.69111418 ETH
86337442019-09-27 23:13:091962 days ago1569625989
0x81dCA649...891721CD0
8.69111418 ETH
86256552019-09-26 16:52:571963 days ago1569516777
0x81dCA649...891721CD0
5 ETH
86256552019-09-26 16:52:571963 days ago1569516777
0x81dCA649...891721CD0
5 ETH
86256402019-09-26 16:49:391963 days ago1569516579
0x81dCA649...891721CD0
5 ETH
86256402019-09-26 16:49:391963 days ago1569516579
0x81dCA649...891721CD0
5 ETH
86256192019-09-26 16:45:501963 days ago1569516350
0x81dCA649...891721CD0
2 ETH
86256012019-09-26 16:43:161963 days ago1569516196
0x81dCA649...891721CD0
0.06172492 ETH
86256012019-09-26 16:43:161963 days ago1569516196
0x81dCA649...891721CD0
0.06172492 ETH
86256012019-09-26 16:43:161963 days ago1569516196
0x81dCA649...891721CD0
6.55357015 ETH
86181602019-09-25 12:38:571965 days ago1569415137
0x81dCA649...891721CD0
0.02728385 ETH
86181602019-09-25 12:38:571965 days ago1569415137
0x81dCA649...891721CD0
0.02728385 ETH
86181602019-09-25 12:38:571965 days ago1569415137
0x81dCA649...891721CD0
3.05915759 ETH
86136532019-09-24 19:34:171965 days ago1569353657
0x81dCA649...891721CD0
5.84246331 ETH
86136532019-09-24 19:34:171965 days ago1569353657
0x81dCA649...891721CD0
5.84246331 ETH
85820792019-09-19 21:04:361970 days ago1568927076
0x81dCA649...891721CD0
11 ETH
85820792019-09-19 21:04:361970 days ago1568927076
0x81dCA649...891721CD0
11 ETH
85577382019-09-16 2:14:211974 days ago1568600061
0x81dCA649...891721CD0
3 ETH
85577382019-09-16 2:14:211974 days ago1568600061
0x81dCA649...891721CD0
3 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.