-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
ADD: EIP-5489 NFT Hyperlink Extension #5489
Conversation
A critical exception has occurred: |
@Pandapip1 did this EIP get renamed from EIP5489 to EIP5438? |
Nope, it has no relation with 5489 |
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Generally the EIP# is the PR# unless the EIP editor assigns a different number. The PR is 5489. |
OK, I'll fix it. |
Have fixed it. |
EIPS/eip-5489.md
Outdated
|
||
However, there hasn’t been an effective approach to providing avenues of continued monetization for community holders. Going through all the NFT-related EIPs, the solutions to "making NFTs profitable" are limited to transfers ([EIP-721](./eip-721.md)), rental and mortgage ([EIP-4907](./eip-4907.md)). | ||
|
||
Inspired by hyperlink, the essence of World Wide Web, the proposed hNFT standard positions NFT as the medium for Web 3.0. The hNFT standard endows NFTs with a hyperlink extension so that it is possible to exercise the `fructus` right, meanwhile, keeps the `abusus`. With hyperlink extension, NFT owners can earn profit by authorizing any hyperlink slot to an address. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inspired by hyperlink, the essence of World Wide Web, the proposed hNFT standard positions NFT as the medium for Web 3.0. The hNFT standard endows NFTs with a hyperlink extension so that it is possible to exercise the `fructus` right, meanwhile, keeps the `abusus`. With hyperlink extension, NFT owners can earn profit by authorizing any hyperlink slot to an address. |
Required: Not motivation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Pandapip1 How about just keeping "With hyperlink extension, NFT owners can earn profit by authorizing any hyperlink slot to an address." this sentence ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again, that describes the solution, not the problem, and so would belong in the Abstract.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see, the core problems are:
- no on-chain way to take advantage of NFT's influence without affecting ownership for now.
- no standard on how to use in URI in NFT relative standard
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Pandapip1 How about just list these two as the motivation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That seems good to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Pandapip1 I've modified the motivation.
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com>
EIPS/eip-5489.md
Outdated
--- | ||
eip: 5489 | ||
title: NFT hyperlink extension | ||
description: hyperlink extension for EIP-721 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This description is just a rewording of the title. I'd try to expand a little bit: maybe include what a hyperlink for NFTs means?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The meaning can be extended by usages. For example, NFTs can be taken as decentralized medium which can attract users' attention.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've rephrase this description.
EIPS/eip-5489.md
Outdated
|
||
## Abstract | ||
|
||
This EIP proposes a new extension for NFTs (non-fungible token, aka [EIP-721](./eip-721.md)): nft-hyperlink-extention (hNFT), embedding NFTs with hyperlinks, referred to as “hNFTs”. As owners of hNFTs, users may authorize a URL slot to a specific address which can be either an externally-owned account (EOA) or a contract address and hNFT owners are entitled to revoke that authorization at any time. The address which has slot authorization can manage the URI of that slot. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it a URI slot, or a URL slot?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my original thought, It's URL slot.
EIPS/eip-5489.md
Outdated
|
||
## Abstract | ||
|
||
This EIP proposes a new extension for NFTs (non-fungible token, aka [EIP-721](./eip-721.md)): nft-hyperlink-extention (hNFT), embedding NFTs with hyperlinks, referred to as “hNFTs”. As owners of hNFTs, users may authorize a URL slot to a specific address which can be either an externally-owned account (EOA) or a contract address and hNFT owners are entitled to revoke that authorization at any time. The address which has slot authorization can manage the URI of that slot. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to see the abstract explain (very briefly) what the hyperlink is for.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've add usage in advertisement industry.
EIPS/eip-5489.md
Outdated
NFTs have entered mainstream consciousness in a big way as NFT trading volume spiked 21,000% to more than $17 billion in 2021. Despite NFTs’ monumental rise as blockchain-based digital assets, we are just starting to scratch the surface of what is possible with NFTs. | ||
|
||
The emergence of NFTs brings more possibilities for creators and Web3 projects to build up decentralized communities, which also shifts the previous company-consumer relationship to more of a partnership. Each NFT holder is entitled to trade, promote, or create based on their NFTs to make profits. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this information is too broadly applicable, and doesn't really have anything to do with hyperlinks in EIP-721 tokens.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will rephrase this paragraph.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@SamWilsn Rephrased.
EIPS/eip-5489.md
Outdated
|
||
To establish standardization for NFT hyperlinks, it is important to share a unified standard so as to facilitate collaboration among all applications. | ||
|
||
Right to permission access to information—could be composed with “usus,” “abusus,” and “fructus” to create a nuanced constellation of access rights. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please use a consistent style (backticks or quotes) for these terms.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This paragraph is removed.
EIPS/eip-5489.md
Outdated
|
||
### NFT hyperlink extension | ||
|
||
This EIP extends EIP-721 with a `mapping<TokenId, mapping<SlotManagerAddress, uri>>`. The mapping means `TokenId` identified NFT has authorized `SlotManagerAddress` to manage the `uri` which is identified by `SlotManagerAddress`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is unusual syntax for a mapping
.
It's also an implementation detail. You shouldn't specify how contracts implement your standard, just the externally visible functions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed
EIPS/eip-5489.md
Outdated
This EIP extends EIP-721 with a `mapping<TokenId, mapping<SlotManagerAddress, uri>>`. The mapping means `TokenId` identified NFT has authorized `SlotManagerAddress` to manage the `uri` which is identified by `SlotManagerAddress`. | ||
|
||
Besides, extension also provide the supporting facilities, such as | ||
1. authorizeSlot/revokeSlot call pair used to manage slot authorization, and SlotAuthorizationCreate/Revoked event pair used to announce authorization management happens. | ||
2. setSlotUri/getSlotUri call pair used to manage/view uri on slot, and SlotUriUpdated used to announce uri management happens. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this subsection introduces anything that wouldn't be better suited in the documentation alongside the solidity interface below.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
EIPS/eip-5489.md
Outdated
event SlotAuthorizationCreated(uint256 tokenId, address slotManagerAddr); | ||
|
||
/** | ||
* @dev this event emits when the authorization on slot `slotManagerAddr` of token `tokenId` is revoked. | ||
* So, the corresponding DApp can handle this to stop on-going incentives or rights | ||
*/ | ||
event SlotAuthorizationRevoked(uint256 tokenId, address slotManagerAddr); | ||
|
||
/** | ||
* @dev this event emits when the uri on slot `slotManagerAddr` of token `tokenId` has been updated to `uri`. | ||
*/ | ||
event SlotUriUpdated(uint256 tokenId, address slotManagerAddr, string uri); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assume some of these event parameters should be indexed
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will fix it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
* @dev | ||
* returns the latest uri of an slot on a token, which is indicated by `tokenId`, `slotManagerAddr` | ||
*/ | ||
function getSlotUri(uint256 tokenId, address slotManagerAddr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should probably be slotURI
for consistency with the other standards.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mean eip-3525 ?
Co-authored-by: Sam Wilson <57262657+SamWilsn@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fine. There are some things that would be good to fix, but they aren't blockers.
* ADD: EIP-5438 * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update assets/eip-5438/contracts/ERC5438.sol Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update assets/eip-5438/contracts/IERC5438.sol Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * MOD: use the correct magician link * FIX: Walidator warnings * Update EIPS/eip-5438.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * FIX: Walidator warnings * DEL: packaging / workspace files, and external references * MOD: EIP number from 5438 -> 5489 * MOD: rename 5438.md -> 5489.md * MOD: motivation grammar * Update EIPS/eip-5489.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5489.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5489.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5489.md Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> * Update EIPS/eip-5489.md Co-authored-by: Sam Wilson <57262657+SamWilsn@users.noreply.github.com> * MOD: motivation as review comment * MOD: motivation * MOD: description, abstract, event definitions * DEL: Spec.NFT Hyperlink Extension Co-authored-by: Pandapip1 <45835846+Pandapip1@users.noreply.github.com> Co-authored-by: Sam Wilson <57262657+SamWilsn@users.noreply.github.com>
When opening a pull request to submit a new EIP, please use the suggested template: https://github.com/ethereum/EIPs/blob/master/eip-template.md
We have a GitHub bot that automatically merges some PRs. It will merge yours immediately if certain criteria are met: