-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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-5380: EIP-721 Entitlement Extension #5380
Conversation
A critical exception has occurred: |
Head branch was pushed to by a user without write access
The commit 9c8093f (as a parent of f335512) contains errors. Please inspect the Run Summary for details. |
gulp I guess it's lucky there was an eipw error then... |
Co-authored-by: Micah Zoltu <[email protected]>
Head branch was pushed to by a user without write access
Head branch was pushed to by a user without write access
Head branch was pushed to by a user without write access
Does the title need to reference EIP4907? Could it just be: ERC-721 User and Expires extension |
Hey sorry for taking suuuuper long to get to this. @Pandapip1 thanks so much for taking this on, it looks actually really interesting what you're doing here. I think it is in line with what has been outlined in the Decentralized Society paper, specifically this section: What do you think about listing a bunch of entitlement types and adding an enum-type structure that captures the entitlement that can be sent to a user? References: |
Do you mean add a metadata extension? That does seem like a good idea. |
|
||
## Backwards Compatibility | ||
|
||
No backward compatibility issues were found. |
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.
[Optional] If this EIP adds uint256 amount
in the interfaces (amount
be mandated to be 1 for EIP-721), it could have the benefit of supporting both EIP-721 and EIP-1155, potentially helpful for its adoption.
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 issue here is supporting maxEntitlements
. I initially was trying to do it in a cross-token manner, but it just didn't particularly work well. It's not clear who loses what when the balance changes without going to zero.
Co-authored-by: xinbenlv <[email protected]>
Yeah but preferably it's onchain and e.g. it allows someone to say: "I, address B, entitle address A to 'usus' Property p", where 'usus' is the entitlement and there can be many different ones all encoded in an enum. |
Hmm... what about being able to have entitlements extend from other entitlements (i.e. the default address for an entitlement extending from the |
} | ||
``` | ||
|
||
`supportsInterface` MUST return true when called with `IERC5380`'s interface ID. |
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.
Generally I recommend including the interface id explicitly in the EIP. Helps to catch bugs when copying the interface.
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.
Personally, I prefer keeping it this way while the EIP is in draft. When it moves to review I'd agree that it's probably best to explicitly state it.
} | ||
``` | ||
|
||
`supportsInterface` MUST return true when called with `IERC5380Enumerable`'s interface ID. |
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.
Same here: include the interface id.
Co-authored-by: Sam Wilson <[email protected]>
Co-authored-by: Sam Wilson <[email protected]>
I think this standards usefulnes can come from doing some research on the possible existing entitlements that exist, naming them appropriately and then recommending them as an enum:
|
* EIP-4907 Alternative Design * Self-assign EIP-5380 and fix eipw errors * I guess this is one way to do it Co-authored-by: Micah Zoltu <[email protected]> * Update EIPS/eip-5380.md * Update EIPS/eip-5380.md * Use title of previous EIP * *poof* Becomes a different EIP * Apply suggestions from code review * Entitle -> EntitlementChanged Co-authored-by: xinbenlv <[email protected]> * Define TCG and add reason parameter * Renter <-> owner Co-authored-by: Sam Wilson <[email protected]> * Grammatical fix Co-authored-by: Sam Wilson <[email protected]> * Remove reason Co-authored-by: Micah Zoltu <[email protected]> Co-authored-by: xinbenlv <[email protected]> Co-authored-by: Sam Wilson <[email protected]>
Like EIP-4907 but completely different.