Some brief thoughts:
-
I might reword the comment for the
DefaultLocked
event. In initially reading the ERC, I thought that emitting a newDefaultLocked
event would only change the locked status for “tokens that will be minted in the future” (and not change the locked status for tokens that had already been minted). -
It is nicer for listeners to only have a single event to subscribe to, but it is slightly more expensive in terms of gas to have two arguments in the event, and have one of them
indexed
(as compared toLocked(uint256 tokenId)
in ERC-5192). Since one of the goals here is gas efficiency, perhaps that should be considered.
Aside: I’ve been thinking about this as well and put together ERC-7558 - Batch Minimal Soulbound NFTs. Since you’ve been thinking about this problem longer than I have I would appreciate any thoughts / feedback!