ETH Price: $3,455.27 (+2.50%)
Gas: 4 Gwei

Contract

0xa13cEa5fe07253075DEAE089D167854E8A7cF91d
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Deposit202059572024-06-30 17:20:357 hrs ago1719768035IN
Instadapp: Eth Vault Wrapper
0.2777 ETH0.00101013.6395247
Deposit201925912024-06-28 20:31:352 days ago1719606695IN
Instadapp: Eth Vault Wrapper
5.6 ETH0.000858222.91734803
Withdraw201901952024-06-28 12:30:232 days ago1719577823IN
Instadapp: Eth Vault Wrapper
0 ETH0.001763885.48328695
Withdraw201901702024-06-28 12:25:232 days ago1719577523IN
Instadapp: Eth Vault Wrapper
0 ETH0.002056875.97846328
Withdraw201901572024-06-28 12:22:472 days ago1719577367IN
Instadapp: Eth Vault Wrapper
0 ETH0.002057665.10795491
Withdraw201891562024-06-28 9:01:472 days ago1719565307IN
Instadapp: Eth Vault Wrapper
0 ETH0.00132743.85240129
Withdraw201884072024-06-28 6:31:232 days ago1719556283IN
Instadapp: Eth Vault Wrapper
0 ETH0.001003012.8917235
Deposit201859192024-06-27 22:10:113 days ago1719526211IN
Instadapp: Eth Vault Wrapper
46.5 ETH0.001464255.25563065
Deposit201766172024-06-26 14:59:354 days ago1719413975IN
Instadapp: Eth Vault Wrapper
45 ETH0.0049352216.17973268
Deposit201765342024-06-26 14:42:474 days ago1719412967IN
Instadapp: Eth Vault Wrapper
50.9 ETH0.0050999118.85812174
Withdraw201759762024-06-26 12:50:474 days ago1719406247IN
Instadapp: Eth Vault Wrapper
0 ETH0.000966233.39252622
Deposit201748642024-06-26 9:07:594 days ago1719392879IN
Instadapp: Eth Vault Wrapper
2 ETH0.001518415.13549755
Deposit201746482024-06-26 8:24:354 days ago1719390275IN
Instadapp: Eth Vault Wrapper
1 ETH0.000859272.90620546
Withdraw201711672024-06-25 20:45:235 days ago1719348323IN
Instadapp: Eth Vault Wrapper
0 ETH0.002042435.56888433
Deposit201639902024-06-24 20:40:596 days ago1719261659IN
Instadapp: Eth Vault Wrapper
8.5 ETH0.001912956.8670632
Withdraw201615292024-06-24 12:25:476 days ago1719231947IN
Instadapp: Eth Vault Wrapper
0 ETH0.001611085.69808667
Withdraw201589232024-06-24 3:40:476 days ago1719200447IN
Instadapp: Eth Vault Wrapper
0 ETH0.001030712.97408242
Withdraw201570522024-06-23 21:24:117 days ago1719177851IN
Instadapp: Eth Vault Wrapper
0 ETH0.000899372.45462196
Deposit201569742024-06-23 21:08:357 days ago1719176915IN
Instadapp: Eth Vault Wrapper
0.05 ETH0.001346434.55459466
Deposit201555982024-06-23 16:31:357 days ago1719160295IN
Instadapp: Eth Vault Wrapper
0.01 ETH0.00211627.15877025
Deposit201544452024-06-23 12:39:477 days ago1719146387IN
Instadapp: Eth Vault Wrapper
3.2 ETH0.000776623.10060828
Withdraw201530692024-06-23 8:00:477 days ago1719129647IN
Instadapp: Eth Vault Wrapper
0 ETH0.00119623.48222561
Withdraw201513782024-06-23 2:20:357 days ago1719109235IN
Instadapp: Eth Vault Wrapper
0 ETH0.000815051.73143997
Deposit201496552024-06-22 20:33:598 days ago1719088439IN
Instadapp: Eth Vault Wrapper
0.095 ETH0.000554591.99077244
Withdraw201490232024-06-22 18:26:358 days ago1719080795IN
Instadapp: Eth Vault Wrapper
0 ETH0.000874122.7179514
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
202059572024-06-30 17:20:357 hrs ago1719768035
Instadapp: Eth Vault Wrapper
0.2777 ETH
201925912024-06-28 20:31:352 days ago1719606695
Instadapp: Eth Vault Wrapper
5.6 ETH
201901952024-06-28 12:30:232 days ago1719577823
Instadapp: Eth Vault Wrapper
55.66004602 ETH
201901952024-06-28 12:30:232 days ago1719577823
Instadapp: Eth Vault Wrapper
55.66004602 ETH
201901702024-06-28 12:25:232 days ago1719577523
Instadapp: Eth Vault Wrapper
0.09992779 ETH
201901702024-06-28 12:25:232 days ago1719577523
Instadapp: Eth Vault Wrapper
0.09992779 ETH
201891562024-06-28 9:01:472 days ago1719565307
Instadapp: Eth Vault Wrapper
0.9993584 ETH
201891562024-06-28 9:01:472 days ago1719565307
Instadapp: Eth Vault Wrapper
0.9993584 ETH
201884072024-06-28 6:31:232 days ago1719556283
Instadapp: Eth Vault Wrapper
7.99462854 ETH
201884072024-06-28 6:31:232 days ago1719556283
Instadapp: Eth Vault Wrapper
7.99462854 ETH
201859192024-06-27 22:10:113 days ago1719526211
Instadapp: Eth Vault Wrapper
46.5 ETH
201766172024-06-26 14:59:354 days ago1719413975
Instadapp: Eth Vault Wrapper
45 ETH
201765342024-06-26 14:42:474 days ago1719412967
Instadapp: Eth Vault Wrapper
50.9 ETH
201759762024-06-26 12:50:474 days ago1719406247
Instadapp: Eth Vault Wrapper
180.94602468 ETH
201759762024-06-26 12:50:474 days ago1719406247
Instadapp: Eth Vault Wrapper
180.94602468 ETH
201748642024-06-26 9:07:594 days ago1719392879
Instadapp: Eth Vault Wrapper
2 ETH
201746482024-06-26 8:24:354 days ago1719390275
Instadapp: Eth Vault Wrapper
1 ETH
201711672024-06-25 20:45:235 days ago1719348323
Instadapp: Eth Vault Wrapper
8.49463822 ETH
201711672024-06-25 20:45:235 days ago1719348323
Instadapp: Eth Vault Wrapper
8.49463822 ETH
201639902024-06-24 20:40:596 days ago1719261659
Instadapp: Eth Vault Wrapper
8.5 ETH
201615292024-06-24 12:25:476 days ago1719231947
Instadapp: Eth Vault Wrapper
0.98932689 ETH
201615292024-06-24 12:25:476 days ago1719231947
Instadapp: Eth Vault Wrapper
0.98932689 ETH
201589232024-06-24 3:40:476 days ago1719200447
Instadapp: Eth Vault Wrapper
0.99934487 ETH
201589232024-06-24 3:40:476 days ago1719200447
Instadapp: Eth Vault Wrapper
0.99934487 ETH
201570522024-06-23 21:24:117 days ago1719177851
Instadapp: Eth Vault Wrapper
0.0124927 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EthVaultWrapper

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : main.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import { Address } from "@openzeppelin/contracts/utils/Address.sol";
import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/interfaces/IERC20Upgradeable.sol";

interface IUserModule is IERC20Upgradeable {
    function deposit(uint256 assets_, address receiver_) external returns (uint256 shares_);

    function withdraw(
        uint256 assets_,
        address receiver_,
        address owner_
    ) external returns (uint256 shares_);

    function getWithdrawFee(uint256 stEthAmount_) external view returns (uint256);
}

contract EthVaultWrapper {
    address internal constant ONE_INCH_AGGREGATION_ROUTER = 0x1111111254EEB25477B68fb85Ed929f73A960582;
    IERC20Upgradeable internal constant STETH = IERC20Upgradeable(0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84);
    IUserModule internal immutable vault;

    error EthVaultWrapper__OutputInsufficient();
    error EthVaultWrapper__UnexpectedWithdrawAmount();

    constructor(address vault_) {
        vault = IUserModule(vault_);

        // approve stETH to vault for deposits
        STETH.approve(vault_, type(uint256).max);
    }

    /// @notice deposits msg.value as stETH into ETH vault. returns shares amount
    /// @param swapCalldata_ 1inch swap data for ETH -> stETH to call AggregationRouter with
    /// @param minStEthIn_ minimum expected stETH to be deposited
    /// @param receiver_ receiver of iToken shares from deposit
    /// @return actual amount of shares received
    function deposit(
        bytes calldata swapCalldata_,
        uint256 minStEthIn_,
        address receiver_
    ) external payable returns (uint256) {
        // swap msg.value to stETH via 1inch
        bytes memory response_ = Address.functionCallWithValue(
            ONE_INCH_AGGREGATION_ROUTER,
            swapCalldata_,
            msg.value,
            "EthVaultWrapper: swap fail"
        );

        // ensure expected minimum output
        (uint256 depositAmount_, ) = abi.decode(response_, (uint256, uint256));

        if (depositAmount_ < minStEthIn_) {
            revert EthVaultWrapper__OutputInsufficient();
        }

        // deposit output into vault for msg.sender as receiver
        return vault.deposit(depositAmount_, receiver_);
    }

    /// @notice withdraws amount_ of stETH from msg.sender as owner and swaps it to ETH then transfers to msg.sender
    /// @param amount_ amount of stETH to withdraw
    /// @param swapCalldata_ 1inch swap data for stETH -> ETH to call AggregationRouter with
    /// @param minEthOut_ minimum expected output ETH
    /// @param receiver_ receiver of withdrawn ETH
    /// @return ethAmount_ actual output ETH
    function withdraw(
        uint256 amount_,
        bytes calldata swapCalldata_,
        uint256 minEthOut_,
        address receiver_
    ) external returns (uint256 ethAmount_) {
        uint256 stEthBalanceBefore = STETH.balanceOf(address(this));
        uint256 withdrawFee = vault.getWithdrawFee(amount_);
        // withdraw amount from vault from msg.sender owner with this contract as receiver
        vault.withdraw(amount_, address(this), msg.sender);

        uint256 withdrawnAmount = STETH.balanceOf(address(this)) - stEthBalanceBefore;

        // -1 to account for potential rounding errors
        if (withdrawnAmount + withdrawFee < amount_ - 1) {
            revert EthVaultWrapper__UnexpectedWithdrawAmount();
        }

        // approve stETH to 1inch router
        STETH.approve(ONE_INCH_AGGREGATION_ROUTER, withdrawnAmount);

        // swap stETH to ETH via 1inch
        bytes memory response_ = Address.functionCall(
            ONE_INCH_AGGREGATION_ROUTER,
            swapCalldata_,
            "EthVaultWrapper: swap fail"
        );

        // ensure expected minimum output
        (ethAmount_, ) = abi.decode(response_, (uint256, uint256));
        if (ethAmount_ < minEthOut_) {
            revert EthVaultWrapper__OutputInsufficient();
        }

        // transfer eth to receiver (usually msg.sender)
        payable(receiver_).transfer(ethAmount_);
    }

    /// @notice gets the amount of stETH that must be swapped to ETH via 1inch for a withdraw
    /// @param amount_ amount of stETH to withdraw
    /// @return stEthSwapAmount_ to amount of stEth to be swapped to ETH
    function getWithdrawSwapAmount(uint256 amount_) external view returns (uint256 stEthSwapAmount_) {
        uint256 withdrawFee = vault.getWithdrawFee(amount_);
        stEthSwapAmount_ = amount_ - withdrawFee;
    }

    receive() external payable {}
}

File 2 of 4 : IERC20Upgradeable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)

pragma solidity ^0.8.0;

import "../token/ERC20/IERC20Upgradeable.sol";

File 3 of 4 : IERC20Upgradeable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20Upgradeable {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 4 of 4 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EthVaultWrapper__OutputInsufficient","type":"error"},{"inputs":[],"name":"EthVaultWrapper__UnexpectedWithdrawAmount","type":"error"},{"inputs":[{"internalType":"bytes","name":"swapCalldata_","type":"bytes"},{"internalType":"uint256","name":"minStEthIn_","type":"uint256"},{"internalType":"address","name":"receiver_","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"getWithdrawSwapAmount","outputs":[{"internalType":"uint256","name":"stEthSwapAmount_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes","name":"swapCalldata_","type":"bytes"},{"internalType":"uint256","name":"minEthOut_","type":"uint256"},{"internalType":"address","name":"receiver_","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"ethAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405234801561001057600080fd5b50604051610bfa380380610bfa83398101604081905261002f916100c4565b6001600160a01b038116608081905260405163095ea7b360e01b81526004810191909152600019602482015273ae7ab96520de3a18e5e111b5eaab095312d7fe849063095ea7b3906044016020604051808303816000875af1158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100f4565b5050610116565b6000602082840312156100d657600080fd5b81516001600160a01b03811681146100ed57600080fd5b9392505050565b60006020828403121561010657600080fd5b815180151581146100ed57600080fd5b608051610ab56101456000396000818160cc015281816102390152818161034f01526103df0152610ab56000f3fe6080604052600436106100385760003560e01c8063385b5dde146100445780633e008c6714610076578063ca6ce6c11461008957600080fd5b3661003f57005b600080fd5b34801561005057600080fd5b5061006461005f366004610829565b6100a9565b60405190815260200160405180910390f35b6100646100843660046108a7565b61014a565b34801561009557600080fd5b506100646100a4366004610904565b6102b3565b6040516314e11f2560e11b81526004810182905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906329c23e4a90602401602060405180830381865afa158015610113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610137919061096b565b9050610143818461099a565b9392505050565b6000806101d7731111111254eeb25477b68fb85ed929f73a96058287878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f4574685661756c74577261707065723a2073776170206661696c000000000000602082015234925090506106a7565b90506000818060200190518101906101ef91906109b3565b509050848110156102135760405163b3b79b3960e01b815260040160405180910390fd5b604051636e553f6560e01b8152600481018290526001600160a01b0385811660248301527f00000000000000000000000000000000000000000000000000000000000000001690636e553f65906044016020604051808303816000875af1158015610282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a6919061096b565b925050505b949350505050565b6040516370a0823160e01b8152306004820152600090819073ae7ab96520de3a18e5e111b5eaab095312d7fe84906370a0823190602401602060405180830381865afa158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b919061096b565b6040516314e11f2560e11b8152600481018990529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906329c23e4a90602401602060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba919061096b565b604051632d182be560e21b8152600481018a90523060248201523360448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064016020604051808303816000875af1158015610430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610454919061096b565b506040516370a0823160e01b8152306004820152600090839073ae7ab96520de3a18e5e111b5eaab095312d7fe84906370a0823190602401602060405180830381865afa1580156104a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cd919061096b565b6104d7919061099a565b90506104e460018a61099a565b6104ee83836109d7565b101561050d576040516375d27de960e01b815260040160405180910390fd5b60405163095ea7b360e01b8152731111111254eeb25477b68fb85ed929f73a96058260048201526024810182905273ae7ab96520de3a18e5e111b5eaab095312d7fe849063095ea7b3906044016020604051808303816000875af1158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d91906109ea565b506000610629731111111254eeb25477b68fb85ed929f73a9605828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f4574685661756c74577261707065723a2073776170206661696c0000000000006020820152915061077c9050565b90508080602001905181019061063f91906109b3565b509450868510156106635760405163b3b79b3960e01b815260040160405180910390fd5b6040516001600160a01b0387169086156108fc029087906000818181858888f19350505050158015610699573d6000803e3d6000fd5b505050505095945050505050565b60608247101561070d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084015b60405180910390fd5b600080866001600160a01b031685876040516107299190610a30565b60006040518083038185875af1925050503d8060008114610766576040519150601f19603f3d011682016040523d82523d6000602084013e61076b565b606091505b50915091506102a68783838761078b565b60606102ab84846000856106a7565b606083156107fa5782516000036107f3576001600160a01b0385163b6107f35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610704565b50816102ab565b6102ab838381511561080f5781518083602001fd5b8060405162461bcd60e51b81526004016107049190610a4c565b60006020828403121561083b57600080fd5b5035919050565b60008083601f84011261085457600080fd5b50813567ffffffffffffffff81111561086c57600080fd5b60208301915083602082850101111561088457600080fd5b9250929050565b80356001600160a01b03811681146108a257600080fd5b919050565b600080600080606085870312156108bd57600080fd5b843567ffffffffffffffff8111156108d457600080fd5b6108e087828801610842565b909550935050602085013591506108f96040860161088b565b905092959194509250565b60008060008060006080868803121561091c57600080fd5b85359450602086013567ffffffffffffffff81111561093a57600080fd5b61094688828901610842565b9095509350506040860135915061095f6060870161088b565b90509295509295909350565b60006020828403121561097d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109ad576109ad610984565b92915050565b600080604083850312156109c657600080fd5b505080516020909101519092909150565b808201808211156109ad576109ad610984565b6000602082840312156109fc57600080fd5b8151801515811461014357600080fd5b60005b83811015610a27578181015183820152602001610a0f565b50506000910152565b60008251610a42818460208701610a0c565b9190910192915050565b6020815260008251806020840152610a6b816040850160208701610a0c565b601f01601f1916919091016040019291505056fea26469706673582212206923197149f28a5c9578010e795cb282ec38d58b8d0c4aabc9738c5026e81f6464736f6c63430008110033000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be78

Deployed Bytecode

0x6080604052600436106100385760003560e01c8063385b5dde146100445780633e008c6714610076578063ca6ce6c11461008957600080fd5b3661003f57005b600080fd5b34801561005057600080fd5b5061006461005f366004610829565b6100a9565b60405190815260200160405180910390f35b6100646100843660046108a7565b61014a565b34801561009557600080fd5b506100646100a4366004610904565b6102b3565b6040516314e11f2560e11b81526004810182905260009081906001600160a01b037f000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be7816906329c23e4a90602401602060405180830381865afa158015610113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610137919061096b565b9050610143818461099a565b9392505050565b6000806101d7731111111254eeb25477b68fb85ed929f73a96058287878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f4574685661756c74577261707065723a2073776170206661696c000000000000602082015234925090506106a7565b90506000818060200190518101906101ef91906109b3565b509050848110156102135760405163b3b79b3960e01b815260040160405180910390fd5b604051636e553f6560e01b8152600481018290526001600160a01b0385811660248301527f000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be781690636e553f65906044016020604051808303816000875af1158015610282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a6919061096b565b925050505b949350505050565b6040516370a0823160e01b8152306004820152600090819073ae7ab96520de3a18e5e111b5eaab095312d7fe84906370a0823190602401602060405180830381865afa158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b919061096b565b6040516314e11f2560e11b8152600481018990529091506000906001600160a01b037f000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be7816906329c23e4a90602401602060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba919061096b565b604051632d182be560e21b8152600481018a90523060248201523360448201529091507f000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be786001600160a01b03169063b460af94906064016020604051808303816000875af1158015610430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610454919061096b565b506040516370a0823160e01b8152306004820152600090839073ae7ab96520de3a18e5e111b5eaab095312d7fe84906370a0823190602401602060405180830381865afa1580156104a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cd919061096b565b6104d7919061099a565b90506104e460018a61099a565b6104ee83836109d7565b101561050d576040516375d27de960e01b815260040160405180910390fd5b60405163095ea7b360e01b8152731111111254eeb25477b68fb85ed929f73a96058260048201526024810182905273ae7ab96520de3a18e5e111b5eaab095312d7fe849063095ea7b3906044016020604051808303816000875af1158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d91906109ea565b506000610629731111111254eeb25477b68fb85ed929f73a9605828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f4574685661756c74577261707065723a2073776170206661696c0000000000006020820152915061077c9050565b90508080602001905181019061063f91906109b3565b509450868510156106635760405163b3b79b3960e01b815260040160405180910390fd5b6040516001600160a01b0387169086156108fc029087906000818181858888f19350505050158015610699573d6000803e3d6000fd5b505050505095945050505050565b60608247101561070d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084015b60405180910390fd5b600080866001600160a01b031685876040516107299190610a30565b60006040518083038185875af1925050503d8060008114610766576040519150601f19603f3d011682016040523d82523d6000602084013e61076b565b606091505b50915091506102a68783838761078b565b60606102ab84846000856106a7565b606083156107fa5782516000036107f3576001600160a01b0385163b6107f35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610704565b50816102ab565b6102ab838381511561080f5781518083602001fd5b8060405162461bcd60e51b81526004016107049190610a4c565b60006020828403121561083b57600080fd5b5035919050565b60008083601f84011261085457600080fd5b50813567ffffffffffffffff81111561086c57600080fd5b60208301915083602082850101111561088457600080fd5b9250929050565b80356001600160a01b03811681146108a257600080fd5b919050565b600080600080606085870312156108bd57600080fd5b843567ffffffffffffffff8111156108d457600080fd5b6108e087828801610842565b909550935050602085013591506108f96040860161088b565b905092959194509250565b60008060008060006080868803121561091c57600080fd5b85359450602086013567ffffffffffffffff81111561093a57600080fd5b61094688828901610842565b9095509350506040860135915061095f6060870161088b565b90509295509295909350565b60006020828403121561097d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109ad576109ad610984565b92915050565b600080604083850312156109c657600080fd5b505080516020909101519092909150565b808201808211156109ad576109ad610984565b6000602082840312156109fc57600080fd5b8151801515811461014357600080fd5b60005b83811015610a27578181015183820152602001610a0f565b50506000910152565b60008251610a42818460208701610a0c565b9190910192915050565b6020815260008251806020840152610a6b816040850160208701610a0c565b601f01601f1916919091016040019291505056fea26469706673582212206923197149f28a5c9578010e795cb282ec38d58b8d0c4aabc9738c5026e81f6464736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be78

-----Decoded View---------------
Arg [0] : vault_ (address): 0xA0D3707c569ff8C87FA923d3823eC5D81c98Be78

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be78


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.