ETH Price: $3,200.75 (-0.49%)

Contract

0x6D4090DB32d7dd417668489964C05eD6811671f0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Execute109279772020-09-24 22:18:381573 days ago1600985918IN
0x6D4090DB...6811671f0
0 ETH0.0030382765.1025641
Execute102980672020-06-19 19:27:241670 days ago1592594844IN
0x6D4090DB...6811671f0
0 ETH0.0233457522.000011
Execute102973872020-06-19 16:57:071670 days ago1592585827IN
0x6D4090DB...6811671f0
0 ETH0.0029655728.0001
Execute102345102020-06-09 23:28:371680 days ago1591745317IN
0x6D4090DB...6811671f0
0 ETH0.0053267722.0001
Execute100796762020-05-16 22:01:591704 days ago1589666519IN
0x6D4090DB...6811671f0
2 ETH0.000723865.000001
Execute99760922020-04-30 20:39:541720 days ago1588279194IN
0x6D4090DB...6811671f0
0 ETH0.001274835.750001
Execute99738402020-04-30 12:09:361720 days ago1588248576IN
0x6D4090DB...6811671f0
0 ETH0.0124078417.00001
Execute99308032020-04-23 20:13:201727 days ago1587672800IN
0x6D4090DB...6811671f0
0 ETH0.000683583.00001
Execute99057022020-04-19 23:03:351731 days ago1587337415IN
0x6D4090DB...6811671f0
0 ETH0.000282571.2000001
Execute99035532020-04-19 14:58:371731 days ago1587308317IN
0x6D4090DB...6811671f0
0 ETH0.002210713.05818181
Execute99032922020-04-19 13:58:311731 days ago1587304711IN
0x6D4090DB...6811671f0
0 ETH0.002526493.50001
Execute99032782020-04-19 13:55:311731 days ago1587304531IN
0x6D4090DB...6811671f0
0 ETH0.000704093.500001
Execute97931792020-04-02 14:44:111748 days ago1585838651IN
0x6D4090DB...6811671f0
0 ETH0.000201161.0000001
Execute97369282020-03-24 22:54:151757 days ago1585090455IN
0x6D4090DB...6811671f0
0 ETH0.000201151.000001
Execute97368622020-03-24 22:41:151757 days ago1585089675IN
0x6D4090DB...6811671f0
0 ETH0.000250881.0000001
Execute97368512020-03-24 22:39:571757 days ago1585089597IN
0x6D4090DB...6811671f0
0 ETH0.002299751.000001
Execute96582002020-03-12 18:03:411769 days ago1584036221IN
0x6D4090DB...6811671f0
2 ETH0.0079571460.5
Execute96564362020-03-12 11:27:411770 days ago1584012461IN
0x6D4090DB...6811671f0
2 ETH0.0094102465
Execute96442342020-03-10 14:19:241771 days ago1583849964IN
0x6D4090DB...6811671f0
0 ETH0.003525725.000001
Execute96362162020-03-09 8:38:511773 days ago1583743131IN
0x6D4090DB...6811671f0
4 ETH0.000148441.00001
Execute96341592020-03-09 0:48:541773 days ago1583714934IN
0x6D4090DB...6811671f0
1.5 ETH0.000723875.0001
Execute96341282020-03-09 0:41:311773 days ago1583714491IN
0x6D4090DB...6811671f0
2 ETH0.0017813112
Execute95669692020-02-27 17:19:261783 days ago1582823966IN
0x6D4090DB...6811671f0
0 ETH0.002278393.3000011
Execute95566612020-02-26 3:23:201785 days ago1582687400IN
0x6D4090DB...6811671f0
0 ETH0.001965823.00001
Execute95564812020-02-26 2:43:131785 days ago1582684993IN
0x6D4090DB...6811671f0
0 ETH0.0007973.0001
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
100796762020-05-16 22:01:591704 days ago1589666519
0x6D4090DB...6811671f0
2 ETH
99738402020-04-30 12:09:361720 days ago1588248576
0x6D4090DB...6811671f0
4.5 ETH
99738402020-04-30 12:09:361720 days ago1588248576
0x6D4090DB...6811671f0
4.5 ETH
99035532020-04-19 14:58:371731 days ago1587308317
0x6D4090DB...6811671f0
2.91 ETH
99035532020-04-19 14:58:371731 days ago1587308317
0x6D4090DB...6811671f0
2.91 ETH
99032922020-04-19 13:58:311731 days ago1587304711
0x6D4090DB...6811671f0
5 ETH
99032922020-04-19 13:58:311731 days ago1587304711
0x6D4090DB...6811671f0
5 ETH
97368512020-03-24 22:39:571757 days ago1585089597
0x6D4090DB...6811671f0
17.35754609 ETH
97368512020-03-24 22:39:571757 days ago1585089597
0x6D4090DB...6811671f0
17.35754609 ETH
96582002020-03-12 18:03:411769 days ago1584036221
0x6D4090DB...6811671f0
2 ETH
96564362020-03-12 11:27:411770 days ago1584012461
0x6D4090DB...6811671f0
2 ETH
96362162020-03-09 8:38:511773 days ago1583743131
0x6D4090DB...6811671f0
4 ETH
96341592020-03-09 0:48:541773 days ago1583714934
0x6D4090DB...6811671f0
1.5 ETH
96341282020-03-09 0:41:311773 days ago1583714491
0x6D4090DB...6811671f0
2 ETH
95564492020-02-26 2:37:231785 days ago1582684643
0x6D4090DB...6811671f0
3.5 ETH
94974902020-02-17 0:46:221794 days ago1581900382
0x6D4090DB...6811671f0
5.45383257 ETH
94974902020-02-17 0:46:221794 days ago1581900382
0x6D4090DB...6811671f0
5.45383257 ETH
93736102020-01-28 23:47:471813 days ago1580255267
0x6D4090DB...6811671f0
3 ETH
92302232020-01-07 0:28:271835 days ago1578356907
0x6D4090DB...6811671f0
0.065 ETH
91477712019-12-22 22:29:511850 days ago1577053791
0x6D4090DB...6811671f0
0.07543992 ETH
91477712019-12-22 22:29:511850 days ago1577053791
0x6D4090DB...6811671f0
0.07543992 ETH
91477552019-12-22 22:25:261850 days ago1577053526
0x6D4090DB...6811671f0
0.11304742 ETH
91477552019-12-22 22:25:261850 days ago1577053526
0x6D4090DB...6811671f0
0.11304742 ETH
91331502019-12-20 0:32:471853 days ago1576801967
0x6D4090DB...6811671f0
0.34 ETH
91331502019-12-20 0:32:471853 days ago1576801967
0x6D4090DB...6811671f0
0.34 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.