FRAX Price: $1.02 (+5.20%)

Contract

0x2234a7c690AF5de948B3a1CcbEa43705E4583D2d

Overview

FRAX Balance | FXTL Balance

0 FRAX | 21,068 FXTL

FRAX Value

$0.00

Token Holdings

More Info

Private Name Tags

Transaction Hash
Block
From
To
Transfer Ownersh...85189912024-08-16 22:51:33526 days ago1723848693IN
0x2234a7c6...5E4583D2d
0 FRAX0.000000080.00000025
Set Prices81283512024-08-07 21:50:13535 days ago1723067413IN
0x2234a7c6...5E4583D2d
0 FRAX0.000000420.00010025

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FNSPriceOracle

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 1300 runs

Other Settings:
paris EvmVersion
// 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);
    }
}

File 2 of 7 : IPriceOracle.sol
//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;
    }
}

Settings
{
  "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

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"}]

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.