EIP-5380: EIP-721 Entitlement Extension

1 Like

Originally from this comment but now a completely different proposal: EIP4907: ERC-721 User And Expires Extension - #17 by TimDaub

Why use the zero address as the owner for EntitlementChanged? Seems like youā€™d have two possible representations for the owner (the zero address, and their own address). Do they mean different things?

What are the fields of that event supposed to represent (specifically contract)?


How is the reason argument supposed to be used? If itā€™s important, should it be logged? If it isnā€™t, should it be removed from the interface?

Why use the zero address as the owner for EntitlementChanged? Seems like youā€™d have two possible representations for the owner (the zero address, and their own address). Do they mean different things?

The default value of address is address(0). In order to save gas, setting address(0) to mean the current user means that contracts can just return the userā€™s address if the entitlement is set to address(0). This ends up being a not insignificant saving over a large user base.

contract represents the contract address of the EIP-721 token.

That was a suggestion by @xinbenlv. I would be happy to remove it, and I do think that it should be logged if kept.

Iā€™m not sure I follow, but that isnā€™t particularly important. This is good content for the rationale section, as Iā€™m sure you know :wink:

One example of the use of extraParams is that in GovernorBravo

function castVoteWithReason(uint proposalId, uint8 support, string calldata reason)

When I am designing the EIP-5453 (Endorsemen) it turns out to me having the ability to give extraParams makes future extension more available.

Obviously this is my author peer-review comment, please feel free to make your own authorship judgement, Pandapip1

Why couldnā€™t an EIP just extend this EIP and have an additional implementation that has an additional function signature?