MON Price: $0.020606 (-3.14%)

Contract

0x5710017eCdF44f39b5Ae885965140726B7d81099

Overview

MON Balance

Monad Chain LogoMonad Chain LogoMonad Chain Logo0 MON

MON Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JumpRateModelBoosted

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
prague EvmVersion
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.20;

import "./InterestRateModel.sol";

/**
 * @title JumpRateModelBoosted
 * @notice Jump rate model that enforces a minimum borrow APR derived from an external yield target
 *         (e.g., Morpho vault APY) so suppliers earn at least that yield (plus a safety margin)
 *         once any utilization exists. Rates are expressed per second.
 */
contract JumpRateModelBoosted is InterestRateModel {
    uint256 public constant MANTISSA_ONE = 1e18;
    uint256 public constant SECONDS_PER_YEAR = 365 days;

    /// @notice Utilization kink (scaled by 1e18).
    uint256 public immutable kink;

    /// @notice Annualized parameters for the pre-kink and post-kink slopes.
    uint256 public immutable baseRatePerYear;
    uint256 public immutable multiplierPerYear;
    uint256 public immutable jumpMultiplierPerYear;

    /// @notice Target external supply APY (e.g., Morpho vault APY) in 1e18 terms.
    uint256 public immutable targetMorphoSupplyAPY;

    /// @notice Reserve factor assumed when computing the borrow-rate floor (must align with market RF).
    uint256 public immutable reserveFactorMantissa;

    /// @notice Extra margin applied to the external APY when deriving the floor.
    uint256 public immutable safetyMarginMantissa;

    /// @notice Minimum borrow rate per year and per second after applying the floor.
    uint256 public immutable minBorrowRatePerYear;
    uint256 public immutable minBorrowRatePerSecond;

    /// @notice Cached per-second slopes.
    uint256 public immutable baseRatePerSecond;
    uint256 public immutable multiplierPerSecond;
    uint256 public immutable jumpMultiplierPerSecond;

    /// @notice Cached per-year rates for convenience (borrow rate returned by getBorrowRate is per second).
    function borrowRatePerYear(uint256 cash, uint256 borrows, uint256 reserves) external view returns (uint256) {
        return getBorrowRate(cash, borrows, reserves) * SECONDS_PER_YEAR;
    }

    constructor(
        uint256 baseRatePerYear_,
        uint256 multiplierPerYear_,
        uint256 jumpMultiplierPerYear_,
        uint256 kink_,
        uint256 targetMorphoSupplyAPY_,
        uint256 reserveFactorMantissa_,
        uint256 safetyMarginMantissa_
    ) {
        require(kink_ <= MANTISSA_ONE, "Boosted: invalid kink");
        require(reserveFactorMantissa_ < MANTISSA_ONE, "Boosted: RF >= 1");

        baseRatePerYear = baseRatePerYear_;
        multiplierPerYear = multiplierPerYear_;
        jumpMultiplierPerYear = jumpMultiplierPerYear_;
        kink = kink_;
        targetMorphoSupplyAPY = targetMorphoSupplyAPY_;
        reserveFactorMantissa = reserveFactorMantissa_;
        safetyMarginMantissa = safetyMarginMantissa_;

        uint256 oneMinusRf = MANTISSA_ONE - reserveFactorMantissa_;

        // floor = yMorpho / (1 - RF) * (1 + safetyMargin)
        uint256 floorNoMargin = (targetMorphoSupplyAPY_ * MANTISSA_ONE) / oneMinusRf;
        uint256 floorWithMargin = (floorNoMargin * (MANTISSA_ONE + safetyMarginMantissa_)) / MANTISSA_ONE;

        minBorrowRatePerYear = floorWithMargin;
        minBorrowRatePerSecond = floorWithMargin / SECONDS_PER_YEAR;

        baseRatePerSecond = baseRatePerYear_ / SECONDS_PER_YEAR;
        multiplierPerSecond = multiplierPerYear_ / SECONDS_PER_YEAR;
        jumpMultiplierPerSecond = jumpMultiplierPerYear_ / SECONDS_PER_YEAR;
    }

    /**
     * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`.
     */
    function utilizationRate(
        uint256 cash,
        uint256 borrows,
        uint256 reserves
    ) public pure returns (uint256) {
        if (borrows == 0) {
            return 0;
        }
        uint256 total = cash + borrows - reserves;
        if (total == 0) {
            return 0;
        }
        return (borrows * MANTISSA_ONE) / total;
    }

    /**
     * @inheritdoc InterestRateModel
     */
    function getBorrowRate(
        uint256 cash,
        uint256 borrows,
        uint256 reserves
    ) public view override returns (uint256) {
        uint256 util = utilizationRate(cash, borrows, reserves);
        uint256 ratePerSecond;

        if (util <= kink) {
            uint256 linearPart = (multiplierPerSecond * util) / MANTISSA_ONE;
            ratePerSecond = baseRatePerSecond + linearPart;
        } else {
            uint256 normalRate = baseRatePerSecond + (multiplierPerSecond * kink) / MANTISSA_ONE;
            uint256 excessUtil = util - kink;
            uint256 jumpPart = (jumpMultiplierPerSecond * excessUtil) / MANTISSA_ONE;
            ratePerSecond = normalRate + jumpPart;
        }

        if (ratePerSecond < minBorrowRatePerSecond) {
            ratePerSecond = minBorrowRatePerSecond;
        }
        return ratePerSecond;
    }

    /**
     * @inheritdoc InterestRateModel
     */
    function getSupplyRate(
        uint256 cash,
        uint256 borrows,
        uint256 reserves,
        uint256 reserveFactorMantissa_
    ) external view override returns (uint256) {
        uint256 util = utilizationRate(cash, borrows, reserves);
        uint256 borrowRate = getBorrowRate(cash, borrows, reserves);

        // supplyRate = utilization * borrowRate * (1 - reserveFactor)
        return (util * borrowRate * (MANTISSA_ONE - reserveFactorMantissa_)) / (MANTISSA_ONE * MANTISSA_ONE);
    }

    /**
     * @notice View helper: approximate blended supplier APY including the external yield target.
     * @dev This is informational only; it assumes targetMorphoSupplyAPY as the external yield input.
     */
    function getBoostedSupplyRate(
        uint256 cash,
        uint256 borrows,
        uint256 reserves,
        uint256 reserveFactorMantissa_
    ) external view returns (uint256) {
        uint256 util = utilizationRate(cash, borrows, reserves);
        uint256 borrowRateYear = getBorrowRate(cash, borrows, reserves) * SECONDS_PER_YEAR;

        // Borrow-derived supply component
        uint256 supplyFromBorrows = (util * borrowRateYear * (MANTISSA_ONE - reserveFactorMantissa_)) / (MANTISSA_ONE * MANTISSA_ONE);

        // Blended: (1 - U) * targetMorpho + U * supplyFromBorrows
        uint256 blended = ((MANTISSA_ONE - util) * targetMorphoSupplyAPY + util * supplyFromBorrows) / MANTISSA_ONE;
        return blended;
    }
}

// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.10;

/**
 * @title Peridot's InterestRateModel Interface
 * @author Peridot
 */
abstract contract InterestRateModel {
    /// @notice Indicator that this is an InterestRateModel contract (for inspection)
    bool public constant isInterestRateModel = true;

    /**
     * @notice Calculates the current borrow interest rate per block
     * @param cash The total amount of cash the market has
     * @param borrows The total amount of borrows the market has outstanding
     * @param reserves The total amount of reserves the market has
     * @return The borrow rate per block (as a percentage, and scaled by 1e18)
     */
    function getBorrowRate(uint256 cash, uint256 borrows, uint256 reserves) external view virtual returns (uint256);

    /**
     * @notice Calculates the current supply interest rate per block
     * @param cash The total amount of cash the market has
     * @param borrows The total amount of borrows the market has outstanding
     * @param reserves The total amount of reserves the market has
     * @param reserveFactorMantissa The current reserve factor the market has
     * @return The supply rate per block (as a percentage, and scaled by 1e18)
     */
    function getSupplyRate(uint256 cash, uint256 borrows, uint256 reserves, uint256 reserveFactorMantissa)
        external
        view
        virtual
        returns (uint256);
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@chainlink/contracts-ccip/contracts/=node_modules/@chainlink/contracts-ccip/contracts/",
    "@chainlink/contracts/=node_modules/@chainlink/contracts/",
    "solidity-bytes-utils/=lib/solidity-bytes-utils/",
    "@arbitrum/=node_modules/@arbitrum/",
    "@axelar-network/=node_modules/@axelar-network/",
    "@eth-optimism/=node_modules/@eth-optimism/",
    "@offchainlabs/=node_modules/@offchainlabs/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@pythnetwork/=node_modules/@pythnetwork/",
    "@scroll-tech/=node_modules/@scroll-tech/",
    "@storknetwork/=node_modules/@storknetwork/",
    "@thirdweb-dev/=node_modules/@thirdweb-dev/",
    "@zksync/=node_modules/@zksync/",
    "account-abstraction/=lib/account-abstraction/contracts/",
    "createx/=lib/pyth-crosschain/lazer/contracts/evm/lib/createx/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "erc721a-upgradeable/=node_modules/erc721a-upgradeable/",
    "eth-gas-reporter/=node_modules/eth-gas-reporter/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "hardhat/=node_modules/hardhat/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin-foundry-upgrades/=lib/pyth-crosschain/target_chains/ethereum/sdk/stylus/pyth-mock-solidity/lib/openzeppelin-foundry-upgrades/src/",
    "pyth-crosschain/=lib/pyth-crosschain/",
    "solady/=node_modules/solady/",
    "solidity-stringutils/=lib/pyth-crosschain/target_chains/ethereum/sdk/stylus/pyth-mock-solidity/lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/",
    "sstore2/=node_modules/@thirdweb-dev/dynamic-contracts/lib/sstore2/",
    "wormhole-ntt/=lib/wormhole-ntt/src/",
    "wormhole-solidity-sdk/=lib/wormhole-solidity-sdk/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": true,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "prague",
  "viaIR": true
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear_","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear_","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear_","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"uint256","name":"targetMorphoSupplyAPY_","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"},{"internalType":"uint256","name":"safetyMarginMantissa_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MANTISSA_ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECONDS_PER_YEAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseRatePerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"borrowRatePerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"}],"name":"getBoostedSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa_","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jumpMultiplierPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jumpMultiplierPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBorrowRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBorrowRatePerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiplierPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiplierPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveFactorMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"safetyMarginMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetMorphoSupplyAPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]

6102003461029d57601f610ab938819003918201601f19168301916001600160401b038311848410176102a15780849260e09460405283398101031261029d578051602082015190604083015191606084015193608081015160c060a083015192015195670de0b6b3a7640000811161025857670de0b6b3a7640000831015610220578460a0528360c0528560e05260805280610100528161012052856101405281670de0b6b3a76400000391670de0b6b3a764000083116101f857670de0b6b3a7640000820291808304670de0b6b3a764000014901517156101f857670de0b6b3a76400001461020c570493670de0b6b3a7640000019384670de0b6b3a7640000116101f8578481029481860414901517156101f8576301e1338080949281670de0b6b3a764000081950480610160520461018052046101a052046101c052046101e05260405161080390816102b6823960805181818161010c0152610650015260a051816101fe015260c0518161016c015260e051816103fc01526101005181818161032d01526105ad015261012051816104c5015261014051816101a60152610160518161048b01526101805181818161043601526106d601526101a05181818161023801526106b001526101c0518181816103c201528181610689015261072301526101e051818181610367015261074f0152f35b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b60405162461bcd60e51b815260206004820152601060248201526f426f6f737465643a205246203e3d203160801b6044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f426f6f737465643a20696e76616c6964206b696e6b00000000000000000000006044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806310239024146104fb57806315f24053146104e8578063173b9904146104ae57806318e3305f146104745780632191f92a14610459578063267d535e1461041f57806341bac600146103e557806346f608ff146103ab5780636e71e2d81461038a57806372cf84a7146103505780639c2077dc14610316578063b8168816146102aa578063c454a2a01461025b578063d90e026414610221578063de3f9485146101e7578063e6a69ab8146101c9578063ef26a8e71461018f578063f1b820d514610155578063f23c0f40146101335763fd2da339146100f5575f80fd5b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b3461012f575f36600319011261012f576020604051670de0b6b3a76400008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040516301e133808152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f5761027261026c366105fc565b91610643565b6301e133808102908082046301e13380149015171561029657602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461012f576102d16102d76102be366105de565b94916102cb82828661077f565b93610643565b90610616565b90670de0b6b3a764000003670de0b6b3a764000081116102965761030d6ec097ce7bc90715b34b9f100000000091602093610616565b04604051908152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f5760206103a361039d366105fc565b9161077f565b604051908152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f57602060405160018152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f5760206103a361026c366105fc565b3461012f5761052061050c366105de565b92939161051a82828761077f565b94610643565b6301e133808102908082046301e133801490151715610296576105439083610616565b90670de0b6b3a76400000390670de0b6b3a76400008211610296576ec097ce7bc90715b34b9f10000000009161057891610616565b0481670de0b6b3a76400000390670de0b6b3a76400008211610296576020926105d861030d926105d2670de0b6b3a7640000957f000000000000000000000000000000000000000000000000000000000000000090610616565b92610616565b90610636565b608090600319011261012f5760043590602435906044359060643590565b606090600319011261012f57600435906024359060443590565b8181029291811591840414171561029657565b9190820391821161029657565b9190820180921161029657565b9061064e929161077f565b7f00000000000000000000000000000000000000000000000000000000000000008082116107055750670de0b6b3a76400006106ad6106d4927f0000000000000000000000000000000000000000000000000000000000000000610616565b047f0000000000000000000000000000000000000000000000000000000000000000610636565b7f0000000000000000000000000000000000000000000000000000000000000000808210610700575090565b905090565b90670de0b6b3a764000061077361074d84610747846106ad61077a987f0000000000000000000000000000000000000000000000000000000000000000610616565b94610629565b7f0000000000000000000000000000000000000000000000000000000000000000610616565b0490610636565b6106d4565b909182156107c6576107948361079993610636565b610629565b9081156107c057670de0b6b3a76400008102908104670de0b6b3a764000003610296570490565b50505f90565b5050505f9056fea26469706673582212200f26256cbfccdabb1bf43f7fb5cf9d4a22c8eb88b80d1b4b803e9dd571c58ae064736f6c634300081e00330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011c37937e08000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000b1a2bc2ec50000

Deployed Bytecode

0x60806040526004361015610011575f80fd5b5f3560e01c806310239024146104fb57806315f24053146104e8578063173b9904146104ae57806318e3305f146104745780632191f92a14610459578063267d535e1461041f57806341bac600146103e557806346f608ff146103ab5780636e71e2d81461038a57806372cf84a7146103505780639c2077dc14610316578063b8168816146102aa578063c454a2a01461025b578063d90e026414610221578063de3f9485146101e7578063e6a69ab8146101c9578063ef26a8e71461018f578063f1b820d514610155578063f23c0f40146101335763fd2da339146100f5575f80fd5b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000003782dace9d900008152f35b5f80fd5b3461012f575f36600319011261012f576020604051670de0b6b3a76400008152f35b3461012f575f36600319011261012f5760206040517f000000000000000000000000000000000000000000000000011c37937e0800008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000b1a2bc2ec500008152f35b3461012f575f36600319011261012f5760206040516301e133808152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012f5761027261026c366105fc565b91610643565b6301e133808102908082046301e13380149015171561029657602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461012f576102d16102d76102be366105de565b94916102cb82828661077f565b93610643565b90610616565b90670de0b6b3a764000003670de0b6b3a764000081116102965761030d6ec097ce7bc90715b34b9f100000000091602093610616565b04604051908152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000b1a2bc2ec500008152f35b3461012f575f36600319011261012f5760206040517f000000000000000000000000000000000000000000000000000000017a029afc8152f35b3461012f5760206103a361039d366105fc565b9161077f565b604051908152f35b3461012f575f36600319011261012f5760206040517f0000000000000000000000000000000000000000000000000000000097343dfe8152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000002c68af0bb1400008152f35b3461012f575f36600319011261012f5760206040517f000000000000000000000000000000000000000000000000000000006e40c2898152f35b3461012f575f36600319011261012f57602060405160018152f35b3461012f575f36600319011261012f5760206040517f00000000000000000000000000000000000000000000000000cf3ddb8be5d5548152f35b3461012f575f36600319011261012f5760206040517f000000000000000000000000000000000000000000000000016345785d8a00008152f35b3461012f5760206103a361026c366105fc565b3461012f5761052061050c366105de565b92939161051a82828761077f565b94610643565b6301e133808102908082046301e133801490151715610296576105439083610616565b90670de0b6b3a76400000390670de0b6b3a76400008211610296576ec097ce7bc90715b34b9f10000000009161057891610616565b0481670de0b6b3a76400000390670de0b6b3a76400008211610296576020926105d861030d926105d2670de0b6b3a7640000957f00000000000000000000000000000000000000000000000000b1a2bc2ec5000090610616565b92610616565b90610636565b608090600319011261012f5760043590602435906044359060643590565b606090600319011261012f57600435906024359060443590565b8181029291811591840414171561029657565b9190820391821161029657565b9190820180921161029657565b9061064e929161077f565b7f00000000000000000000000000000000000000000000000003782dace9d900008082116107055750670de0b6b3a76400006106ad6106d4927f0000000000000000000000000000000000000000000000000000000097343dfe610616565b047f0000000000000000000000000000000000000000000000000000000000000000610636565b7f000000000000000000000000000000000000000000000000000000006e40c289808210610700575090565b905090565b90670de0b6b3a764000061077361074d84610747846106ad61077a987f0000000000000000000000000000000000000000000000000000000097343dfe610616565b94610629565b7f000000000000000000000000000000000000000000000000000000017a029afc610616565b0490610636565b6106d4565b909182156107c6576107948361079993610636565b610629565b9081156107c057670de0b6b3a76400008102908104670de0b6b3a764000003610296570490565b50505f90565b5050505f9056fea26469706673582212200f26256cbfccdabb1bf43f7fb5cf9d4a22c8eb88b80d1b4b803e9dd571c58ae064736f6c634300081e0033

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011c37937e08000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000b1a2bc2ec50000

-----Decoded View---------------
Arg [0] : baseRatePerYear_ (uint256): 0
Arg [1] : multiplierPerYear_ (uint256): 80000000000000000
Arg [2] : jumpMultiplierPerYear_ (uint256): 200000000000000000
Arg [3] : kink_ (uint256): 250000000000000000
Arg [4] : targetMorphoSupplyAPY_ (uint256): 50000000000000000
Arg [5] : reserveFactorMantissa_ (uint256): 100000000000000000
Arg [6] : safetyMarginMantissa_ (uint256): 50000000000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000000000000000000000000000011c37937e080000
Arg [2] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Arg [3] : 00000000000000000000000000000000000000000000000003782dace9d90000
Arg [4] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [5] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [6] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000


Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.