Source Code
Overview
ETH Balance
ETH Value
$0.00| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 28297608 | 20 hrs ago | 0 ETH | ||||
| 28228789 | 2 days ago | 0 ETH | ||||
| 28228789 | 2 days ago | 0 ETH | ||||
| 28204182 | 3 days ago | 0 ETH | ||||
| 28199680 | 3 days ago | 0 ETH | ||||
| 28175795 | 3 days ago | 0 ETH | ||||
| 28172466 | 4 days ago | 0 ETH | ||||
| 28156516 | 4 days ago | 0 ETH | ||||
| 28128257 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28093585 | 5 days ago | 0 ETH | ||||
| 28088368 | 6 days ago | 0 ETH | ||||
| 28085960 | 6 days ago | 0 ETH | ||||
| 28054070 | 6 days ago | 0 ETH | ||||
| 28053913 | 6 days ago | 0 ETH | ||||
| 28045920 | 7 days ago | 0 ETH | ||||
| 28045894 | 7 days ago | 0 ETH | ||||
| 28045744 | 7 days ago | 0 ETH | ||||
| 28045627 | 7 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x7eEd90B3...caa1179Ad The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
IRMLinearKink
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 20000 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity ^0.8.0; import "./IIRM.sol"; /// @title IRMLinearKink /// @custom:security-contact [email protected] /// @author Euler Labs (https://www.eulerlabs.com/) /// @notice Implementation of an interest rate model, where interest rate grows linearly with utilization, and spikes /// after reaching kink contract IRMLinearKink is IIRM { /// @notice Base interest rate applied when utilization is equal zero uint256 public immutable baseRate; /// @notice Slope of the function before the kink uint256 public immutable slope1; /// @notice Slope of the function after the kink uint256 public immutable slope2; /// @notice Utilization at which the slope of the interest rate function changes. In type(uint32).max scale. uint256 public immutable kink; constructor(uint256 baseRate_, uint256 slope1_, uint256 slope2_, uint32 kink_) { baseRate = baseRate_; slope1 = slope1_; slope2 = slope2_; kink = kink_; } /// @inheritdoc IIRM function computeInterestRate(address vault, uint256 cash, uint256 borrows) external view override returns (uint256) { if (msg.sender != vault) revert E_IRMUpdateUnauthorized(); return computeInterestRateInternal(vault, cash, borrows); } /// @inheritdoc IIRM function computeInterestRateView(address vault, uint256 cash, uint256 borrows) external view override returns (uint256) { return computeInterestRateInternal(vault, cash, borrows); } function computeInterestRateInternal(address, uint256 cash, uint256 borrows) internal view returns (uint256) { uint256 totalAssets = cash + borrows; uint32 utilization = totalAssets == 0 ? 0 // empty pool arbitrarily given utilization of 0 : uint32(borrows * type(uint32).max / totalAssets); uint256 ir = baseRate; if (utilization <= kink) { ir += utilization * slope1; } else { ir += kink * slope1; uint256 utilizationOverKink; unchecked { utilizationOverKink = utilization - kink; } ir += slope2 * utilizationOverKink; } return ir; } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.8.0; /// @title IIRM /// @custom:security-contact [email protected] /// @author Euler Labs (https://www.eulerlabs.com/) /// @notice Interface of the interest rate model contracts used by EVault interface IIRM { error E_IRMUpdateUnauthorized(); /// @notice Perform potentially state mutating computation of the new interest rate /// @param vault Address of the vault to compute the new interest rate for /// @param cash Amount of assets held directly by the vault /// @param borrows Amount of assets lent out to borrowers by the vault /// @return Then new interest rate in second percent yield (SPY), scaled by 1e27 function computeInterestRate(address vault, uint256 cash, uint256 borrows) external returns (uint256); /// @notice Perform computation of the new interest rate without mutating state /// @param vault Address of the vault to compute the new interest rate for /// @param cash Amount of assets held directly by the vault /// @param borrows Amount of assets lent out to borrowers by the vault /// @return Then new interest rate in second percent yield (SPY), scaled by 1e27 function computeInterestRateView(address vault, uint256 cash, uint256 borrows) external view returns (uint256); }
{
"remappings": [
"lib/euler-price-oracle:@openzeppelin/contracts/=lib/euler-price-oracle/lib/openzeppelin-contracts/contracts/",
"lib/euler-earn:@openzeppelin/=lib/euler-earn/lib/openzeppelin-contracts/",
"lib/euler-earn:@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/euler-earn:ethereum-vault-connector/=lib/euler-earn/lib/ethereum-vault-connector/src/",
"lib/layerzero-devtools/packages/oft-evm/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts/contracts/",
"lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/layerzero-devtools/packages/oapp-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@layerzerolabs/oft-evm/=lib/layerzero-devtools/packages/oft-evm/",
"@layerzerolabs/oapp-evm/=lib/layerzero-devtools/packages/oapp-evm/",
"@layerzerolabs/oapp-evm-upgradeable/=lib/layerzero-devtools/packages/oapp-evm-upgradeable/",
"@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/protocol/",
"@layerzerolabs/lz-evm-messagelib-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/messagelib/",
"@layerzerolabs/lz-evm-oapp-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/oapp/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/fee-flow/src:solmate/=lib/fee-flow/lib/solmate/src/",
"lib/fee-flow/utils:solmate/=lib/fee-flow/lib/solmate/utils/",
"lib/fee-flow/tokens:solmate/=lib/fee-flow/lib/solmate/tokens/",
"lib/euler-swap:solmate/=lib/euler-swap/lib/euler-vault-kit/lib/permit2/lib/solmate/",
"ethereum-vault-connector/=lib/ethereum-vault-connector/src/",
"evc/=lib/ethereum-vault-connector/src/",
"evk/=lib/euler-vault-kit/src/",
"evk-test/=lib/euler-vault-kit/test/",
"euler-price-oracle/=lib/euler-price-oracle/src/",
"euler-price-oracle-test/=lib/euler-price-oracle/test/",
"fee-flow/=lib/fee-flow/src/",
"reward-streams/=lib/reward-streams/src/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"euler-earn/=lib/euler-earn/src/",
"layerzero/oft-evm/=lib/layerzero-devtools/packages/oft-evm/contracts/",
"layerzero/oft-evm-upgradeable/=lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts/",
"solidity-bytes-utils/=lib/solidity-bytes-utils/",
"@ensdomains/=lib/euler-swap/lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@pendle/core-v2/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
"@pyth/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
"@redstone/evm-connector/=lib/euler-price-oracle/lib/redstone-oracles-monorepo/packages/evm-connector/contracts/",
"@solady/=lib/euler-price-oracle/lib/solady/src/",
"@uniswap/v3-core/=lib/euler-price-oracle/lib/v3-core/",
"@uniswap/v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/",
"@uniswap/v4-core/=lib/euler-swap/lib/v4-periphery/lib/v4-core/",
"ds-test/=lib/ethereum-vault-connector/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"euler-swap/=lib/euler-swap/",
"euler-vault-kit/=lib/euler-vault-kit/",
"forge-gas-snapshot/=lib/euler-vault-kit/lib/permit2/lib/forge-gas-snapshot/src/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"hardhat/=lib/euler-swap/lib/v4-periphery/lib/v4-core/node_modules/hardhat/",
"layerzero-devtools/=lib/layerzero-devtools/packages/toolbox-foundry/src/",
"layerzero-v2/=lib/layerzero-v2/",
"openzeppelin/=lib/ethereum-vault-connector/lib/openzeppelin-contracts/contracts/",
"pendle-core-v2-public/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
"permit2/=lib/euler-vault-kit/lib/permit2/",
"pyth-sdk-solidity/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
"redstone-oracles-monorepo/=lib/euler-price-oracle/lib/",
"solady/=lib/euler-price-oracle/lib/solady/src/",
"solmate/=lib/fee-flow/lib/solmate/src/",
"v3-core/=lib/euler-price-oracle/lib/v3-core/contracts/",
"v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/contracts/",
"v4-core/=lib/euler-swap/lib/v4-periphery/lib/v4-core/src/",
"v4-periphery/=lib/euler-swap/lib/v4-periphery/"
],
"optimizer": {
"enabled": true,
"runs": 20000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"baseRate_","type":"uint256"},{"internalType":"uint256","name":"slope1_","type":"uint256"},{"internalType":"uint256","name":"slope2_","type":"uint256"},{"internalType":"uint32","name":"kink_","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"E_IRMUpdateUnauthorized","type":"error"},{"inputs":[],"name":"baseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"}],"name":"computeInterestRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"}],"name":"computeInterestRateView","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":"slope1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slope2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
0x61010060405234801561001157600080fd5b5060405161055f38038061055f8339810160408190526100309161004d565b60809390935260a09190915260c05263ffffffff1660e052610097565b6000806000806080858703121561006357600080fd5b845193506020850151925060408501519150606085015163ffffffff8116811461008c57600080fd5b939692955090935050565b60805160a05160c05160e0516104606100ff6000396000818161012901528181610215015281816102a701526102d9015260008181610102015261030601526000818160c8015281816102450152610286015260008181607c01526101f401526104606000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063bca02c1311610050578063bca02c13146100ea578063d0134cb7146100fd578063fd2da3391461012457600080fd5b80631f68f20a146100775780632e34c872146100b0578063a62b75a8146100c3575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b61009e6100be366004610342565b61014b565b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b61009e6100f8366004610342565b610160565b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60006101588484846101b8565b949350505050565b60003373ffffffffffffffffffffffffffffffffffffffff8516146101b1576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101588484845b6000806101c583856103bf565b9050600081156101ed57816101de63ffffffff866103d8565b6101e891906103ef565b6101f0565b60005b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff831611610281576102707f000000000000000000000000000000000000000000000000000000000000000063ffffffff84166103d8565b61027a90826103bf565b9050610338565b6102cb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103d8565b6102d590826103bf565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff83160361032a817f00000000000000000000000000000000000000000000000000000000000000006103d8565b61033490836103bf565b9150505b9695505050505050565b60008060006060848603121561035757600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037b57600080fd5b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103d2576103d2610390565b92915050565b80820281158282048414176103d2576103d2610390565b600082610425577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212203aa65174a48d0ca99917089aed91a94b4b7c40ac2be16617723afd99a55963b164736f6c63430008180033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000116accb8000000000000000000000000000000000000000000000000000000005242845c0000000000000000000000000000000000000000000000000000000080000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063bca02c1311610050578063bca02c13146100ea578063d0134cb7146100fd578063fd2da3391461012457600080fd5b80631f68f20a146100775780632e34c872146100b0578063a62b75a8146100c3575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b61009e6100be366004610342565b61014b565b61009e7f00000000000000000000000000000000000000000000000000000000116accb881565b61009e6100f8366004610342565b610160565b61009e7f000000000000000000000000000000000000000000000000000000005242845c81565b61009e7f000000000000000000000000000000000000000000000000000000008000000081565b60006101588484846101b8565b949350505050565b60003373ffffffffffffffffffffffffffffffffffffffff8516146101b1576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101588484845b6000806101c583856103bf565b9050600081156101ed57816101de63ffffffff866103d8565b6101e891906103ef565b6101f0565b60005b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000008000000063ffffffff831611610281576102707f00000000000000000000000000000000000000000000000000000000116accb863ffffffff84166103d8565b61027a90826103bf565b9050610338565b6102cb7f00000000000000000000000000000000000000000000000000000000116accb87f00000000000000000000000000000000000000000000000000000000800000006103d8565b6102d590826103bf565b90507f000000000000000000000000000000000000000000000000000000008000000063ffffffff83160361032a817f000000000000000000000000000000000000000000000000000000005242845c6103d8565b61033490836103bf565b9150505b9695505050505050565b60008060006060848603121561035757600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037b57600080fd5b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103d2576103d2610390565b92915050565b80820281158282048414176103d2576103d2610390565b600082610425577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212203aa65174a48d0ca99917089aed91a94b4b7c40ac2be16617723afd99a55963b164736f6c63430008180033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
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.