I'm wondering why did they only allow one approved address per token to transfer on behalf of the owner of that token. Doesn't this support more of a centralized way of handling NFTs, as in it allows for the NFT to only be on one NFT Marketplace at any given point rather than allowing multiple? I'm just scratching my head on why this was the design decision that was made. If anyone can shed some light on this, thanks!
Another standard for NFTs allows multiple approvals per token on the NEAR blockchain.
Implementing that feature has a specific major downside. Token approvals need to be unwound when transferring the token. Only two implementations are possible:
- Use a for-loop to unwind each approval. This makes transfers arbitrarily expensive and allows for a denial-of-service attack.
- Use a map-upgrade to clear all approvals at once. This causes the implementation to leak storage with data stored on-chain increasing without bound.
NEAR chose option 1.
ERC-721 chose to disable the feature altogether.