ETH Price: $3,114.28 (+0.91%)
Gas: 3 Gwei

Contract

0xa51B83e420c5F82982Dc8B7F4514c9BeA0B290ee
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x61010060140191032022-01-16 21:55:39852 days ago1642370139IN
 Create: LinearPremiumPriceOracle
0 ETH0.20507149177.94177611

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LinearPremiumPriceOracle

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-01-16
*/

// SPDX-License-Identifier: MIT

// Sources flattened with hardhat v2.6.5 https://hardhat.org

// File contracts/ethregistrar/SafeMath.sol

pragma solidity >=0.8.4;

/**
 * @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;
    }
}


// File contracts/ethregistrar/PriceOracle.sol

pragma solidity >=0.8.4;

interface PriceOracle {
    /**
     * @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 The price of this renewal or registration, in wei.
     */
    function price(string calldata name, uint expires, uint duration) external view returns(uint);
}


// File contracts/ethregistrar/StringUtils.sol

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 (uint) {
        uint len;
        uint i = 0;
        uint 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;
    }
}


// File @openzeppelin/contracts/utils/[email protected]

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;
    }
}


// File @openzeppelin/contracts/access/[email protected]

pragma solidity ^0.8.0;

/**
 * @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() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File contracts/ethregistrar/StablePriceOracle.sol

pragma solidity >=0.8.4;




interface AggregatorInterface {
  function latestAnswer() external view returns (int256);
}


// StablePriceOracle sets a price in USD, based on an oracle.
contract StablePriceOracle is Ownable, PriceOracle {
    using SafeMath for *;
    using StringUtils for *;

    // Rent in base price units by length. Element 0 is for 1-length names, and so on.
    uint[] public rentPrices;

    // Oracle address
    AggregatorInterface public immutable usdOracle;

    event OracleChanged(address oracle);

    event RentPriceChanged(uint[] prices);

    bytes4 constant private INTERFACE_META_ID = bytes4(keccak256("supportsInterface(bytes4)"));
    bytes4 constant private ORACLE_ID = bytes4(keccak256("price(string,uint256,uint256)") ^ keccak256("premium(string,uint256,uint256)"));

    constructor(AggregatorInterface _usdOracle, uint[] memory _rentPrices) public {
        usdOracle = _usdOracle;
        setPrices(_rentPrices);
    }

    function price(string calldata name, uint expires, uint duration) external view override returns(uint) {
        uint len = name.strlen();
        if(len > rentPrices.length) {
            len = rentPrices.length;
        }
        require(len > 0);
        
        uint basePrice = rentPrices[len - 1].mul(duration);
        basePrice = basePrice.add(_premium(name, expires, duration));

        return attoUSDToWei(basePrice);
    }

    /**
     * @dev Sets rent prices.
     * @param _rentPrices The price array. Each element corresponds to a specific
     *                    name length; names longer than the length of the array
     *                    default to the price of the last element. Values are
     *                    in base price units, equal to one attodollar (1e-18
     *                    dollar) each.
     */
    function setPrices(uint[] memory _rentPrices) public onlyOwner {
        rentPrices = _rentPrices;
        emit RentPriceChanged(_rentPrices);
    }

    /**
     * @dev Returns the pricing premium in wei.
     */
    function premium(string calldata name, uint expires, uint duration) external view returns(uint) {
        return attoUSDToWei(_premium(name, expires, duration));
    }

    /**
     * @dev Returns the pricing premium in internal base units.
     */
    function _premium(string memory name, uint expires, uint duration) virtual internal view returns(uint) {
        return 0;
    }

    function attoUSDToWei(uint amount) internal view returns(uint) {
        uint ethPrice = uint(usdOracle.latestAnswer());
        return amount.mul(1e8).div(ethPrice);
    }

    function weiToAttoUSD(uint amount) internal view returns(uint) {
        uint ethPrice = uint(usdOracle.latestAnswer());
        return amount.mul(ethPrice).div(1e8);
    }

    function supportsInterface(bytes4 interfaceID) public view virtual returns (bool) {
        return interfaceID == INTERFACE_META_ID || interfaceID == ORACLE_ID;
    }
}


// File contracts/ethregistrar/LinearPremiumPriceOracle.sol

pragma solidity >=0.8.4;


contract LinearPremiumPriceOracle is StablePriceOracle {
    using SafeMath for *;

    uint immutable GRACE_PERIOD = 90 days;

    uint public immutable initialPremium;
    uint public immutable premiumDecreaseRate;

    bytes4 constant private TIME_UNTIL_PREMIUM_ID = bytes4(keccak256("timeUntilPremium(uint,uint"));

    constructor(AggregatorInterface _usdOracle, uint[] memory _rentPrices, uint _initialPremium, uint _premiumDecreaseRate) public
        StablePriceOracle(_usdOracle, _rentPrices)
    {
        initialPremium = _initialPremium;
        premiumDecreaseRate = _premiumDecreaseRate;
    }

    function _premium(string memory name, uint expires, uint /*duration*/) override internal view returns(uint) {
        expires = expires.add(GRACE_PERIOD);
        if(expires > block.timestamp) {
            // No premium for renewals
            return 0;
        }

        // Calculate the discount off the maximum premium
        uint discount = premiumDecreaseRate.mul(block.timestamp.sub(expires));

        // If we've run out the premium period, return 0.
        if(discount > initialPremium) {
            return 0;
        }
        
        return initialPremium - discount;
    }

    /**
     * @dev Returns the timestamp at which a name with the specified expiry date will have
     *      the specified re-registration price premium.
     * @param expires The timestamp at which the name expires.
     * @param amount The amount, in wei, the caller is willing to pay
     * @return The timestamp at which the premium for this domain will be `amount`.
     */
    function timeUntilPremium(uint expires, uint amount) external view returns(uint) {
        amount = weiToAttoUSD(amount);
        require(amount <= initialPremium);

        expires = expires.add(GRACE_PERIOD);

        uint discount = initialPremium.sub(amount);
        uint duration = discount.div(premiumDecreaseRate);
        return expires.add(duration);
    }

    function supportsInterface(bytes4 interfaceID) public view virtual override returns (bool) {
        return (interfaceID == TIME_UNTIL_PREMIUM_ID) || super.supportsInterface(interfaceID);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract AggregatorInterface","name":"_usdOracle","type":"address"},{"internalType":"uint256[]","name":"_rentPrices","type":"uint256[]"},{"internalType":"uint256","name":"_initialPremium","type":"uint256"},{"internalType":"uint256","name":"_premiumDecreaseRate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oracle","type":"address"}],"name":"OracleChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"RentPriceChanged","type":"event"},{"inputs":[],"name":"initialPremium","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"name":"premiumDecreaseRate","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":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rentPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"timeUntilPremium","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdOracle","outputs":[{"internalType":"contract AggregatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6101006040526276a70060a0523480156200001957600080fd5b5060405162001555380380620015558339810160408190526200003c91620001f3565b8383620000493362000075565b6001600160a01b0382166080526200006181620000c5565b505060c09190915260e05250620003349050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620001245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b80516200013990600190602084019062000176565b507f73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df816040516200016b9190620002ee565b60405180910390a150565b828054828255906000526020600020908101928215620001b4579160200282015b82811115620001b457825182559160200191906001019062000197565b50620001c2929150620001c6565b5090565b5b80821115620001c25760008155600101620001c7565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200020a57600080fd5b84516001600160a01b03811681146200022257600080fd5b602086810151919550906001600160401b03808211156200024257600080fd5b818801915088601f8301126200025757600080fd5b8151818111156200026c576200026c620001dd565b8060051b604051601f19603f83011681018181108582111715620002945762000294620001dd565b60405291825284820192508381018501918b831115620002b357600080fd5b938501935b82851015620002d357845184529385019392850192620002b8565b60408b01516060909b0151999c909b50975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000328578351835292840192918401916001016200030a565b50909695505050505050565b60805160a05160c05160e0516111a8620003ad6000396000818161020a015281816106100152610a9701526000818161015701528181610583015281816105e101528181610ac00152610af60152600081816105b40152610a500152600081816101d001528181610b3b0152610c5c01526111a86000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063ed6c33ed1161005b578063ed6c33ed146101f2578063f05af2b714610205578063f2fde38b1461022c57600080fd5b80638da5cb5b14610179578063a34e3596146101b8578063c8a4271f146101cb57600080fd5b8063715018a6116100b2578063715018a61461013557806379cf92d31461013f5780637d3fb8b71461015257600080fd5b806301ffc9a7146100d957806306d5d0b61461010157806350e9a71514610122575b600080fd5b6100ec6100e7366004610d9a565b61023f565b60405190151581526020015b60405180910390f35b61011461010f366004610ddc565b61029b565b6040519081526020016100f8565b610114610130366004610df5565b6102bc565b61013d6103bd565b005b61013d61014d366004610ea3565b61044f565b6101147f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b6101146101c6366004610df5565b61051e565b6101937f000000000000000000000000000000000000000000000000000000000000000081565b610114610200366004610f7f565b610574565b6101147f000000000000000000000000000000000000000000000000000000000000000081565b61013d61023a366004610fa1565b610640565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fa377dd96000000000000000000000000000000000000000000000000000000001480610295575061029582610770565b92915050565b600181815481106102ab57600080fd5b600091825260209091200154905081565b6000806102fe86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061080892505050565b60015490915081111561031057506001545b6000811161031d57600080fd5b600061035884600161032f8186611006565b8154811061033f5761033f61101d565b9060005260206000200154610a0f90919063ffffffff16565b90506103a76103a088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250899150610a489050565b8290610b1a565b90506103b281610b36565b979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61044d6000610be2565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043a565b80516104e3906001906020840190610d3a565b507f73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df81604051610513919061104c565b60405180910390a150565b600061056b61056686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150610a489050565b610b36565b95945050505050565b600061057f82610c57565b91507f00000000000000000000000000000000000000000000000000000000000000008211156105ae57600080fd5b6105d8837f0000000000000000000000000000000000000000000000000000000000000000610b1a565b925060006106067f000000000000000000000000000000000000000000000000000000000000000084610cfd565b90506000610634827f0000000000000000000000000000000000000000000000000000000000000000610d20565b905061056b8582610b1a565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043a565b73ffffffffffffffffffffffffffffffffffffffff8116610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043a565b61076d81610be2565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061029557507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3a79283000000000000000000000000000000000000000000000000000000001492915050565b8051600090819081905b80821015610a0657600085838151811061082e5761082e61101d565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f80000000000000000000000000000000000000000000000000000000000000008110156108915761088a600184611090565b92506109f3565b7fe0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156108e65761088a600284611090565b7ff0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561093b5761088a600384611090565b7ff8000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156109905761088a600484611090565b7ffc000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156109e55761088a600584611090565b6109f0600684611090565b92505b50826109fe816110a8565b935050610812565b50909392505050565b600082610a1e57506000610295565b6000610a2a83856110e1565b905082610a37858361111e565b14610a4157600080fd5b9392505050565b6000610a74837f0000000000000000000000000000000000000000000000000000000000000000610b1a565b925042831115610a8657506000610a41565b6000610abc610a954286610cfd565b7f000000000000000000000000000000000000000000000000000000000000000090610a0f565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610af0576000915050610a41565b61056b817f0000000000000000000000000000000000000000000000000000000000000000611006565b600080610b278385611090565b905083811015610a4157600080fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190611159565b9050610a4181610bdc856305f5e100610a0f565b90610d20565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611159565b9050610a416305f5e100610bdc8584610a0f565b600082821115610d0c57600080fd5b6000610d188385611006565b949350505050565b6000808211610d2e57600080fd5b6000610d18838561111e565b828054828255906000526020600020908101928215610d75579160200282015b82811115610d75578251825591602001919060010190610d5a565b50610d81929150610d85565b5090565b5b80821115610d815760008155600101610d86565b600060208284031215610dac57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a4157600080fd5b600060208284031215610dee57600080fd5b5035919050565b60008060008060608587031215610e0b57600080fd5b843567ffffffffffffffff80821115610e2357600080fd5b818701915087601f830112610e3757600080fd5b813581811115610e4657600080fd5b886020828501011115610e5857600080fd5b6020928301999098509187013596604001359550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215610eb657600080fd5b823567ffffffffffffffff80821115610ece57600080fd5b818501915085601f830112610ee257600080fd5b813581811115610ef457610ef4610e74565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f3757610f37610e74565b604052918252848201925083810185019188831115610f5557600080fd5b938501935b82851015610f7357843584529385019392850192610f5a565b98975050505050505050565b60008060408385031215610f9257600080fd5b50508035926020909101359150565b600060208284031215610fb357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a4157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561101857611018610fd7565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561108457835183529284019291840191600101611068565b50909695505050505050565b600082198211156110a3576110a3610fd7565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110da576110da610fd7565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561111957611119610fd7565b500290565b600082611154577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561116b57600080fd5b505191905056fea264697066735822122046b08e9407f062bc7740e2fcea3add5ab5cd868e73d8a269de4c24facf4cc06364736f6c634300080b00330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000000092dada8ef62a5300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001275209157690000000000000000000000000000000000000000000000000000049d482455da00000000000000000000000000000000000000000000000000000024ea4122af

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063ed6c33ed1161005b578063ed6c33ed146101f2578063f05af2b714610205578063f2fde38b1461022c57600080fd5b80638da5cb5b14610179578063a34e3596146101b8578063c8a4271f146101cb57600080fd5b8063715018a6116100b2578063715018a61461013557806379cf92d31461013f5780637d3fb8b71461015257600080fd5b806301ffc9a7146100d957806306d5d0b61461010157806350e9a71514610122575b600080fd5b6100ec6100e7366004610d9a565b61023f565b60405190151581526020015b60405180910390f35b61011461010f366004610ddc565b61029b565b6040519081526020016100f8565b610114610130366004610df5565b6102bc565b61013d6103bd565b005b61013d61014d366004610ea3565b61044f565b6101147f00000000000000000000000000000000000000000000152d02c7e14af680000081565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b6101146101c6366004610df5565b61051e565b6101937f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841981565b610114610200366004610f7f565b610574565b6101147f0000000000000000000000000000000000000000000000000092dada8ef62a5381565b61013d61023a366004610fa1565b610640565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fa377dd96000000000000000000000000000000000000000000000000000000001480610295575061029582610770565b92915050565b600181815481106102ab57600080fd5b600091825260209091200154905081565b6000806102fe86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061080892505050565b60015490915081111561031057506001545b6000811161031d57600080fd5b600061035884600161032f8186611006565b8154811061033f5761033f61101d565b9060005260206000200154610a0f90919063ffffffff16565b90506103a76103a088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250899150610a489050565b8290610b1a565b90506103b281610b36565b979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61044d6000610be2565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043a565b80516104e3906001906020840190610d3a565b507f73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df81604051610513919061104c565b60405180910390a150565b600061056b61056686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150610a489050565b610b36565b95945050505050565b600061057f82610c57565b91507f00000000000000000000000000000000000000000000152d02c7e14af68000008211156105ae57600080fd5b6105d8837f000000000000000000000000000000000000000000000000000000000076a700610b1a565b925060006106067f00000000000000000000000000000000000000000000152d02c7e14af680000084610cfd565b90506000610634827f0000000000000000000000000000000000000000000000000092dada8ef62a53610d20565b905061056b8582610b1a565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043a565b73ffffffffffffffffffffffffffffffffffffffff8116610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043a565b61076d81610be2565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061029557507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3a79283000000000000000000000000000000000000000000000000000000001492915050565b8051600090819081905b80821015610a0657600085838151811061082e5761082e61101d565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f80000000000000000000000000000000000000000000000000000000000000008110156108915761088a600184611090565b92506109f3565b7fe0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156108e65761088a600284611090565b7ff0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561093b5761088a600384611090565b7ff8000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156109905761088a600484611090565b7ffc000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156109e55761088a600584611090565b6109f0600684611090565b92505b50826109fe816110a8565b935050610812565b50909392505050565b600082610a1e57506000610295565b6000610a2a83856110e1565b905082610a37858361111e565b14610a4157600080fd5b9392505050565b6000610a74837f000000000000000000000000000000000000000000000000000000000076a700610b1a565b925042831115610a8657506000610a41565b6000610abc610a954286610cfd565b7f0000000000000000000000000000000000000000000000000092dada8ef62a5390610a0f565b90507f00000000000000000000000000000000000000000000152d02c7e14af6800000811115610af0576000915050610a41565b61056b817f00000000000000000000000000000000000000000000152d02c7e14af6800000611006565b600080610b278385611090565b905083811015610a4157600080fd5b6000807f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841973ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190611159565b9050610a4181610bdc856305f5e100610a0f565b90610d20565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000807f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841973ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611159565b9050610a416305f5e100610bdc8584610a0f565b600082821115610d0c57600080fd5b6000610d188385611006565b949350505050565b6000808211610d2e57600080fd5b6000610d18838561111e565b828054828255906000526020600020908101928215610d75579160200282015b82811115610d75578251825591602001919060010190610d5a565b50610d81929150610d85565b5090565b5b80821115610d815760008155600101610d86565b600060208284031215610dac57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a4157600080fd5b600060208284031215610dee57600080fd5b5035919050565b60008060008060608587031215610e0b57600080fd5b843567ffffffffffffffff80821115610e2357600080fd5b818701915087601f830112610e3757600080fd5b813581811115610e4657600080fd5b886020828501011115610e5857600080fd5b6020928301999098509187013596604001359550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215610eb657600080fd5b823567ffffffffffffffff80821115610ece57600080fd5b818501915085601f830112610ee257600080fd5b813581811115610ef457610ef4610e74565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f3757610f37610e74565b604052918252848201925083810185019188831115610f5557600080fd5b938501935b82851015610f7357843584529385019392850192610f5a565b98975050505050505050565b60008060408385031215610f9257600080fd5b50508035926020909101359150565b600060208284031215610fb357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a4157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561101857611018610fd7565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561108457835183529284019291840191600101611068565b50909695505050505050565b600082198211156110a3576110a3610fd7565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110da576110da610fd7565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561111957611119610fd7565b500290565b600082611154577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561116b57600080fd5b505191905056fea264697066735822122046b08e9407f062bc7740e2fcea3add5ab5cd868e73d8a269de4c24facf4cc06364736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000000092dada8ef62a5300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001275209157690000000000000000000000000000000000000000000000000000049d482455da00000000000000000000000000000000000000000000000000000024ea4122af

-----Decoded View---------------
Arg [0] : _usdOracle (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [1] : _rentPrices (uint256[]): 0,0,20294266869609,5073566717402,158548959919
Arg [2] : _initialPremium (uint256): 100000000000000000000000
Arg [3] : _premiumDecreaseRate (uint256): 41335978835978835

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000152d02c7e14af6800000
Arg [3] : 0000000000000000000000000000000000000000000000000092dada8ef62a53
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000127520915769
Arg [8] : 0000000000000000000000000000000000000000000000000000049d482455da
Arg [9] : 00000000000000000000000000000000000000000000000000000024ea4122af


Deployed Bytecode Sourcemap

9889:2214:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11905:195;;;;;;:::i;:::-;;:::i;:::-;;;516:14:1;;509:22;491:41;;479:2;464:18;11905:195:0;;;;;;;;7161:24;;;;;;:::i;:::-;;:::i;:::-;;;874:25:1;;;862:2;847:18;7161:24:0;728:177:1;7761:446:0;;;;;;:::i;:::-;;:::i;6073:94::-;;;:::i;:::-;;8629:151;;;;;;:::i;:::-;;:::i;10026:36::-;;;;;5422:87;5468:7;5495:6;;;5422:87;;;3193:42:1;3181:55;;;3163:74;;3151:2;3136:18;5422:87:0;3017:226:1;8855:169:0;;;;;;:::i;:::-;;:::i;7217:46::-;;;;;11522:375;;;;;;:::i;:::-;;:::i;10069:41::-;;;;;6322:192;;;;;;:::i;:::-;;:::i;11905:195::-;11990:4;12015:36;;;;;;12014:78;;;12056:36;12080:11;12056:23;:36::i;:::-;12007:85;11905:195;-1:-1:-1;;11905:195:0:o;7161:24::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7161:24:0;:::o;7761:446::-;7858:4;7875:8;7886:13;:4;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7886:11:0;;-1:-1:-1;;;7886:13:0:i;:::-;7919:10;:17;7875:24;;-1:-1:-1;7913:23:0;;7910:78;;;-1:-1:-1;7959:10:0;:17;7910:78;8012:1;8006:3;:7;7998:16;;;;;;8035:14;8052:33;8076:8;8052:10;8063:7;8052:10;8063:3;:7;:::i;:::-;8052:19;;;;;;;;:::i;:::-;;;;;;;;;:23;;:33;;;;:::i;:::-;8035:50;;8108:48;8122:33;8131:4;;8122:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8137:7:0;;-1:-1:-1;8146:8:0;;-1:-1:-1;8122:8:0;;-1:-1:-1;8122:33:0:i;:::-;8108:9;;:13;:48::i;:::-;8096:60;;8176:23;8189:9;8176:12;:23::i;:::-;8169:30;7761:446;-1:-1:-1;;;;;;;7761:446:0:o;6073:94::-;5468:7;5495:6;5642:23;5495:6;4288:10;5642:23;5634:68;;;;;;;4783:2:1;5634:68:0;;;4765:21:1;;;4802:18;;;4795:30;4861:34;4841:18;;;4834:62;4913:18;;5634:68:0;;;;;;;;;6138:21:::1;6156:1;6138:9;:21::i;:::-;6073:94::o:0;8629:151::-;5468:7;5495:6;5642:23;5495:6;4288:10;5642:23;5634:68;;;;;;;4783:2:1;5634:68:0;;;4765:21:1;;;4802:18;;;4795:30;4861:34;4841:18;;;4834:62;4913:18;;5634:68:0;4581:356:1;5634:68:0;8703:24;;::::1;::::0;:10:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;;8743:29;8760:11;8743:29;;;;;;:::i;:::-;;;;;;;;8629:151:::0;:::o;8855:169::-;8945:4;8969:47;8982:33;8991:4;;8982:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8997:7:0;;-1:-1:-1;9006:8:0;;-1:-1:-1;8982:8:0;;-1:-1:-1;8982:33:0:i;:::-;8969:12;:47::i;:::-;8962:54;8855:169;-1:-1:-1;;;;;8855:169:0:o;11522:375::-;11597:4;11623:20;11636:6;11623:12;:20::i;:::-;11614:29;;11672:14;11662:6;:24;;11654:33;;;;;;11710:25;:7;11722:12;11710:11;:25::i;:::-;11700:35;-1:-1:-1;11748:13:0;11764:26;:14;11783:6;11764:18;:26::i;:::-;11748:42;-1:-1:-1;11801:13:0;11817:33;11748:42;11830:19;11817:12;:33::i;:::-;11801:49;-1:-1:-1;11868:21:0;:7;11801:49;11868:11;:21::i;6322:192::-;5468:7;5495:6;5642:23;5495:6;4288:10;5642:23;5634:68;;;;;;;4783:2:1;5634:68:0;;;4765:21:1;;;4802:18;;;4795:30;4861:34;4841:18;;;4834:62;4913:18;;5634:68:0;4581:356:1;5634:68:0;6411:22:::1;::::0;::::1;6403:73;;;::::0;::::1;::::0;;5781:2:1;6403:73:0::1;::::0;::::1;5763:21:1::0;5820:2;5800:18;;;5793:30;5859:34;5839:18;;;5832:62;5930:8;5910:18;;;5903:36;5956:19;;6403:73:0::1;5579:402:1::0;6403:73:0::1;6487:19;6497:8;6487:9;:19::i;:::-;6322:192:::0;:::o;9619:168::-;9695:4;9719:32;;;;;;:60;;-1:-1:-1;9755:24:0;;;;;9712:67;9619:168;-1:-1:-1;;9619:168:0:o;2943:629::-;3074:15;;2999:4;;;;;;3100:444;3117:10;3113:1;:14;3100:444;;;3151:8;3168:1;3171;3162:11;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;3191:8:0;;;3188:345;;;3220:6;3225:1;3220:6;;:::i;:::-;;;3188:345;;;3252:8;;;;;3248:285;;;3281:6;3286:1;3281:6;;:::i;3248:285::-;3313:8;;;;;3309:224;;;3342:6;3347:1;3342:6;;:::i;3309:224::-;3374:8;;;;;3370:163;;;3403:6;3408:1;3403:6;;:::i;3370:163::-;3435:8;;;;;3431:102;;;3464:6;3469:1;3464:6;;:::i;3431:102::-;3511:6;3516:1;3511:6;;:::i;:::-;;;3431:102;-1:-1:-1;3129:5:0;;;;:::i;:::-;;;;3100:444;;;-1:-1:-1;3561:3:0;;2943:629;-1:-1:-1;;;2943:629:0:o;386:433::-;444:7;688:6;684:47;;-1:-1:-1;718:1:0;711:8;;684:47;743:9;755:5;759:1;755;:5;:::i;:::-;743:17;-1:-1:-1;788:1:0;779:5;783:1;743:17;779:5;:::i;:::-;:10;771:19;;;;;;810:1;386:433;-1:-1:-1;;;386:433:0:o;10519:607::-;10621:4;10648:25;:7;10660:12;10648:11;:25::i;:::-;10638:35;;10697:15;10687:7;:25;10684:105;;;-1:-1:-1;10776:1:0;10769:8;;10684:105;10860:13;10876:53;10900:28;:15;10920:7;10900:19;:28::i;:::-;10876:19;;:23;:53::i;:::-;10860:69;;11015:14;11004:8;:25;11001:65;;;11053:1;11046:8;;;;;11001:65;11093:25;11110:8;11093:14;:25;:::i;1627:150::-;1685:7;;1717:5;1721:1;1717;:5;:::i;:::-;1705:17;;1746:1;1741;:6;;1733:15;;;;;9253:175;9310:4;9327:13;9348:9;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9327:46;-1:-1:-1;9391:29:0;9327:46;9391:15;:6;9402:3;9391:10;:15::i;:::-;:19;;:29::i;6522:173::-;6578:16;6597:6;;;6614:17;;;;;;;;;;6647:40;;6597:6;;;;;;;6647:40;;6578:16;6647:40;6567:128;6522:173;:::o;9436:175::-;9493:4;9510:13;9531:9;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9510:46;-1:-1:-1;9574:29:0;9599:3;9574:20;:6;9510:46;9574:10;:20::i;1391:150::-;1449:7;1482:1;1477;:6;;1469:15;;;;;;1495:9;1507:5;1511:1;1507;:5;:::i;:::-;1495:17;1391:150;-1:-1:-1;;;;1391:150:0:o;952:303::-;1010:7;1109:1;1105;:5;1097:14;;;;;;1122:9;1134:5;1138:1;1134;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:332:1;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:180;602:6;655:2;643:9;634:7;630:23;626:32;623:52;;;671:1;668;661:12;623:52;-1:-1:-1;694:23:1;;543:180;-1:-1:-1;543:180:1:o;910:734::-;999:6;1007;1015;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:52;;;1092:1;1089;1082:12;1044:52;1132:9;1119:23;1161:18;1202:2;1194:6;1191:14;1188:34;;;1218:1;1215;1208:12;1188:34;1256:6;1245:9;1241:22;1231:32;;1301:7;1294:4;1290:2;1286:13;1282:27;1272:55;;1323:1;1320;1313:12;1272:55;1363:2;1350:16;1389:2;1381:6;1378:14;1375:34;;;1405:1;1402;1395:12;1375:34;1452:7;1445:4;1436:6;1432:2;1428:15;1424:26;1421:39;1418:59;;;1473:1;1470;1463:12;1418:59;1504:4;1496:13;;;;1528:6;;-1:-1:-1;1566:20:1;;;1553:34;;1634:2;1619:18;1606:32;;-1:-1:-1;910:734:1;;-1:-1:-1;;;;910:734:1:o;1649:184::-;1701:77;1698:1;1691:88;1798:4;1795:1;1788:15;1822:4;1819:1;1812:15;1838:1174;1922:6;1953:2;1996;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;2052:9;2039:23;2081:18;2122:2;2114:6;2111:14;2108:34;;;2138:1;2135;2128:12;2108:34;2176:6;2165:9;2161:22;2151:32;;2221:7;2214:4;2210:2;2206:13;2202:27;2192:55;;2243:1;2240;2233:12;2192:55;2279:2;2266:16;2301:2;2297;2294:10;2291:36;;;2307:18;;:::i;:::-;2353:2;2350:1;2346:10;2385:2;2379:9;2444:66;2439:2;2435;2431:11;2427:84;2419:6;2415:97;2562:6;2550:10;2547:22;2542:2;2530:10;2527:18;2524:46;2521:72;;;2573:18;;:::i;:::-;2609:2;2602:22;2659:18;;;2693:15;;;;-1:-1:-1;2735:11:1;;;2731:20;;;2763:19;;;2760:39;;;2795:1;2792;2785:12;2760:39;2819:11;;;;2839:142;2855:6;2850:3;2847:15;2839:142;;;2921:17;;2909:30;;2872:12;;;;2959;;;;2839:142;;;3000:6;1838:1174;-1:-1:-1;;;;;;;;1838:1174:1:o;3506:248::-;3574:6;3582;3635:2;3623:9;3614:7;3610:23;3606:32;3603:52;;;3651:1;3648;3641:12;3603:52;-1:-1:-1;;3674:23:1;;;3744:2;3729:18;;;3716:32;;-1:-1:-1;3506:248:1:o;3759:309::-;3818:6;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3926:9;3913:23;3976:42;3969:5;3965:54;3958:5;3955:65;3945:93;;4034:1;4031;4024:12;4073:184;4125:77;4122:1;4115:88;4222:4;4219:1;4212:15;4246:4;4243:1;4236:15;4262:125;4302:4;4330:1;4327;4324:8;4321:34;;;4335:18;;:::i;:::-;-1:-1:-1;4372:9:1;;4262:125::o;4392:184::-;4444:77;4441:1;4434:88;4541:4;4538:1;4531:15;4565:4;4562:1;4555:15;4942:632;5113:2;5165:21;;;5235:13;;5138:18;;;5257:22;;;5084:4;;5113:2;5336:15;;;;5310:2;5295:18;;;5084:4;5379:169;5393:6;5390:1;5387:13;5379:169;;;5454:13;;5442:26;;5523:15;;;;5488:12;;;;5415:1;5408:9;5379:169;;;-1:-1:-1;5565:3:1;;4942:632;-1:-1:-1;;;;;;4942:632:1:o;5986:128::-;6026:3;6057:1;6053:6;6050:1;6047:13;6044:39;;;6063:18;;:::i;:::-;-1:-1:-1;6099:9:1;;5986:128::o;6119:195::-;6158:3;6189:66;6182:5;6179:77;6176:103;;;6259:18;;:::i;:::-;-1:-1:-1;6306:1:1;6295:13;;6119:195::o;6319:228::-;6359:7;6485:1;6417:66;6413:74;6410:1;6407:81;6402:1;6395:9;6388:17;6384:105;6381:131;;;6492:18;;:::i;:::-;-1:-1:-1;6532:9:1;;6319:228::o;6552:274::-;6592:1;6618;6608:189;;6653:77;6650:1;6643:88;6754:4;6751:1;6744:15;6782:4;6779:1;6772:15;6608:189;-1:-1:-1;6811:9:1;;6552:274::o;6831:183::-;6900:6;6953:2;6941:9;6932:7;6928:23;6924:32;6921:52;;;6969:1;6966;6959:12;6921:52;-1:-1:-1;6992:16:1;;6831:183;-1:-1:-1;6831:183:1:o

Swarm Source

ipfs://46b08e9407f062bc7740e2fcea3add5ab5cd868e73d8a269de4c24facf4cc063

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.