ETH Price: $2,346.70 (-4.21%)

Contract

0x36a870B0e03046761D8223a5e26f7B28Bd6E6119
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cast106695222020-08-16 6:37:251509 days ago1597559845IN
0x36a870B0...8Bd6E6119
0 ETH0.0123006582
Cast106475672020-08-12 21:22:591512 days ago1597267379IN
0x36a870B0...8Bd6E6119
0 ETH0.02614593261
Cast106475472020-08-12 21:18:351512 days ago1597267115IN
0x36a870B0...8Bd6E6119
0 ETH0.28593985261
Cast105907912020-08-04 3:04:331521 days ago1596510273IN
0x36a870B0...8Bd6E6119
0 ETH0.005700338
Cast105894982020-08-03 22:19:561521 days ago1596493196IN
0x36a870B0...8Bd6E6119
0 ETH0.040057336
Cast105894702020-08-03 22:14:241521 days ago1596492864IN
0x36a870B0...8Bd6E6119
0 ETH0.0095937836
Transfer105894322020-08-03 22:06:321521 days ago1596492392IN
0x36a870B0...8Bd6E6119
43.5 ETH0.0010447947.9
Cast105691512020-07-31 19:09:441524 days ago1596222584IN
0x36a870B0...8Bd6E6119
0 ETH0.0058158954.07268443
Cast105691382020-07-31 19:07:451524 days ago1596222465IN
0x36a870B0...8Bd6E6119
0 ETH0.0178754451
Cast105662992020-07-31 8:36:171525 days ago1596184577IN
0x36a870B0...8Bd6E6119
0 ETH0.0175709261.00000145
Cast105659342020-07-31 7:18:151525 days ago1596179895IN
0x36a870B0...8Bd6E6119
0 ETH0.0076573365.835
Cast105659072020-07-31 7:12:511525 days ago1596179571IN
0x36a870B0...8Bd6E6119
0 ETH0.0729793260
Cast105383192020-07-27 0:28:551529 days ago1595809735IN
0x36a870B0...8Bd6E6119
0 ETH0.0054003436.00035569
Cast105383122020-07-27 0:26:421529 days ago1595809602IN
0x36a870B0...8Bd6E6119
0 ETH0.0176333134
Cast105361782020-07-26 16:29:411529 days ago1595780981IN
0x36a870B0...8Bd6E6119
0 ETH0.1011655988
Cast105361692020-07-26 16:26:491529 days ago1595780809IN
0x36a870B0...8Bd6E6119
0 ETH0.022863888
Cast105255892020-07-25 0:57:491531 days ago1595638669IN
0x36a870B0...8Bd6E6119
0 ETH0.0073534260
Cast105255842020-07-25 0:57:141531 days ago1595638634IN
0x36a870B0...8Bd6E6119
0 ETH0.0720793260
Cast105177902020-07-23 20:15:571532 days ago1595535357IN
0x36a870B0...8Bd6E6119
0 ETH0.0044348845
Cast105177572020-07-23 20:08:571532 days ago1595534937IN
0x36a870B0...8Bd6E6119
0 ETH0.080102350
Cast105132712020-07-23 3:19:331533 days ago1595474373IN
0x36a870B0...8Bd6E6119
0 ETH0.0060003240
Cast105126022020-07-23 0:58:391533 days ago1595465919IN
0x36a870B0...8Bd6E6119
0 ETH0.0296569240
Cast104797632020-07-17 22:54:001538 days ago1595026440IN
0x36a870B0...8Bd6E6119
0 ETH0.0040502127
Cast104796112020-07-17 22:19:081538 days ago1595024348IN
0x36a870B0...8Bd6E6119
0 ETH0.018819725
Cast104620882020-07-15 5:09:191541 days ago1594789759IN
0x36a870B0...8Bd6E6119
0 ETH0.0063003342
View all transactions

Latest 11 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
106475672020-08-12 21:22:591512 days ago1597267379
0x36a870B0...8Bd6E6119
43.46083032 ETH
106475472020-08-12 21:18:351512 days ago1597267115
0x36a870B0...8Bd6E6119
103.40685 ETH
106475472020-08-12 21:18:351512 days ago1597267115
0x36a870B0...8Bd6E6119
103.50413462 ETH
106475472020-08-12 21:18:351512 days ago1597267115
0x36a870B0...8Bd6E6119
60.04330429 ETH
106475472020-08-12 21:18:351512 days ago1597267115
0x36a870B0...8Bd6E6119
103.40685 ETH
105894982020-08-03 22:19:561521 days ago1596493196
0x36a870B0...8Bd6E6119
60 ETH
105894982020-08-03 22:19:561521 days ago1596493196
0x36a870B0...8Bd6E6119
60 ETH
105894982020-08-03 22:19:561521 days ago1596493196
0x36a870B0...8Bd6E6119
60 ETH
105894982020-08-03 22:19:561521 days ago1596493196
0x36a870B0...8Bd6E6119
60 ETH
105894702020-08-03 22:14:241521 days ago1596492864
0x36a870B0...8Bd6E6119
43.5 ETH
103833832020-07-03 0:55:321553 days ago1593737732  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.