ETH Price: $2,630.42 (-1.51%)
Gas: 1 Gwei

Contract

0x165082054A3Bcadb51F168fb5B941Db46E107973
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cast124208072021-05-12 17:05:531185 days ago1620839153IN
0x16508205...46E107973
0 ETH0.02042197235
Cast124199042021-05-12 13:39:191185 days ago1620826759IN
0x16508205...46E107973
0 ETH0.0286171302.5
Cast124017182021-05-09 18:14:251188 days ago1620584065IN
0x16508205...46E107973
0 ETH0.0160953467
Cast119361042021-02-27 0:24:121260 days ago1614385452IN
0x16508205...46E107973
0 ETH0.00859181109
Cast119360942021-02-27 0:21:181260 days ago1614385278IN
0x16508205...46E107973
0 ETH0.00834861108
Cast119360932021-02-27 0:21:151260 days ago1614385275IN
0x16508205...46E107973
0 ETH0.01864198108
Cast119360792021-02-27 0:17:541260 days ago1614385074IN
0x16508205...46E107973
0 ETH0.01877217106
Cast119360412021-02-27 0:09:271260 days ago1614384567IN
0x16508205...46E107973
0 ETH0.02970221103
Cast119360382021-02-27 0:08:521260 days ago1614384532IN
0x16508205...46E107973
0 ETH0.02979079103
Cast119359942021-02-26 23:58:111260 days ago1614383891IN
0x16508205...46E107973
0 ETH0.0253439486
Cast119359942021-02-26 23:58:111260 days ago1614383891IN
0x16508205...46E107973
0 ETH0.0254367386
Cast119191642021-02-24 10:02:131262 days ago1614160933IN
0x16508205...46E107973
0 ETH0.00861275125
Cast119191532021-02-24 9:59:501262 days ago1614160790IN
0x16508205...46E107973
0 ETH0.01012656131
Cast119191502021-02-24 9:59:361262 days ago1614160776IN
0x16508205...46E107973
0 ETH0.03218211131
Cast119191382021-02-24 9:57:271262 days ago1614160647IN
0x16508205...46E107973
0 ETH0.01770347131
Cast119118912021-02-23 7:22:011264 days ago1614064921IN
0x16508205...46E107973
0 ETH0.08149642259.00000145
Cast118992662021-02-21 8:43:281265 days ago1613897008IN
0x16508205...46E107973
0 ETH0.00671485105.00000134
Cast118958292021-02-20 19:55:431266 days ago1613850943IN
0x16508205...46E107973
0 ETH0.03042589178
Cast118956832021-02-20 19:21:411266 days ago1613848901IN
0x16508205...46E107973
0 ETH0.02959586140
Transfer118954062021-02-20 18:25:191266 days ago1613845519IN
0x16508205...46E107973
0.5 ETH0.00322817148
Cast118950502021-02-20 17:07:301266 days ago1613840850IN
0x16508205...46E107973
0 ETH0.06007581202
Cast118939002021-02-20 12:49:231266 days ago1613825363IN
0x16508205...46E107973
0 ETH0.00897148144
Cast118938732021-02-20 12:41:431266 days ago1613824903IN
0x16508205...46E107973
0 ETH0.04450439147
Cast118938562021-02-20 12:39:231266 days ago1613824763IN
0x16508205...46E107973
0 ETH0.05861793156
Cast118936132021-02-20 11:38:491266 days ago1613821129IN
0x16508205...46E107973
0 ETH0.00812177127
View all transactions

Latest 7 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
118992662021-02-21 8:43:281265 days ago1613897008
0x16508205...46E107973
0.09998728 ETH
118956832021-02-20 19:21:411266 days ago1613848901
0x16508205...46E107973
0.40001271 ETH
118936132021-02-20 11:38:491266 days ago1613821129
0x16508205...46E107973
1.9 ETH
118935932021-02-20 11:35:591266 days ago1613820959
0x16508205...46E107973
1.8 ETH
118934812021-02-20 11:09:361266 days ago1613819376
0x16508205...46E107973
1.8 ETH
118933082021-02-20 10:29:311266 days ago1613816971
0x16508205...46E107973
0.4 ETH
118902652021-02-19 23:10:431267 days ago1613776243  Contract Creation0 ETH
Loading...
Loading

Minimal Proxy Contract for 0x939daad09fc4a9b8f8a9352a485dab2df4f4b3f8

Contract Name:
InstaAccount

Compiler Version
v0.6.0+commit.26b70077

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-03-26
*/

pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;

/**
 * @title InstaAccount.
 * @dev DeFi Smart Account Wallet.
 */

interface IndexInterface {
    function connectors(uint version) external view returns (address);
    function check(uint version) external view returns (address);
    function list() external view returns (address);
}

interface ConnectorsInterface {
    function isConnector(address[] calldata logicAddr) external view returns (bool);
    function isStaticConnector(address[] calldata logicAddr) external view returns (bool);
}

interface CheckInterface {
    function isOk() external view returns (bool);
}

interface ListInterface {
    function addAuth(address user) external;
    function removeAuth(address user) external;
}


contract Record {

    event LogEnable(address indexed user);
    event LogDisable(address indexed user);
    event LogSwitchShield(bool _shield);

    // InstaIndex Address.
    address public constant instaIndex = 0x2971AdFa57b20E5a416aE5a708A8655A9c74f723;
    // The Account Module Version.
    uint public constant version = 1;
    // Auth Module(Address of Auth => bool).
    mapping (address => bool) private auth;
    // Is shield true/false.
    bool public shield;

    /**
     * @dev Check for Auth if enabled.
     * @param user address/user/owner.
     */
    function isAuth(address user) public view returns (bool) {
        return auth[user];
    }

    /**
     * @dev Change Shield State.
    */
    function switchShield(bool _shield) external {
        require(auth[msg.sender], "not-self");
        require(shield != _shield, "shield is set");
        shield = _shield;
        emit LogSwitchShield(shield);
    }

    /**
     * @dev Enable New User.
     * @param user Owner of the Smart Account.
    */
    function enable(address user) public {
        require(msg.sender == address(this) || msg.sender == instaIndex, "not-self-index");
        require(user != address(0), "not-valid");
        require(!auth[user], "already-enabled");
        auth[user] = true;
        ListInterface(IndexInterface(instaIndex).list()).addAuth(user);
        emit LogEnable(user);
    }

    /**
     * @dev Disable User.
     * @param user Owner of the Smart Account.
    */
    function disable(address user) public {
        require(msg.sender == address(this), "not-self");
        require(user != address(0), "not-valid");
        require(auth[user], "already-disabled");
        delete auth[user];
        ListInterface(IndexInterface(instaIndex).list()).removeAuth(user);
        emit LogDisable(user);
    }

}

contract InstaAccount is Record {

    event LogCast(address indexed origin, address indexed sender, uint value);

    receive() external payable {}

     /**
     * @dev Delegate the calls to Connector And this function is ran by cast().
     * @param _target Target to of Connector.
     * @param _data CallData of function in Connector.
    */
    function spell(address _target, bytes memory _data) internal {
        require(_target != address(0), "target-invalid");
        assembly {
            let succeeded := delegatecall(gas(), _target, add(_data, 0x20), mload(_data), 0, 0)

            switch iszero(succeeded)
                case 1 {
                    // throw if delegatecall failed
                    let size := returndatasize()
                    returndatacopy(0x00, 0x00, size)
                    revert(0x00, size)
                }
        }
    }

    /**
     * @dev This is the main function, Where all the different functions are called
     * from Smart Account.
     * @param _targets Array of Target(s) to of Connector.
     * @param _datas Array of Calldata(S) of function.
    */
    function cast(
        address[] calldata _targets,
        bytes[] calldata _datas,
        address _origin
    )
    external
    payable
    {
        require(isAuth(msg.sender) || msg.sender == instaIndex, "permission-denied");
        require(_targets.length == _datas.length , "array-length-invalid");
        IndexInterface indexContract = IndexInterface(instaIndex);
        bool isShield = shield;
        if (!isShield) {
            require(ConnectorsInterface(indexContract.connectors(version)).isConnector(_targets), "not-connector");
        } else {
            require(ConnectorsInterface(indexContract.connectors(version)).isStaticConnector(_targets), "not-static-connector");
        }
        for (uint i = 0; i < _targets.length; i++) {
            spell(_targets[i], _datas[i]);
        }
        address _check = indexContract.check(version);
        if (_check != address(0) && !isShield) require(CheckInterface(_check).isOk(), "not-ok");
        emit LogCast(_origin, msg.sender, msg.value);
    }

}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"origin","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LogCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"LogDisable","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"LogEnable","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_shield","type":"bool"}],"name":"LogSwitchShield","type":"event"},{"inputs":[{"internalType":"address[]","name":"_targets","type":"address[]"},{"internalType":"bytes[]","name":"_datas","type":"bytes[]"},{"internalType":"address","name":"_origin","type":"address"}],"name":"cast","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"instaIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isAuth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shield","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_shield","type":"bool"}],"name":"switchShield","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

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.