ETH Price: $2,075.33 (-3.52%)

Contract

0x134cCaaA4F1e4552eC8aEcb9E4A2360dDcF8df76
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit246552382026-03-14 10:51:113 hrs ago1773485471IN
Syrup: USDC Router
0 ETH0.000021560.06373553
Deposit With Per...246552282026-03-14 10:49:113 hrs ago1773485351IN
Syrup: USDC Router
0 ETH0.000012780.03427781
Authorize And De...246551072026-03-14 10:24:593 hrs ago1773483899IN
Syrup: USDC Router
0 ETH0.000062240.14051542
Deposit With Per...246550702026-03-14 10:17:234 hrs ago1773483443IN
Syrup: USDC Router
0 ETH0.000012540.03530557
Authorize And De...246549422026-03-14 9:51:474 hrs ago1773481907IN
Syrup: USDC Router
0 ETH0.0000180.04070014
Deposit246546252026-03-14 8:48:235 hrs ago1773478103IN
Syrup: USDC Router
0 ETH0.000028750.08207474
Deposit With Per...246545112026-03-14 8:25:235 hrs ago1773476723IN
Syrup: USDC Router
0 ETH0.000021120.05862973
Authorize And De...246542702026-03-14 7:36:476 hrs ago1773473807IN
Syrup: USDC Router
0 ETH0.000032330.07826311
Deposit With Per...246541082026-03-14 7:04:117 hrs ago1773471851IN
Syrup: USDC Router
0 ETH0.000051730.13959387
Deposit With Per...246540572026-03-14 6:53:597 hrs ago1773471239IN
Syrup: USDC Router
0 ETH0.000046520.12917563
Authorize And De...246538532026-03-14 6:12:598 hrs ago1773468779IN
Syrup: USDC Router
0 ETH0.000051380.11578161
Deposit With Per...246537302026-03-14 5:48:238 hrs ago1773467303IN
Syrup: USDC Router
0 ETH0.000724352.03323756
Deposit With Per...246532022026-03-14 4:02:3510 hrs ago1773460955IN
Syrup: USDC Router
0 ETH0.000012450.03508264
Authorize And De...246531662026-03-14 3:55:2310 hrs ago1773460523IN
Syrup: USDC Router
0 ETH0.000016950.04105328
Deposit With Per...246526532026-03-14 2:12:2312 hrs ago1773454343IN
Syrup: USDC Router
0 ETH0.000012880.03452441
Deposit With Per...246517942026-03-13 23:20:2315 hrs ago1773444023IN
Syrup: USDC Router
0 ETH0.000013550.0380954
Deposit With Per...246514882026-03-13 22:19:1116 hrs ago1773440351IN
Syrup: USDC Router
0 ETH0.000019180.05240968
Deposit With Per...246510822026-03-13 20:57:4717 hrs ago1773435467IN
Syrup: USDC Router
0 ETH0.000041730.11180006
Deposit246506242026-03-13 19:25:5918 hrs ago1773429959IN
Syrup: USDC Router
0 ETH0.000034280.09914841
Deposit With Per...246505612026-03-13 19:13:1119 hrs ago1773429191IN
Syrup: USDC Router
0 ETH0.000022830.06239109
Authorize And De...246503432026-03-13 18:29:3519 hrs ago1773426575IN
Syrup: USDC Router
0 ETH0.001061612.30573367
Authorize And De...246499002026-03-13 17:00:3521 hrs ago1773421235IN
Syrup: USDC Router
0 ETH0.000154090.3378794
Authorize And De...246498572026-03-13 16:51:4721 hrs ago1773420707IN
Syrup: USDC Router
0 ETH0.001075542.39893884
Deposit With Per...246495202026-03-13 15:43:5922 hrs ago1773416639IN
Syrup: USDC Router
0 ETH0.000975092.59258794
Deposit246494812026-03-13 15:35:4722 hrs ago1773416147IN
Syrup: USDC Router
0 ETH0.000190680.57909505
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SyrupRouter

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.7;

import { ERC20Helper } from "../modules/erc20-helper/src/ERC20Helper.sol";

import { ISyrupRouter } from "./interfaces/ISyrupRouter.sol";

import {
    IERC20Like,
    IPoolLike,
    IPoolManagerLike,
    IPoolPermissionManagerLike
} from "./interfaces/Interfaces.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(asset_).allowance(msg.sender, address(this));

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

}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.7;

import { IERC20Like } from "./interfaces/IERC20Like.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.transfer.selector, to_, amount_));
    }

    function transferFrom(address token_, address from_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like.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.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.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)));
    }

}

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

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);

}

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

interface IERC20Like {

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

    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 IPoolLike is IERC20Like {

    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;

}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.7;

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

    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_);

}

Settings
{
  "remappings": [
    "address-registry/=modules/address-registry/src/",
    "contract-test-utils/=modules/erc20/modules/contract-test-utils/contracts/",
    "ds-test/=modules/forge-std/lib/ds-test/src/",
    "erc20-helper/=modules/erc20-helper/src/",
    "erc20/=modules/erc20/",
    "fixed-term-loan-manager/=modules/fixed-term-loan-manager/contracts/",
    "fixed-term-loan/=modules/fixed-term-loan/contracts/",
    "forge-std/=modules/forge-std/src/",
    "globals/=modules/globals/contracts/",
    "liquidations/=modules/liquidations/contracts/",
    "maple-proxy-factory/=modules/open-term-loan/modules/maple-proxy-factory/",
    "non-transparent-proxy/=modules/globals/modules/non-transparent-proxy/",
    "ntp/=modules/pool-permission-manager/modules/ntp/",
    "open-term-loan-manager/=modules/open-term-loan-manager/contracts/",
    "open-term-loan/=modules/open-term-loan/contracts/",
    "pool-permission-manager/=modules/pool-permission-manager/contracts/",
    "pool/=modules/pool/contracts/",
    "proxy-factory/=modules/open-term-loan/modules/maple-proxy-factory/modules/proxy-factory/",
    "syrup-router/=modules/syrup-router/",
    "withdrawal-manager-cyclical/=modules/withdrawal-manager-cyclical/contracts/",
    "withdrawal-manager-queue/=modules/withdrawal-manager-queue/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"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"}]

6101006040523480156200001257600080fd5b5060405162001400380380620014008339810160408190526200003591620003e9565b806001600160a01b031660a0816001600160a01b031660601b815250506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008e57600080fd5b505afa158015620000a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c99190620003e9565b6001600160a01b03166080816001600160a01b031660601b81525090506000826001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012257600080fd5b505afa15801562000137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015d9190620003e9565b6001600160a01b031660c0816001600160a01b031660601b8152509050806001600160a01b031663e15e990a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b457600080fd5b505afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620003e9565b6001600160a01b031660e0816001600160a01b031660601b815250506200022582846000196200027360201b620002a31760201c565b6200026a5760405162461bcd60e51b815260206004820152601160248201527014d48e90ce9054141493d59157d1905253607a1b604482015260640160405180910390fd5b50505062000476565b6040516001600160a01b038316602482015260006044820181905290620002dc90859063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200033516565b620002ea575060006200032e565b81620002f9575060016200032e565b6040516001600160a01b0384166024820152604481018390526200032b90859063095ea7b360e01b90606401620002a3565b90505b9392505050565b60006001600160a01b0383163b6200035057506000620003e3565b6060836001600160a01b0316836040516200036c919062000438565b6000604051808303816000865af19150503d8060008114620003ab576040519150601f19603f3d011682016040523d82523d6000602084013e620003b0565b606091505b509092509050818015620003df575080511580620003df575080806020019051810190620003df919062000414565b9150505b92915050565b600060208284031215620003fc57600080fd5b81516001600160a01b03811681146200032e57600080fd5b6000602082840312156200042757600080fd5b815180151581146200032e57600080fd5b6000825160005b818110156200045b57602081860181015185830152016200043f565b818111156200046b576000828501525b509190910192915050565b60805160601c60a05160601c60c05160601c60e05160601c610f15620004eb600039600081816101a9015281816104ce01526108ef0152600081816101820152610489015260008181609d015261062501526000818160e1015281816101d20152818161022501526105960152610f156000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b60006101fb7f0000000000000000000000000000000000000000000000000000000000000000878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f0000000000000000000000000000000000000000000000000000000000000000868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f0000000000000000000000000000000000000000000000000000000000000000853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000000000000000000000000000000000000000000090506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220a38b58891ab7994168d4c9e23749cf5df2af465e466744a21c09684cd35b881e64736f6c6343000807003300000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f0000000000000000000000007ad5ffa5fdf509e30186f4609c2f6269f4b6158f81565b6100bf7f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b381565b60006101fb7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f0000000000000000000000007ad5ffa5fdf509e30186f4609c2f6269f4b6158f81166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220a38b58891ab7994168d4c9e23749cf5df2af465e466744a21c09684cd35b881e64736f6c63430008070033

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

00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b


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