ETH Price: $3,292.46 (+1.31%)
Gas: 2 Gwei

Contract

0xdbBc0936a867487d3CF6cF3ae968B1C8f17F2a76
 
Transaction Hash
Method
Block
From
To
Cast147711572022-05-14 2:48:13805 days ago1652496493IN
0xdbBc0936...8f17F2a76
0 ETH0.0732133535
Cast128239322021-07-14 7:56:451109 days ago1626249405IN
0xdbBc0936...8f17F2a76
0 ETH0.006627228
Cast126302362021-06-14 3:42:461139 days ago1623642166IN
0xdbBc0936...8f17F2a76
0 ETH0.0026513811
Cast122996942021-04-24 0:27:011190 days ago1619224021IN
0xdbBc0936...8f17F2a76
0 ETH0.007068971
Cast122470032021-04-15 21:02:011198 days ago1618520521IN
0xdbBc0936...8f17F2a76
0 ETH0.0221752292
Cast119572192021-03-02 6:37:471243 days ago1614667067IN
0xdbBc0936...8f17F2a76
0 ETH0.0085362100
Cast119571892021-03-02 6:29:431243 days ago1614666583IN
0xdbBc0936...8f17F2a76
0 ETH0.0265835100
Cast117755452021-02-02 7:47:431271 days ago1612252063IN
0xdbBc0936...8f17F2a76
0 ETH0.017499149
Cast117232742021-01-25 6:45:441279 days ago1611557144IN
0xdbBc0936...8f17F2a76
0 ETH0.0190666264
Cast115579592020-12-30 21:49:421304 days ago1609364982IN
0xdbBc0936...8f17F2a76
0 ETH0.0061465860
Cast115381222020-12-27 20:52:181307 days ago1609102338IN
0xdbBc0936...8f17F2a76
0 ETH0.0121653843
Cast113231522020-11-24 20:19:001340 days ago1606249140IN
0xdbBc0936...8f17F2a76
0 ETH0.0415877736
Cast113231452020-11-24 20:17:301340 days ago1606249050IN
0xdbBc0936...8f17F2a76
0 ETH0.0128470430.8
Cast112582312020-11-14 21:18:061350 days ago1605388686IN
0xdbBc0936...8f17F2a76
0 ETH0.001937816.5
Cast112295602020-11-10 11:32:481355 days ago1605007968IN
0xdbBc0936...8f17F2a76
0 ETH0.0061946824
Cast108426562020-09-11 20:03:181414 days ago1599854598IN
0xdbBc0936...8f17F2a76
0 ETH0.1152203179
Cast108426462020-09-11 20:00:361414 days ago1599854436IN
0xdbBc0936...8f17F2a76
0 ETH0.2484395979
Cast107479732020-08-28 8:05:111429 days ago1598601911IN
0xdbBc0936...8f17F2a76
0 ETH0.0260122256
Cast107479402020-08-28 7:57:511429 days ago1598601471IN
0xdbBc0936...8f17F2a76
0 ETH0.0500291470
Cast106981042020-08-20 16:18:361436 days ago1597940316IN
0xdbBc0936...8f17F2a76
0 ETH0.03874431113
Cast106963232020-08-20 9:45:561437 days ago1597916756IN
0xdbBc0936...8f17F2a76
0 ETH0.0643231890
Cast106442022020-08-12 9:08:261445 days ago1597223306IN
0xdbBc0936...8f17F2a76
0 ETH0.0661708200
Cast106441582020-08-12 8:59:021445 days ago1597222742IN
0xdbBc0936...8f17F2a76
0 ETH0.1429404200
Cast105902382020-08-04 1:04:271453 days ago1596503067IN
0xdbBc0936...8f17F2a76
0 ETH0.0140576741
Cast105902112020-08-04 0:57:271453 days ago1596502647IN
0xdbBc0936...8f17F2a76
0 ETH0.0293027841
View all transactions

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
106981042020-08-20 16:18:361436 days ago1597940316
0xdbBc0936...8f17F2a76
2.46894181 ETH
106442022020-08-12 9:08:261445 days ago1597223306
0xdbBc0936...8f17F2a76
3.29003034 ETH
105902382020-08-04 1:04:271453 days ago1596503067
0xdbBc0936...8f17F2a76
0.37905775 ETH
105796062020-08-02 9:36:311455 days ago1596360991
0xdbBc0936...8f17F2a76
0.64101123 ETH
105626342020-07-30 18:54:181457 days ago1596135258
0xdbBc0936...8f17F2a76
6.53174148 ETH
104001672020-07-05 15:17:101482 days ago1593962230
0xdbBc0936...8f17F2a76
0.92950307 ETH
103920132020-07-04 9:01:391484 days ago1593853299
0xdbBc0936...8f17F2a76
2.20355729 ETH
103072662020-06-21 5:36:221497 days ago1592717782  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.