ETH Price: $3,465.96 (+0.89%)

Contract

0x6C3367D7627f1D21E7A4D5C86ACdc6f6a1911c0C
 
Transaction Hash
Method
Block
From
To
Cast161395622022-12-08 11:01:47743 days ago1670497307IN
0x6C3367D7...6a1911c0C
0 ETH0.0016361515.99334441
Cast161395472022-12-08 10:58:47743 days ago1670497127IN
0x6C3367D7...6a1911c0C
0 ETH0.0066071916.43098743
Cast119846462021-03-06 11:40:051385 days ago1615030805IN
0x6C3367D7...6a1911c0C
0 ETH0.0039969362.5
Cast119845622021-03-06 11:22:361385 days ago1615029756IN
0x6C3367D7...6a1911c0C
0 ETH0.0183716863.3
Cast119845352021-03-06 11:16:461385 days ago1615029406IN
0x6C3367D7...6a1911c0C
0 ETH0.0168765365
Cast119467212021-02-28 15:42:071391 days ago1614526927IN
0x6C3367D7...6a1911c0C
0 ETH0.00782858123.00000145
Cast119467122021-02-28 15:40:481391 days ago1614526848IN
0x6C3367D7...6a1911c0C
0 ETH0.03768883117.7
Cast106799812020-08-17 21:29:211585 days ago1597699761IN
0x6C3367D7...6a1911c0C
0 ETH0.0075885877
Cast106672212020-08-15 22:05:111587 days ago1597529111IN
0x6C3367D7...6a1911c0C
0 ETH0.0086045680
Cast106671622020-08-15 21:49:581587 days ago1597528198IN
0x6C3367D7...6a1911c0C
0 ETH0.0180022882
Cast106608232020-08-14 22:26:191588 days ago1597443979IN
0x6C3367D7...6a1911c0C
0 ETH0.29789892110
Cast106156622020-08-07 23:21:361595 days ago1596842496IN
0x6C3367D7...6a1911c0C
0 ETH0.1472463149.5
Cast106023882020-08-05 22:14:181597 days ago1596665658IN
0x6C3367D7...6a1911c0C
0 ETH0.0062773233
Cast106023752020-08-05 22:11:021597 days ago1596665462IN
0x6C3367D7...6a1911c0C
0 ETH0.0074331134.00000025
Cast106015732020-08-05 19:14:231598 days ago1596654863IN
0x6C3367D7...6a1911c0C
0 ETH0.045522833
Cast106015492020-08-05 19:07:361598 days ago1596654456IN
0x6C3367D7...6a1911c0C
0 ETH0.0030308731
Cast105826322020-08-02 20:51:571600 days ago1596401517IN
0x6C3367D7...6a1911c0C
0 ETH0.1105147240
Cast105765312020-08-01 22:11:241601 days ago1596319884IN
0x6C3367D7...6a1911c0C
0 ETH0.0039669639.6
Cast105765172020-08-01 22:08:061601 days ago1596319686IN
0x6C3367D7...6a1911c0C
0 ETH0.0243204345
Cast105726402020-08-01 7:58:461602 days ago1596268726IN
0x6C3367D7...6a1911c0C
0 ETH0.015558240
Cast105724922020-08-01 7:30:501602 days ago1596267050IN
0x6C3367D7...6a1911c0C
0 ETH0.1534617354
Cast105704142020-07-31 23:42:131602 days ago1596238933IN
0x6C3367D7...6a1911c0C
0 ETH0.1766147842
Cast105703822020-07-31 23:37:411602 days ago1596238661IN
0x6C3367D7...6a1911c0C
0 ETH0.0083697644
Cast105703632020-07-31 23:31:431602 days ago1596238303IN
0x6C3367D7...6a1911c0C
0 ETH0.0562722644
Cast105661092020-07-31 7:58:401603 days ago1596182320IN
0x6C3367D7...6a1911c0C
0 ETH0.1062198877
View all transactions

Latest 11 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
119846462021-03-06 11:40:051385 days ago1615030805
0x6C3367D7...6a1911c0C
1.00390506 ETH
119845622021-03-06 11:22:361385 days ago1615029756
0x6C3367D7...6a1911c0C
1.00390506 ETH
119467212021-02-28 15:42:071391 days ago1614526927
0x6C3367D7...6a1911c0C
2 ETH
119467122021-02-28 15:40:481391 days ago1614526848
0x6C3367D7...6a1911c0C
2 ETH
105765312020-08-01 22:11:241601 days ago1596319884
0x6C3367D7...6a1911c0C
3.54301386 ETH
105765172020-08-01 22:08:061601 days ago1596319686
0x6C3367D7...6a1911c0C
3.54301386 ETH
105087452020-07-22 10:46:431612 days ago1595414803
0x6C3367D7...6a1911c0C
2 ETH
105087452020-07-22 10:46:431612 days ago1595414803
0x6C3367D7...6a1911c0C
2 ETH
103251812020-06-24 0:10:181640 days ago1592957418
0x6C3367D7...6a1911c0C
2 ETH
103250242020-06-23 23:37:031640 days ago1592955423
0x6C3367D7...6a1911c0C
3 ETH
103249592020-06-23 23:21:501640 days ago1592954510  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.