Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
JumpRateModelV2
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.5.16; import "./InterestRateModel.sol"; import "./SafeMath.sol"; /** * @title Compound's JumpRateModel Contract V2 * @author Compound (modified by Dharma Labs) * @notice Version 2 modifies Version 1 by enabling updateable parameters. */ contract JumpRateModelV2 is InterestRateModel { using SafeMath for uint256; event NewInterestParams( uint256 baseRatePerBlock, uint256 multiplierPerBlock, uint256 jumpMultiplierPerBlock, uint256 kink, uint256 roof ); /** * @notice The address of the owner, i.e. the Timelock contract, which can update parameters directly */ address public owner; /** * @notice The approximate number of blocks per year that is assumed by the interest rate model */ uint256 public constant blocksPerYear = 2102400; /** * @notice The minimum roof value used for calculating borrow rate. */ uint256 internal constant minRoofValue = 1e18; /** * @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 The utilization point at which the rate is fixed */ uint256 public roof; /** * @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 roof_ The utilization point at which the borrow rate is fixed * @param owner_ The address of the owner, i.e. the Timelock contract (which has the ability to update parameters directly) */ constructor( uint256 baseRatePerYear, uint256 multiplierPerYear, uint256 jumpMultiplierPerYear, uint256 kink_, uint256 roof_, address owner_ ) public { owner = owner_; updateJumpRateModelInternal(baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_, roof_); } /** * @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 * @param roof_ The utilization point at which the borrow rate is fixed */ function updateJumpRateModel( uint256 baseRatePerYear, uint256 multiplierPerYear, uint256 jumpMultiplierPerYear, uint256 kink_, uint256 roof_ ) external { require(msg.sender == owner, "only the owner may call this function."); updateJumpRateModelInternal(baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_, roof_); } /** * @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 view returns (uint256) { // Utilization rate is 0 when there are no borrows if (borrows == 0) { return 0; } uint256 util = borrows.mul(1e18).div(cash.add(borrows).sub(reserves)); // If the utilization is above the roof, cap it. if (util > roof) { util = roof; } return util; } /** * @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 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 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 * @param roof_ The utilization point at which the borrow rate is fixed */ function updateJumpRateModelInternal( uint256 baseRatePerYear, uint256 multiplierPerYear, uint256 jumpMultiplierPerYear, uint256 kink_, uint256 roof_ ) internal { require(roof_ >= minRoofValue, "invalid roof value"); baseRatePerBlock = baseRatePerYear.div(blocksPerYear); multiplierPerBlock = (multiplierPerYear.mul(1e18)).div(blocksPerYear.mul(kink_)); jumpMultiplierPerBlock = jumpMultiplierPerYear.div(blocksPerYear); kink = kink_; roof = roof_; emit NewInterestParams(baseRatePerBlock, multiplierPerBlock, jumpMultiplierPerBlock, kink, roof); } }
pragma solidity ^0.5.16; /** * @title Compound's InterestRateModel Interface * @author Compound */ 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 amnount of reserves the market has * @return The borrow rate per block (as a percentage, and scaled by 1e18) */ function getBorrowRate( uint256 cash, uint256 borrows, uint256 reserves ) external view returns (uint256); /** * @notice Calculates the current supply interest rate per block * @param cash The total amount of cash the market has * @param borrows The total amount of borrows the market has outstanding * @param reserves The total amnount of reserves the market has * @param reserveFactorMantissa The current reserve factor the market has * @return The supply rate per block (as a percentage, and scaled by 1e18) */ function getSupplyRate( uint256 cash, uint256 borrows, uint256 reserves, uint256 reserveFactorMantissa ) external view returns (uint256); }
pragma solidity ^0.5.16; // 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 = 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 = 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 = 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 = 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": "istanbul", "libraries": {}, "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"uint256","name":"roof_","type":"uint256"},{"internalType":"address","name":"owner_","type":"address"}],"payable":false,"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"},{"indexed":false,"internalType":"uint256","name":"roof","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"constant":true,"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jumpMultiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roof","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"uint256","name":"roof_","type":"uint256"}],"name":"updateJumpRateModel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000b6a38038062000b6a833981810160405260c08110156200003757600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b038316179055939492939192909162000086868686868662000092565b5050505050506200033c565b670de0b6b3a7640000811015620000e5576040805162461bcd60e51b8152602060048201526012602482015271696e76616c696420726f6f662076616c756560701b604482015290519081900360640190fd5b620001026220148086620001e460201b620004a71790919060201c565b6002556200015a62000124622014808462000237602090811b6200044517901c565b62000146670de0b6b3a7640000876200023760201b620004451790919060201c565b620001e460201b620004a71790919060201c565b600155620001788362201480620001e4602090811b620004a717901c565b60038190556004839055600582905560025460015460408051928352602083019190915281810192909252606081018490526080810183905290517fd4a5368e470b1a5bcef19c35c285f3c1507a740d3a0044927d719c8a81bb1cdd9181900360a00190a15050505050565b60006200022e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200029560201b60201c565b90505b92915050565b600082620002485750600062000231565b828202828482816200025657fe5b04146200022e5760405162461bcd60e51b815260040180806020018281038252602181526020018062000b496021913960400191505060405180910390fd5b60008183620003255760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620002e9578181015183820152602001620002cf565b50505050905090810190601f168015620003175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200033257fe5b0495945050505050565b6107fd806200034c6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806391a30e8d1161007157806391a30e8d1461016d578063a385fb96146101a4578063b8168816146101ac578063b9f9850a146101db578063f14039de146101e3578063fd2da339146101eb576100b4565b806315f24053146100b95780632191f92a146100f4578063573be0fb146101105780636e71e2d8146101185780638726bb89146101415780638da5cb5b14610149575b600080fd5b6100e2600480360360608110156100cf57600080fd5b50803590602081013590604001356101f3565b60408051918252519081900360200190f35b6100fc6102cb565b604080519115158252519081900360200190f35b6100e26102d0565b6100e26004803603606081101561012e57600080fd5b50803590602081013590604001356102d6565b6100e261033b565b610151610341565b604080516001600160a01b039092168252519081900360200190f35b6101a2600480360360a081101561018357600080fd5b5080359060208101359060408101359060608101359060800135610350565b005b6100e26103ad565b6100e2600480360360808110156101c257600080fd5b50803590602081013590604081013590606001356103b4565b6100e2610433565b6100e2610439565b6100e261043f565b6000806102018585856102d6565b905060045481116102535761024b60025461023f670de0b6b3a76400006102336001548661044590919063ffffffff16565b9063ffffffff6104a716565b9063ffffffff6104e916565b9150506102c4565b600061027e60025461023f670de0b6b3a764000061023360015460045461044590919063ffffffff16565b905060006102976004548461054390919063ffffffff16565b90506102be8261023f670de0b6b3a76400006102336003548661044590919063ffffffff16565b93505050505b9392505050565b600181565b60055481565b6000826102e5575060006102c4565b600061032261030a846102fe888863ffffffff6104e916565b9063ffffffff61054316565b61023386670de0b6b3a764000063ffffffff61044516565b905060055481111561033357506005545b949350505050565b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633146103995760405162461bcd60e51b81526004018080602001828103825260268152602001806107a36026913960400191505060405180910390fd5b6103a68585858585610585565b5050505050565b6220148081565b6000806103cf670de0b6b3a76400008463ffffffff61054316565b905060006103de8787876101f3565b905060006103fe670de0b6b3a7640000610233848663ffffffff61044516565b9050610427670de0b6b3a76400006102338361041b8c8c8c6102d6565b9063ffffffff61044516565b98975050505050505050565b60035481565b60025481565b60045481565b600082610454575060006104a1565b8282028284828161046157fe5b041461049e5760405162461bcd60e51b81526004018080602001828103825260218152602001806107826021913960400191505060405180910390fd5b90505b92915050565b600061049e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610685565b60008282018381101561049e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061049e83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610727565b670de0b6b3a76400008110156105d7576040805162461bcd60e51b8152602060048201526012602482015271696e76616c696420726f6f662076616c756560701b604482015290519081900360640190fd5b6105ea856220148063ffffffff6104a716565b60025561060361030a622014808463ffffffff61044516565b600155610619836220148063ffffffff6104a716565b60038190556004839055600582905560025460015460408051928352602083019190915281810192909252606081018490526080810183905290517fd4a5368e470b1a5bcef19c35c285f3c1507a740d3a0044927d719c8a81bb1cdd9181900360a00190a15050505050565b600081836107115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106d65781810151838201526020016106be565b50505050905090810190601f1680156107035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161071d57fe5b0495945050505050565b600081848411156107795760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156106d65781810151838201526020016106be565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2ea265627a7a723158203e62fe2cedac00b57484e9d755508870b7d67e1430e80d063c7785fdf950962a64736f6c63430005110032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000197939c1ca20c2b506d6811d8b6cdb3394471074
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806391a30e8d1161007157806391a30e8d1461016d578063a385fb96146101a4578063b8168816146101ac578063b9f9850a146101db578063f14039de146101e3578063fd2da339146101eb576100b4565b806315f24053146100b95780632191f92a146100f4578063573be0fb146101105780636e71e2d8146101185780638726bb89146101415780638da5cb5b14610149575b600080fd5b6100e2600480360360608110156100cf57600080fd5b50803590602081013590604001356101f3565b60408051918252519081900360200190f35b6100fc6102cb565b604080519115158252519081900360200190f35b6100e26102d0565b6100e26004803603606081101561012e57600080fd5b50803590602081013590604001356102d6565b6100e261033b565b610151610341565b604080516001600160a01b039092168252519081900360200190f35b6101a2600480360360a081101561018357600080fd5b5080359060208101359060408101359060608101359060800135610350565b005b6100e26103ad565b6100e2600480360360808110156101c257600080fd5b50803590602081013590604081013590606001356103b4565b6100e2610433565b6100e2610439565b6100e261043f565b6000806102018585856102d6565b905060045481116102535761024b60025461023f670de0b6b3a76400006102336001548661044590919063ffffffff16565b9063ffffffff6104a716565b9063ffffffff6104e916565b9150506102c4565b600061027e60025461023f670de0b6b3a764000061023360015460045461044590919063ffffffff16565b905060006102976004548461054390919063ffffffff16565b90506102be8261023f670de0b6b3a76400006102336003548661044590919063ffffffff16565b93505050505b9392505050565b600181565b60055481565b6000826102e5575060006102c4565b600061032261030a846102fe888863ffffffff6104e916565b9063ffffffff61054316565b61023386670de0b6b3a764000063ffffffff61044516565b905060055481111561033357506005545b949350505050565b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633146103995760405162461bcd60e51b81526004018080602001828103825260268152602001806107a36026913960400191505060405180910390fd5b6103a68585858585610585565b5050505050565b6220148081565b6000806103cf670de0b6b3a76400008463ffffffff61054316565b905060006103de8787876101f3565b905060006103fe670de0b6b3a7640000610233848663ffffffff61044516565b9050610427670de0b6b3a76400006102338361041b8c8c8c6102d6565b9063ffffffff61044516565b98975050505050505050565b60035481565b60025481565b60045481565b600082610454575060006104a1565b8282028284828161046157fe5b041461049e5760405162461bcd60e51b81526004018080602001828103825260218152602001806107826021913960400191505060405180910390fd5b90505b92915050565b600061049e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610685565b60008282018381101561049e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061049e83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610727565b670de0b6b3a76400008110156105d7576040805162461bcd60e51b8152602060048201526012602482015271696e76616c696420726f6f662076616c756560701b604482015290519081900360640190fd5b6105ea856220148063ffffffff6104a716565b60025561060361030a622014808463ffffffff61044516565b600155610619836220148063ffffffff6104a716565b60038190556004839055600582905560025460015460408051928352602083019190915281810192909252606081018490526080810183905290517fd4a5368e470b1a5bcef19c35c285f3c1507a740d3a0044927d719c8a81bb1cdd9181900360a00190a15050505050565b600081836107115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106d65781810151838201526020016106be565b50505050905090810190601f1680156107035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161071d57fe5b0495945050505050565b600081848411156107795760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156106d65781810151838201526020016106be565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920746865206f776e6572206d61792063616c6c20746869732066756e6374696f6e2ea265627a7a723158203e62fe2cedac00b57484e9d755508870b7d67e1430e80d063c7785fdf950962a64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000197939c1ca20c2b506d6811d8b6cdb3394471074
-----Decoded View---------------
Arg [0] : baseRatePerYear (uint256): 0
Arg [1] : multiplierPerYear (uint256): 200000000000000000
Arg [2] : jumpMultiplierPerYear (uint256): 0
Arg [3] : kink_ (uint256): 1000000000000000000
Arg [4] : roof_ (uint256): 1000000000000000000
Arg [5] : owner_ (address): 0x197939c1ca20C2b506d6811d8B6CDB3394471074
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [4] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [5] : 000000000000000000000000197939c1ca20c2b506d6811d8b6cdb3394471074
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.