ETH Price: $3,594.77 (+8.89%)

Contract

0xF007476Bb27430795138C511F18F821e8D1e5Ee2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit212808232024-11-27 18:18:231 hr ago1732731503IN
Syrup: USDT Router
0 ETH0.0039879118.0476191
Deposit212781422024-11-27 9:17:4710 hrs ago1732699067IN
Syrup: USDT Router
0 ETH0.001871838.66163018
Authorize And De...212713722024-11-26 10:37:3533 hrs ago1732617455IN
Syrup: USDT Router
0 ETH0.0033528511.13763254
Authorize And De...212684782024-11-26 0:55:2343 hrs ago1732582523IN
Syrup: USDT Router
0 ETH0.002553498.52828424
Authorize And De...212640332024-11-25 9:59:232 days ago1732528763IN
Syrup: USDT Router
0 ETH0.0037178112.15780294
Deposit212637242024-11-25 8:57:112 days ago1732525031IN
Syrup: USDT Router
0 ETH0.001712357.19132861
Authorize And De...212623802024-11-25 4:27:472 days ago1732508867IN
Syrup: USDT Router
0 ETH0.002020116.74550608
Deposit212617362024-11-25 2:18:352 days ago1732501115IN
Syrup: USDT Router
0 ETH0.001755577.47652724
Authorize And De...212611742024-11-25 0:25:472 days ago1732494347IN
Syrup: USDT Router
0 ETH0.000176387.46338992
Authorize And De...212611742024-11-25 0:25:472 days ago1732494347IN
Syrup: USDT Router
0 ETH0.000176387.46338992
Authorize And De...212611742024-11-25 0:25:472 days ago1732494347IN
Syrup: USDT Router
0 ETH0.000176387.46338992
Deposit212582952024-11-24 14:47:233 days ago1732459643IN
Syrup: USDT Router
0 ETH0.002001829.26057099
Authorize And De...212538922024-11-24 0:02:353 days ago1732406555IN
Syrup: USDT Router
0 ETH0.0039210113.09220652
Authorize And De...212519732024-11-23 17:36:114 days ago1732383371IN
Syrup: USDT Router
0 ETH0.0053846717.69435253
Deposit212503402024-11-23 12:07:594 days ago1732363679IN
Syrup: USDT Router
0 ETH0.0022742610.52093456
Deposit212483532024-11-23 5:29:474 days ago1732339787IN
Syrup: USDT Router
0 ETH0.0025116410.55287363
Deposit212447132024-11-22 17:18:475 days ago1732295927IN
Syrup: USDT Router
0 ETH0.0030231413.98527101
Deposit212440022024-11-22 14:55:115 days ago1732287311IN
Syrup: USDT Router
0 ETH0.0030329413.00209518
Authorize And De...212434722024-11-22 13:08:355 days ago1732280915IN
Syrup: USDT Router
0 ETH0.0040694513.37479652
Deposit212374392024-11-21 16:56:476 days ago1732208207IN
Syrup: USDT Router
0 ETH0.0044296218.61234499
Deposit212329352024-11-21 1:50:116 days ago1732153811IN
Syrup: USDT Router
0 ETH0.001986578.46029441
Deposit212327442024-11-21 1:11:596 days ago1732151519IN
Syrup: USDT Router
0 ETH0.002168919.30043861
Deposit212320772024-11-20 22:57:596 days ago1732143479IN
Syrup: USDT Router
0 ETH0.0024139510.28037968
Deposit212294472024-11-20 14:08:117 days ago1732111691IN
Syrup: USDT Router
0 ETH0.003868916.24813642
Deposit212152092024-11-18 14:30:119 days ago1731940211IN
Syrup: USDT Router
0 ETH0.0035001215.83924968
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SyrupRouter

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-06
*/

// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.7 ^0.8.0 ^0.8.7;

// contracts/interfaces/ISyrupRouter.sol

interface ISyrupRouter {

    /**
     *  @dev   Optional Deposit Data for off-chain processing.
     *  @param owner       The receiver of the shares.
     *  @param amount      The amount of assets to deposit.
     *  @param depositData Optional deposit data.
     */
    event DepositData(address indexed owner, uint256 amount, bytes32 depositData);

    /**
     *  @dev    The address of the underlying asset used by the ERC4626 Vault.
     *  @return asset The address of the underlying asset.
     */
    function asset() external view returns (address asset);

    /**
     *  @dev    Authorizes and deposits assets into the Vault.
     *  @param  bitmap_      The bitmap of the permission.
     *  @param  deadline_    The timestamp after which the `authorize` signature is no longer valid.
     *  @param  auth_v       ECDSA signature v component.
     *  @param  auth_r       ECDSA signature r component.
     *  @param  auth_s       ECDSA signature s component.
     *  @param  amount_      The amount of assets to deposit.
     *  @param  depositData_ Optional deposit data.
     *  @return shares_      The amount of shares minted.
     */
    function authorizeAndDeposit(
        uint256 bitmap_,
        uint256 deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_
    ) external returns (uint256 shares_);

    /**
     *  @dev    Authorizes and deposits assets into the Vault with a ERC-2612 `permit`.
     *  @param  bitmap_         The bitmap of the permission.
     *  @param  auth_deadline_  The timestamp after which the `authorize` signature is no longer valid.
     *  @param  auth_v          ECDSA signature v component of the authorization.
     *  @param  auth_r          ECDSA signature r component of the authorization.
     *  @param  auth_s          ECDSA signature s component of the authorization.
     *  @param  amount_         The amount of assets to deposit.
     *  @param  depositData_    Optional deposit data.
     *  @param  permit_deadline The timestamp after which the `permit` signature is no longer valid.
     *  @param  permit_v_       ECDSA signature v component of the token permit.
     *  @param  permit_r_       ECDSA signature r component of the token permit.
     *  @param  permit_s_       ECDSA signature s component of the token permit.
     *  @return shares_         The amount of shares minted.
     */
    function authorizeAndDepositWithPermit(
        uint256 bitmap_,
        uint256 auth_deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_,
        uint256 permit_deadline,
        uint8   permit_v_,
        bytes32 permit_r_,
        bytes32 permit_s_
    ) external returns (uint256 shares_);

    /**
     *  @dev    Mints `shares` to sender by depositing `assets` into the Vault.
     *  @param  assets      The amount of assets to deposit.
     *  @param  depositData Optional deposit data.
     *  @return shares      The amount of shares minted.
     */
    function deposit(uint256 assets, bytes32 depositData) external returns (uint256 shares);

    /**
     *  @dev    Does a ERC4626 `deposit` into a Maple Pool with a ERC-2612 `permit`.
     *  @param  amount     The amount of assets to deposit.
     *  @param  deadline   The timestamp after which the `permit` signature is no longer valid.
     *  @param  v          ECDSA signature v component.
     *  @param  r          ECDSA signature r component.
     *  @param  s          ECDSA signature s component.
     *  @param depositData Optional deposit data.
     *  @return shares     The amount of shares minted.
     */
    function depositWithPermit(uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s, bytes32 depositData)
        external returns (uint256 shares);

    /**
      *  @dev    Returns the nonce for the given owner.
      *  @param  owner_ The address of the owner account.
      *  @return nonce_ The nonce for the given owner.
     */
    function nonces(address owner_) external view returns (uint256 nonce_);

    /**
     *  @dev    The address of the ERC4626 Vault.
     *  @return pool The address of the ERC4626 Vault.
     */
    function pool() external view returns (address pool);

    /**
     *  @dev    The address of the Pool Manager.
     *  @return poolManager The address of the Pool Manager.
     */
    function poolManager() external view returns (address poolManager);

    /**
     *  @dev    The address of the Pool Permission Manager.
     *  @return poolPermissionManager The address of the Pool Permission Manager.
     */
    function poolPermissionManager() external view returns (address poolPermissionManager);

}

// contracts/interfaces/Interfaces.sol

interface IBalancerVaultLike {

    enum SwapKind { GIVEN_IN, GIVEN_OUT }

    struct FundManagement {
        address sender;
        bool fromInternalBalance;
        address recipient;
        bool toInternalBalance;
    }

    struct SingleSwap {
        bytes32 poolId;
        SwapKind kind;
        address assetIn;
        address assetOut;
        uint256 amount;
        bytes userData;
    }

    function swap(
        SingleSwap calldata singleSwap,
        FundManagement calldata funds,
        uint256 limit,
        uint256 deadline
    ) external returns (uint256 assetDelta);

}

interface IERC20Like_0 {

    function allowance(address owner, address spender) external view returns (uint256 allowance);

    function balanceOf(address account) external view returns (uint256 balance);

    function DOMAIN_SEPARATOR() external view returns (bytes32 domainSeparator);

    function PERMIT_TYPEHASH() external view returns (bytes32 permitTypehash);

    function approve(address spender, uint256 amount) external returns (bool success);

    function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    function transfer(address recipient, uint256 amount) external returns (bool success);

    function transferFrom(address owner, address recipient, uint256 amount) external returns (bool success);

}

interface IGlobalsLike {

    function governor() external view returns (address governor);

    function operationalAdmin() external view returns (address operationalAdmin);

}

interface IMigratorLike {

    function migrate(address receiver, uint256 mplAmount) external returns (uint256 syrupAmount);

}

interface IPoolLike is IERC20Like_0 {

    function asset() external view returns (address asset);

    function convertToExitAssets(uint256 shares) external view returns (uint256);

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

    function manager() external view returns (address manager);

}

interface IPoolManagerLike {

    function poolPermissionManager() external view returns (address poolPermissionManager);

}

interface IPoolPermissionManagerLike {

    function hasPermission(address poolManager, address lender, bytes32 functionId) external view returns (bool hasPermission);

    function permissionAdmins(address account) external view returns (bool isAdmin);

    function setLenderBitmaps(address[] calldata lenders, uint256[] calldata bitmaps) external;

}

interface IPSMLike {

    function buyGem(address account, uint256 daiAmount) external;

    function tout() external view returns (uint256 tout);  // This is the fee charged for conversion

}

interface ISDaiLike {

    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

}

interface IRDTLike {

    function asset() external view returns (address asset);

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

}

interface IStakedSyrupLike {

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

}

// modules/erc20-helper/src/interfaces/IERC20Like.sol

/// @title Interface of the ERC20 standard as needed by ERC20Helper.
interface IERC20Like_1 {

    function approve(address spender_, uint256 amount_) external returns (bool success_);

    function transfer(address recipient_, uint256 amount_) external returns (bool success_);

    function transferFrom(address owner_, address recipient_, uint256 amount_) external returns (bool success_);

}

// modules/erc20-helper/src/ERC20Helper.sol

/**
 * @title Small Library to standardize erc20 token interactions.
 */
library ERC20Helper {

    /**************************************************************************************************************************************/
    /*** Internal Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function transfer(address token_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.transfer.selector, to_, amount_));
    }

    function transferFrom(address token_, address from_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.transferFrom.selector, from_, to_, amount_));
    }

    function approve(address token_, address spender_, uint256 amount_) internal returns (bool success_) {
        // If setting approval to zero fails, return false.
        if (!_call(token_, abi.encodeWithSelector(IERC20Like_1.approve.selector, spender_, uint256(0)))) return false;

        // If `amount_` is zero, return true as the previous step already did this.
        if (amount_ == uint256(0)) return true;

        // Return the result of setting the approval to `amount_`.
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.approve.selector, spender_, amount_));
    }

    function _call(address token_, bytes memory data_) private returns (bool success_) {
        if (token_.code.length == uint256(0)) return false;

        bytes memory returnData;
        ( success_, returnData ) = token_.call(data_);

        return success_ && (returnData.length == uint256(0) || abi.decode(returnData, (bool)));
    }

}

// contracts/SyrupRouter.sol

/*

███████╗██╗   ██╗██████╗ ██╗   ██╗██████╗     ██████╗  ██████╗ ██╗   ██╗████████╗███████╗██████╗
██╔════╝╚██╗ ██╔╝██╔══██╗██║   ██║██╔══██╗    ██╔══██╗██╔═══██╗██║   ██║╚══██╔══╝██╔════╝██╔══██╗
███████╗ ╚████╔╝ ██████╔╝██║   ██║██████╔╝    ██████╔╝██║   ██║██║   ██║   ██║   █████╗  ██████╔╝
╚════██║  ╚██╔╝  ██╔══██╗██║   ██║██╔═══╝     ██╔══██╗██║   ██║██║   ██║   ██║   ██╔══╝  ██╔══██╗
███████║   ██║   ██║  ██║╚██████╔╝██║         ██║  ██║╚██████╔╝╚██████╔╝   ██║   ███████╗██║  ██║
╚══════╝   ╚═╝   ╚═╝  ╚═╝ ╚═════╝ ╚═╝         ╚═╝  ╚═╝ ╚═════╝  ╚═════╝    ╚═╝   ╚══════╝╚═╝  ╚═╝

*/

contract SyrupRouter is ISyrupRouter {

    address public immutable override asset;
    address public immutable override pool;
    address public immutable override poolManager;
    address public immutable override poolPermissionManager;

    mapping(address => uint256) public override nonces;

    constructor(address pool_) {
        pool = pool_;

        // Get the addresses of all the associated contracts.
        address asset_ = asset = IPoolLike(pool_).asset();
        address poolManager_ = poolManager = IPoolLike(pool_).manager();

        poolPermissionManager = IPoolManagerLike(poolManager_).poolPermissionManager();

        // Perform an infinite approval.
        require(ERC20Helper.approve(asset_, pool_, type(uint256).max), "SR:C:APPROVE_FAIL");
    }

    /**************************************************************************************************************************************/
    /*** External Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function authorizeAndDeposit(
        uint256 bitmap_,
        uint256 deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_
    )
        external override returns (uint256 shares_)
    {
        _authorize(deadline_, bitmap_, auth_v, auth_r, auth_s);

        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    function authorizeAndDepositWithPermit(
        uint256 bitmap_,
        uint256 auth_deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_,
        uint256 permit_deadline,
        uint8   permit_v_,
        bytes32 permit_r_,
        bytes32 permit_s_
    )
        external override returns (uint256 shares_)
    {
        _authorize(auth_deadline_, bitmap_, auth_v, auth_r, auth_s);
        _permit(asset, permit_deadline, amount_, permit_v_, permit_r_, permit_s_);

        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    function deposit(uint256 amount_, bytes32 depositData_) external override returns (uint256 shares_) {
        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    function depositWithPermit(
        uint256 amount_,
        uint256 deadline_,
        uint8   v_,
        bytes32 r_,
        bytes32 s_,
        bytes32 depositData_
    )
        external override returns (uint256 shares_)
    {
        _permit(asset, deadline_, amount_, v_, r_, s_);

        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    /**************************************************************************************************************************************/
    /*** Internal Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function _authorize(uint256 deadline_, uint256 bitmap_, uint8 v_, bytes32 r_, bytes32 s_) internal {
        require(deadline_ >= block.timestamp, "SR:A:EXPIRED");

        // Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}.
        require(
            uint256(s_) <= uint256(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) &&
            (v_ == 27 || v_ == 28),
            "SR:A:MALLEABLE"
        );

        bytes32 digest_ = keccak256(abi.encodePacked(
            "\x19\x01",
            block.chainid,  // Chain id + address(this) serves as domain separator to avoid replay attacks.
            address(this),
            msg.sender,
            nonces[msg.sender]++,
            bitmap_,
            deadline_
        ));

        address recoveredAddress_ = ecrecover(digest_, v_, r_, s_);

        IPoolPermissionManagerLike ppm_ = IPoolPermissionManagerLike(poolPermissionManager);

        // Any valid permission admin can authorize the deposit.
        require(recoveredAddress_ != address(0) && ppm_.permissionAdmins(recoveredAddress_), "SR:A:NOT_PERMISSION_ADMIN");

        address[] memory lender = new address[](1);
        uint256[] memory bitmap = new uint256[](1);

        lender[0] = msg.sender;
        bitmap[0] = bitmap_;

        ppm_.setLenderBitmaps(lender, bitmap);
    }

    function _deposit(address owner_, uint256 amount_, bytes32 depositData_) internal returns (uint256 shares_) {
        // Check the owner has permission to deposit into the pool.
        require(
            IPoolPermissionManagerLike(poolPermissionManager).hasPermission(poolManager, owner_, "P:deposit"),
            "SR:D:NOT_AUTHORIZED"
        );

        // Pull assets from the owner to the router.
        require(ERC20Helper.transferFrom(asset, owner_, address(this), amount_), "SR:D:TRANSFER_FROM_FAIL");

        // Deposit assets into the pool and receive the shares personally.
        address pool_ = pool;

        shares_ = IPoolLike(pool_).deposit(amount_, address(this));

        // Route shares back to the caller.
        require(ERC20Helper.transfer(pool_, owner_, shares_), "SR:D:TRANSFER_FAIL");

        emit DepositData(owner_, amount_, depositData_);
    }

    function _permit(address asset_, uint256 deadline_, uint256 amount_, uint8 v_, bytes32 r_, bytes32 s_) internal {
        uint256 allowance_ = IERC20Like_0(asset_).allowance(msg.sender, address(this));

        if (allowance_ < amount_) {
            IERC20Like_0(asset_).permit(msg.sender, address(this), amount_, deadline_, v_, r_, s_);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"pool_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"depositData","type":"bytes32"}],"name":"DepositData","type":"event"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap_","type":"uint256"},{"internalType":"uint256","name":"deadline_","type":"uint256"},{"internalType":"uint8","name":"auth_v","type":"uint8"},{"internalType":"bytes32","name":"auth_r","type":"bytes32"},{"internalType":"bytes32","name":"auth_s","type":"bytes32"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"authorizeAndDeposit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap_","type":"uint256"},{"internalType":"uint256","name":"auth_deadline_","type":"uint256"},{"internalType":"uint8","name":"auth_v","type":"uint8"},{"internalType":"bytes32","name":"auth_r","type":"bytes32"},{"internalType":"bytes32","name":"auth_s","type":"bytes32"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"},{"internalType":"uint256","name":"permit_deadline","type":"uint256"},{"internalType":"uint8","name":"permit_v_","type":"uint8"},{"internalType":"bytes32","name":"permit_r_","type":"bytes32"},{"internalType":"bytes32","name":"permit_s_","type":"bytes32"}],"name":"authorizeAndDepositWithPermit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"deadline_","type":"uint256"},{"internalType":"uint8","name":"v_","type":"uint8"},{"internalType":"bytes32","name":"r_","type":"bytes32"},{"internalType":"bytes32","name":"s_","type":"bytes32"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolPermissionManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6101006040523480156200001257600080fd5b5060405162001400380380620014008339810160408190526200003591620003e9565b806001600160a01b031660a0816001600160a01b031660601b815250506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008e57600080fd5b505afa158015620000a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c99190620003e9565b6001600160a01b03166080816001600160a01b031660601b81525090506000826001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012257600080fd5b505afa15801562000137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015d9190620003e9565b6001600160a01b031660c0816001600160a01b031660601b8152509050806001600160a01b031663e15e990a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b457600080fd5b505afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620003e9565b6001600160a01b031660e0816001600160a01b031660601b815250506200022582846000196200027360201b620002a31760201c565b6200026a5760405162461bcd60e51b815260206004820152601160248201527014d48e90ce9054141493d59157d1905253607a1b604482015260640160405180910390fd5b50505062000476565b6040516001600160a01b038316602482015260006044820181905290620002dc90859063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200033516565b620002ea575060006200032e565b81620002f9575060016200032e565b6040516001600160a01b0384166024820152604481018390526200032b90859063095ea7b360e01b90606401620002a3565b90505b9392505050565b60006001600160a01b0383163b6200035057506000620003e3565b6060836001600160a01b0316836040516200036c919062000438565b6000604051808303816000865af19150503d8060008114620003ab576040519150601f19603f3d011682016040523d82523d6000602084013e620003b0565b606091505b509092509050818015620003df575080511580620003df575080806020019051810190620003df919062000414565b9150505b92915050565b600060208284031215620003fc57600080fd5b81516001600160a01b03811681146200032e57600080fd5b6000602082840312156200042757600080fd5b815180151581146200032e57600080fd5b6000825160005b818110156200045b57602081860181015185830152016200043f565b818111156200046b576000828501525b509190910192915050565b60805160601c60a05160601c60c05160601c60e05160601c610f15620004eb600039600081816101a9015281816104ce01526108ef0152600081816101820152610489015260008181609d015261062501526000818160e1015281816101d20152818161022501526105960152610f156000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b60006101fb7f0000000000000000000000000000000000000000000000000000000000000000878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f0000000000000000000000000000000000000000000000000000000000000000868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f0000000000000000000000000000000000000000000000000000000000000000853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000000000000000000000000000000000000000000090506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220129827db56dc4d2689fc074a9f29fa1fd10e29a4c516fd1f001f876e1d78312a64736f6c63430008070033000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec781565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f0000000000000000000000000cda32e08b48bfddbc7ee96b44b09cf286f9e21a81565b6100bf7f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b381565b60006101fb7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f0000000000000000000000000cda32e08b48bfddbc7ee96b44b09cf286f9e21a81166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220129827db56dc4d2689fc074a9f29fa1fd10e29a4c516fd1f001f876e1d78312a64736f6c63430008070033

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

000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d

-----Decoded View---------------
Arg [0] : pool_ (address): 0x356B8d89c1e1239Cbbb9dE4815c39A1474d5BA7D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d


Deployed Bytecode Sourcemap

12413:6096:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12505:38;;;;;;;;-1:-1:-1;;;;;4539:32:1;;;4521:51;;4509:2;4494:18;12505:38:0;;;;;;;;12459:39;;;;;14903:371;;;;;;:::i;:::-;;:::i;:::-;;;10491:25:1;;;10479:2;10464:18;14903:371:0;10345:177:1;12666:50:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;14074:641;;;;;;:::i;:::-;;:::i;14723:172::-;;;;;;:::i;:::-;;:::i;13647:419::-;;;;;;:::i;:::-;;:::i;12550:45::-;;;;;12602:55;;;;;14903:371;15121:15;15154:46;15162:5;15169:9;15180:7;15189:2;15193;15197;15154:7;:46::i;:::-;15223:43;15232:10;15244:7;15253:12;15223:8;:43::i;:::-;15213:53;14903:371;-1:-1:-1;;;;;;;14903:371:0:o;14074:641::-;14465:15;14498:59;14509:14;14525:7;14534:6;14542;14550;14498:10;:59::i;:::-;14568:73;14576:5;14583:15;14600:7;14609:9;14620;14631;14568:7;:73::i;:::-;14664:43;14673:10;14685:7;14694:12;14664:8;:43::i;:::-;14654:53;14074:641;-1:-1:-1;;;;;;;;;;;;14074:641:0:o;14723:172::-;14806:15;14844:43;14853:10;14865:7;14874:12;14844:8;:43::i;:::-;14834:53;14723:172;-1:-1:-1;;;14723:172:0:o;13647:419::-;13905:15;13938:54;13949:9;13960:7;13969:6;13977;13985;13938:10;:54::i;:::-;14015:43;14024:10;14036:7;14045:12;14015:8;:43::i;:::-;14005:53;13647:419;-1:-1:-1;;;;;;;;13647:419:0:o;9927:601::-;10119:75;;-1:-1:-1;;;;;6587:32:1;;10119:75:0;;;6569:51:1;10013:13:0;6636:18:1;;;6629:34;;;10013:13:0;10105:90;;10111:6;;-1:-1:-1;;;10142:29:0;6542:18:1;;10119:75:0;;;;-1:-1:-1;;10119:75:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10119:75:0;-1:-1:-1;;;;;;10119:75:0;;;;;;;;;;10105:5;:90::i;:::-;10100:109;;-1:-1:-1;10204:5:0;10197:12;;10100:109;10311:21;10307:38;;-1:-1:-1;10341:4:0;10334:11;;10307:38;10447:72;;-1:-1:-1;;;;;6587:32:1;;10447:72:0;;;6569:51:1;6636:18;;;6629:34;;;10433:87:0;;10439:6;;-1:-1:-1;;;10470:29:0;6542:18:1;;10447:72:0;6395:274:1;10433:87:0;10426:94;9927:601;-1:-1:-1;;;;9927:601:0:o;18144:360::-;18288:57;;-1:-1:-1;;;18288:57:0;;18319:10;18288:57;;;4795:34:1;18339:4:0;4845:18:1;;;4838:43;18267:18:0;;-1:-1:-1;;;;;18288:30:0;;;;;4730:18:1;;18288:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18267:78;;18375:7;18362:10;:20;18358:139;;;18399:86;;-1:-1:-1;;;18399:86:0;;18427:10;18399:86;;;6069:34:1;18447:4:0;6119:18:1;;;6112:43;6171:18;;;6164:34;;;6214:18;;;6207:34;;;6290:4;6278:17;;6257:19;;;6250:46;6312:19;;;6305:35;;;6356:19;;;6349:35;;;-1:-1:-1;;;;;18399:27:0;;;;;6003:19:1;;18399:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18358:139;18256:248;18144:360;;;;;;:::o;17235:901::-;17445:97;;-1:-1:-1;;;17445:97:0;;-1:-1:-1;;;;;17509:11:0;5213:15:1;;17445:97:0;;;5195:34:1;5265:15;;;5245:18;;;5238:43;-1:-1:-1;;;5297:18:1;;;5290:39;-1:-1:-1;;17472:21:0;17445:63;;;;;;5130:18:1;;17445:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17423:166;;;;-1:-1:-1;;;17423:166:0;;10199:2:1;17423:166:0;;;10181:21:1;10238:2;10218:18;;;10211:30;-1:-1:-1;;;10257:18:1;;;10250:49;10316:18;;17423:166:0;;;;;;;;;17664:63;17689:5;17696:6;17712:4;17719:7;17664:24;:63::i;:::-;17656:99;;;;-1:-1:-1;;;17656:99:0;;8462:2:1;17656:99:0;;;8444:21:1;8501:2;8481:18;;;8474:30;8540:25;8520:18;;;8513:53;8583:18;;17656:99:0;8260:347:1;17656:99:0;17887:48;;-1:-1:-1;;;17887:48:0;;;;;10701:25:1;;;17929:4:0;10742:18:1;;;10735:60;17860:4:0;;-1:-1:-1;;;;;17887:24:0;;;;;10674:18:1;;17887:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17877:58;;18001:44;18022:5;18029:6;18037:7;18001:20;:44::i;:::-;17993:75;;;;-1:-1:-1;;;17993:75:0;;9852:2:1;17993:75:0;;;9834:21:1;9891:2;9871:18;;;9864:30;-1:-1:-1;;;9910:18:1;;;9903:48;9968:18;;17993:75:0;9650:342:1;17993:75:0;18086:42;;;10980:25:1;;;11036:2;11021:18;;11014:34;;;-1:-1:-1;;;;;18086:42:0;;;;;10953:18:1;18086:42:0;;;;;;;17343:793;17235:901;;;;;:::o;15710:1517::-;15841:15;15828:9;:28;;15820:53;;;;-1:-1:-1;;;15820:53:0;;8814:2:1;15820:53:0;;;8796:21:1;8853:2;8833:18;;;8826:30;-1:-1:-1;;;8872:18:1;;;8865:42;8924:18;;15820:53:0;8612:336:1;15820:53:0;16152:66;16129:90;;;;;:129;;;16237:2;:8;;16243:2;16237:8;:20;;;;16249:2;:8;;16255:2;16249:8;16237:20;16107:193;;;;-1:-1:-1;;;16107:193:0;;9509:2:1;16107:193:0;;;9491:21:1;9548:2;9528:18;;;9521:30;-1:-1:-1;;;9567:18:1;;;9560:44;9621:18;;16107:193:0;9307:338:1;16107:193:0;16534:10;16313:15;16559:18;;;;;;;;;;:20;;16313:15;;16397:13;;16514:4;;16313:15;16559:20;;;:::i;:::-;;;;-1:-1:-1;16341:295:0;;-1:-1:-1;;;16341:295:0;;;3999:27:1;4042:11;;;4035:27;;;;-1:-1:-1;;4150:2:1;4146:15;;;4142:24;;4128:12;;;4121:46;4201:15;;;;4197:24;4183:12;;;4176:46;4238:12;;;4231:28;4275:13;;;4268:29;;;4313:13;;;4306:29;;;4351:13;;16341:295:0;;;-1:-1:-1;;16341:295:0;;;;;;;;;16331:306;;16341:295;16331:306;;;;16650:25;16678:30;;;;;;;;;8084:25:1;;;8157:4;8145:17;;8125:18;;;8118:45;;;;8179:18;;;8172:34;;;8222:18;;;8215:34;;;16331:306:0;;-1:-1:-1;16650:25:0;16678:30;;8056:19:1;;16678:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16678:30:0;;-1:-1:-1;;16678:30:0;;;-1:-1:-1;16782:21:0;;-1:-1:-1;;;;;;16891:31:0;;;;;;:75;;-1:-1:-1;16926:40:0;;-1:-1:-1;;;16926:40:0;;-1:-1:-1;;;;;4539:32:1;;;16926:40:0;;;4521:51:1;16926:21:0;;;;;4494:18:1;;16926:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16883:113;;;;-1:-1:-1;;;16883:113:0;;9155:2:1;16883:113:0;;;9137:21:1;9194:2;9174:18;;;9167:30;9233:27;9213:18;;;9206:55;9278:18;;16883:113:0;8953:349:1;16883:113:0;17035:16;;;17049:1;17035:16;;;;;;;;;17009:23;;17035:16;;;;;;;;;-1:-1:-1;;17088:16:0;;;17102:1;17088:16;;;;;;;;;17009:42;;-1:-1:-1;17062:23:0;;17088:16;-1:-1:-1;17088:16:0;;;;;;;;;;;-1:-1:-1;17088:16:0;17062:42;;17129:10;17117:6;17124:1;17117:9;;;;;;;;:::i;:::-;;;;;;:22;-1:-1:-1;;;;;17117:22:0;;;-1:-1:-1;;;;;17117:22:0;;;;;17162:7;17150:6;17157:1;17150:9;;;;;;;;:::i;:::-;;;;;;;;;;:19;17182:37;;-1:-1:-1;;;17182:37:0;;-1:-1:-1;;;;;17182:21:0;;;;;:37;;17204:6;;17212;;17182:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15809:1418;;;;;15710:1517;;;;;:::o;10536:343::-;10604:13;-1:-1:-1;;;;;10634:18:0;;;10630:50;;-1:-1:-1;10675:5:0;10668:12;;10630:50;10693:23;10754:6;-1:-1:-1;;;;;10754:11:0;10766:5;10754:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10727:45:0;;-1:-1:-1;10727:45:0;-1:-1:-1;10727:45:0;10792:79;;;;-1:-1:-1;10805:17:0;;:31;;:65;;;10851:10;10840:30;;;;;;;;;;;;:::i;:::-;10785:86;;;10536:343;;;;;:::o;9683:236::-;9831:79;;-1:-1:-1;;;;;5598:15:1;;;9831:79:0;;;5580:34:1;5650:15;;5630:18;;;5623:43;5682:18;;;5675:34;;;9784:13:0;;9817:94;;9823:6;;-1:-1:-1;;;9854:34:0;5515:18:1;;9831:79:0;5340:375:1;9817:94:0;9810:101;9683:236;-1:-1:-1;;;;;9683:236:0:o;9469:206::-;9598:68;;-1:-1:-1;;;;;6587:32:1;;9598:68:0;;;6569:51:1;6636:18;;;6629:34;;;9551:13:0;;9584:83;;9590:6;;-1:-1:-1;;;9621:30:0;6542:18:1;;9598:68:0;6395:274:1;14:156;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:286::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;329:23;;-1:-1:-1;;;;;381:31:1;;371:42;;361:70;;427:1;424;417:12;466:277;533:6;586:2;574:9;565:7;561:23;557:32;554:52;;;602:1;599;592:12;554:52;634:9;628:16;687:5;680:13;673:21;666:5;663:32;653:60;;709:1;706;699:12;748:184;818:6;871:2;859:9;850:7;846:23;842:32;839:52;;;887:1;884;877:12;839:52;-1:-1:-1;910:16:1;;748:184;-1:-1:-1;748:184:1:o;937:248::-;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;-1:-1:-1;;1105:23:1;;;1175:2;1160:18;;;1147:32;;-1:-1:-1;937:248:1:o;1190:525::-;1292:6;1300;1308;1316;1324;1332;1385:3;1373:9;1364:7;1360:23;1356:33;1353:53;;;1402:1;1399;1392:12;1353:53;1438:9;1425:23;1415:33;;1495:2;1484:9;1480:18;1467:32;1457:42;;1518:36;1550:2;1539:9;1535:18;1518:36;:::i;:::-;1508:46;;1601:2;1590:9;1586:18;1573:32;1563:42;;1652:3;1641:9;1637:19;1624:33;1614:43;;1704:3;1693:9;1689:19;1676:33;1666:43;;1190:525;;;;;;;;:::o;1720:594::-;1831:6;1839;1847;1855;1863;1871;1879;1932:3;1920:9;1911:7;1907:23;1903:33;1900:53;;;1949:1;1946;1939:12;1900:53;1985:9;1972:23;1962:33;;2042:2;2031:9;2027:18;2014:32;2004:42;;2065:36;2097:2;2086:9;2082:18;2065:36;:::i;:::-;1720:594;;;;-1:-1:-1;2055:46:1;;2148:2;2133:18;;2120:32;;-1:-1:-1;2199:3:1;2184:19;;2171:33;;2251:3;2236:19;;2223:33;;-1:-1:-1;2303:3:1;2288:19;;;2275:33;;-1:-1:-1;1720:594:1;-1:-1:-1;;1720:594:1:o;2319:874::-;2464:6;2472;2480;2488;2496;2504;2512;2520;2528;2536;2544:7;2598:3;2586:9;2577:7;2573:23;2569:33;2566:53;;;2615:1;2612;2605:12;2566:53;2651:9;2638:23;2628:33;;2708:2;2697:9;2693:18;2680:32;2670:42;;2731:36;2763:2;2752:9;2748:18;2731:36;:::i;:::-;2721:46;;2814:2;2803:9;2799:18;2786:32;2776:42;;2865:3;2854:9;2850:19;2837:33;2827:43;;2917:3;2906:9;2902:19;2889:33;2879:43;;2969:3;2958:9;2954:19;2941:33;2931:43;;3021:3;3010:9;3006:19;2993:33;2983:43;;3045:37;3077:3;3066:9;3062:19;3045:37;:::i;:::-;3035:47;;3129:3;3118:9;3114:19;3101:33;3091:43;;3182:3;3171:9;3167:19;3154:33;3143:44;;2319:874;;;;;;;;;;;;;;:::o;3198:426::-;3327:3;3365:6;3359:13;3390:1;3400:129;3414:6;3411:1;3408:13;3400:129;;;3512:4;3496:14;;;3492:25;;3486:32;3473:11;;;3466:53;3429:12;3400:129;;;3547:6;3544:1;3541:13;3538:48;;;3582:1;3573:6;3568:3;3564:16;3557:27;3538:48;-1:-1:-1;3602:16:1;;;;;3198:426;-1:-1:-1;;3198:426:1:o;6674:1178::-;6942:2;6954:21;;;7024:13;;6927:18;;;7046:22;;;6894:4;;7121;;7099:2;7084:18;;;7148:15;;;6894:4;7191:195;7205:6;7202:1;7199:13;7191:195;;;7270:13;;-1:-1:-1;;;;;7266:39:1;7254:52;;7326:12;;;;7361:15;;;;7302:1;7220:9;7191:195;;;-1:-1:-1;;;7422:19:1;;;7402:18;;;7395:47;7492:13;;7514:21;;;7590:15;;;;7553:12;;;7625:1;7635:189;7651:8;7646:3;7643:17;7635:189;;;7720:15;;7706:30;;7797:17;;;;7758:14;;;;7679:1;7670:11;7635:189;;;-1:-1:-1;7841:5:1;;6674:1178;-1:-1:-1;;;;;;;6674:1178:1:o;11059:232::-;11098:3;-1:-1:-1;;11119:17:1;;11116:140;;;11178:10;11173:3;11169:20;11166:1;11159:31;11213:4;11210:1;11203:15;11241:4;11238:1;11231:15;11116:140;-1:-1:-1;11283:1:1;11272:13;;11059:232::o;11296:127::-;11357:10;11352:3;11348:20;11345:1;11338:31;11388:4;11385:1;11378:15;11412:4;11409:1;11402:15

Swarm Source

ipfs://129827db56dc4d2689fc074a9f29fa1fd10e29a4c516fd1f001f876e1d78312a

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  ]

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.