Source Code
Overview
MON Balance
MON Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
JumpRateModelBoosted
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
Yes with 200 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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);
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MON
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.