ETH Price: $3,140.67 (+5.45%)

Contract

0x13E3F9A97D3bA47A1E64B6813f6cF09Db346feBf
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cast132121622021-09-12 16:59:531154 days ago1631465993IN
0x13E3F9A9...Db346feBf
0 ETH0.0040755350.56803186
Cast132121622021-09-12 16:59:531154 days ago1631465993IN
0x13E3F9A9...Db346feBf
0 ETH0.0051871348.5714296
Cast132120902021-09-12 16:45:231154 days ago1631465123IN
0x13E3F9A9...Db346feBf
0 ETH0.012699259.83419491
Cast132120842021-09-12 16:43:421154 days ago1631465022IN
0x13E3F9A9...Db346feBf
0 ETH0.0162507363.50672218
Cast132120842021-09-12 16:43:421154 days ago1631465022IN
0x13E3F9A9...Db346feBf
0 ETH0.0171156656.97929491
Cast132120612021-09-12 16:37:321154 days ago1631464652IN
0x13E3F9A9...Db346feBf
0 ETH0.0115492564.81898732
Cast132120612021-09-12 16:37:321154 days ago1631464652IN
0x13E3F9A9...Db346feBf
0 ETH0.0126287458.54365979
Cast106971412020-08-20 12:49:151542 days ago1597927755IN
0x13E3F9A9...Db346feBf
0 ETH0.01916058105.40012804
Cast106971352020-08-20 12:48:101542 days ago1597927690IN
0x13E3F9A9...Db346feBf
0 ETH0.08848361105.40012804
Cast106971242020-08-20 12:45:521542 days ago1597927552IN
0x13E3F9A9...Db346feBf
0 ETH0.05867593105.40012804
Transfer106971092020-08-20 12:42:191542 days ago1597927339IN
0x13E3F9A9...Db346feBf
0.25 ETH0.00231207106
Cast106971012020-08-20 12:40:341542 days ago1597927234IN
0x13E3F9A9...Db346feBf
0 ETH0.01613876108
Cast106971012020-08-20 12:40:341542 days ago1597927234IN
0x13E3F9A9...Db346feBf
0 ETH0.03995476105.40012804
Cast106961032020-08-20 8:54:421542 days ago1597913682IN
0x13E3F9A9...Db346feBf
0 ETH0.03150321102
Cast106961022020-08-20 8:54:371542 days ago1597913677IN
0x13E3F9A9...Db346feBf
0 ETH0.0522933898
Cast106922722020-08-19 18:55:111543 days ago1597863311IN
0x13E3F9A9...Db346feBf
0 ETH0.0450517100
Cast106922502020-08-19 18:49:301543 days ago1597862970IN
0x13E3F9A9...Db346feBf
0 ETH0.0743391117
Cast106921062020-08-19 18:16:571543 days ago1597861017IN
0x13E3F9A9...Db346feBf
0 ETH0.0269539178
Cast106920942020-08-19 18:15:021543 days ago1597860902IN
0x13E3F9A9...Db346feBf
0 ETH0.0375723280
Transfer106920652020-08-19 18:09:131543 days ago1597860553IN
0x13E3F9A9...Db346feBf
1 ETH0.0021321297.75

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
132121622021-09-12 16:59:531154 days ago1631465993
0x13E3F9A9...Db346feBf
0.5004348 ETH
132120902021-09-12 16:45:231154 days ago1631465123
0x13E3F9A9...Db346feBf
0.25 ETH
132120842021-09-12 16:43:421154 days ago1631465022
0x13E3F9A9...Db346feBf
0.2504348 ETH
106971242020-08-20 12:45:521542 days ago1597927552
0x13E3F9A9...Db346feBf
0.25 ETH
106961032020-08-20 8:54:421542 days ago1597913682
0x13E3F9A9...Db346feBf
0.25 ETH
106922722020-08-19 18:55:111543 days ago1597863311
0x13E3F9A9...Db346feBf
0.25 ETH
106922502020-08-19 18:49:301543 days ago1597862970
0x13E3F9A9...Db346feBf
0.25 ETH
106920942020-08-19 18:15:021543 days ago1597860902
0x13E3F9A9...Db346feBf
0.25 ETH
106912112020-08-19 14:56:051543 days ago1597848965  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.