In this post, we'll go through these:
- ERC-6551 Pokemon analogy
- Layman technical overview
- Possible future applications
1. The Pokemon Analogy
In Pokemon games, every trainer is equipped with a bag. That's our wallet, and we are the trainers.
Imagine every item we can store in the bag is an NFT:
- Key Items
- Pokemon (okay, not directly, but for the sake of this analogy, let's say we can)
We also have PokeDollar in the game (I just learnt the currency's name), which we store in our bag. That's our ERC-20 tokens.
So we have our typical wallet and assets situation:
- Bag = wallet
- Pokemon/items = NFT
- PokeDollars = tokens
Now imagine every Pokemon have its own bags.
And they can store all the things that we can:
- and even other Pokemons
- And subsequently, that Pokemon can also "own" another Pokemon. And on and on and on.
That is ERC-6551.
With ERC-6551, every NFT has its own wallet.
Let's take it up a notch.
As trainers, we do not have direct ownership of the items in our Pokemon's bag. BUT we do have the ability to COMMAND our Pokemon on what to do with their bag and items.
- We can tell them to send PokeDollars to others
- We can tell them to buy/trade/transfer items
The control of their bag falls on us, their trainer (parent wallet).
However, if you transfer them to another trainer, you are also transferring ALL their items, PLUS the control over them, to the new trainer.
And that's it, and you now understand ERC-6551 in essence.
2. The slightly technical notes:
- ERC-6551 allows NFT to have its own wallet that can hold tokens (ERC-20) and NFTs (ERC-721, ERC-1155).
- These are smart contract wallets (not EOA) that are created, mapped and observed by a Registry.
- The parent wallet has control of the subsequent wallets.
- That also means transferring the NFT = transferring the control over NFT's wallets and all the assets within the wallet.
- It seems like ERC-721 can readily adopt ERC-6551. However, ERC-1155 may need certain parameters/tweaks in order to be able to adopt it.
3. Possible future applications
This is where it gets interesting; there are a few use cases that others have outlined.
- Airdrop ─ no more snapshots. Tokens dropped directly into the NFT's wallet
- Games ─ a character is an NFT, and the items are NFT within their own wallet
- Dynamic PFP ─ every NFT within a PFP can change the PFP's visual. @sapienz and @memeland is reportedly doing this
- Low gas transaction ─ we can group the NFT and only need to send the parent NFT
There are 2 other applications I can think of:
- Garbage Bin NFT ─ We all have bought NFTs that we are not proud of. Why not drop them into this garbage can where they are not in our wallet, yet we can still look at our past mistakes? And if somehow the price goes up, we still have control to sell them. 😆
- Multi-profile login ─ We can probably log in to web3 websites using our NFT's wallets. Effectively making our wallets multi-profile. I'm not entirely certain if this is achievable, but it's an intriguing idea.
- Analogy may differ slightly from technical perspective.
- I do not own Pokemon IP. They are used for educational purposes.
Thanks to Zeneca, Cygaar, LJW and @bennygiang for their excellent write-ups on the topic. Links below 👇
And thanks to the team that brought us ERC-6551!