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

ADD: EIP-5489 NFT Hyperlink Extension #5489

Merged
merged 37 commits into from
Aug 25, 2022
Merged

Conversation

coderfengyun
Copy link
Contributor

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:

  • The PR edits only existing draft PRs.
  • The build passes.
  • Your GitHub username or email address is listed in the 'author' header of all affected PRs, inside .
  • If matching on email address, the email address is the one publicly listed on your GitHub profile.

@eth-bot
Copy link
Collaborator

eth-bot commented Aug 18, 2022

A critical exception has occurred:
Message: pr 5489 is already merged; quitting
(cc @alita-moore, @mryalamanchi)

EIPS/eip-5438.md Outdated Show resolved Hide resolved
EIPS/eip-5438.md Outdated Show resolved Hide resolved
EIPS/eip-5438.md Outdated Show resolved Hide resolved
EIPS/eip-5438.md Outdated Show resolved Hide resolved
EIPS/eip-5438.md Outdated Show resolved Hide resolved
assets/eip-5438/contracts/ERC5438.sol Outdated Show resolved Hide resolved
assets/eip-5438/.gitignore Outdated Show resolved Hide resolved
assets/eip-5438/contracts/ERC5438.sol Outdated Show resolved Hide resolved
assets/eip-5438/contracts/IERC5438.sol Outdated Show resolved Hide resolved
assets/eip-5438/package.json Outdated Show resolved Hide resolved
@abcoathup
Copy link
Contributor

@Pandapip1 did this EIP get renamed from EIP5489 to EIP5438?

@coderfengyun
Copy link
Contributor Author

coderfengyun commented Aug 19, 2022

Nope, it has no relation with 5489

coderfengyun and others added 22 commits August 19, 2022 12:25
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>
@abcoathup
Copy link
Contributor

Nope, it has no relation with 5489

Generally the EIP# is the PR# unless the EIP editor assigns a different number. The PR is 5489.

@coderfengyun
Copy link
Contributor Author

OK, I'll fix it.

@coderfengyun
Copy link
Contributor Author

@Pandapip1 did this EIP get renamed from EIP5489 to EIP5438?

Have fixed it.

@coderfengyun coderfengyun changed the title ADD: EIP-5438 ADD: EIP-5489 NFT Hyperlink Extension Aug 19, 2022
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.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
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.

Copy link
Contributor Author

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 ?

Copy link
Member

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.

Copy link
Contributor Author

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:

  1. no on-chain way to take advantage of NFT's influence without affecting ownership for now.
  2. no standard on how to use in URI in NFT relative standard

Copy link
Contributor Author

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?

Copy link
Member

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.

Copy link
Contributor Author

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.

EIPS/eip-5489.md Outdated Show resolved Hide resolved
EIPS/eip-5489.md Outdated Show resolved Hide resolved
EIPS/eip-5489.md Outdated Show resolved Hide resolved
EIPS/eip-5489.md Outdated Show resolved Hide resolved
coderfengyun and others added 4 commits August 19, 2022 20:03
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 Show resolved Hide resolved
EIPS/eip-5489.md Outdated
---
eip: 5489
title: NFT hyperlink extension
description: hyperlink extension for EIP-721
Copy link
Contributor

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?

Copy link
Contributor Author

@coderfengyun coderfengyun Aug 24, 2022

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.

Copy link
Contributor Author

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.
Copy link
Contributor

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?

Copy link
Contributor Author

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.
Copy link
Contributor

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.

Copy link
Contributor Author

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
Comment on lines 19 to 21
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.
Copy link
Contributor

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.

Copy link
Contributor Author

@coderfengyun coderfengyun Aug 24, 2022

Choose a reason for hiding this comment

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

Will rephrase this paragraph.

Copy link
Contributor Author

@coderfengyun coderfengyun Aug 25, 2022

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.
Copy link
Contributor

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.

Copy link
Contributor Author

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`.
Copy link
Contributor

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.

Copy link
Contributor Author

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
Comment on lines 37 to 41
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.
Copy link
Contributor

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.

Copy link
Contributor Author

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
Comment on lines 58 to 69
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);
Copy link
Contributor

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Will fix it.

Copy link
Contributor Author

@coderfengyun coderfengyun Aug 25, 2022

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)
Copy link
Contributor

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.

Copy link
Contributor Author

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 ?

Copy link
Member

@Pandapip1 Pandapip1 left a 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.

@eth-bot eth-bot enabled auto-merge (squash) August 25, 2022 14:30
@eth-bot eth-bot merged commit 2431f0c into ethereum:master Aug 25, 2022
nachomazzara pushed a commit to nachomazzara/EIPs that referenced this pull request Jan 13, 2023
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants