Soul Binding
Author: Vitalik Buterin
Original Title: 《Soulbound》
Published on: January 26, 2022
One characteristic of World of Warcraft that is often discussed among players but rarely outside of gaming circles is the concept of soulbound items, which cannot be transferred or sold to other players once picked up.
Most of the very powerful items in the game are soulbound, typically requiring the completion of complex quests or the defeat of very powerful monsters, often needing the help of three to thirty-nine other players. Therefore, to get your character close to having the best weapons and armor, you have no choice but to participate in killing these extremely difficult monsters yourself.
The purpose of this mechanism is quite clear: it maintains the challenge and fun of the game by ensuring that you earn the best items through genuine effort; you must truly engage in difficult tasks and figure out how to slay dragons. You can't just spend ten hours a year killing pigs, collect a few thousand gold coins, and then buy epic magical armor from other players who killed dragons for you.
Of course, this system is far from perfect: you can pay a team of professionals to help you kill dragons and collect the loot, or even directly buy a character on the secondary market, all without—game dollars—so you don’t even have to kill pigs. But even so, it is still much better than having every item always priced.
What if NFTs could be soulbound?
Current forms of NFTs share many of the same attributes as rare and epic items in massively multiplayer online games. They have social signaling value: those who own them can show them off, and there are increasingly more tools to help users do so. Recently, Twitter began rolling out an integration that allows users to showcase their NFTs in their profile pictures.
But what exactly do these NFTs signal? Certainly, part of the answer is some skill in acquiring NFTs and knowing which NFTs to pursue. However, since NFTs are tradable items, another significant part of the answer inevitably becomes that NFTs signal wealth.
CryptoPunks are now often sold for millions of dollars, and they aren't even the most expensive NFTs.
If someone shows you an NFT that can be obtained by doing X, you cannot judge whether they did X themselves or just paid someone else to do X. Sometimes this isn't an issue: for NFTs supporting a charitable cause, someone who buys it on the secondary market is sacrificing their funds for that cause, helping the charity through the motivation of others purchasing NFTs, so there’s no reason to discriminate against them. In fact, charitable NFTs can bring many benefits. But what if the NFTs we want to create are not just about who has the most money, but are actually trying to signal something else?
The best example of a project attempting to do this might be POAP, or "Proof of Attendance Protocol." POAP is a standard through which projects can send NFTs representing the idea that the recipient personally participated in certain events.
Part of my own POAP collection, most of which comes from events I've attended over the years.
POAP is a great example of an NFT that would work better if it could be soulbound. If someone is looking at your POAPs, they are not interested in whether you paid to attend certain events. They are interested in whether you attended the event in person. The proposal to put certificates (like driver's licenses, university degrees, age proofs) on-chain faces a similar issue: if someone who does not meet the criteria can directly purchase a certificate from someone who does, its value is greatly diminished.
While transferable NFTs have their place and are very valuable for supporting artists and charities, there is a vast and yet-to-be-explored design space for what non-transferable NFTs could become.
What if governance rights were soulbound?
If governance mechanisms can lead to very bad outcomes if governance rights are easily transferable. There are mainly two reasons for this:
- If the goal is to widely distribute governance rights, then transferability is counterproductive, as concentrated interests are more likely to buy governance rights from others.
- If the goal is to give governance rights to capable individuals, then transferability is counterproductive, as nothing prevents governance rights from being acquired by determined but incompetent individuals.
If you take the saying "the people who want to rule the most are the least fit to do so" seriously, you should be skeptical of transferability, precisely because transferability takes governance rights away from the meek who are most likely to provide valuable input and gives it to those who desire power and are most likely to cause problems.
So, what if we tried to make governance rights non-transferable? What if we attempted to create a CityDAO where people actually living in the city have more voting power, or at least reliable democracy and avoid the undue influence of whales hoarding large amounts of citizen NFTs? What if the DAO governance of blockchain protocols could somehow condition governance power on participation? Once again, a large and fruitful design space opens up, which is difficult to enter today.
Implementing non-transferability in practice
POAP has made a technical decision not to prevent the transferability of POAPs themselves. There are good reasons for this: users may have valid reasons to want to migrate all their assets from one wallet to another (for example, for security reasons), and the "naive" implementation of non-transferability is not very secure anyway, as users can create a wrapper account containing the NFTs and then sell their ownership.
In fact, there are quite a few cases showing that POAPs are frequently bought and sold when there are economic incentives. Adidas recently released a POAP for free to their fans, granting users priority access to merchandise sales. What happened? Well, of course, many POAPs were quickly transferred to the highest bidder.
Transfers are more than items, and this is not the only time.
To address this issue, the POAP team suggests focusing on non-transferability checks implemented by the developers themselves: if the current owner's address is the same as the original owner's address, they can check on-chain, and they can add more complex checks over time if deemed necessary. For now, this is a more forward-thinking approach.
Perhaps the most powerful non-transferable NFT today is the proof of humanity. In theory, anyone can create a proof of humanity profile using a smart contract account with transferable ownership and then sell that account. But the proof of humanity protocol has a revocation feature that allows the original owner to make a video requesting the removal of their profile, and the Kleros court decides whether the video comes from the same person as the original creator. Once the profile is successfully removed, they can reapply to create a new profile. Therefore, if you purchase someone else's proof, your property may be quickly taken away from you, making ownership transfer infeasible. Proof of humanity profiles are effectively soulbound, and the infrastructure built on them can allow on-chain items to be typically bound to specific humans.
Can we limit transferability without going all the way, with everything built on proof of humanity? It becomes more challenging, but for certain use cases, some medium-strength methods may already be good enough. Binding NFTs to ENS names is a simple option, assuming users care enough about their ENS names that they are unwilling to transfer them. Currently, we might see a range of methods to limit transferability, with different projects choosing different trade-offs between security and convenience.
Non-transferability and privacy
The cryptographic strong privacy of transferable assets is relatively easy to understand: you take your coins, put them into tornado.cash or a similar platform, and then withdraw them to a new account. But how do we add privacy for soulbound items if you cannot transfer them to a new account or even a smart contract? If proof of humanity starts to gain more adoption, privacy becomes even more important, as the alternative is that all our activities are directly mapped to our faces on-chain.
Fortunately, some relatively simple technical options are possible:
- Store projects at an address that is (i) indexed, (ii) the recipient's address, and (iii) a hash of a secret belonging to the recipient. You can reveal your secret to an interface, which will then scan all items that might belong to you, but those without your secret cannot see which items are yours.
- Publish a bunch of hashes of projects and give each recipient their Merkle branch.
- If a smart contract needs to check if you own a certain type of item, you can provide a ZK-SNARK.
Transfers can occur on-chain; the simplest technique might just be a transaction calling a factory contract to invalidate the old project and validate the new one, using ZK-SNARK to prove the operation is valid.
Privacy is an important component for making this ecosystem work well. In some cases, the underlying things represented by the project are already public, so attempting to add privacy is pointless. But in many other cases, users do not want to disclose everything they own. If one day in the future, vaccination becomes a POAP, one of the worst things we could do is create a system where POAPs are automatically issued to everyone, visible to all, leaving everyone with no choice but to let their medical decisions be influenced by what looks cool in their specific social circles. Making privacy a core part of the design can avoid these negative outcomes and increase our chances of creating great things.
From here to there
A common criticism of the current "web3" space is that everything is money-driven, with a celebration of wealth ownership and outright waste that limits the appeal and long-term sustainability of the culture surrounding these items. Of course, even financialized NFTs can provide some important benefits, such as funding artists and charities that would otherwise go unrecognized. However, this approach has limitations, and there are many underdeveloped opportunities in trying to move beyond financialization. Creating more "soulbound" items in the crypto space could be a pathway to alternatives where NFTs can represent more of who you are, rather than just what you can afford.
However, doing so comes with technical challenges, and there exists an uneasy "interface" between the desire to limit or prevent transfers and the blockchain ecosystem, where so far all standards have been designed around maximum transferability. Attaching projects to "identity objects" that users cannot (as with proof of humanity profiles) or are unwilling (as with ENS names) to exchange seems to be the most promising route, though challenges remain in making this use easy to implement, private, and secure. We need to work harder to think through and solve these challenges. If we can, it will open a broader door for blockchain to become the center of a collaborative and interesting ecosystem, rather than just one focused on money.