Soulbound Tokens in Cardano

Hi everyone!

I have been interested in Soulbound Tokens (SBTs) since May 2022, when Decentralized Society: Finding Web3’s Soul was initially published.

During this time, I found that many crypto communities have been working on standards, improvement proposals or, at least, have a basic understanding of how they could implement SBTs in their respective networks. To my surprise (or at least from what I know), I have found that Cardano community is not exploring these concepts at all. I just found a few mentions of this topic:

This is why I’d like to open this discussion to see if we can come up with a standard and a solution on how to implement non-transferable tokens in Cardano. I believe they can be of great help for DAOs, mostly at the time of voting and making decisions; but probably a lot of different use cases can come up from this research too.


Hello @Matias_Falcone

From what I can see Soulbound tokens seem to have two main uses:

  1. To have a Non-Transferable identifier bound to a crypto wallet

  2. To have ability to have some ‘authority’ permanently designate a wallet as unique by issuing an SBT

So, as far as I can see there is no need for Soulbound tokens on Cardano.

Unlike other blockchains Cardano wallets already have a unique, non-transferable identifier. It is called Stake Address.

On Ethereum, for example, you have a wallet address and each individual token has a contract address. In those contract addresses there is usually an entry that will parse your wallets share of those tokens in some form. So for any app or a wallet or an exchange to know what you own you have to scan a whole blockchains worth of contracts or, as it usually happens, use an API. Adding a Soulbound token is a clever way of consolidating ownership list of all wallet assets into a separate non-movable contract (clever, but it will bloat the ledger). This way all you would need to do is just scan wallet address and SBT address instead of a whole blockchain worth of contracts and because you know SBT is unmovable it guaranties verification (for SBT listed assets). Also, SBT can be used as a “dump” for selected info, which in turn can be used as a quickly accessible list for verification.

Cardano is a UTxO based with a different structure. Cardano wallets scan all used and unused addresses (as defined by ‘gap’ variable in that wallets architecture) and are immediately aware of all transactions that occurred on those addresses. Since all tokens on Cardano are native digital assets and not contracts all balance info for all assets is immediately available (no API needed). All these addresses and all these tokens and assets are under onw non-transferable umbrella Stake Address. So this feature of Soulbound tokens is already included in Cardano base architecture.

Because you have this feature you can attach any info to it and it’s guaranteed to point to correct wallet. You can even make an NFT with unlocked policy that you keep changing content in, that refers to that stake address (in metadata) and it won’t matter which wallet that NFT is in. You could make a Plutus contract that holds, mints and burns such NFT and another that adjusts voting levels for that Stake Address accordingly.

If you want to use this concept for a DAO, just replace SBT with Stake Address and done! What ever interactions that Stake Address holder has with DAOs UI (or however they measure interaction ) can be recorded off- or on-chain and assign voting rights to that Stake Address according to DAOs calculation.

For point 2. where you have an “authority” bestow some kind of credentials or identity to a wallet. That is more in line with Digital IDs (DIDs). This is for education records, job credentials, health records, compliance, etc… Cardano already has credential verification and issuance platform called Atala PRISM (although I don’t see much demand from “issuing authorities” to go digital any time soon).

As for WEB 3.0 “implementations”… I don’t see anything emerging as any usable standard for WEB 3.0 architecture yet, so I’m not sure how anyone is building implementations for non-existent format. This part I’m gonna leave for hard core devs and coders to tackle :slight_smile:


To address the other technical part of the question then (how to make Cardano tokens non-transferable), there were a few discussions (also mentioned here) that came up in the meantime. These have been mostly disagreeable to managing token ownership & the latter of these proposals (listed here most recent first) was even deprecated at publication time by its own author:


Side note: When using stake addresses for such use cases, mingled addresses should always be kept in mind. The on-chain concept of stake is not completely identical to the key management concept of wallet or account. There might be addresses, where the payment key is controlled by someone else than the stake key.

I wouldn’t use the present tense here.

1 Like