ERC-6551 (Token Bound Accounts, TBA) is a standard that gives every ERC-721 NFT an automatic smart-contract wallet. The wallet's owner is whoever owns the NFT. Transfer the NFT and you transfer the wallet with it, including anything the wallet holds.
How it works
A permissionless singleton contract (the registry) deterministically creates a smart account for any NFT via CREATE2. The account is controlled by the NFT owner. Every NFT has an implicit TBA address; whether it has been deployed on-chain or not.
Use cases
- Games. A character NFT owns its inventory. Sell the character, all items transfer with it in one atomic transfer.
- DAOs. A membership NFT owns voting shares, delegated positions, and rewards, all as one asset.
- Identity. A profile NFT holds credentials, POAPs, and reputation tokens.
- NFT bundles. A container NFT holds other NFTs and tokens; sold as one unit.
What this changes for on-chain assets
Previously, NFTs were pure identifiers. To bundle assets you needed a wrapper contract or a marketplace. TBAs collapse all bundling into a single primitive that works with every existing wallet.
Wallets and adoption
- OpenSea and Rarible display TBA inventories.
- Sapienz (games) uses it for character loadouts.
- Manifold shipped tooling for creators.
What to actually watch
- Which registry a TBA uses. Different registries = different security assumptions.
- Reentrancy considerations when TBA holds and moves other assets.
- Gas cost of deploying the TBA the first time (one-time).
Koinlytics