ETH Price: $2,640.97 (+0.55%)

Contract

0xD3A1EC5648B7D5bb414561cAaE56389932a6CC74
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute104539592020-07-13 22:41:261558 days ago1594680086IN
0xD3A1EC56...932a6CC74
0 ETH0.0770588624
Execute99446422020-04-25 23:41:111637 days ago1587858071IN
0xD3A1EC56...932a6CC74
0 ETH0.00466682.3
Execute99446292020-04-25 23:37:351637 days ago1587857855IN
0xD3A1EC56...932a6CC74
0 ETH0.007227933
Execute99445412020-04-25 23:21:101637 days ago1587856870IN
0xD3A1EC56...932a6CC74
0 ETH0.00301821.5
Execute99445072020-04-25 23:12:211637 days ago1587856341IN
0xD3A1EC56...932a6CC74
0 ETH0.002569061.26653007
Execute94706392020-02-12 21:32:081710 days ago1581543128IN
0xD3A1EC56...932a6CC74
0 ETH0.000990315
Execute94706352020-02-12 21:30:441710 days ago1581543044IN
0xD3A1EC56...932a6CC74
0 ETH0.000647084.8
Execute94706232020-02-12 21:28:291710 days ago1581542909IN
0xD3A1EC56...932a6CC74
0 ETH0.000893794.8
Execute94706142020-02-12 21:26:021710 days ago1581542762IN
0xD3A1EC56...932a6CC74
0 ETH0.002074564
Execute94706052020-02-12 21:24:411710 days ago1581542681IN
0xD3A1EC56...932a6CC74
0 ETH0.00115944
Execute94705962020-02-12 21:22:171710 days ago1581542537IN
0xD3A1EC56...932a6CC74
0 ETH0.001910684
Execute94698492020-02-12 18:40:041710 days ago1581532804IN
0xD3A1EC56...932a6CC74
0 ETH0.004020352
Execute94698132020-02-12 18:33:501710 days ago1581532430IN
0xD3A1EC56...932a6CC74
0 ETH0.00376392
Execute94654122020-02-12 2:08:591711 days ago1581473339IN
0xD3A1EC56...932a6CC74
0 ETH0.001670782.4
Execute94634032020-02-11 18:47:041711 days ago1581446824IN
0xD3A1EC56...932a6CC74
0 ETH0.000595153
Execute94633812020-02-11 18:42:501711 days ago1581446570IN
0xD3A1EC56...932a6CC74
0 ETH0.002217955
Execute94633692020-02-11 18:39:321711 days ago1581446372IN
0xD3A1EC56...932a6CC74
0 ETH0.006883643.3
Execute94633422020-02-11 18:32:341711 days ago1581445954IN
0xD3A1EC56...932a6CC74
0 ETH0.002087943
Execute94633332020-02-11 18:29:481711 days ago1581445788IN
0xD3A1EC56...932a6CC74
0 ETH0.000460963
Execute94633252020-02-11 18:27:351711 days ago1581445655IN
0xD3A1EC56...932a6CC74
0 ETH0.000604092.4
Execute94562772020-02-10 16:42:431712 days ago1581352963IN
0xD3A1EC56...932a6CC74
0 ETH0.000307282
Execute94562602020-02-10 16:39:401712 days ago1581352780IN
0xD3A1EC56...932a6CC74
0 ETH0.000604612.4
Execute94562562020-02-10 16:38:461712 days ago1581352726IN
0xD3A1EC56...932a6CC74
0 ETH0.000460963
Execute94562382020-02-10 16:35:071712 days ago1581352507IN
0xD3A1EC56...932a6CC74
0 ETH0.002089683
Execute94236882020-02-05 16:23:511717 days ago1580919831IN
0xD3A1EC56...932a6CC74
0 ETH0.001608914
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
99446422020-04-25 23:41:111637 days ago1587858071
0xD3A1EC56...932a6CC74
0.15648202 ETH
99446422020-04-25 23:41:111637 days ago1587858071
0xD3A1EC56...932a6CC74
0.15648202 ETH
99446292020-04-25 23:37:351637 days ago1587857855
0xD3A1EC56...932a6CC74
0.20868888 ETH
99446292020-04-25 23:37:351637 days ago1587857855
0xD3A1EC56...932a6CC74
0.20868888 ETH
99445412020-04-25 23:21:101637 days ago1587856870
0xD3A1EC56...932a6CC74
0.28688883 ETH
99445412020-04-25 23:21:101637 days ago1587856870
0xD3A1EC56...932a6CC74
0.28688883 ETH
99445072020-04-25 23:12:211637 days ago1587856341
0xD3A1EC56...932a6CC74
0.39125488 ETH
99445072020-04-25 23:12:211637 days ago1587856341
0xD3A1EC56...932a6CC74
0.39125488 ETH
94698492020-02-12 18:40:041710 days ago1581532804
0xD3A1EC56...932a6CC74
0.75040448 ETH
94698492020-02-12 18:40:041710 days ago1581532804
0xD3A1EC56...932a6CC74
0.75040448 ETH
94698132020-02-12 18:33:501710 days ago1581532430
0xD3A1EC56...932a6CC74
7.38707799 ETH
94698132020-02-12 18:33:501710 days ago1581532430
0xD3A1EC56...932a6CC74
7.38707799 ETH
94654122020-02-12 2:08:591711 days ago1581473339
0xD3A1EC56...932a6CC74
0.30371825 ETH
94654122020-02-12 2:08:591711 days ago1581473339
0xD3A1EC56...932a6CC74
0.30371825 ETH
94633692020-02-11 18:39:321711 days ago1581446372
0xD3A1EC56...932a6CC74
0.14682476 ETH
94633692020-02-11 18:39:321711 days ago1581446372
0xD3A1EC56...932a6CC74
0.14682476 ETH
94633422020-02-11 18:32:341711 days ago1581445954
0xD3A1EC56...932a6CC74
0.62702527 ETH
94633422020-02-11 18:32:341711 days ago1581445954
0xD3A1EC56...932a6CC74
0.62702527 ETH
94562382020-02-10 16:35:071712 days ago1581352507
0xD3A1EC56...932a6CC74
0.44623387 ETH
94562382020-02-10 16:35:071712 days ago1581352507
0xD3A1EC56...932a6CC74
0.44623387 ETH
94235342020-02-05 15:51:031717 days ago1580917863
0xD3A1EC56...932a6CC74
0.25147354 ETH
94235342020-02-05 15:51:031717 days ago1580917863
0xD3A1EC56...932a6CC74
0.25147354 ETH
94066152020-02-03 1:38:181720 days ago1580693898
0xD3A1EC56...932a6CC74
0.51696597 ETH
94066152020-02-03 1:38:181720 days ago1580693898
0xD3A1EC56...932a6CC74
0.51696597 ETH
93989452020-02-01 21:21:571721 days ago1580592117
0xD3A1EC56...932a6CC74
0.08 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.