Source Code
Overview
S Balance
S Value
$0.00| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 50966857 | 101 days ago | Contract Creation | 0 S |
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xf0B84DDB...4871D6f49 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
DynamicKinkModelConfig
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.28;
import {IDynamicKinkModelConfig} from "../../interfaces/IDynamicKinkModelConfig.sol";
import {IDynamicKinkModel} from "../../interfaces/IDynamicKinkModel.sol";
/// @title InterestRateModelV2Config
/// @notice Please never deploy config manually, always use factory, because factory does necessary checks.
contract DynamicKinkModelConfig is IDynamicKinkModelConfig {
int256 internal immutable _ULOW;
int256 internal immutable _U1;
int256 internal immutable _U2;
int256 internal immutable _UCRIT;
int256 internal immutable _RMIN;
int96 internal immutable _KMIN;
int96 internal immutable _KMAX;
int256 internal immutable _ALPHA;
int256 internal immutable _CMINUS;
int256 internal immutable _CPLUS;
int256 internal immutable _C1;
int256 internal immutable _C2;
int256 internal immutable _DMAX;
uint32 internal immutable _TIMELOCK;
int96 internal immutable _RCOMP_CAP_PER_SECOND;
constructor(IDynamicKinkModel.Config memory _config, IDynamicKinkModel.ImmutableConfig memory _immutableConfig) {
_ULOW = _config.ulow;
_U1 = _config.u1;
_U2 = _config.u2;
_UCRIT = _config.ucrit;
_RMIN = _config.rmin;
_KMIN = _config.kmin;
_KMAX = _config.kmax;
_ALPHA = _config.alpha;
_CMINUS = _config.cminus;
_CPLUS = _config.cplus;
_C1 = _config.c1;
_C2 = _config.c2;
_DMAX = _config.dmax;
_TIMELOCK = _immutableConfig.timelock;
_RCOMP_CAP_PER_SECOND = _immutableConfig.rcompCapPerSecond;
}
/// @inheritdoc IDynamicKinkModelConfig
function getConfig()
external
view
virtual
returns (IDynamicKinkModel.Config memory config, IDynamicKinkModel.ImmutableConfig memory immutableConfig)
{
config.ulow = _ULOW;
config.u1 = _U1;
config.u2 = _U2;
config.ucrit = _UCRIT;
config.rmin = _RMIN;
config.kmin = _KMIN;
config.kmax = _KMAX;
config.alpha = _ALPHA;
config.cminus = _CMINUS;
config.cplus = _CPLUS;
config.c1 = _C1;
config.c2 = _C2;
config.dmax = _DMAX;
immutableConfig.timelock = _TIMELOCK;
immutableConfig.rcompCapPerSecond = _RCOMP_CAP_PER_SECOND;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
import {IDynamicKinkModel} from "./IDynamicKinkModel.sol";
interface IDynamicKinkModelConfig {
/// @return config returns immutable IRM configuration that is present in contract
function getConfig()
external
view
returns (IDynamicKinkModel.Config memory config, IDynamicKinkModel.ImmutableConfig memory immutableConfig);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
import {IDynamicKinkModelConfig} from "./IDynamicKinkModelConfig.sol";
/// @title IDynamicKinkModel
/// @notice Interface for the Dynamic Kink Interest Rate Model
/// @dev This interface defines an adaptive interest rate model that dynamically adjusts rates based on market
/// utilization.
/// The model uses a "kink" mechanism where interest rates change more aggressively as utilization increases.
/// Unlike static models, this implementation adapts over time to market conditions.
///
/// Key Features:
/// - Dynamic rate adjustment based on utilization thresholds
/// - Time-based rate evolution to prevent sudden spikes
/// - Configurable parameters for different market conditions
/// - Compound interest calculation for accurate accrual
///
/// The model operates with several utilization zones:
/// - Low utilization (0 to ulow): Minimal rates to encourage borrowing
/// - Optimal range (u1 to u2): Stable rates for normal operations
/// - High utilization (u2 to ucrit): Increasing rates to manage risk
/// - Critical utilization (ucrit to 1e18): Maximum rates
interface IDynamicKinkModel {
/// @notice User-friendly configuration structure for setting up the Dynamic Kink Model
/// @dev This structure provides intuitive parameters that are converted to internal model parameters.
/// All utilization values are in 18 decimals (e.g., 0.5e18 = 50% utilization).
/// All time values are in seconds.
///
/// @param ulow Utilization threshold below which rates are minimal
/// @param ucrit Critical utilization threshold where rates become very high
/// @param u1 lower bound of optimal utilization range (the model is static when utilization is in this interval).
/// @param u2 upper bound of optimal utilization range (the model is static when utilization is in this interval).
/// @param rmin Minimal per-second interest rate (minimal APR), active below ulow.
/// @param rcritMin Minimal APR that the model can output at the critical utilization ucrit
/// @param rcritMax Maximal APR that the model can output at the critical utilization ucrit
/// @param r100 Maximum possible per-second rate at 100% utilization
/// @param t1 Time in seconds for rate to decrease from max to min at u1 utilization
/// @param t2 Time in seconds for rate to increase from min to max at u2 utilization
/// @param tlow Time in seconds to reset rates when utilization drops to ulow
/// @param tcrit Time in seconds for rate to increase from min to max at critical utilization
/// @param tMin minimal time it takes to grow from the minimal to the maximal APR at any utilization
struct UserFriendlyConfig {
uint64 ulow;
uint64 ucrit;
uint64 u1;
uint64 u2;
uint72 rmin;
uint72 rcritMin;
uint72 rcritMax;
uint72 r100;
uint32 t1;
uint32 t2;
uint32 tlow;
uint32 tcrit;
uint32 tMin;
}
/// @dev same as UserFriendlyConfig but with int256 values to help with calculations
struct UserFriendlyConfigInt {
int256 ulow;
int256 ucrit;
int256 u1;
int256 u2;
int256 rmin;
int256 rcritMin;
int256 rcritMax;
int256 r100;
int256 t1;
int256 t2;
int256 tlow;
int256 tcrit;
int256 tMin;
}
/// @notice Internal configuration structure used by the model for calculations
/// @dev These values are used in the mathematical calculations of the interest rate model.
/// Utilization values are in 18 decimals 1e18 = 100%.
/// @param ulow ulow ∈ [0, 1e18) Low utilization threshold
/// @param u1 u1 ∈ [0, 1e18) Lower bound of optimal utilization range
/// @param u2 u2 ∈ [u1, 1e18) Upper bound of optimal utilization range
/// @param ucrit ucrit ∈ [ulow, 1e18) Critical utilization threshold
/// @param rmin rmin >= 0 Minimal per-second interest rate
/// @param kmin kmin >= 0 Minimal slope k of central segment (curve) of the kink
/// @param kmax kmax >= kmin Maximal slope k of central segment (curve) of the kink
/// @param alpha alpha >= 0 Factor controlling the slope for the critical segment of the kink
/// @param cminus cminus >= 0 Coefficient of decrease of the slope k
/// @param cplus cplus >= 0 Coefficient for increasing the slope k
/// @param c1 c1 >= 0 Minimal rate of decrease of the slope k
/// @param c2 c2 >= 0 Minimal growth rate of the slope k
/// @param dmax dmax >= 0 Maximum growth rate of the slope k
struct Config {
int256 ulow;
int256 u1;
int256 u2;
int256 ucrit;
int256 rmin;
int96 kmin;
int96 kmax;
int256 alpha;
int256 cminus;
int256 cplus;
int256 c1;
int256 c2;
int256 dmax;
}
struct ImmutableArgs {
uint32 timelock;
int96 rcompCap;
}
struct ImmutableConfig {
uint32 timelock;
int96 rcompCapPerSecond;
}
/// @notice Internal variables used during compound interest calculations
/// @dev This structure contains temporary variables used in the mathematical calculations.
/// Integrators typically don't need to interact with these values directly.
///
/// @param T Time elapsed since the last interest rate update (in seconds)
/// @param k1 Internal variable for slope calculations
/// @param f Factor used in kink slope calculations
/// @param roc Rate of change variable for slope calculations
/// @param x Internal calculation variable
/// @param interest Absolute value of compounded interest
struct LocalVarsRCOMP {
int256 T;
int256 k1;
int256 f;
int256 roc;
int256 x;
int256 interest;
}
struct CompoundInterestRateArgs {
address silo;
uint256 collateralAssets;
uint256 debtAssets;
uint256 interestRateTimestamp;
uint256 blockTimestamp;
bool usePending;
}
/// @notice Current state of the Dynamic Kink Model
/// @dev This structure tracks the current state of the model, including the dynamic slope value
/// that changes over time based on utilization patterns.
///
/// @param k Current slope value of the kink curve (changes dynamically over time)
/// @param silo Address of the Silo contract this model is associated with
struct ModelState {
int96 k;
address silo;
}
/// @notice Emitted when the model is initialized with a new configuration
/// @param owner Address that will own this model instance
/// @param silo Address of the Silo contract this model is associated with
event Initialized(address indexed owner, address indexed silo);
/// @notice Emitted when a new configuration is set for the model
/// @param config The new configuration contract address
/// @param activeAt Timestamp at which the configuration becomes active
event NewConfig(IDynamicKinkModelConfig indexed config, uint256 activeAt);
/// @notice Emitted when a pending configuration update is canceled
/// @param config The canceled configuration contract address
event PendingUpdateConfigCanceled(IDynamicKinkModelConfig indexed config);
error AddressZero();
error AlphaDividerZero();
error AlreadyInitialized();
error EmptySilo();
error InvalidAlpha();
error InvalidC1();
error InvalidC2();
error InvalidCminus();
error InvalidCplus();
error InvalidDefaultConfig();
error InvalidDmax();
error InvalidKmax();
error InvalidKmin();
error InvalidKRange();
error InvalidRcompCap();
error InvalidRcritMax();
error InvalidRcritMin();
error InvalidRmin();
error InvalidSilo();
error InvalidT1();
error InvalidT2();
error InvalidTimelock();
error InvalidTimestamp();
error InvalidTMin();
error InvalidTLow();
error InvalidTCrit();
error InvalidU1();
error InvalidU2();
error InvalidUcrit();
error InvalidUlow();
error NegativeRcomp();
error NegativeRcur();
error NoPendingUpdateToCancel();
error NoPendingConfig();
error OnlySilo();
error PendingUpdate();
error XOverflow();
/// @notice Initialize the Dynamic Kink Model with configuration and ownership
/// @dev This function sets up the model for a specific Silo contract. Can only be called once.
/// @param _config The configuration parameters for the interest rate model
/// @param _immutableArgs The immutable configuration parameters for the interest rate model
/// @param _initialOwner Address that will own and control this model instance
/// @param _silo Address of the Silo contract this model will serve
function initialize(
IDynamicKinkModel.Config calldata _config,
IDynamicKinkModel.ImmutableArgs calldata _immutableArgs,
address _initialOwner,
address _silo
)
external;
/// @notice Update the model configuration
/// @dev This function allows the model owner to update the configuration of the model.
/// By setting the same config, we can reset k to kmin.
/// @param _config The new configuration parameters for the interest rate model
function updateConfig(IDynamicKinkModel.Config calldata _config) external;
/// @notice Cancel the pending configuration update
/// @dev This function allows the model owner to cancel the pending configuration update.
/// It will revert if there is no pending update.
function cancelPendingUpdateConfig() external;
/// @notice Calculate compound interest rate and update the model's internal state
/// @dev This function is the primary method used by Silo contracts to calculate
/// and accrue interest. Unlike getCompoundInterestRate(), this function
/// modifies the model's internal state by updating the dynamic slope value (k).
///
/// This function should only be called by the associated Silo contract,
/// as it performs state updates that affect future interest calculations.
/// It includes comprehensive overflow protection and gracefully handles
/// calculation errors by returning 0 and resetting the slope to minimum.
///
/// The function calculates interest based on:
/// - Current collateral and debt amounts
/// - Time elapsed since last interest rate update
/// - Dynamic slope adjustments based on utilization patterns
///
/// @param _collateralAssets Total collateral assets in the Silo (in asset units)
/// @param _debtAssets Total debt assets in the Silo (in asset units)
/// @param _interestRateTimestamp Timestamp of the last interest rate update
/// @return rcomp Total compound interest multiplier (in 18 decimals, represents total accrued interest)
/// @custom:throws OnlySilo() if called by any address other than the associated Silo contract
function getCompoundInterestRateAndUpdate(
uint256 _collateralAssets,
uint256 _debtAssets,
uint256 _interestRateTimestamp
)
external
returns (uint256 rcomp);
/// @notice Get the current (active) configuration contract for this model
/// @return config The IDynamicKinkModelConfig contract containing the model parameters
function irmConfig() external view returns (IDynamicKinkModelConfig config);
/// @notice Get both the current model state and configuration
/// @param _usePending Whether to use the pending configuration to pull config from
/// @return state Current state of the model (including dynamic slope value)
/// @return config configuration parameters, either active or pending, depending on _usePending
/// @return immutableConfig Immutable configuration parameters
function getModelStateAndConfig(bool _usePending)
external
view
returns (ModelState memory state, Config memory config, ImmutableConfig memory immutableConfig);
/// @notice Maximum compound interest rate per second (prevents extreme rates)
/// @return cap Maximum per-second compound interest rate in 18 decimals
function RCOMP_CAP_PER_SECOND() external view returns (int256 cap); // solhint-disable-line func-name-mixedcase
/// @notice Maximum current interest rate (prevents extreme APRs)
/// @return cap Maximum annual interest rate in 18 decimals (e.g., 25e18 = 2500% APR)
function RCUR_CAP() external view returns (int256 cap); // solhint-disable-line func-name-mixedcase
/// @notice Number of seconds in one year (used for rate calculations)
/// @return secondsInYear Seconds in one year (365 days)
function ONE_YEAR() external view returns (int256 secondsInYear); // solhint-disable-line func-name-mixedcase
/// @notice Maximum input value for exponential calculations (prevents overflow)
/// @return max Maximum safe input value for exp() function
function X_MAX() external view returns (int256 max); // solhint-disable-line func-name-mixedcase
/// @notice Universal limit for various model parameters
/// @return limit Maximum allowed value for certain configuration parameters
function UNIVERSAL_LIMIT() external view returns (int256 limit); // solhint-disable-line func-name-mixedcase
/// @notice Maximum time lock for configuration changes
/// @return maxTimeLock Maximum time lock for configuration changes
function MAX_TIMELOCK() external view returns (uint32 maxTimeLock); // solhint-disable-line func-name-mixedcase
/// @return timestamp Timestamp at which the pending configuration becomes active
function activateConfigAt() external view returns (uint256 timestamp);
/// @return pendingIrmConfig Pending irm config for configuration changes, 0 if no pending
function pendingIrmConfig() external view returns (address pendingIrmConfig);
/// @notice Validate that configuration parameters are within acceptable limits
/// @dev This function checks if all configuration parameters are within the safe operating ranges
/// defined by the model whitepaper. Some limits are narrower than the original whitepaper
/// due to additional research and safety considerations.
///
/// For detailed limits, see:
/// https://silofinance.atlassian.net/wiki/spaces/SF/pages/347963393/DynamicKink+model+config+limits+V1
///
/// @param _config The configuration to validate (does not include model state)
/// @custom:throws Reverts if any parameter is outside acceptable limits
function verifyConfig(IDynamicKinkModel.Config calldata _config) external view;
/// @notice Calculate compound interest rate for a specific Silo at a given timestamp
/// @dev This function calculates the total compound interest that has accrued over time
/// for a specific Silo contract.
///
/// The function fetches current utilization data from the Silo contract and
/// calculates interest based on the time elapsed since the last rate update.
/// It handles overflow protection and returns 0 if calculations would overflow.
///
/// @param _silo Address of the Silo contract to calculate interest for
/// @param _blockTimestamp Timestamp to calculate interest up to (usually block.timestamp)
/// @return rcomp Total compound interest multiplier (in 18 decimals, represents total accrued interest)
/// @custom:throws InvalidSilo() if the provided Silo address doesn't match this model's associated Silo
function getCompoundInterestRate(address _silo, uint256 _blockTimestamp)
external
view
returns (uint256 rcomp);
/// @notice Same as getCompoundInterestRate but uses pending configuration, throws if no pending
function getPendingCompoundInterestRate(address _silo, uint256 _blockTimestamp)
external
view
returns (uint256 rcomp);
/// @notice get current annual interest rate
/// @param _silo address of Silo for which interest rate should be calculated
/// @param _blockTimestamp timestamp to calculate interest up to (usually block.timestamp)
/// @return rcur current annual interest rate (1e18 == 100%)
function getCurrentInterestRate(address _silo, uint256 _blockTimestamp)
external
view
returns (uint256 rcur);
/// @notice Same as getCurrentInterestRate but uses pending configuration, throws if no pending
function getPendingCurrentInterestRate(address _silo, uint256 _blockTimestamp)
external
view
returns (uint256 rcur);
/// @notice Calculate the compound interest rate for a given time period
/// @dev This function calculates how much interest has accrued over a time period,
/// taking into account the dynamic nature of the kink model. The rate changes
/// over time based on utilization patterns and the model's adaptive behavior.
///
/// This is the core function used by Silo contracts to determine how much
/// interest borrowers owe and how much lenders should receive.
///
/// @param _cfg Model configuration parameters
/// @param _state Current model state (including dynamic slope value)
/// @param _rcompCapPerSecond Maximum compound interest rate per second
/// @param _t0 Timestamp of the last interest rate update
/// @param _t1 Current timestamp for the calculation
/// @param _u Utilization ratio at time _t0 (0 to 1e18, where 1e18 = 100% utilized)
/// @param _tba Total borrowed amount at time _t1
/// @return rcomp Total compound interest accrued over the time period (in 18 decimals, represents multiplier)
/// @return k Updated model state (new slope value) at time _t1
function compoundInterestRate(
Config memory _cfg,
ModelState memory _state,
int256 _rcompCapPerSecond,
int256 _t0,
int256 _t1,
int256 _u,
int256 _tba
)
external
pure
returns (int256 rcomp, int256 k);
/// @notice Calculate the current instantaneous interest rate
/// @dev This function returns the current interest rate that would apply if a new
/// transaction were to occur right now. Unlike compoundInterestRate, this
/// doesn't calculate accrued interest over time, but rather the rate at
/// the current moment.
///
/// This is useful for:
/// - Displaying current rates to users
/// - Calculating what rate would apply to new borrows
/// - Monitoring rate changes in real-time
///
/// @param _cfg Model configuration parameters
/// @param _state Current model state (including dynamic slope value)
/// @param _t0 Timestamp of the last interest rate update
/// @param _t1 Current timestamp for the calculation
/// @param _u Current utilization ratio (0 to 1e18, where 1e18 = 100% utilized)
/// @param _tba Current total borrowed amount
/// @return rcur Current instantaneous interest rate (in 18 decimals, annual rate)
function currentInterestRate(
Config memory _cfg,
ModelState memory _state,
int256 _t0,
int256 _t1,
int256 _u,
int256 _tba
)
external
pure
returns (int256 rcur);
}{
"remappings": [
"forge-std/=gitmodules/forge-std/src/",
"silo-foundry-utils/=gitmodules/silo-foundry-utils/contracts/",
"properties/=gitmodules/crytic/properties/contracts/",
"silo-core/=silo-core/",
"silo-oracles/=silo-oracles/",
"silo-vaults/=silo-vaults/",
"@openzeppelin/=gitmodules/openzeppelin-contracts-5/",
"morpho-blue/=gitmodules/morpho-blue/src/",
"openzeppelin5/=gitmodules/openzeppelin-contracts-5/contracts/",
"openzeppelin5-upgradeable/=gitmodules/openzeppelin-contracts-upgradeable-5/contracts/",
"chainlink/=gitmodules/chainlink/contracts/src/",
"chainlink-ccip/=gitmodules/chainlink-ccip/contracts/src/",
"uniswap/=gitmodules/uniswap/",
"@uniswap/v3-core/=gitmodules/uniswap/v3-core/",
"pyth-sdk-solidity/=gitmodules/pyth-sdk-solidity/target_chains/ethereum/sdk/solidity/",
"a16z-erc4626-tests/=gitmodules/a16z-erc4626-tests/",
"@ensdomains/=node_modules/@ensdomains/",
"@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/",
"ERC4626/=gitmodules/crytic/properties/lib/ERC4626/contracts/",
"createx/=gitmodules/pyth-sdk-solidity/lazer/contracts/evm/lib/createx/src/",
"crytic/=gitmodules/crytic/",
"ds-test/=gitmodules/openzeppelin-contracts-5/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=gitmodules/openzeppelin-contracts-5/lib/erc4626-tests/",
"halmos-cheatcodes/=gitmodules/morpho-blue/lib/halmos-cheatcodes/src/",
"hardhat/=node_modules/hardhat/",
"openzeppelin-contracts-5/=gitmodules/openzeppelin-contracts-5/",
"openzeppelin-contracts-upgradeable-5/=gitmodules/openzeppelin-contracts-upgradeable-5/",
"openzeppelin-contracts-upgradeable/=gitmodules/pyth-sdk-solidity/lazer/contracts/evm/lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=gitmodules/openzeppelin-contracts-upgradeable-5/lib/openzeppelin-contracts/",
"prettier-plugin-solidity/=node_modules/prettier-plugin-solidity/",
"solady/=gitmodules/pyth-sdk-solidity/lazer/contracts/evm/lib/createx/lib/solady/",
"solmate/=gitmodules/crytic/properties/lib/solmate/src/",
"x-silo/=node_modules/x-silo/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"int256","name":"ulow","type":"int256"},{"internalType":"int256","name":"u1","type":"int256"},{"internalType":"int256","name":"u2","type":"int256"},{"internalType":"int256","name":"ucrit","type":"int256"},{"internalType":"int256","name":"rmin","type":"int256"},{"internalType":"int96","name":"kmin","type":"int96"},{"internalType":"int96","name":"kmax","type":"int96"},{"internalType":"int256","name":"alpha","type":"int256"},{"internalType":"int256","name":"cminus","type":"int256"},{"internalType":"int256","name":"cplus","type":"int256"},{"internalType":"int256","name":"c1","type":"int256"},{"internalType":"int256","name":"c2","type":"int256"},{"internalType":"int256","name":"dmax","type":"int256"}],"internalType":"struct IDynamicKinkModel.Config","name":"_config","type":"tuple"},{"components":[{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"int96","name":"rcompCapPerSecond","type":"int96"}],"internalType":"struct IDynamicKinkModel.ImmutableConfig","name":"_immutableConfig","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getConfig","outputs":[{"components":[{"internalType":"int256","name":"ulow","type":"int256"},{"internalType":"int256","name":"u1","type":"int256"},{"internalType":"int256","name":"u2","type":"int256"},{"internalType":"int256","name":"ucrit","type":"int256"},{"internalType":"int256","name":"rmin","type":"int256"},{"internalType":"int96","name":"kmin","type":"int96"},{"internalType":"int96","name":"kmax","type":"int96"},{"internalType":"int256","name":"alpha","type":"int256"},{"internalType":"int256","name":"cminus","type":"int256"},{"internalType":"int256","name":"cplus","type":"int256"},{"internalType":"int256","name":"c1","type":"int256"},{"internalType":"int256","name":"c2","type":"int256"},{"internalType":"int256","name":"dmax","type":"int256"}],"internalType":"struct IDynamicKinkModel.Config","name":"config","type":"tuple"},{"components":[{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"int96","name":"rcompCapPerSecond","type":"int96"}],"internalType":"struct IDynamicKinkModel.ImmutableConfig","name":"immutableConfig","type":"tuple"}],"stateMutability":"view","type":"function"}]Contract Creation Code
0x610260604052348015610010575f5ffd5b5060405161070638038061070683398101604081905261002f91610186565b8151608090815260208084015160a0908152604085015160c0908152606086015160e09081529386015161010090815291860151600b90810b61012090815291870151810b6101409081529487015161016090815292870151610180908152918701516101a052938601516101c052908501516101e0529093015161020052815163ffffffff1661022052910151900b61024052610258565b6040516101a081016001600160401b03811182821017156100f757634e487b7160e01b5f52604160045260245ffd5b60405290565b8051600b81900b811461010e575f5ffd5b919050565b5f60408284031215610123575f5ffd5b604080519081016001600160401b038111828210171561015157634e487b7160e01b5f52604160045260245ffd5b8060405250809150825163ffffffff8116811461016c575f5ffd5b815261017a602084016100fd565b60208201525092915050565b5f5f8284036101e0811215610199575f5ffd5b6101a08112156101a7575f5ffd5b506101b06100c8565b83518152602080850151908201526040808501519082015260608085015190820152608080850151908201526101e860a085016100fd565b60a08201526101f960c085016100fd565b60c082015260e0848101519082015261010080850151908201526101208085015190820152610140808501519082015261016080850151908201526101808085015190820152915061024f846101a08501610113565b90509250929050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161040f6102f75f395f6102e101525f6102b801525f61029101525f61026a01525f61024301525f61021c01525f6101f501525f6101cf01525f6101a701525f61017c01525f61015601525f61013001525f61010801525f60de01525f60bb015261040f5ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063c3f909d41461002d575b5f5ffd5b61003561004c565b60405161004392919061030d565b60405180910390f35b6100b0604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f600b0b81526020015f600b0b81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040805180820182527f000000000000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000006020848101919091527f0000000000000000000000000000000000000000000000000000000000000000928401929092527f000000000000000000000000000000000000000000000000000000000000000060608401527f000000000000000000000000000000000000000000000000000000000000000060808401527f0000000000000000000000000000000000000000000000000000000000000000600b90810b60a08501527f0000000000000000000000000000000000000000000000000000000000000000810b60c08501527f000000000000000000000000000000000000000000000000000000000000000060e08501527f00000000000000000000000000000000000000000000000000000000000000006101008501527f00000000000000000000000000000000000000000000000000000000000000006101208501527f00000000000000000000000000000000000000000000000000000000000000006101408501527f00000000000000000000000000000000000000000000000000000000000000006101608501527f00000000000000000000000000000000000000000000000000000000000000006101808501527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1682527f0000000000000000000000000000000000000000000000000000000000000000900b918101919091529091565b5f6101e082019050835182526020840151602083015260408401516040830152606084015160608301526080840151608083015260a084015161035560a0840182600b0b9052565b5060c084015161036a60c0840182600b0b9052565b5060e084015160e08301526101008401516101008301526101208401516101208301526101408401516101408301526101608401516101608301526101808401516101808301526103d26101a0830184805163ffffffff168252602090810151600b0b910152565b939250505056fea2646970667358221220619ee1fb528768e5e457b5218aba0498e56c671f229fed9146e79df29a77705364736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007620d06ef
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063c3f909d41461002d575b5f5ffd5b61003561004c565b60405161004392919061030d565b60405180910390f35b6100b0604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f600b0b81526020015f600b0b81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040805180820182527f000000000000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000006020848101919091527f0000000000000000000000000000000000000000000000000000000000000000928401929092527f000000000000000000000000000000000000000000000000000000000000000060608401527f000000000000000000000000000000000000000000000000000000000000000060808401527f0000000000000000000000000000000000000000000000000000000000000000600b90810b60a08501527f0000000000000000000000000000000000000000000000000000000000000000810b60c08501527f000000000000000000000000000000000000000000000000000000000000000060e08501527f00000000000000000000000000000000000000000000000000000000000000006101008501527f00000000000000000000000000000000000000000000000000000000000000006101208501527f00000000000000000000000000000000000000000000000000000000000000006101408501527f00000000000000000000000000000000000000000000000000000000000000006101608501527f00000000000000000000000000000000000000000000000000000000000000006101808501527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1682527f00000000000000000000000000000000000000000000000000000007620d06ef900b918101919091529091565b5f6101e082019050835182526020840151602083015260408401516040830152606084015160608301526080840151608083015260a084015161035560a0840182600b0b9052565b5060c084015161036a60c0840182600b0b9052565b5060e084015160e08301526101008401516101008301526101208401516101208301526101408401516101408301526101608401516101608301526101808401516101808301526103d26101a0830184805163ffffffff168252602090810151600b0b910152565b939250505056fea2646970667358221220619ee1fb528768e5e457b5218aba0498e56c671f229fed9146e79df29a77705364736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.