Source Code
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FNSPriceOracle
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 1300 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.19;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// ========================== FNS PriceOracle =========================
// ====================================================================
// Frax Finance: https://github.com/FraxFinance
import "ens-contracts/contracts/ethregistrar/IPriceOracle.sol";
import "ens-contracts/contracts/ethregistrar/StringUtils.sol";
import "ens-contracts/contracts/ethregistrar/SafeMath.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
// FNSPriceOracle sets a price in unit of FXS.
contract FNSPriceOracle is Ownable, IPriceOracle {
using StringUtils for *;
using SafeMath for *;
// Rent in base price units by length
uint256 public price1Letter;
uint256 public price2Letter;
uint256 public price3Letter;
uint256 public price4Letter;
uint256 public price5Letter;
uint256 public price6Letter;
uint256 immutable GRACE_PERIOD = 90 days;
event RentPriceChanged(uint256[] prices);
constructor(uint256[] memory _rentPrices, address delegationRegistry, address initialDelegate) {
delegationRegistry.call(abi.encodeWithSignature("setDelegationForSelf(address)", initialDelegate));
delegationRegistry.call(abi.encodeWithSignature("disableSelfManagingDelegations()"));
delegationRegistry.call(abi.encodeWithSignature("disableDelegationManagement()"));
price1Letter = _rentPrices[0];
price2Letter = _rentPrices[1];
price3Letter = _rentPrices[2];
price4Letter = _rentPrices[3];
price5Letter = _rentPrices[4];
price6Letter = _rentPrices[5];
emit RentPriceChanged(_rentPrices);
}
function price(
string calldata name,
uint256 expires,
uint256 duration
) external view override returns (IPriceOracle.Price memory) {
uint256 len = name.strlen();
uint256 basePrice;
if (len >= 6) {
basePrice = price6Letter * duration;
} else if (len == 5) {
basePrice = price5Letter * duration;
} else if (len == 4) {
basePrice = price4Letter * duration;
} else if (len == 3) {
basePrice = price3Letter * duration;
} else if (len == 2) {
basePrice = price2Letter * duration;
} else {
basePrice = price1Letter * duration;
}
return IPriceOracle.Price({ base: basePrice, premium: _premium(name, expires, duration) });
}
/**
* @dev Returns the pricing premium in wei.
*/
function premium(string calldata name, uint256 expires, uint256 duration) external view returns (uint256) {
return _premium(name, expires, duration);
}
/**
* @dev Returns the pricing premium in internal base units.
*/
function _premium(string memory name, uint256 expires, uint256 duration) internal view virtual returns (uint256) {
if (expires > block.timestamp) {
// No premium for renewals
return 0;
}
uint256 len = name.strlen();
uint256 premiumPrice;
uint256 expiredPeriod = block.timestamp.sub(expires);
// Max Premium is equal to Grace Period base price
if (expiredPeriod > GRACE_PERIOD) {
expiredPeriod = GRACE_PERIOD;
}
if (len >= 6) {
premiumPrice = price6Letter * expiredPeriod;
} else if (len == 5) {
premiumPrice = price5Letter * expiredPeriod;
} else if (len == 4) {
premiumPrice = price4Letter * expiredPeriod;
} else if (len == 3) {
premiumPrice = price3Letter * expiredPeriod;
} else if (len == 2) {
premiumPrice = price2Letter * expiredPeriod;
} else {
premiumPrice = price1Letter * expiredPeriod;
}
return premiumPrice;
}
function supportsInterface(bytes4 interfaceID) public view virtual returns (bool) {
return interfaceID == type(IERC165).interfaceId || interfaceID == type(IPriceOracle).interfaceId;
}
function setPrices(uint256[] memory _rentPrices) public onlyOwner {
price1Letter = _rentPrices[0];
price2Letter = _rentPrices[1];
price3Letter = _rentPrices[2];
price4Letter = _rentPrices[3];
price5Letter = _rentPrices[4];
price6Letter = _rentPrices[5];
emit RentPriceChanged(_rentPrices);
}
}//SPDX-License-Identifier: MIT
pragma solidity >=0.8.17 <0.9.0;
interface IPriceOracle {
struct Price {
uint256 base;
uint256 premium;
}
/**
* @dev Returns the price to register or renew a name.
* @param name The name being registered or renewed.
* @param expires When the name presently expires (0 if this is a new registration).
* @param duration How long the name is being registered or extended for, in seconds.
* @return base premium tuple of base price + premium price
*/
function price(
string calldata name,
uint256 expires,
uint256 duration
) external view returns (Price calldata);
}pragma solidity >=0.8.4;
library StringUtils {
/**
* @dev Returns the length of a given string
*
* @param s The string to measure the length of
* @return The length of the input string
*/
function strlen(string memory s) internal pure returns (uint256) {
uint256 len;
uint256 i = 0;
uint256 bytelength = bytes(s).length;
for (len = 0; i < bytelength; len++) {
bytes1 b = bytes(s)[i];
if (b < 0x80) {
i += 1;
} else if (b < 0xE0) {
i += 2;
} else if (b < 0xF0) {
i += 3;
} else if (b < 0xF8) {
i += 4;
} else if (b < 0xFC) {
i += 5;
} else {
i += 6;
}
}
return len;
}
}//SPDX-License-Identifier: MIT
pragma solidity ~0.8.17;
/**
* @title SafeMath
* @dev Unsigned math operations with safety checks that revert on error
*/
library SafeMath {
/**
* @dev Multiplies two unsigned integers, reverts on 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-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
/**
* @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
/**
* @dev Adds two unsigned integers, reverts on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
/**
* @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/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.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* 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.
*/
abstract 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() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(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 virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)
pragma solidity ^0.8.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 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.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"remappings": [
"@openzeppelin/=node_modules/ens-contracts/node_modules/@openzeppelin/",
"frax-std/=node_modules/frax-standard-solidity/src/",
"@prb/test/=node_modules/@prb/test/",
"forge-std/=node_modules/forge-std/src/",
"ds-test/=node_modules/ds-test/src/",
"@chainlink/=node_modules/@chainlink/",
"@ensdomains/=node_modules/@ensdomains/",
"@eth-optimism/=node_modules/@eth-optimism/",
"elliptic-solidity/=node_modules/elliptic-solidity/",
"ens-contracts/=node_modules/ens-contracts/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"frax-standard-solidity/=node_modules/frax-standard-solidity/",
"hardhat-deploy/=node_modules/hardhat-deploy/",
"hardhat/=node_modules/hardhat/",
"solidity-bytes-utils/=node_modules/solidity-bytes-utils/"
],
"optimizer": {
"enabled": true,
"runs": 1300
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": false
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256[]","name":"_rentPrices","type":"uint256[]"},{"internalType":"address","name":"delegationRegistry","type":"address"},{"internalType":"address","name":"initialDelegate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"RentPriceChanged","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"premium","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"price","outputs":[{"components":[{"internalType":"uint256","name":"base","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"}],"internalType":"struct IPriceOracle.Price","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price2Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price3Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price4Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price5Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price6Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_rentPrices","type":"uint256[]"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a06040526276a7006080523480156200001857600080fd5b5060405162001121380380620011218339810160408190526200003b916200038a565b620000463362000307565b6040516001600160a01b03828116602483015283169060440160408051601f198184030181529181526020820180516001600160e01b03166302b8a21d60e01b1790525162000096919062000479565b6000604051808303816000865af19150503d8060008114620000d5576040519150601f19603f3d011682016040523d82523d6000602084013e620000da565b606091505b505060408051600481526024810182526020810180516001600160e01b03166325ce9a3760e01b17905290516001600160a01b03851692506200011e919062000479565b6000604051808303816000865af19150503d80600081146200015d576040519150601f19603f3d011682016040523d82523d6000602084013e62000162565b606091505b505060408051600481526024810182526020810180516001600160e01b03166353f340a360e11b17905290516001600160a01b0385169250620001a6919062000479565b6000604051808303816000865af19150503d8060008114620001e5576040519150601f19603f3d011682016040523d82523d6000602084013e620001ea565b606091505b50505082600081518110620002035762000203620004aa565b602002602001015160018190555082600181518110620002275762000227620004aa565b6020026020010151600281905550826002815181106200024b576200024b620004aa565b6020026020010151600381905550826003815181106200026f576200026f620004aa565b602002602001015160048190555082600481518110620002935762000293620004aa565b602002602001015160058190555082600581518110620002b757620002b7620004aa565b60200260200101516006819055507f73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df83604051620002f69190620004c0565b60405180910390a150505062000506565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200038557600080fd5b919050565b600080600060608486031215620003a057600080fd5b83516001600160401b0380821115620003b857600080fd5b818601915086601f830112620003cd57600080fd5b8151602082821115620003e457620003e462000357565b8160051b604051601f19603f830116810181811086821117156200040c576200040c62000357565b60405292835281830193508481018201928a8411156200042b57600080fd5b948201945b838610156200044b5785518552948201949382019362000430565b97506200045c90508882016200036d565b95505050505062000470604085016200036d565b90509250925092565b6000825160005b818110156200049c576020818601810151858301520162000480565b506000920191825250919050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015620004fa57835183529284019291840191600101620004dc565b50909695505050505050565b608051610bf8620005296000396000818161078d01526107b60152610bf86000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806379cf92d31161008c578063a34e359611610066578063a34e3596146101b1578063cd5d2c74146101c4578063d820ed42146101cd578063f2fde38b146101d657600080fd5b806379cf92d31461016d5780638da5cb5b14610180578063a200e153146101a857600080fd5b806350e9a715116100bd57806350e9a7151461012c57806359b6b86c1461015a578063715018a61461016357600080fd5b806301ffc9a7146100e45780630261d9421461010c5780632c0fd74c14610123575b600080fd5b6100f76100f2366004610967565b6101e9565b60405190151581526020015b60405180910390f35b61011560065481565b604051908152602001610103565b61011560015481565b61013f61013a3660046109a9565b610282565b60408051825181526020928301519281019290925201610103565b61011560055481565b61016b6103c2565b005b61016b61017b366004610a3e565b6103d6565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61011560035481565b6101156101bf3660046109a9565b6104de565b61011560025481565b61011560045481565b61016b6101e4366004610afc565b61052c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061027c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a71500000000000000000000000000000000000000000000000000000000145b92915050565b604080518082019091526000808252602082015260006102d786868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105ce92505050565b90506000600682106102f857836006546102f19190610b48565b9050610361565b8160050361030e57836005546102f19190610b48565b8160040361032457836004546102f19190610b48565b8160030361033a57836003546102f19190610b48565b8160020361035057836002546102f19190610b48565b8360015461035e9190610b48565b90505b60405180604001604052808281526020016103b589898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a915061075d9050565b9052979650505050505050565b6103ca610868565b6103d460006108cf565b565b6103de610868565b806000815181106103f1576103f1610b5f565b60200260200101516001819055508060018151811061041257610412610b5f565b60200260200101516002819055508060028151811061043357610433610b5f565b60200260200101516003819055508060038151811061045457610454610b5f565b60200260200101516004819055508060048151811061047557610475610b5f565b60200260200101516005819055508060058151811061049657610496610b5f565b60200260200101516006819055507f73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df816040516104d39190610b75565b60405180910390a150565b600061052385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925086915061075d9050565b95945050505050565b610534610868565b73ffffffffffffffffffffffffffffffffffffffff81166105c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105cb816108cf565b50565b8051600090819081905b808210156107545760008583815181106105f4576105f4610b5f565b01602001516001600160f81b03191690507f800000000000000000000000000000000000000000000000000000000000000081101561063f57610638600184610bb9565b9250610741565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561067c57610638600284610bb9565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156106b957610638600384610bb9565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156106f657610638600484610bb9565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561073357610638600584610bb9565b61073e600684610bb9565b92505b508261074c81610bcc565b9350506105d8565b50909392505050565b60004283111561076f57506000610861565b600061077a856105ce565b90506000806107894287610944565b90507f00000000000000000000000000000000000000000000000000000000000000008111156107d657507f00000000000000000000000000000000000000000000000000000000000000005b600683106107f357806006546107ec9190610b48565b915061085c565b8260050361080957806005546107ec9190610b48565b8260040361081f57806004546107ec9190610b48565b8260030361083557806003546107ec9190610b48565b8260020361084b57806002546107ec9190610b48565b806001546108599190610b48565b91505b509150505b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b9565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008282111561095357600080fd5b600061095f8385610be5565b949350505050565b60006020828403121561097957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461086157600080fd5b600080600080606085870312156109bf57600080fd5b843567ffffffffffffffff808211156109d757600080fd5b818701915087601f8301126109eb57600080fd5b8135818111156109fa57600080fd5b886020828501011115610a0c57600080fd5b6020928301999098509187013596604001359550909350505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610a5157600080fd5b823567ffffffffffffffff80821115610a6957600080fd5b818501915085601f830112610a7d57600080fd5b813581811115610a8f57610a8f610a28565b8060051b604051601f19603f83011681018181108582111715610ab457610ab4610a28565b604052918252848201925083810185019188831115610ad257600080fd5b938501935b82851015610af057843584529385019392850192610ad7565b98975050505050505050565b600060208284031215610b0e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461086157600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761027c5761027c610b32565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015610bad57835183529284019291840191600101610b91565b50909695505050505050565b8082018082111561027c5761027c610b32565b600060018201610bde57610bde610b32565b5060010190565b8181038181111561027c5761027c610b32560000000000000000000000000000000000000000000000000000000000000060000000000000000000000000f5ca906f05cafa944c27c6881bed3dfd3a785b6a000000000000000000000000c4eb45d80dc1f079045e75d5d55de8ed1c1090e600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000735c0b8c6600000000000000000000000000000000000000000000000000000039ae05c63ad000000000000000000000000000000000000000000000000000001cd702e31980000000000000000000000000000000000000000000000000000002e24d16b5c000000000000000000000000000000000000000000000000000000049d482456000000000000000000000000000000000000000000000000000000007620d06f0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806379cf92d31161008c578063a34e359611610066578063a34e3596146101b1578063cd5d2c74146101c4578063d820ed42146101cd578063f2fde38b146101d657600080fd5b806379cf92d31461016d5780638da5cb5b14610180578063a200e153146101a857600080fd5b806350e9a715116100bd57806350e9a7151461012c57806359b6b86c1461015a578063715018a61461016357600080fd5b806301ffc9a7146100e45780630261d9421461010c5780632c0fd74c14610123575b600080fd5b6100f76100f2366004610967565b6101e9565b60405190151581526020015b60405180910390f35b61011560065481565b604051908152602001610103565b61011560015481565b61013f61013a3660046109a9565b610282565b60408051825181526020928301519281019290925201610103565b61011560055481565b61016b6103c2565b005b61016b61017b366004610a3e565b6103d6565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61011560035481565b6101156101bf3660046109a9565b6104de565b61011560025481565b61011560045481565b61016b6101e4366004610afc565b61052c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061027c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a71500000000000000000000000000000000000000000000000000000000145b92915050565b604080518082019091526000808252602082015260006102d786868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105ce92505050565b90506000600682106102f857836006546102f19190610b48565b9050610361565b8160050361030e57836005546102f19190610b48565b8160040361032457836004546102f19190610b48565b8160030361033a57836003546102f19190610b48565b8160020361035057836002546102f19190610b48565b8360015461035e9190610b48565b90505b60405180604001604052808281526020016103b589898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a915061075d9050565b9052979650505050505050565b6103ca610868565b6103d460006108cf565b565b6103de610868565b806000815181106103f1576103f1610b5f565b60200260200101516001819055508060018151811061041257610412610b5f565b60200260200101516002819055508060028151811061043357610433610b5f565b60200260200101516003819055508060038151811061045457610454610b5f565b60200260200101516004819055508060048151811061047557610475610b5f565b60200260200101516005819055508060058151811061049657610496610b5f565b60200260200101516006819055507f73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df816040516104d39190610b75565b60405180910390a150565b600061052385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925086915061075d9050565b95945050505050565b610534610868565b73ffffffffffffffffffffffffffffffffffffffff81166105c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105cb816108cf565b50565b8051600090819081905b808210156107545760008583815181106105f4576105f4610b5f565b01602001516001600160f81b03191690507f800000000000000000000000000000000000000000000000000000000000000081101561063f57610638600184610bb9565b9250610741565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561067c57610638600284610bb9565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156106b957610638600384610bb9565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156106f657610638600484610bb9565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561073357610638600584610bb9565b61073e600684610bb9565b92505b508261074c81610bcc565b9350506105d8565b50909392505050565b60004283111561076f57506000610861565b600061077a856105ce565b90506000806107894287610944565b90507f000000000000000000000000000000000000000000000000000000000076a7008111156107d657507f000000000000000000000000000000000000000000000000000000000076a7005b600683106107f357806006546107ec9190610b48565b915061085c565b8260050361080957806005546107ec9190610b48565b8260040361081f57806004546107ec9190610b48565b8260030361083557806003546107ec9190610b48565b8260020361084b57806002546107ec9190610b48565b806001546108599190610b48565b91505b509150505b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b9565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008282111561095357600080fd5b600061095f8385610be5565b949350505050565b60006020828403121561097957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461086157600080fd5b600080600080606085870312156109bf57600080fd5b843567ffffffffffffffff808211156109d757600080fd5b818701915087601f8301126109eb57600080fd5b8135818111156109fa57600080fd5b886020828501011115610a0c57600080fd5b6020928301999098509187013596604001359550909350505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610a5157600080fd5b823567ffffffffffffffff80821115610a6957600080fd5b818501915085601f830112610a7d57600080fd5b813581811115610a8f57610a8f610a28565b8060051b604051601f19603f83011681018181108582111715610ab457610ab4610a28565b604052918252848201925083810185019188831115610ad257600080fd5b938501935b82851015610af057843584529385019392850192610ad7565b98975050505050505050565b600060208284031215610b0e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461086157600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761027c5761027c610b32565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015610bad57835183529284019291840191600101610b91565b50909695505050505050565b8082018082111561027c5761027c610b32565b600060018201610bde57610bde610b32565b5060010190565b8181038181111561027c5761027c610b3256
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000f5ca906f05cafa944c27c6881bed3dfd3a785b6a000000000000000000000000c4eb45d80dc1f079045e75d5d55de8ed1c1090e600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000735c0b8c6600000000000000000000000000000000000000000000000000000039ae05c63ad000000000000000000000000000000000000000000000000000001cd702e31980000000000000000000000000000000000000000000000000000002e24d16b5c000000000000000000000000000000000000000000000000000000049d482456000000000000000000000000000000000000000000000000000000007620d06f0
-----Decoded View---------------
Arg [0] : _rentPrices (uint256[]): 126839167936000,63419583970000,31709791984000,3170979198400,317097919840,31709791984
Arg [1] : delegationRegistry (address): 0xF5cA906f05cafa944c27c6881bed3DFd3a785b6A
Arg [2] : initialDelegate (address): 0xC4EB45d80DC1F079045E75D5d55de8eD1c1090E6
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 000000000000000000000000f5ca906f05cafa944c27c6881bed3dfd3a785b6a
Arg [2] : 000000000000000000000000c4eb45d80dc1f079045e75d5d55de8ed1c1090e6
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [4] : 0000000000000000000000000000000000000000000000000000735c0b8c6600
Arg [5] : 000000000000000000000000000000000000000000000000000039ae05c63ad0
Arg [6] : 00000000000000000000000000000000000000000000000000001cd702e31980
Arg [7] : 000000000000000000000000000000000000000000000000000002e24d16b5c0
Arg [8] : 00000000000000000000000000000000000000000000000000000049d4824560
Arg [9] : 00000000000000000000000000000000000000000000000000000007620d06f0
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$70.92
Net Worth in FRAX
69.566524
Token Allocations
FXS
100.00%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1.02 | 69.327 | $70.92 |
Loading...
Loading
Loading...
Loading
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.