Skip to content

Latest commit

 

History

History
177 lines (122 loc) · 7.48 KB

eip-template.md

File metadata and controls

177 lines (122 loc) · 7.48 KB
title description author discussions-to status type category created requires
Isonomic Degradable NFTs (IDNFT)
<Description is one full (short) sentence>
<a comma separated list of the author's or authors' name + GitHub username (in parenthesis), or name and email (in angle brackets). Example, FirstName LastName (@GitHubUsername), FirstName LastName <foo@bar.com>, FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)>
<URL>
Draft
<Standards Track, Meta, or Informational>
<Core, Networking, Interface, or ERC>
<date created on, in ISO 8601 (yyyy-mm-dd) format>
<EIP number(s)>

Abstract

Motivation

Specification

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.

interface IValocracy {
    /**
     * @dev Valor ID requested is non-existent.
     */
    error NonExistentValor(uint256 valorId);

    /**
     * @dev Emitted when an account is not initiated in the given address.
     */
    error NonExistentAccount(address account);

    /**
     * @dev Returns the vacancy period.
     */
    function vacancy() external view virtual returns (uint256);

    /**
     * @dev Returns the valor ID linked to the given token ID.
     *
     * Requirements:
     *
     * - `valorId` must exist.
     */
    function valorIdOf(uint256 tokenId) external view virtual returns (uint256);

    /**
     * @dev Returns the rarity of the given valor ID.
     */
    function rarityOf(uint256 valorId) external view virtual returns (uint256);

    /**
     * @dev Returns the metadata of the given valor ID.
     */
    function metadataOf(
        uint256 valorId
    ) external view virtual returns (string memory);

    /**
     * @dev Expiration of the account. The governance power
     * decays after the vacancy period has passed.
     *
     * IMPORTANT: After loosing the governance power, what is lost cannot be
     * recovered. The account will have to mint new NFTs to start over. Hence,
     * the importance of not letting the governance power expire.
     */
    function expiryOf(address account) external view virtual returns (uint256);

    /**
     * @dev Returns the level of governance power of a given account.
     */
    function levelOf(address account) external view virtual returns (uint256);
}

Rationale

TBD

Backwards Compatibility

No backward compatibility issues found.

Test Cases

Reference Implementation

Security Considerations

Needs discussion.

Copyright

Copyright and related rights waived via CC0.