Overview
ETH Balance
ETH Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 8978975 | 509 days ago | IN | 0 ETH | 0.00000175 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 28320087 | 2 hrs ago | 0 ETH | ||||
| 28310072 | 9 hrs ago | 0 ETH | ||||
| 28305331 | 12 hrs ago | 0 ETH | ||||
| 28302545 | 14 hrs ago | 0 ETH | ||||
| 28301854 | 14 hrs ago | 0 ETH | ||||
| 28301637 | 14 hrs ago | 0 ETH | ||||
| 28300839 | 15 hrs ago | 0 ETH | ||||
| 28299274 | 16 hrs ago | 0 ETH | ||||
| 28298595 | 16 hrs ago | 0 ETH | ||||
| 28295693 | 18 hrs ago | 0 ETH | ||||
| 28289418 | 22 hrs ago | 0 ETH | ||||
| 28289251 | 22 hrs ago | 0 ETH | ||||
| 28284047 | 25 hrs ago | 0 ETH | ||||
| 28282856 | 26 hrs ago | 0 ETH | ||||
| 28282053 | 27 hrs ago | 0 ETH | ||||
| 28282047 | 27 hrs ago | 0 ETH | ||||
| 28282036 | 27 hrs ago | 0 ETH | ||||
| 28281779 | 27 hrs ago | 0 ETH | ||||
| 28281434 | 27 hrs ago | 0 ETH | ||||
| 28280637 | 28 hrs ago | 0 ETH | ||||
| 28280541 | 28 hrs ago | 0 ETH | ||||
| 28280323 | 28 hrs ago | 0 ETH | ||||
| 28280315 | 28 hrs ago | 0 ETH | ||||
| 28280300 | 28 hrs ago | 0 ETH | ||||
| 28280216 | 28 hrs ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
JumpRateModelV4
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.10;
import "./InterestRateModel.sol";
import "./SafeMath.sol";
import "./Ownership/Ownable.sol";
/**
* @title Compound's JumpRateModel Contract V3
* @author Compound (modified by Dharma Labs)
* @notice Version 2 modifies Version 1 by enabling updateable parameters.
* @notice Version 3 includes Ownable and have updatable blocksPerYear.
* @notice Version 4 moves blocksPerYear to the constructor.
*/
contract JumpRateModelV4 is InterestRateModel, Ownable {
using SafeMath for uint256;
event NewInterestParams(
uint256 baseRatePerBlock,
uint256 multiplierPerBlock,
uint256 jumpMultiplierPerBlock,
uint256 kink
);
/**
* @notice The approximate number of blocks per year that is assumed by the interest rate model
*/
uint256 public blocksPerYear;
/**
* @notice The multiplier of utilization rate that gives the slope of the interest rate
*/
uint256 public multiplierPerBlock;
/**
* @notice The base interest rate which is the y-intercept when utilization rate is 0
*/
uint256 public baseRatePerBlock;
/**
* @notice The multiplierPerBlock after hitting a specified utilization point
*/
uint256 public jumpMultiplierPerBlock;
/**
* @notice The utilization point at which the jump multiplier is applied
*/
uint256 public kink;
/**
* @notice A name for user-friendliness, e.g. WBTC
*/
string public name;
/**
* @notice Construct an interest rate model
* @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)
* @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)
* @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point
* @param kink_ The utilization point at which the jump multiplier is applied
* @param owner_ Sets the owner of the contract to someone other than msgSender
* @param name_ User-friendly name for the new contract
*/
constructor(
uint256 blocksPerYear_,
uint256 baseRatePerYear,
uint256 multiplierPerYear,
uint256 jumpMultiplierPerYear,
uint256 kink_,
address owner_,
string memory name_
) public {
blocksPerYear = blocksPerYear_;
name = name_;
_transferOwnership(owner_);
updateJumpRateModelInternal(
baseRatePerYear,
multiplierPerYear,
jumpMultiplierPerYear,
kink_
);
}
/**
* @notice Update the parameters of the interest rate model (only callable by owner, i.e. Timelock)
* @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)
* @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)
* @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point
* @param kink_ The utilization point at which the jump multiplier is applied
*/
function updateJumpRateModel(
uint256 baseRatePerYear,
uint256 multiplierPerYear,
uint256 jumpMultiplierPerYear,
uint256 kink_
) external onlyOwner {
updateJumpRateModelInternal(
baseRatePerYear,
multiplierPerYear,
jumpMultiplierPerYear,
kink_
);
}
/**
* @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`
* @param cash The amount of cash in the market
* @param borrows The amount of borrows in the market
* @param reserves The amount of reserves in the market (currently unused)
* @return The utilization rate as a mantissa between [0, 1e18]
*/
function utilizationRate(
uint256 cash,
uint256 borrows,
uint256 reserves
) public pure returns (uint256) {
// Utilization rate is 0 when there are no borrows
if (borrows == 0) {
return 0;
}
return borrows.mul(1e18).div(cash.add(borrows).sub(reserves));
}
/**
* @notice Updates the blocksPerYear in order to make interest calculations simpler
* @param blocksPerYear_ The new estimated eth blocks per year.
*/
function updateBlocksPerYear(uint256 blocksPerYear_) external onlyOwner {
blocksPerYear = blocksPerYear_;
}
/**
* @notice Calculates the current borrow rate per block, with the error code expected by the market
* @param cash The amount of cash in the market
* @param borrows The amount of borrows in the market
* @param reserves The amount of reserves in the market
* @return The borrow rate percentage per block as a mantissa (scaled by 1e18)
*/
function getBorrowRate(
uint256 cash,
uint256 borrows,
uint256 reserves
) public view override returns (uint256) {
uint256 util = utilizationRate(cash, borrows, reserves);
if (util <= kink) {
return util.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);
} else {
uint256 normalRate = kink.mul(multiplierPerBlock).div(1e18).add(
baseRatePerBlock
);
uint256 excessUtil = util.sub(kink);
return
excessUtil.mul(jumpMultiplierPerBlock).div(1e18).add(
normalRate
);
}
}
/**
* @notice Calculates the current supply rate per block
* @param cash The amount of cash in the market
* @param borrows The amount of borrows in the market
* @param reserves The amount of reserves in the market
* @param reserveFactorMantissa The current reserve factor for the market
* @return The supply rate percentage per block as a mantissa (scaled by 1e18)
*/
function getSupplyRate(
uint256 cash,
uint256 borrows,
uint256 reserves,
uint256 reserveFactorMantissa
) public view override returns (uint256) {
uint256 oneMinusReserveFactor = uint256(1e18).sub(
reserveFactorMantissa
);
uint256 borrowRate = getBorrowRate(cash, borrows, reserves);
uint256 rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18);
return
utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18);
}
/**
* @notice Internal function to update the parameters of the interest rate model
* @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)
* @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)
* @param jumpMultiplierPerYear The multiplierPerBlock after hitting a specified utilization point
* @param kink_ The utilization point at which the jump multiplier is applied
*/
function updateJumpRateModelInternal(
uint256 baseRatePerYear,
uint256 multiplierPerYear,
uint256 jumpMultiplierPerYear,
uint256 kink_
) internal {
baseRatePerBlock = baseRatePerYear.div(blocksPerYear);
multiplierPerBlock = (multiplierPerYear.mul(1e18)).div(
blocksPerYear.mul(kink_)
);
jumpMultiplierPerBlock = jumpMultiplierPerYear.div(blocksPerYear);
kink = kink_;
emit NewInterestParams(
baseRatePerBlock,
multiplierPerBlock,
jumpMultiplierPerBlock,
kink
);
}
}// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.10;
/**
* @title Compound's InterestRateModel Interface
* @author Compound
*/
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(
uint cash,
uint borrows,
uint reserves
) external view virtual returns (uint);
/**
* @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(
uint cash,
uint borrows,
uint reserves,
uint reserveFactorMantissa
) external view virtual returns (uint);
}pragma solidity ^0.8.10;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_owner = msg.sender;
emit OwnershipTransferred(address(0), msg.sender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return msg.sender == _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.10;
// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c;
unchecked {
c = a + b;
}
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
uint256 c;
unchecked {
c = a + b;
}
require(c >= a, errorMessage);
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot underflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction underflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot underflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c;
unchecked {
c = a * b;
}
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c;
unchecked {
c = a * b;
}
require(c / a == b, errorMessage);
return c;
}
/**
* @dev Returns the integer division of two unsigned integers.
* Reverts on division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers.
* Reverts with custom message on division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}{
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"blocksPerYear_","type":"uint256"},{"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":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jumpMultiplierPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kink","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksPerYear","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":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jumpMultiplierPerBlock","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":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksPerYear_","type":"uint256"}],"name":"updateBlocksPerYear","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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"}],"name":"updateJumpRateModel","outputs":[],"stateMutability":"nonpayable","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
60806040523480156200001157600080fd5b506040516200105338038062001053833981016040819052620000349162000449565b600080546001600160a01b03191633908117825560405190919060008051602062001033833981519152908290a3600187905580516200007c9060069060208401906200035a565b506200008882620000a3565b620000968686868662000158565b50505050505050620005ec565b6001600160a01b0381166200010e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b600080546040516001600160a01b03808516939216916000805160206200103383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b62000174600154856200025160201b620005451790919060201c565b600381905550620001d06200019a82600154620002a460201b620005901790919060201c565b620001bc670de0b6b3a764000086620002a460201b620005901790919060201c565b6200025160201b620005451790919060201c565b600281905550620001f2600154836200025160201b620005451790919060201c565b60048190556005829055600354600254604080519283526020830191909152810191909152606081018290527f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9060800160405180910390a150505050565b60006200029b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200031e60201b60201c565b90505b92915050565b600082620002b5575060006200029e565b82820282620002c5858362000557565b146200029b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000105565b60008183620003425760405162461bcd60e51b81526004016200010591906200057a565b50600062000351848662000557565b95945050505050565b8280546200036890620005af565b90600052602060002090601f0160209004810192826200038c5760008555620003d7565b82601f10620003a757805160ff1916838001178555620003d7565b82800160010185558215620003d7579182015b82811115620003d7578251825591602001919060010190620003ba565b50620003e5929150620003e9565b5090565b5b80821115620003e55760008155600101620003ea565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200043357818101518382015260200162000419565b8381111562000443576000848401525b50505050565b600080600080600080600060e0888a0312156200046557600080fd5b8751602089015160408a015160608b015160808c015160a08d0151949b50929950909750955093506001600160a01b0381168114620004a357600080fd5b60c08901519092506001600160401b0380821115620004c157600080fd5b818a0191508a601f830112620004d657600080fd5b815181811115620004eb57620004eb62000400565b604051601f8201601f19908116603f0116810190838211818310171562000516576200051662000400565b816040528281528d60208487010111156200053057600080fd5b6200054383602083016020880162000416565b809550505050505092959891949750929550565b6000826200057557634e487b7160e01b600052601260045260246000fd5b500490565b60208152600082518060208401526200059b81604085016020870162000416565b601f01601f19169190910160400192915050565b600181811c90821680620005c457607f821691505b60208210811415620005e657634e487b7160e01b600052602260045260246000fd5b50919050565b610a3780620005fc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638f32d59b11610097578063b9f9850a11610066578063b9f9850a146101f2578063f14039de146101fb578063f2fde38b14610204578063fd2da3391461021757600080fd5b80638f32d59b146101b0578063a3193e2e146101c3578063a385fb96146101d6578063b8168816146101df57600080fd5b80636e71e2d8116100d35780636e71e2d814610171578063715018a6146101845780638726bb891461018c5780638da5cb5b1461019557600080fd5b806306fdde031461010557806315f24053146101235780632037f3e7146101445780632191f92a14610159575b600080fd5b61010d610220565b60405161011a9190610855565b60405180910390f35b6101366101313660046108aa565b6102ae565b60405190815260200161011a565b6101576101523660046108d6565b61037a565b005b610161600181565b604051901515815260200161011a565b61013661017f3660046108aa565b6103bf565b6101576103ff565b61013660025481565b6000546040516001600160a01b03909116815260200161011a565b6000546001600160a01b03163314610161565b6101576101d1366004610908565b610473565b61013660015481565b6101366101ed3660046108d6565b6104a2565b61013660045481565b61013660035481565b610157610212366004610921565b61050f565b61013660055481565b6006805461022d9061094a565b80601f01602080910402602001604051908101604052809291908181526020018280546102599061094a565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b505050505081565b6000806102bc8585856103bf565b90506005548111610302576102fa6003546102f4670de0b6b3a76400006102ee6002548661059090919063ffffffff16565b90610545565b90610604565b915050610373565b600061032d6003546102f4670de0b6b3a76400006102ee60025460055461059090919063ffffffff16565b905060006103466005548461065990919063ffffffff16565b905061036d826102f4670de0b6b3a76400006102ee6004548661059090919063ffffffff16565b93505050505b9392505050565b6000546001600160a01b031633146103ad5760405162461bcd60e51b81526004016103a490610985565b60405180910390fd5b6103b98484848461069b565b50505050565b6000826103ce57506000610373565b6103f76103e5836103df8787610604565b90610659565b6102ee85670de0b6b3a7640000610590565b949350505050565b6000546001600160a01b031633146104295760405162461bcd60e51b81526004016103a490610985565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461049d5760405162461bcd60e51b81526004016103a490610985565b600155565b6000806104b7670de0b6b3a764000084610659565b905060006104c68787876102ae565b905060006104e0670de0b6b3a76400006102ee8486610590565b9050610503670de0b6b3a76400006102ee836104fd8c8c8c6103bf565b90610590565b98975050505050505050565b6000546001600160a01b031633146105395760405162461bcd60e51b81526004016103a490610985565b6105428161072d565b50565b600061058783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506107ed565b90505b92915050565b60008261059f5750600061058a565b828202826105ad85836109ba565b146105875760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103a4565b6000828201838110156105875760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103a4565b600061058783836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610824565b6001546106a9908590610545565b6003556001546106bd906103e59083610590565b6002556001546106ce908390610545565b60048190556005829055600354600254604080519283526020830191909152810191909152606081018290527f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9060800160405180910390a150505050565b6001600160a01b0381166107925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818361080e5760405162461bcd60e51b81526004016103a49190610855565b50600061081b84866109ba565b95945050505050565b600081848411156108485760405162461bcd60e51b81526004016103a49190610855565b50600061081b84866109dc565b600060208083528351808285015260005b8181101561088257858101830151858201604001528201610866565b81811115610894576000604083870101525b50601f01601f1916929092016040019392505050565b6000806000606084860312156108bf57600080fd5b505081359360208301359350604090920135919050565b600080600080608085870312156108ec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561091a57600080fd5b5035919050565b60006020828403121561093357600080fd5b81356001600160a01b038116811461058757600080fd5b600181811c9082168061095e57607f821691505b6020821081141561097f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000826109d757634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156109fc57634e487b7160e01b600052601160045260246000fd5b50039056fea264697066735822122064f588c73c8f6fd2fc0ec9b4f5a2e449a949f3c38a1c34926e41ab4eac2cb87164736f6c634300080a00338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000031f5c4ed27680000000000000000000000000000000000000000000000000001158e460913d00000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000057cd331c7b2c7582625810465ea3cf9bdca2123600000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d656469756d526174654d6f64656c0000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638f32d59b11610097578063b9f9850a11610066578063b9f9850a146101f2578063f14039de146101fb578063f2fde38b14610204578063fd2da3391461021757600080fd5b80638f32d59b146101b0578063a3193e2e146101c3578063a385fb96146101d6578063b8168816146101df57600080fd5b80636e71e2d8116100d35780636e71e2d814610171578063715018a6146101845780638726bb891461018c5780638da5cb5b1461019557600080fd5b806306fdde031461010557806315f24053146101235780632037f3e7146101445780632191f92a14610159575b600080fd5b61010d610220565b60405161011a9190610855565b60405180910390f35b6101366101313660046108aa565b6102ae565b60405190815260200161011a565b6101576101523660046108d6565b61037a565b005b610161600181565b604051901515815260200161011a565b61013661017f3660046108aa565b6103bf565b6101576103ff565b61013660025481565b6000546040516001600160a01b03909116815260200161011a565b6000546001600160a01b03163314610161565b6101576101d1366004610908565b610473565b61013660015481565b6101366101ed3660046108d6565b6104a2565b61013660045481565b61013660035481565b610157610212366004610921565b61050f565b61013660055481565b6006805461022d9061094a565b80601f01602080910402602001604051908101604052809291908181526020018280546102599061094a565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b505050505081565b6000806102bc8585856103bf565b90506005548111610302576102fa6003546102f4670de0b6b3a76400006102ee6002548661059090919063ffffffff16565b90610545565b90610604565b915050610373565b600061032d6003546102f4670de0b6b3a76400006102ee60025460055461059090919063ffffffff16565b905060006103466005548461065990919063ffffffff16565b905061036d826102f4670de0b6b3a76400006102ee6004548661059090919063ffffffff16565b93505050505b9392505050565b6000546001600160a01b031633146103ad5760405162461bcd60e51b81526004016103a490610985565b60405180910390fd5b6103b98484848461069b565b50505050565b6000826103ce57506000610373565b6103f76103e5836103df8787610604565b90610659565b6102ee85670de0b6b3a7640000610590565b949350505050565b6000546001600160a01b031633146104295760405162461bcd60e51b81526004016103a490610985565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461049d5760405162461bcd60e51b81526004016103a490610985565b600155565b6000806104b7670de0b6b3a764000084610659565b905060006104c68787876102ae565b905060006104e0670de0b6b3a76400006102ee8486610590565b9050610503670de0b6b3a76400006102ee836104fd8c8c8c6103bf565b90610590565b98975050505050505050565b6000546001600160a01b031633146105395760405162461bcd60e51b81526004016103a490610985565b6105428161072d565b50565b600061058783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506107ed565b90505b92915050565b60008261059f5750600061058a565b828202826105ad85836109ba565b146105875760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103a4565b6000828201838110156105875760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103a4565b600061058783836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610824565b6001546106a9908590610545565b6003556001546106bd906103e59083610590565b6002556001546106ce908390610545565b60048190556005829055600354600254604080519283526020830191909152810191909152606081018290527f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9060800160405180910390a150505050565b6001600160a01b0381166107925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818361080e5760405162461bcd60e51b81526004016103a49190610855565b50600061081b84866109ba565b95945050505050565b600081848411156108485760405162461bcd60e51b81526004016103a49190610855565b50600061081b84866109dc565b600060208083528351808285015260005b8181101561088257858101830151858201604001528201610866565b81811115610894576000604083870101525b50601f01601f1916929092016040019392505050565b6000806000606084860312156108bf57600080fd5b505081359360208301359350604090920135919050565b600080600080608085870312156108ec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561091a57600080fd5b5035919050565b60006020828403121561093357600080fd5b81356001600160a01b038116811461058757600080fd5b600181811c9082168061095e57607f821691505b6020821081141561097f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000826109d757634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156109fc57634e487b7160e01b600052601160045260246000fd5b50039056fea264697066735822122064f588c73c8f6fd2fc0ec9b4f5a2e449a949f3c38a1c34926e41ab4eac2cb87164736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000031f5c4ed27680000000000000000000000000000000000000000000000000001158e460913d00000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000057cd331c7b2c7582625810465ea3cf9bdca2123600000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d656469756d526174654d6f64656c0000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : blocksPerYear_ (uint256): 31536000
Arg [1] : baseRatePerYear (uint256): 20000000000000000
Arg [2] : multiplierPerYear (uint256): 225000000000000000
Arg [3] : jumpMultiplierPerYear (uint256): 1250000000000000000
Arg [4] : kink_ (uint256): 800000000000000000
Arg [5] : owner_ (address): 0x57cd331C7b2c7582625810465Ea3CF9bdcA21236
Arg [6] : name_ (string): MediumRateModel
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000001e13380
Arg [1] : 00000000000000000000000000000000000000000000000000470de4df820000
Arg [2] : 000000000000000000000000000000000000000000000000031f5c4ed2768000
Arg [3] : 0000000000000000000000000000000000000000000000001158e460913d0000
Arg [4] : 0000000000000000000000000000000000000000000000000b1a2bc2ec500000
Arg [5] : 00000000000000000000000057cd331c7b2c7582625810465ea3cf9bdca21236
Arg [6] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [8] : 4d656469756d526174654d6f64656c0000000000000000000000000000000000
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 ]
[ 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.