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
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(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
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?