-
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: Delegatable Utility Tokens Derived from NFTs #6884
Conversation
File
|
There has been no activity on this pull request for 2 weeks. It will be closed after 3 months of inactivity. If you would like to move this PR forward, please respond to any outstanding feedback or add a comment indicating that you have addressed all required feedback and are ready for a review. |
The commit 08ee53d (as a parent of f702091) contains errors. |
eip: 6884 | ||
title: Delegatable Utility Tokens Derived from NFTs | ||
description: Structure and interface for Delegatable Utility Tokens (DUT) for enhancing the utility of NFTs. | ||
author: JB Won (@JB_theRedDuck), dagarn (@0xdagarn), Jennifer Lee (@purp-lee), Bora Lee (@Violet-Bora-Lee), Taehyeong Noh (@fin) |
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 first username here isn't a valid GitHub identifier.
author: JB Won (@JB_theRedDuck), dagarn (@0xdagarn), Jennifer Lee (@purp-lee), Bora Lee (@Violet-Bora-Lee), Taehyeong Noh (@fin) | |
author: JB Won, dagarn (@0xdagarn), Jennifer Lee (@purp-lee), Bora Lee (@Violet-Bora-Lee), Taehyeong Noh (@fin) |
|
||
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. | ||
|
||
**Every ERC-6884 compliant contract must implement the `ERC6884` and `ERC165` interfaces**: |
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.
**Every ERC-6884 compliant contract must implement the `ERC6884` and `ERC165` interfaces**: | |
**Every ERC-6884 compliant contract must implement the `IERC6884` and `ERC165` interfaces**: |
|
||
**Every ERC-6884 compliant contract must implement the `ERC6884` and `ERC165` interfaces**: | ||
|
||
```solidity= |
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.
```solidity= | |
```solidity |
```solidity= | ||
pragma solidity ^0.8.0; | ||
|
||
interface IERC6884 /* is IERC165 */ { |
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.
interface IERC6884 /* is IERC165 */ { | |
interface IERC6884 /* is ERC165 */ { |
|
||
interface ERC165 { | ||
/// @notice Query if a contract implements an interface | ||
/// @param interfaceID The interface identifier, as specified in ERC-165 | ||
/// @dev Interface identification is specified in ERC-165. This function | ||
/// uses less than 30,000 gas. | ||
/// @return `true` if the contract implements `interfaceID` and | ||
/// `interfaceID` is not 0xffffffff, `false` otherwise | ||
function supportsInterface(bytes4 interfaceID) external view returns (bool); | ||
} |
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.
interface ERC165 { | |
/// @notice Query if a contract implements an interface | |
/// @param interfaceID The interface identifier, as specified in ERC-165 | |
/// @dev Interface identification is specified in ERC-165. This function | |
/// uses less than 30,000 gas. | |
/// @return `true` if the contract implements `interfaceID` and | |
/// `interfaceID` is not 0xffffffff, `false` otherwise | |
function supportsInterface(bytes4 interfaceID) external view returns (bool); | |
} |
No need to duplicate the interface here. Readers can find it in EIP-165.
type: Standards Track | ||
category: ERC | ||
created: 2023-04-16 | ||
--- |
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.
ERC-165 is required because you use its interface, and 721 because you use its metadata.
--- | |
requires: 165, 721 | |
--- |
|
||
## Rationale | ||
|
||
NFTs are valuable assets, and moving them can be very risky. It's also risky to try to increase their utility by locking them to a specific contract. We've come up with a simple way to enhance utility without moving NFTs. |
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 belongs in the Motivation section. The Rationale section should justify technical decisions made within the EIP itself, while the Motivation should justify the EIP as a whole.
|
||
There might be dApps build based on supply and demand for usage rights, facilitated by this delegation process. | ||
|
||
## **Test Cases** |
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.
## **Test Cases** | |
## Test Cases |
➜ yarn hardhat test test/test.js | ||
``` | ||
|
||
## **Reference Implementation** |
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.
## **Reference Implementation** | |
## Reference Implementation |
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 remove build system files.
There has been no activity on this pull request for 2 weeks. It will be closed after 3 months of inactivity. If you would like to move this PR forward, please respond to any outstanding feedback or add a comment indicating that you have addressed all required feedback and are ready for a review. |
I am closing this pull request because we are in the process of separating EIPs and ERCs into distinct repositories. Unfortunately, as far as we are aware, GitHub does not provide any tools to ease this migration, so every pull request will need to be re-opened manually. As this is a PR to create / modify an ERC, I will kindly ask you to redirect this to the new repository at ethereum/ERCs. We have prepared a guide to help with the process. If there is relevant history here, please link to this PR from the new pull request. On behalf of the EIP Editors, I apologize for this inconvenience. |
No description provided.