Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 13802425 | 1131 days ago | IN | 0 ETH | 0.00140462 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
JumpRateModelV4
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.5.16; 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 uint; event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock, uint jumpMultiplierPerBlock, uint kink); /** * @notice The approximate number of blocks per year that is assumed by the interest rate model */ uint public blocksPerYear; /** * @notice The multiplier of utilization rate that gives the slope of the interest rate */ uint public multiplierPerBlock; /** * @notice The base interest rate which is the y-intercept when utilization rate is 0 */ uint public baseRatePerBlock; /** * @notice The multiplierPerBlock after hitting a specified utilization point */ uint public jumpMultiplierPerBlock; /** * @notice The utilization point at which the jump multiplier is applied */ uint 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(uint blocksPerYear_, uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint 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(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint 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(uint cash, uint borrows, uint reserves) public pure returns (uint) { // 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(uint 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(uint cash, uint borrows, uint reserves) public view returns (uint) { uint util = utilizationRate(cash, borrows, reserves); if (util <= kink) { return util.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock); } else { uint normalRate = kink.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock); uint 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(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view returns (uint) { uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa); uint borrowRate = getBorrowRate(cash, borrows, reserves); uint 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(uint baseRatePerYear, uint multiplierPerYear, uint jumpMultiplierPerYear, uint 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); } }
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 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 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 returns (uint); }
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; } }
pragma solidity ^0.5.0; import "../GSN/Context.sol"; /** * @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 is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @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 _msgSender() == _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; } }
pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}],"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"}],"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"},{"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":"isOwner","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"blocksPerYear_","type":"uint256"}],"name":"updateBlocksPerYear","outputs":[],"payable":false,"stateMutability":"nonpayable","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"}],"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":"pure","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620010e9380380620010e9833981810160405260e08110156200003757600080fd5b815160208301516040808501516060860151608087015160a088015160c089018051955197999698949793969295919483019291846401000000008211156200007f57600080fd5b9083019060208201858111156200009557600080fd5b8251640100000000811182820188101715620000b057600080fd5b82525081516020918201929091019080838360005b83811015620000df578181015183820152602001620000c5565b50505050905090810190601f1680156200010d5780820380516001836020036101000a031916815260200191505b50604052505050600062000126620001b260201b60201c565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020620010c9833981519152908290a350600187905580516200017990600690602084019062000499565b506200018e826001600160e01b03620001b716565b620001a5868686866001600160e01b036200024816565b505050505050506200053b565b335b90565b6001600160a01b038116620001fe5760405162461bcd60e51b8152600401808060200182810382526026815260200180620010826026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020620010c983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b62000264600154856200034160201b620007791790919060201c565b600381905550620002c06200028a826001546200039460201b620007171790919060201c565b620002ac670de0b6b3a7640000866200039460201b620007171790919060201c565b6200034160201b620007791790919060201c565b600281905550620002e2600154836200034160201b620007791790919060201c565b60048190556005829055600354600254604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b60006200038b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620003f260201b60201c565b90505b92915050565b600082620003a5575060006200038e565b82820282848281620003b357fe5b04146200038b5760405162461bcd60e51b8152600401808060200182810382526021815260200180620010a86021913960400191505060405180910390fd5b60008183620004825760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004465781810151838201526020016200042c565b50505050905090810190601f168015620004745780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200048f57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004dc57805160ff19168380011785556200050c565b828001600101855582156200050c579182015b828111156200050c578251825591602001919060010190620004ef565b506200051a9291506200051e565b5090565b620001b491905b808211156200051a576000815560010162000525565b610b37806200054b6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638f32d59b11610097578063b9f9850a11610066578063b9f9850a146102c3578063f14039de146102cb578063f2fde38b146102d3578063fd2da339146102f957610100565b80638f32d59b14610267578063a3193e2e1461026f578063a385fb961461028c578063b81688161461029457610100565b80636e71e2d8116100d35780636e71e2d81461020a578063715018a6146102335780638726bb891461023b5780638da5cb5b1461024357610100565b806306fdde031461010557806315f24053146101825780632037f3e7146101bd5780632191f92a146101ee575b600080fd5b61010d610301565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ab6004803603606081101561019857600080fd5b508035906020810135906040013561038f565b60408051918252519081900360200190f35b6101ec600480360360808110156101d357600080fd5b5080359060208101359060408101359060600135610467565b005b6101f66104c0565b604080519115158252519081900360200190f35b6101ab6004803603606081101561022057600080fd5b50803590602081013590604001356104c5565b6101ec610517565b6101ab6105a8565b61024b6105ae565b604080516001600160a01b039092168252519081900360200190f35b6101f66105bd565b6101ec6004803603602081101561028557600080fd5b50356105e1565b6101ab61062d565b6101ab600480360360808110156102aa57600080fd5b5080359060208101359060408101359060600135610633565b6101ab6106b2565b6101ab6106b8565b6101ec600480360360208110156102e957600080fd5b50356001600160a01b03166106be565b6101ab610711565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103875780601f1061035c57610100808354040283529160200191610387565b820191906000526020600020905b81548152906001019060200180831161036a57829003601f168201915b505050505081565b60008061039d8585856104c5565b905060055481116103ef576103e76003546103db670de0b6b3a76400006103cf6002548661071790919063ffffffff16565b9063ffffffff61077916565b9063ffffffff6107bb16565b915050610460565b600061041a6003546103db670de0b6b3a76400006103cf60025460055461071790919063ffffffff16565b905060006104336005548461081590919063ffffffff16565b905061045a826103db670de0b6b3a76400006103cf6004548661071790919063ffffffff16565b93505050505b9392505050565b61046f6105bd565b6104ae576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b6104ba84848484610857565b50505050565b600181565b6000826104d457506000610460565b61050f6104f7836104eb878763ffffffff6107bb16565b9063ffffffff61081516565b6103cf85670de0b6b3a764000063ffffffff61071716565b949350505050565b61051f6105bd565b61055e576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60025481565b6000546001600160a01b031690565b600080546001600160a01b03166105d26108fb565b6001600160a01b031614905090565b6105e96105bd565b610628576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b600155565b60015481565b60008061064e670de0b6b3a76400008463ffffffff61081516565b9050600061065d87878761038f565b9050600061067d670de0b6b3a76400006103cf848663ffffffff61071716565b90506106a6670de0b6b3a76400006103cf8361069a8c8c8c6104c5565b9063ffffffff61071716565b98975050505050505050565b60045481565b60035481565b6106c66105bd565b610705576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b61070e816108ff565b50565b60055481565b60008261072657506000610773565b8282028284828161073357fe5b04146107705760405162461bcd60e51b8152600401808060200182810382526021815260200180610ac26021913960400191505060405180910390fd5b90505b92915050565b600061077083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061099f565b600082820183811015610770576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061077083836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610a41565b60015461086b90859063ffffffff61077916565b600355600154610885906104f7908363ffffffff61071716565b60025560015461089c90839063ffffffff61077916565b60048190556005829055600354600254604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b3390565b6001600160a01b0381166109445760405162461bcd60e51b8152600401808060200182810382526026815260200180610a9c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183610a2b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109f05781810151838201526020016109d8565b50505050905090810190601f168015610a1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610a3757fe5b0495945050505050565b60008184841115610a935760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109f05781810151838201526020016109d8565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a72315820e07802940a9c4d2581f34211dea06b9f472b079d00d0063352838274c996463664736f6c634300051000324f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000000000000023a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000026b97e040d40000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000001001009911e3fe1d5b45ff8efea7732c33a6c01200000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000b537461626c65636f696e73000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638f32d59b11610097578063b9f9850a11610066578063b9f9850a146102c3578063f14039de146102cb578063f2fde38b146102d3578063fd2da339146102f957610100565b80638f32d59b14610267578063a3193e2e1461026f578063a385fb961461028c578063b81688161461029457610100565b80636e71e2d8116100d35780636e71e2d81461020a578063715018a6146102335780638726bb891461023b5780638da5cb5b1461024357610100565b806306fdde031461010557806315f24053146101825780632037f3e7146101bd5780632191f92a146101ee575b600080fd5b61010d610301565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ab6004803603606081101561019857600080fd5b508035906020810135906040013561038f565b60408051918252519081900360200190f35b6101ec600480360360808110156101d357600080fd5b5080359060208101359060408101359060600135610467565b005b6101f66104c0565b604080519115158252519081900360200190f35b6101ab6004803603606081101561022057600080fd5b50803590602081013590604001356104c5565b6101ec610517565b6101ab6105a8565b61024b6105ae565b604080516001600160a01b039092168252519081900360200190f35b6101f66105bd565b6101ec6004803603602081101561028557600080fd5b50356105e1565b6101ab61062d565b6101ab600480360360808110156102aa57600080fd5b5080359060208101359060408101359060600135610633565b6101ab6106b2565b6101ab6106b8565b6101ec600480360360208110156102e957600080fd5b50356001600160a01b03166106be565b6101ab610711565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103875780601f1061035c57610100808354040283529160200191610387565b820191906000526020600020905b81548152906001019060200180831161036a57829003601f168201915b505050505081565b60008061039d8585856104c5565b905060055481116103ef576103e76003546103db670de0b6b3a76400006103cf6002548661071790919063ffffffff16565b9063ffffffff61077916565b9063ffffffff6107bb16565b915050610460565b600061041a6003546103db670de0b6b3a76400006103cf60025460055461071790919063ffffffff16565b905060006104336005548461081590919063ffffffff16565b905061045a826103db670de0b6b3a76400006103cf6004548661071790919063ffffffff16565b93505050505b9392505050565b61046f6105bd565b6104ae576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b6104ba84848484610857565b50505050565b600181565b6000826104d457506000610460565b61050f6104f7836104eb878763ffffffff6107bb16565b9063ffffffff61081516565b6103cf85670de0b6b3a764000063ffffffff61071716565b949350505050565b61051f6105bd565b61055e576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60025481565b6000546001600160a01b031690565b600080546001600160a01b03166105d26108fb565b6001600160a01b031614905090565b6105e96105bd565b610628576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b600155565b60015481565b60008061064e670de0b6b3a76400008463ffffffff61081516565b9050600061065d87878761038f565b9050600061067d670de0b6b3a76400006103cf848663ffffffff61071716565b90506106a6670de0b6b3a76400006103cf8361069a8c8c8c6104c5565b9063ffffffff61071716565b98975050505050505050565b60045481565b60035481565b6106c66105bd565b610705576040805162461bcd60e51b81526020600482018190526024820152600080516020610ae3833981519152604482015290519081900360640190fd5b61070e816108ff565b50565b60055481565b60008261072657506000610773565b8282028284828161073357fe5b04146107705760405162461bcd60e51b8152600401808060200182810382526021815260200180610ac26021913960400191505060405180910390fd5b90505b92915050565b600061077083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061099f565b600082820183811015610770576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061077083836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610a41565b60015461086b90859063ffffffff61077916565b600355600154610885906104f7908363ffffffff61071716565b60025560015461089c90839063ffffffff61077916565b60048190556005829055600354600254604080519283526020830191909152818101929092526060810183905290517f6960ab234c7ef4b0c9197100f5393cfcde7c453ac910a27bd2000aa1dd4c068d9181900360800190a150505050565b3390565b6001600160a01b0381166109445760405162461bcd60e51b8152600401808060200182810382526026815260200180610a9c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183610a2b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109f05781810151838201526020016109d8565b50505050905090810190601f168015610a1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610a3757fe5b0495945050505050565b60008184841115610a935760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109f05781810151838201526020016109d8565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a72315820e07802940a9c4d2581f34211dea06b9f472b079d00d0063352838274c996463664736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000023a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000026b97e040d40000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000001001009911e3fe1d5b45ff8efea7732c33a6c01200000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000b537461626c65636f696e73000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : blocksPerYear_ (uint256): 2336000
Arg [1] : baseRatePerYear (uint256): 0
Arg [2] : multiplierPerYear (uint256): 50000000000000000
Arg [3] : jumpMultiplierPerYear (uint256): 10900000000000000
Arg [4] : kink_ (uint256): 800000000000000000
Arg [5] : owner_ (address): 0x1001009911e3FE1d5B45FF8Efea7732C33a6C012
Arg [6] : name_ (string): Stablecoins
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000023a500
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [3] : 0000000000000000000000000000000000000000000000000026b97e040d4000
Arg [4] : 0000000000000000000000000000000000000000000000000b1a2bc2ec500000
Arg [5] : 0000000000000000000000001001009911e3fe1d5b45ff8efea7732c33a6c012
Arg [6] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [8] : 537461626c65636f696e73000000000000000000000000000000000000000000
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.