ETH Price: $1,947.43 (-0.04%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cast132124652021-09-12 18:04:541632 days ago1631469894IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0043484353.95419599
Cast132124652021-09-12 18:04:541632 days ago1631469894IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0056097253.95419599
Cast132124512021-09-12 18:01:521632 days ago1631469712IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0183305553.71936168
Cast132124372021-09-12 17:59:331632 days ago1631469573IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0142982860.65998267
Cast132124242021-09-12 17:56:221632 days ago1631469382IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0053499848.73639598
Cast132124242021-09-12 17:56:221632 days ago1631469382IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0101532947.93947778
Cast132123372021-09-12 17:36:581632 days ago1631468218IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0155149453.46902833
Cast132123072021-09-12 17:30:491632 days ago1631467849IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0214202655.90116179
Cast106987612020-08-20 18:44:452020 days ago1597949085IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0231353684
Cast106986742020-08-20 18:26:182020 days ago1597947978IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0763525877
Cast106986342020-08-20 18:17:002020 days ago1597947420IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0173431777
Cast106986292020-08-20 18:15:492020 days ago1597947349IN
0x5E8CEaD7...8e06F58c4
0 ETH0.04829409135
Cast106986202020-08-20 18:14:002020 days ago1597947240IN
0x5E8CEaD7...8e06F58c4
0 ETH0.02868525136
Cast106986132020-08-20 18:13:052020 days ago1597947185IN
0x5E8CEaD7...8e06F58c4
0 ETH0.06702243136
Cast106985742020-08-20 18:04:122020 days ago1597946652IN
0x5E8CEaD7...8e06F58c4
0 ETH0.04944857138
Cast106985662020-08-20 18:02:002020 days ago1597946520IN
0x5E8CEaD7...8e06F58c4
0 ETH0.02914854133.00000112
Cast106985442020-08-20 17:57:422020 days ago1597946262IN
0x5E8CEaD7...8e06F58c4
0 ETH0.07293078135
Cast106985092020-08-20 17:50:542020 days ago1597945854IN
0x5E8CEaD7...8e06F58c4
0 ETH0.03790584138
Cast106978562020-08-20 15:24:342020 days ago1597937074IN
0x5E8CEaD7...8e06F58c4
0 ETH0.03349086121
Cast106978452020-08-20 15:22:312020 days ago1597936951IN
0x5E8CEaD7...8e06F58c4
0 ETH0.06164744121
Cast106978352020-08-20 15:20:282020 days ago1597936828IN
0x5E8CEaD7...8e06F58c4
0 ETH0.0326706121
Cast106976952020-08-20 14:50:022020 days ago1597935002IN
0x5E8CEaD7...8e06F58c4
0 ETH0.11164038113
Cast106976592020-08-20 14:43:072020 days ago1597934587IN
0x5E8CEaD7...8e06F58c4
0 ETH0.03709865115
Transfer106976462020-08-20 14:41:002020 days ago1597934460IN
0x5E8CEaD7...8e06F58c4
20 ETH0.00254109116.49999237

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-132124652021-09-12 18:04:541632 days ago1631469894
0x5E8CEaD7...8e06F58c4
17.41632433 ETH
-132124512021-09-12 18:01:521632 days ago1631469712
0x5E8CEaD7...8e06F58c4
17.41632433 ETH
-106978452020-08-20 15:22:312020 days ago1597936951
0x5E8CEaD7...8e06F58c4
14 ETH
-106978352020-08-20 15:20:282020 days ago1597936828
0x5E8CEaD7...8e06F58c4
14 ETH
-106976952020-08-20 14:50:022020 days ago1597935002
0x5E8CEaD7...8e06F58c4
11.3861004 ETH
-106976952020-08-20 14:50:022020 days ago1597935002
0x5E8CEaD7...8e06F58c4
11.3861004 ETH
-106976592020-08-20 14:43:072020 days ago1597934587
0x5E8CEaD7...8e06F58c4
20 ETH
-106976362020-08-20 14:39:202020 days ago1597934360  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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

Contract Source Code (Solidity)

/**
 *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 Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.