ETH Price: $4,049.78 (+5.03%)

Contract

0x20dB1558F76d8e7606E82E4DFB0C7296138Ce2B8
 
Transaction Hash
Method
Block
From
To
Cast148133052022-05-20 21:06:09941 days ago1653080769IN
0x20dB1558...6138Ce2B8
0 ETH0.002280728.88762622
Cast148086332022-05-20 2:56:23941 days ago1653015383IN
0x20dB1558...6138Ce2B8
0 ETH0.0113133932.77621755
Cast115392962020-12-28 1:14:191449 days ago1609118059IN
0x20dB1558...6138Ce2B8
0 ETH0.006654360
Cast115392392020-12-28 1:01:451449 days ago1609117305IN
0x20dB1558...6138Ce2B8
0 ETH0.0321654894
Cast115392292020-12-28 0:59:381449 days ago1609117178IN
0x20dB1558...6138Ce2B8
0 ETH0.00902794
Cast115392082020-12-28 0:55:211449 days ago1609116921IN
0x20dB1558...6138Ce2B8
0 ETH0.0258433387.3
Cast115391792020-12-28 0:47:361449 days ago1609116456IN
0x20dB1558...6138Ce2B8
0 ETH0.0860989104.5
Cast115391722020-12-28 0:45:361449 days ago1609116336IN
0x20dB1558...6138Ce2B8
0 ETH0.07853648110
Cast115389592020-12-27 23:57:581449 days ago1609113478IN
0x20dB1558...6138Ce2B8
0 ETH0.0063435454
Cast115354312020-12-27 10:58:281450 days ago1609066708IN
0x20dB1558...6138Ce2B8
0 ETH0.0167660442.9
Cast114866762020-12-19 23:30:281457 days ago1608420628IN
0x20dB1558...6138Ce2B8
0 ETH0.00298628
Cast114866722020-12-19 23:29:431457 days ago1608420583IN
0x20dB1558...6138Ce2B8
0 ETH0.0022667123.00000145
Cast114866412020-12-19 23:21:411457 days ago1608420101IN
0x20dB1558...6138Ce2B8
0 ETH0.0108945923.00000145
Cast114866362020-12-19 23:20:411457 days ago1608420041IN
0x20dB1558...6138Ce2B8
0 ETH0.0086189223.00000145
Cast114739812020-12-18 0:40:271459 days ago1608252027IN
0x20dB1558...6138Ce2B8
0 ETH0.0099900282.12573164
Cast114739752020-12-18 0:39:191459 days ago1608251959IN
0x20dB1558...6138Ce2B8
0 ETH0.0319085582.12573164
Cast114025842020-12-07 1:08:571470 days ago1607303337IN
0x20dB1558...6138Ce2B8
0 ETH0.0272873916.305
Cast114021742020-12-06 23:36:121470 days ago1607297772IN
0x20dB1558...6138Ce2B8
0 ETH0.0238126420
Cast114021592020-12-06 23:34:231470 days ago1607297663IN
0x20dB1558...6138Ce2B8
0 ETH0.0317980424.1
Cast113913332020-12-05 7:38:401472 days ago1607153920IN
0x20dB1558...6138Ce2B8
0 ETH0.0273770416.00000145
Cast113696162020-12-01 23:23:301475 days ago1606865010IN
0x20dB1558...6138Ce2B8
0 ETH0.0027977823.00000134
Cast113696062020-12-01 23:21:031475 days ago1606864863IN
0x20dB1558...6138Ce2B8
0 ETH0.0085947523.00000134
Cast113644862020-12-01 4:29:361476 days ago1606796976IN
0x20dB1558...6138Ce2B8
0 ETH0.007134363.00000156
Cast113644862020-12-01 4:29:361476 days ago1606796976IN
0x20dB1558...6138Ce2B8
0 ETH0.007663563
Cast113644502020-12-01 4:21:411476 days ago1606796501IN
0x20dB1558...6138Ce2B8
0 ETH0.0267571763
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
148133052022-05-20 21:06:09941 days ago1653080769
0x20dB1558...6138Ce2B8
0.17 ETH
148086332022-05-20 2:56:23941 days ago1653015383
0x20dB1558...6138Ce2B8
0.17 ETH
115392292020-12-28 0:59:381449 days ago1609117178
0x20dB1558...6138Ce2B8
8.0067608 ETH
115392082020-12-28 0:55:211449 days ago1609116921
0x20dB1558...6138Ce2B8
8.0067608 ETH
115391722020-12-28 0:45:361449 days ago1609116336
0x20dB1558...6138Ce2B8
7.8 ETH
115391722020-12-28 0:45:361449 days ago1609116336
0x20dB1558...6138Ce2B8
7.8 ETH
114025842020-12-07 1:08:571470 days ago1607303337
0x20dB1558...6138Ce2B8
16.13 ETH
114025842020-12-07 1:08:571470 days ago1607303337
0x20dB1558...6138Ce2B8
16.13 ETH
114025842020-12-07 1:08:571470 days ago1607303337
0x20dB1558...6138Ce2B8
16.13 ETH
114025842020-12-07 1:08:571470 days ago1607303337
0x20dB1558...6138Ce2B8
16.13 ETH
114021742020-12-06 23:36:121470 days ago1607297772
0x20dB1558...6138Ce2B8
5.49443283 ETH
114021742020-12-06 23:36:121470 days ago1607297772
0x20dB1558...6138Ce2B8
5.49443283 ETH
114021592020-12-06 23:34:231470 days ago1607297663
0x20dB1558...6138Ce2B8
6.62835743 ETH
114021592020-12-06 23:34:231470 days ago1607297663
0x20dB1558...6138Ce2B8
6.62835743 ETH
113913332020-12-05 7:38:401472 days ago1607153920
0x20dB1558...6138Ce2B8
12 ETH
113913332020-12-05 7:38:401472 days ago1607153920
0x20dB1558...6138Ce2B8
12 ETH
113913332020-12-05 7:38:401472 days ago1607153920
0x20dB1558...6138Ce2B8
12 ETH
113913332020-12-05 7:38:401472 days ago1607153920
0x20dB1558...6138Ce2B8
12 ETH
113311422020-11-26 1:51:421481 days ago1606355502
0x20dB1558...6138Ce2B8
32.01291515 ETH
113311422020-11-26 1:51:421481 days ago1606355502
0x20dB1558...6138Ce2B8
32.01291515 ETH
105926262020-08-04 10:08:071595 days ago1596535687
0x20dB1558...6138Ce2B8
3.95410062 ETH
105920602020-08-04 8:02:451595 days ago1596528165
0x20dB1558...6138Ce2B8
2.67286399 ETH
105919812020-08-04 7:42:441595 days ago1596526964
0x20dB1558...6138Ce2B8
1.28123663 ETH
105795312020-08-02 9:17:591597 days ago1596359879
0x20dB1558...6138Ce2B8
20 ETH
105324282020-07-26 2:46:441604 days ago1595731604
0x20dB1558...6138Ce2B8
1 ETH
View All Internal Transactions
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.