ETH Price: $2,891.58 (-1.68%)

Contract

0x4db123eAc5aa81AeF98b8513e0BDfA61487a3cC3

Overview

ETH Balance

Linea Mainnet LogoLinea Mainnet LogoLinea Mainnet Logo0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
282976082026-01-25 13:08:2420 hrs ago1769346504
0x4db123eA...1487a3cC3
0 ETH
282287892026-01-23 17:35:382 days ago1769189738
0x4db123eA...1487a3cC3
0 ETH
282287892026-01-23 17:35:382 days ago1769189738
0x4db123eA...1487a3cC3
0 ETH
282041822026-01-23 2:45:003 days ago1769136300
0x4db123eA...1487a3cC3
0 ETH
281996802026-01-23 0:13:043 days ago1769127184
0x4db123eA...1487a3cC3
0 ETH
281757952026-01-22 10:51:543 days ago1769079114
0x4db123eA...1487a3cC3
0 ETH
281724662026-01-22 8:59:424 days ago1769072382
0x4db123eA...1487a3cC3
0 ETH
281565162026-01-21 23:56:584 days ago1769039818
0x4db123eA...1487a3cC3
0 ETH
281282572026-01-21 7:58:165 days ago1768982296
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280935852026-01-20 12:19:425 days ago1768911582
0x4db123eA...1487a3cC3
0 ETH
280883682026-01-20 9:25:206 days ago1768901120
0x4db123eA...1487a3cC3
0 ETH
280859602026-01-20 8:04:546 days ago1768896294
0x4db123eA...1487a3cC3
0 ETH
280540702026-01-19 14:10:346 days ago1768831834
0x4db123eA...1487a3cC3
0 ETH
280539132026-01-19 14:05:206 days ago1768831520
0x4db123eA...1487a3cC3
0 ETH
280459202026-01-19 9:38:267 days ago1768815506
0x4db123eA...1487a3cC3
0 ETH
280458942026-01-19 9:37:347 days ago1768815454
0x4db123eA...1487a3cC3
0 ETH
280457442026-01-19 9:32:347 days ago1768815154
0x4db123eA...1487a3cC3
0 ETH
280456272026-01-19 9:28:387 days ago1768814918
0x4db123eA...1487a3cC3
0 ETH
View All Internal Transactions
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);
}

Settings
{
  "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

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"}]

0x61010060405234801561001157600080fd5b5060405161055f38038061055f8339810160408190526100309161004d565b60809390935260a09190915260c05263ffffffff1660e052610097565b6000806000806080858703121561006357600080fd5b845193506020850151925060408501519150606085015163ffffffff8116811461008c57600080fd5b939692955090935050565b60805160a05160c05160e0516104606100ff6000396000818161012901528181610215015281816102a701526102d9015260008181610102015261030601526000818160c8015281816102450152610286015260008181607c01526101f401526104606000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063bca02c1311610050578063bca02c13146100ea578063d0134cb7146100fd578063fd2da3391461012457600080fd5b80631f68f20a146100775780632e34c872146100b0578063a62b75a8146100c3575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b61009e6100be366004610342565b61014b565b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b61009e6100f8366004610342565b610160565b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60006101588484846101b8565b949350505050565b60003373ffffffffffffffffffffffffffffffffffffffff8516146101b1576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101588484845b6000806101c583856103bf565b9050600081156101ed57816101de63ffffffff866103d8565b6101e891906103ef565b6101f0565b60005b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff831611610281576102707f000000000000000000000000000000000000000000000000000000000000000063ffffffff84166103d8565b61027a90826103bf565b9050610338565b6102cb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103d8565b6102d590826103bf565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff83160361032a817f00000000000000000000000000000000000000000000000000000000000000006103d8565b61033490836103bf565b9150505b9695505050505050565b60008060006060848603121561035757600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037b57600080fd5b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103d2576103d2610390565b92915050565b80820281158282048414176103d2576103d2610390565b600082610425577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212203aa65174a48d0ca99917089aed91a94b4b7c40ac2be16617723afd99a55963b164736f6c63430008180033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000116accb8000000000000000000000000000000000000000000000000000000005242845c0000000000000000000000000000000000000000000000000000000080000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063bca02c1311610050578063bca02c13146100ea578063d0134cb7146100fd578063fd2da3391461012457600080fd5b80631f68f20a146100775780632e34c872146100b0578063a62b75a8146100c3575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b61009e6100be366004610342565b61014b565b61009e7f00000000000000000000000000000000000000000000000000000000116accb881565b61009e6100f8366004610342565b610160565b61009e7f000000000000000000000000000000000000000000000000000000005242845c81565b61009e7f000000000000000000000000000000000000000000000000000000008000000081565b60006101588484846101b8565b949350505050565b60003373ffffffffffffffffffffffffffffffffffffffff8516146101b1576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101588484845b6000806101c583856103bf565b9050600081156101ed57816101de63ffffffff866103d8565b6101e891906103ef565b6101f0565b60005b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000008000000063ffffffff831611610281576102707f00000000000000000000000000000000000000000000000000000000116accb863ffffffff84166103d8565b61027a90826103bf565b9050610338565b6102cb7f00000000000000000000000000000000000000000000000000000000116accb87f00000000000000000000000000000000000000000000000000000000800000006103d8565b6102d590826103bf565b90507f000000000000000000000000000000000000000000000000000000008000000063ffffffff83160361032a817f000000000000000000000000000000000000000000000000000000005242845c6103d8565b61033490836103bf565b9150505b9695505050505050565b60008060006060848603121561035757600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037b57600080fd5b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103d2576103d2610390565b92915050565b80820281158282048414176103d2576103d2610390565b600082610425577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212203aa65174a48d0ca99917089aed91a94b4b7c40ac2be16617723afd99a55963b164736f6c63430008180033

Block Transaction Gas Used Reward
view all blocks sequenced

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
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.