Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
VariableInterestRate
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 100000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: ISC pragma solidity ^0.8.17; // ==================================================================== // | ______ _______ | // | / _____________ __ __ / ____(_____ ____ _____ ________ | // | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ | // | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ | // | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ | // | | // ==================================================================== // ====================== VariableInterestRate ======================== // ==================================================================== // Frax Finance: https://github.com/FraxFinance // Primary Author // Drake Evans: https://github.com/DrakeEvans // Reviewers // Dennis: https://github.com/denett // ==================================================================== import "@openzeppelin/contracts/utils/Strings.sol"; import "./interfaces/IRateCalculatorV2.sol"; /// @title A formula for calculating interest rates as a function of utilization and time /// @author Drake Evans github.com/drakeevans /// @notice A Contract for calculating interest rates as a function of utilization and time contract VariableInterestRate is IRateCalculatorV2 { using Strings for uint256; // Name Suffix string public suffix; // Utilization Settings /// @notice The minimimum utilization wherein no adjustment to full utilization and vertex rates occurs uint256 public immutable MIN_TARGET_UTIL; /// @notice The maximum utilization wherein no adjustment to full utilization and vertex rates occurs uint256 public immutable MAX_TARGET_UTIL; /// @notice The utilization at which the slope increases uint256 public immutable VERTEX_UTILIZATION; /// @notice precision of utilization calculations uint256 public constant UTIL_PREC = 1e5; // 5 decimals // Interest Rate Settings (all rates are per second), 365.24 days per year /// @notice The minimum interest rate (per second) when utilization is 100% uint256 public immutable MIN_FULL_UTIL_RATE; // 18 decimals /// @notice The maximum interest rate (per second) when utilization is 100% uint256 public immutable MAX_FULL_UTIL_RATE; // 18 decimals /// @notice The interest rate (per second) when utilization is 0% uint256 public immutable ZERO_UTIL_RATE; // 18 decimals /// @notice The interest rate half life in seconds, determines rate of adjustments to rate curve uint256 public immutable RATE_HALF_LIFE; // 1 decimals /// @notice The percent of the delta between max and min uint256 public immutable VERTEX_RATE_PERCENT; // 18 decimals /// @notice The precision of interest rate calculations uint256 public constant RATE_PREC = 1e18; // 18 decimals /// @notice The ```constructor``` function /// @param _vertexUtilization The utilization at which the slope increases /// @param _vertexRatePercentOfDelta The percent of the delta between max and min, defines vertex rate /// @param _minUtil The minimimum utilization wherein no adjustment to full utilization and vertex rates occurs /// @param _maxUtil The maximum utilization wherein no adjustment to full utilization and vertex rates occurs /// @param _zeroUtilizationRate The interest rate (per second) when utilization is 0% /// @param _minFullUtilizationRate The minimum interest rate at 100% utilization /// @param _maxFullUtilizationRate The maximum interest rate at 100% utilization /// @param _rateHalfLife The half life parameter for interest rate adjustments constructor( string memory _suffix, uint256 _vertexUtilization, uint256 _vertexRatePercentOfDelta, uint256 _minUtil, uint256 _maxUtil, uint256 _zeroUtilizationRate, uint256 _minFullUtilizationRate, uint256 _maxFullUtilizationRate, uint256 _rateHalfLife ) { suffix = _suffix; MIN_TARGET_UTIL = _minUtil; MAX_TARGET_UTIL = _maxUtil; VERTEX_UTILIZATION = _vertexUtilization; ZERO_UTIL_RATE = _zeroUtilizationRate; MIN_FULL_UTIL_RATE = _minFullUtilizationRate; MAX_FULL_UTIL_RATE = _maxFullUtilizationRate; RATE_HALF_LIFE = _rateHalfLife; VERTEX_RATE_PERCENT = _vertexRatePercentOfDelta; } /// @notice The ```name``` function returns the name of the rate contract /// @return memory name of contract function name() external view returns (string memory) { return string( abi.encodePacked( "Variable Rate V2 ", suffix ) ); } /// @notice The ```version``` function returns the semantic version of the rate contract /// @dev Follows semantic versioning /// @return _major Major version /// @return _minor Minor version /// @return _patch Patch version function version() external pure returns (uint256 _major, uint256 _minor, uint256 _patch) { _major = 2; _minor = 0; _patch = 0; } /// @notice The ```getFullUtilizationInterest``` function calculate the new maximum interest rate, i.e. rate when utilization is 100% /// @dev Given in interest per second /// @param _deltaTime The elapsed time since last update given in seconds /// @param _utilization The utilization %, given with 5 decimals of precision /// @param _fullUtilizationInterest The interest value when utilization is 100%, given with 18 decimals of precision /// @return _newFullUtilizationInterest The new maximum interest rate function getFullUtilizationInterest(uint256 _deltaTime, uint256 _utilization, uint64 _fullUtilizationInterest) internal view returns (uint64 _newFullUtilizationInterest) { if (_utilization < MIN_TARGET_UTIL) { // 18 decimals uint256 _deltaUtilization = ((MIN_TARGET_UTIL - _utilization) * 1e18) / MIN_TARGET_UTIL; // 36 decimals uint256 _decayGrowth = (RATE_HALF_LIFE * 1e36) + (_deltaUtilization * _deltaUtilization * _deltaTime); // 18 decimals _newFullUtilizationInterest = uint64((_fullUtilizationInterest * (RATE_HALF_LIFE * 1e36)) / _decayGrowth); } else if (_utilization > MAX_TARGET_UTIL) { // 18 decimals uint256 _deltaUtilization = ((_utilization - MAX_TARGET_UTIL) * 1e18) / (UTIL_PREC - MAX_TARGET_UTIL); // 36 decimals uint256 _decayGrowth = (RATE_HALF_LIFE * 1e36) + (_deltaUtilization * _deltaUtilization * _deltaTime); // 18 decimals _newFullUtilizationInterest = uint64((_fullUtilizationInterest * _decayGrowth) / (RATE_HALF_LIFE * 1e36)); } else { _newFullUtilizationInterest = _fullUtilizationInterest; } if (_newFullUtilizationInterest > MAX_FULL_UTIL_RATE) { _newFullUtilizationInterest = uint64(MAX_FULL_UTIL_RATE); } else if (_newFullUtilizationInterest < MIN_FULL_UTIL_RATE) { _newFullUtilizationInterest = uint64(MIN_FULL_UTIL_RATE); } } /// @notice The ```getNewRate``` function calculates interest rates using two linear functions f(utilization) /// @param _deltaTime The elapsed time since last update, given in seconds /// @param _utilization The utilization %, given with 5 decimals of precision /// @param _oldFullUtilizationInterest The interest value when utilization is 100%, given with 18 decimals of precision /// @return _newRatePerSec The new interest rate, 18 decimals of precision /// @return _newFullUtilizationInterest The new max interest rate, 18 decimals of precision function getNewRate(uint256 _deltaTime, uint256 _utilization, uint64 _oldFullUtilizationInterest) external view returns (uint64 _newRatePerSec, uint64 _newFullUtilizationInterest) { _newFullUtilizationInterest = getFullUtilizationInterest(_deltaTime, _utilization, _oldFullUtilizationInterest); // _vertexInterest is calculated as the percentage of the detla between min and max interest uint256 _vertexInterest = (((_newFullUtilizationInterest - ZERO_UTIL_RATE) * VERTEX_RATE_PERCENT) / RATE_PREC) + ZERO_UTIL_RATE; if (_utilization < VERTEX_UTILIZATION) { // For readability, the following formula is equivalent to: // uint256 _slope = ((_vertexInterest - ZERO_UTIL_RATE) * UTIL_PREC) / VERTEX_UTILIZATION; // _newRatePerSec = uint64(ZERO_UTIL_RATE + ((_utilization * _slope) / UTIL_PREC)); // 18 decimals _newRatePerSec = uint64( ZERO_UTIL_RATE + (_utilization * (_vertexInterest - ZERO_UTIL_RATE)) / VERTEX_UTILIZATION ); } else { // For readability, the following formula is equivalent to: // uint256 _slope = (((_newFullUtilizationInterest - _vertexInterest) * UTIL_PREC) / (UTIL_PREC - VERTEX_UTILIZATION)); // _newRatePerSec = uint64(_vertexInterest + (((_utilization - VERTEX_UTILIZATION) * _slope) / UTIL_PREC)); // 18 decimals _newRatePerSec = uint64( _vertexInterest + ((_utilization - VERTEX_UTILIZATION) * (_newFullUtilizationInterest - _vertexInterest)) / (UTIL_PREC - VERTEX_UTILIZATION) ); } } }
// SPDX-License-Identifier: ISC pragma solidity ^0.8.17; interface IRateCalculatorV2 { function name() external view returns (string memory); function version() external view returns (uint256, uint256, uint256); function getNewRate(uint256 _deltaTime, uint256 _utilization, uint64 _maxInterest) external view returns (uint64 _newRatePerSec, uint64 _newMaxInterest); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
{ "metadata": { "bytecodeHash": "none" }, "viaIR": true, "optimizer": { "enabled": true, "runs": 100000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_suffix","type":"string"},{"internalType":"uint256","name":"_vertexUtilization","type":"uint256"},{"internalType":"uint256","name":"_vertexRatePercentOfDelta","type":"uint256"},{"internalType":"uint256","name":"_minUtil","type":"uint256"},{"internalType":"uint256","name":"_maxUtil","type":"uint256"},{"internalType":"uint256","name":"_zeroUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"_minFullUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"_maxFullUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"_rateHalfLife","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MAX_FULL_UTIL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TARGET_UTIL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_FULL_UTIL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TARGET_UTIL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_HALF_LIFE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_PREC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTIL_PREC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERTEX_RATE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERTEX_UTILIZATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO_UTIL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deltaTime","type":"uint256"},{"internalType":"uint256","name":"_utilization","type":"uint256"},{"internalType":"uint64","name":"_oldFullUtilizationInterest","type":"uint64"}],"name":"getNewRate","outputs":[{"internalType":"uint64","name":"_newRatePerSec","type":"uint64"},{"internalType":"uint64","name":"_newFullUtilizationInterest","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"suffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"_major","type":"uint256"},{"internalType":"uint256","name":"_minor","type":"uint256"},{"internalType":"uint256","name":"_patch","type":"uint256"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
61018060405234620002e85762000f8c803803806200001e81620002ed565b9283398101610120908183820312620002e85782516001600160401b039190828111620002e857840191601f90828285011215620002e857835190808211620002bd57602091601f19956200007984888785011601620002ed565b95828752848383010111620002e857839060005b838110620002d35750506000918601015281870151604088015195606089015160808a01519160a08b01519460c08c01519660e08d015198610100809e01519a8051938411620002bd57600054926001938481811c91168015620002b2575b828210146200029c5783811162000251575b5080928511600114620001e7575083945090839291600094620001db575b50501b916000199060031b1c1916176000555b60805260a05260c052855260e052845261014090815261016091825260405192610c78948562000314863960805185818161022f0152610658015260a0518581816104df0152610825015260c0518581816103a101526105ff015260e051858181610477015261087e0152518481816103020152610a8a015251838181610335015261074b0152518281816102980152818161055a01526108d701525181818161037301526106b10152f35b0151925038806200011c565b9294849081166000805284600020946000905b888383106200023657505050106200021c575b505050811b016000556200012f565b015160001960f88460031b161c191690553880806200020d565b858701518855909601959485019487935090810190620001fa565b60008052816000208480880160051c82019284891062000292575b0160051c019085905b82811062000285575050620000fe565b6000815501859062000275565b925081926200026c565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000ec565b634e487b7160e01b600052604160045260246000fd5b8181018301518882018401528592016200008d565b600080fd5b6040519190601f01601f191682016001600160401b03811183821017620002bd5760405256fe608060408181526004918236101561001657600080fd5b600092833560e01c9182624c98af14610a555750816306fdde03146108fa57816317784ca4146108a157816331bf879d1461084857816340797eda146107ef57816354fd4d50146107aa5781636cd3cc771461076e5781638e75618c1461071557816391474c49146106d457816395da99fc1461067b5781639c07327014610622578163c4168125146105c9578163cd3181d5146101db575063f7073c3a146100be57600080fd5b346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d7578051908280546100fb81610b13565b808552916001918083169081156101915750600114610135575b50505061012782610131940383610b66565b5191829182610aad565b0390f35b80809650527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828610610179575050506101278260206101319582010194610115565b8054602087870181019190915290950194810161015c565b6101319750869350602092506101279491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010194610115565b5080fd5b839150346101d75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757803591602490813560443567ffffffffffffffff95868216918281036105c5577f000000000000000000000000000000000000000000000000000000000000000090818510156104da57506102628482610bd6565b670de0b6b3a7640000908181029181830414901517156104af579061028691610c25565b6ec097ce7bc90715b34b9f10000000007f000000000000000000000000000000000000000000000000000000000000000081810293929181159185041417156104af5788969594936102f988946102f36102ed87966102e8876102fe98610c12565b610c12565b82610c5e565b92610c12565b610c25565b165b7f0000000000000000000000000000000000000000000000000000000000000000908281168281111561047057505016925b847f000000000000000000000000000000000000000000000000000000000000000094169561039e85670de0b6b3a7640000610398610371838c610bd6565b7f000000000000000000000000000000000000000000000000000000000000000090610c12565b04610c5e565b917f00000000000000000000000000000000000000000000000000000000000000009485851060001461040057505050916102f96103ea926103e4866103f09796610bd6565b90610c12565b90610c5e565b16915b8351921682526020820152f35b929650928461041f9295965061041591610bd6565b6103e48789610bd6565b92620186a094850394851161044757505050916103ea610440928694610c25565b16916103f3565b6011907f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90959291507f00000000000000000000000000000000000000000000000000000000000000008091106104a5575b5050610332565b169350848961049e565b868660118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9192917f000000000000000000000000000000000000000000000000000000000000000091508890828611156105b65750506105168185610bd6565b670de0b6b3a7640000908181029181830414901517156104af57620186a09182039182116104af579061054891610c25565b6ec097ce7bc90715b34b9f10000000007f000000000000000000000000000000000000000000000000000000000000000081810294929181159186041417156104af5788969594936102f988946103e46105aa87966102e8876105b098610c12565b84610c5e565b16610300565b91509594939250859150610300565b8480fd5b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d75760209051670de0b6b3a76400008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d75760209051620186a08152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d75760609181519160028352816020840152820152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d7578051906020927f5661726961626c6520526174652056322000000000000000000000000000000084840152809381549161096383610b13565b92600190818116908115610a0d57506001146109b0575b6101318686610127828b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610b66565b90808093949750527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8683106109f9575050505061012782603161013195820101943861097a565b8054868401603101529183019181016109da565b6101319850879450603193506101279592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009150168284015280151502820101943861097a565b8490346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d7576020907f00000000000000000000000000000000000000000000000000000000000000008152f35b60208082528251818301819052939260005b858110610aff575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b818101830151848201604001528201610abf565b90600182811c92168015610b5c575b6020831014610b2d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691610b22565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610ba757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b91908203918211610be357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810292918115918404141715610be357565b8115610c2f570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b91908201809211610be35756fea164736f6c6343000811000a000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000155cc00000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000000000000000124f80000000000000000000000000000000000000000000000000000000000014c0800000000000000000000000000000000000000000000000000000000096ea886000000000000000000000000000000000000000000000000000000005e52953c000000000000000000000000000000000000000000000000000002e0e52de4c0000000000000000000000000000000000000000000000000000000000002a30000000000000000000000000000000000000000000000000000000000000000255b302e3520302e32402e38373520352d31306b5d2032206461797320282e37352d2e383529000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060408181526004918236101561001657600080fd5b600092833560e01c9182624c98af14610a555750816306fdde03146108fa57816317784ca4146108a157816331bf879d1461084857816340797eda146107ef57816354fd4d50146107aa5781636cd3cc771461076e5781638e75618c1461071557816391474c49146106d457816395da99fc1461067b5781639c07327014610622578163c4168125146105c9578163cd3181d5146101db575063f7073c3a146100be57600080fd5b346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d7578051908280546100fb81610b13565b808552916001918083169081156101915750600114610135575b50505061012782610131940383610b66565b5191829182610aad565b0390f35b80809650527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828610610179575050506101278260206101319582010194610115565b8054602087870181019190915290950194810161015c565b6101319750869350602092506101279491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010194610115565b5080fd5b839150346101d75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757803591602490813560443567ffffffffffffffff95868216918281036105c5577f00000000000000000000000000000000000000000000000000000000000124f890818510156104da57506102628482610bd6565b670de0b6b3a7640000908181029181830414901517156104af579061028691610c25565b6ec097ce7bc90715b34b9f10000000007f000000000000000000000000000000000000000000000000000000000002a30081810293929181159185041417156104af5788969594936102f988946102f36102ed87966102e8876102fe98610c12565b610c12565b82610c5e565b92610c12565b610c25565b165b7f000000000000000000000000000000000000000000000000000002e0e52de4c0908281168281111561047057505016925b847f00000000000000000000000000000000000000000000000000000000096ea88694169561039e85670de0b6b3a7640000610398610371838c610bd6565b7f00000000000000000000000000000000000000000000000002c68af0bb14000090610c12565b04610c5e565b917f00000000000000000000000000000000000000000000000000000000000155cc9485851060001461040057505050916102f96103ea926103e4866103f09796610bd6565b90610c12565b90610c5e565b16915b8351921682526020820152f35b929650928461041f9295965061041591610bd6565b6103e48789610bd6565b92620186a094850394851161044757505050916103ea610440928694610c25565b16916103f3565b6011907f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90959291507f000000000000000000000000000000000000000000000000000000005e52953c8091106104a5575b5050610332565b169350848961049e565b868660118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9192917f0000000000000000000000000000000000000000000000000000000000014c0891508890828611156105b65750506105168185610bd6565b670de0b6b3a7640000908181029181830414901517156104af57620186a09182039182116104af579061054891610c25565b6ec097ce7bc90715b34b9f10000000007f000000000000000000000000000000000000000000000000000000000002a30081810294929181159186041417156104af5788969594936102f988946103e46105aa87966102e8876105b098610c12565b84610c5e565b16610300565b91509594939250859150610300565b8480fd5b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000155cc8152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000000124f88152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000002c68af0bb1400008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d75760209051670de0b6b3a76400008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f00000000000000000000000000000000000000000000000000000000096ea8868152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d75760209051620186a08152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d75760609181519160028352816020840152820152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f0000000000000000000000000000000000000000000000000000000000014c088152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f000000000000000000000000000000000000000000000000000000005e52953c8152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d757602090517f000000000000000000000000000000000000000000000000000000000002a3008152f35b5050346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d7578051906020927f5661726961626c6520526174652056322000000000000000000000000000000084840152809381549161096383610b13565b92600190818116908115610a0d57506001146109b0575b6101318686610127828b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610b66565b90808093949750527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8683106109f9575050505061012782603161013195820101943861097a565b8054868401603101529183019181016109da565b6101319850879450603193506101279592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009150168284015280151502820101943861097a565b8490346101d757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d7576020907f000000000000000000000000000000000000000000000000000002e0e52de4c08152f35b60208082528251818301819052939260005b858110610aff575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b818101830151848201604001528201610abf565b90600182811c92168015610b5c575b6020831014610b2d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691610b22565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610ba757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b91908203918211610be357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810292918115918404141715610be357565b8115610c2f570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b91908201809211610be35756fea164736f6c6343000811000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000155cc00000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000000000000000124f80000000000000000000000000000000000000000000000000000000000014c0800000000000000000000000000000000000000000000000000000000096ea886000000000000000000000000000000000000000000000000000000005e52953c000000000000000000000000000000000000000000000000000002e0e52de4c0000000000000000000000000000000000000000000000000000000000002a30000000000000000000000000000000000000000000000000000000000000000255b302e3520302e32402e38373520352d31306b5d2032206461797320282e37352d2e383529000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _suffix (string): [0.5 [email protected] 5-10k] 2 days (.75-.85)
Arg [1] : _vertexUtilization (uint256): 87500
Arg [2] : _vertexRatePercentOfDelta (uint256): 200000000000000000
Arg [3] : _minUtil (uint256): 75000
Arg [4] : _maxUtil (uint256): 85000
Arg [5] : _zeroUtilizationRate (uint256): 158247046
Arg [6] : _minFullUtilizationRate (uint256): 1582470460
Arg [7] : _maxFullUtilizationRate (uint256): 3164940920000
Arg [8] : _rateHalfLife (uint256): 172800
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 00000000000000000000000000000000000000000000000000000000000155cc
Arg [2] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Arg [3] : 00000000000000000000000000000000000000000000000000000000000124f8
Arg [4] : 0000000000000000000000000000000000000000000000000000000000014c08
Arg [5] : 00000000000000000000000000000000000000000000000000000000096ea886
Arg [6] : 000000000000000000000000000000000000000000000000000000005e52953c
Arg [7] : 000000000000000000000000000000000000000000000000000002e0e52de4c0
Arg [8] : 000000000000000000000000000000000000000000000000000000000002a300
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000025
Arg [10] : 5b302e3520302e32402e38373520352d31306b5d2032206461797320282e3735
Arg [11] : 2d2e383529000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.