Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update EIP-5521: Add more descriptions #5563

Merged
merged 32 commits into from
Sep 1, 2022
Merged
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
59bbdb4
Create eip-referable-NFT.md
OniReimu Aug 22, 2022
f6253d1
Update eip-***.md
OniReimu Aug 22, 2022
4cb5d13
Update eip-referableNFT.md
OniReimu Aug 22, 2022
c7bb8b8
update eip name
OniReimu Aug 22, 2022
ce5750a
Update eip-0000.md
OniReimu Aug 22, 2022
26536e7
Update eip-0000.md
OniReimu Aug 22, 2022
9228835
Update eip-0000.md
OniReimu Aug 22, 2022
4bfe81e
Update eip-0000.md
OniReimu Aug 22, 2022
c3060a8
Update eip-0000.md
OniReimu Aug 22, 2022
38e3c28
Update eip-0000.md
OniReimu Aug 22, 2022
e9c4731
Update eip number
OniReimu Aug 22, 2022
bf68206
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
e7275a2
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
e33b053
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
9aa7f3d
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
44fb0b8
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
e34fe37
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
32baeb1
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
b81b3ea
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
a6ee02f
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
adb67d3
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
5a1df32
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
478c0fb
Update EIPS/eip-5521.md
OniReimu Aug 24, 2022
bca965b
Merge branch 'master' into master
OniReimu Aug 24, 2022
26435d5
Update eip-5521.md
OniReimu Aug 24, 2022
726a11a
Update eip-5521.md
OniReimu Aug 31, 2022
5541afe
Update eip-5521.md
OniReimu Aug 31, 2022
9d1846d
Update eip-5521.md
OniReimu Sep 1, 2022
a2ca608
Merge branch 'master' into master
OniReimu Sep 1, 2022
f648722
Update
OniReimu Sep 1, 2022
5fd1b53
Merge branch 'master' of https://github.com/OniReimu/EIPs
OniReimu Sep 1, 2022
eb9ebc3
Update .gitignore
OniReimu Sep 1, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 4 additions & 14 deletions EIPS/eip-5521.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
eip: 5521
title: Referable NFT
description: An EIP-721 extension to construct reference relationships among NFTs
author: Saber Yu (@OniReimu), Qin Wang <[email protected]>, Shange Fu <[email protected]>, Shiping Chen <shiping.chen@data61.csiro.au>, Sherry Xu <[email protected]>, Jiangshan Yu <[email protected]>
author: Saber Yu (@OniReimu), Qin Wang <[email protected]>, Shange Fu <[email protected]>, Shiping Chen <shiping.chen@data61.csiso.au>, Sherry Xu <[email protected]>, Jiangshan Yu <[email protected]>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this change intentional?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

csiso is a typo.

discussions-to: https://ethereum-magicians.org/t/eip-x-erc-721-referable-nft/10310
status: Draft
type: Standards Track
category: ERC
created: 2022-08-10
requires: 165, 721
requires: 165, 721, 5006
---

## Abstract
Expand All @@ -22,7 +22,6 @@ By adding the `referring` indicator, users can mint new NFTs (e.g., C, D, E) by
## Specification
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.

`Relationship`: a structure that contains `referring`, `referred`, `createdTimestamp`, and other customized attributes such as `mapping (uint256 => address) privityOfAgreement` recording the ownerships of referred NFTs at the time the rNFTs were being created.
`referring`: an out-degree indicator, used to show the users this NFT refers to;
`referred`: an in-degree indicator, used to show the users who have refereed this NFT;
`createdTimestamp`: a time-based indicator, used to compare the timestamp of mint.
Expand All @@ -41,7 +40,7 @@ This standard is intended to establish the referable DAG for queries on cross-re

*Incentive Compatibility*: This standard clarifies the referable relationship across different NFTs, helping to integrate multiple up-layer incentive models for both original NFT owners and new creators.

*Easy Integration*: This standard makes it easier for the existing token standards or third-party protocols. For instance, the rNFT can be collaborating with the Top-down composible NFT (cf. [EIP-998](./eip-998.md) to build a finer-grained reference relationship, where the `Relationship` structure and the interface `IERC_rNFT` can be seamlessly stored and updated when invoking the `mint` function). Another example is that the rNFT can be applied to rentable scenarios (cf. [EIP-5006](./eip-5006.md) to build a hierarchical rental market, where multiple users can rent the same NFT during the same time or one user can rent multiple NFTs during the same duration).
*Easy Integration*: This standard makes it easier for the existing token standards or third-party protocols. For instance, the referable NFT can be applied to rentable scenarios (cf. [EIP-5006](./eip-5006.md) to build a hierarchical rental market, where multiple users can rent the same NFT during the same time or one user can rent multiple NFTs during the same duration).

## Backwards Compatibility
This standard can be fully [EIP-721](./eip-721.md) compatible by adding an extension function set.
Expand Down Expand Up @@ -107,11 +106,6 @@ contract ERC_rNFT is ERC721, IERC_rNFT {
uint256[] referring; // referring list
uint256[] referred; // referred list
uint256 createdTimestamp; // unix timestamp when the rNFT is being created

// Customized attributes
// The distribution of profits complies to the aggreement when the NFT was being created regardless of the change of ownership unless specified in the agreement
// <token ID => token owner address>
// mapping (uint256 => address) privityOfAgreement
}

mapping (uint256 => Relationship) internal _relationship;
Expand Down Expand Up @@ -185,11 +179,7 @@ contract ERC_rNFT is ERC721, IERC_rNFT {
```

## Security Considerations
The `createdTimestamp` only covers the block-level timestamp (based on block headers), which does not support fine-grained comparisons such as transaction-level.

The change of ownership has nothing to do with the reference relationship. Normally, the distribution of profits complies to the aggreement when the NFT was being created regardless of the change of ownership unless specified in the agreement.

In the context of collaborating with [EIP-998](./eip-998.md), referring a token will not refer its descendants by default. In the case that only a specific child token gets referred, it means the privity of contract will involve nobody other than the owner of this specific child token. Alternatively, a chain-of-reference all the way from the root token to a specific very bottom child token (from root to leaf) can be constructured and recorded in the `referring` to explicitly define the distribution of profits.
The `createdTimestamp` only covers the block-level timestamp (based on block headers), which does not support fine-grained comparison such as transaction-level.

## Copyright
Copyright and related rights waived via [CC0](../LICENSE.md).