ETH Price: $2,020.64 (-2.61%)

Contract

0x803Ae3Fbe787c5DcBCd8b94b100aa31349370E27
 
Transaction Hash
Method
Block
From
To
Cast126486452021-06-17 0:11:411379 days ago1623888701IN
0x803Ae3Fb...349370E27
0 ETH0.0151866216
Cast123836332021-05-06 23:07:531420 days ago1620342473IN
0x803Ae3Fb...349370E27
0 ETH0.0048160161
Cast123836202021-05-06 23:05:321420 days ago1620342332IN
0x803Ae3Fb...349370E27
0 ETH0.0364811761
Cast123835932021-05-06 22:58:571420 days ago1620341937IN
0x803Ae3Fb...349370E27
0 ETH0.013158350
Cast123835362021-05-06 22:43:571420 days ago1620341037IN
0x803Ae3Fb...349370E27
0 ETH0.0252641246
Cast123835202021-05-06 22:40:411420 days ago1620340841IN
0x803Ae3Fb...349370E27
0 ETH0.0118649544
Cast123835022021-05-06 22:36:571420 days ago1620340617IN
0x803Ae3Fb...349370E27
0 ETH0.0217652752
Cast123782942021-05-06 3:21:411420 days ago1620271301IN
0x803Ae3Fb...349370E27
0 ETH0.0044796342
Cast123782362021-05-06 3:06:071420 days ago1620270367IN
0x803Ae3Fb...349370E27
0 ETH0.0160514145
Cast123552142021-05-02 14:07:561424 days ago1619964476IN
0x803Ae3Fb...349370E27
0 ETH0.0036914840
Cast123552112021-05-02 14:06:551424 days ago1619964415IN
0x803Ae3Fb...349370E27
0 ETH0.013216240
Cast123552062021-05-02 14:05:341424 days ago1619964334IN
0x803Ae3Fb...349370E27
0 ETH0.0143790135
Cast123509842021-05-01 22:13:571425 days ago1619907237IN
0x803Ae3Fb...349370E27
0 ETH0.0024869531.5
Cast123491742021-05-01 15:43:221425 days ago1619883802IN
0x803Ae3Fb...349370E27
0 ETH0.0086287432.90000023
Cast123474202021-05-01 9:19:271425 days ago1619860767IN
0x803Ae3Fb...349370E27
0 ETH0.0136496533
Cast123462232021-05-01 4:42:581425 days ago1619844178IN
0x803Ae3Fb...349370E27
0 ETH0.002122226.88
Cast123462002021-05-01 4:37:231425 days ago1619843843IN
0x803Ae3Fb...349370E27
0 ETH0.0061127826.88
Cast123461832021-05-01 4:33:241425 days ago1619843604IN
0x803Ae3Fb...349370E27
0 ETH0.0111699827
Cast123216762021-04-27 9:45:541429 days ago1619516754IN
0x803Ae3Fb...349370E27
0 ETH0.0146594745
Cast123216112021-04-27 9:31:241429 days ago1619515884IN
0x803Ae3Fb...349370E27
0 ETH0.0095266840
Cast123210032021-04-27 7:25:541429 days ago1619508354IN
0x803Ae3Fb...349370E27
0 ETH0.0160704139
Cast123208592021-04-27 6:50:361429 days ago1619506236IN
0x803Ae3Fb...349370E27
0 ETH0.0120533437
Cast123208452021-04-27 6:46:581429 days ago1619506018IN
0x803Ae3Fb...349370E27
0 ETH0.0266836439
Cast123208292021-04-27 6:43:191429 days ago1619505799IN
0x803Ae3Fb...349370E27
0 ETH0.0157177838
Cast123207952021-04-27 6:35:191429 days ago1619505319IN
0x803Ae3Fb...349370E27
0 ETH0.0120003135
View all transactions

Latest 19 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-123836332021-05-06 23:07:531420 days ago1620342473
0x803Ae3Fb...349370E27
62.5652 ETH
-123836202021-05-06 23:05:321420 days ago1620342332
0x803Ae3Fb...349370E27
52.3262 ETH
-123835932021-05-06 22:58:571420 days ago1620341937
0x803Ae3Fb...349370E27
34.761 ETH
-123835362021-05-06 22:43:571420 days ago1620341037
0x803Ae3Fb...349370E27
45 ETH
-123835202021-05-06 22:40:411420 days ago1620340841
0x803Ae3Fb...349370E27
37 ETH
-123835022021-05-06 22:36:571420 days ago1620340617
0x803Ae3Fb...349370E27
37 ETH
-123509842021-05-01 22:13:571425 days ago1619907237
0x803Ae3Fb...349370E27
7.00275762 ETH
-123491742021-05-01 15:43:221425 days ago1619883802
0x803Ae3Fb...349370E27
7.00275762 ETH
-123462232021-05-01 4:42:581425 days ago1619844178
0x803Ae3Fb...349370E27
7.03841934 ETH
-123462002021-05-01 4:37:231425 days ago1619843843
0x803Ae3Fb...349370E27
7.03841934 ETH
-123216762021-04-27 9:45:541429 days ago1619516754
0x803Ae3Fb...349370E27
13.6855817 ETH
-123216112021-04-27 9:31:241429 days ago1619515884
0x803Ae3Fb...349370E27
13.6855817 ETH
-123208592021-04-27 6:50:361429 days ago1619506236
0x803Ae3Fb...349370E27
19.51979963 ETH
-123208452021-04-27 6:46:581429 days ago1619506018
0x803Ae3Fb...349370E27
19.51979963 ETH
-123207952021-04-27 6:35:191429 days ago1619505319
0x803Ae3Fb...349370E27
37.13078165 ETH
-123207772021-04-27 6:32:441429 days ago1619505164
0x803Ae3Fb...349370E27
37.13078165 ETH
-123207142021-04-27 6:21:171429 days ago1619504477
0x803Ae3Fb...349370E27
64 ETH
-123205652021-04-27 5:45:371429 days ago1619502337  Contract Creation0 ETH
-123205202021-04-27 5:34:411429 days ago1619501681  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

API
[{"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.