user2897: A lot is going on at the moment in the Ethereum dev community with Soulbound Tokens: https://ethereum-magicians.org/t/eip-5114-soulbound-badges/9417
What would be the best approach for implementing non-transferable tokens in Cardano?
A soulbound token is a token that is bound to a wallet when it is minted, and cannot be transferred/moved after that. In Cardano, I understand this means it should be locked to a specific UTxO that has to be part of the wallet.
Is it possible to implement this in Cardano without the need of smart contracts?

user387: Any native asset on cardano can be transferred according to the ledger rules.
To make something non-transferrable you would need to make it unspendable.

For "pay to pubkey" outputs, this would mean to throw away the key - I don't think this is what you want in this case.
The only alternative "pay to script" outputs are governed by the script (currently either a simple or plutus script). Making these unspendable is easy, think const False for plutus.

As you ask "without the need for smart contracts" I would say: No, scripts will be required to implement something like this.
But isn't Ethereum using smart contracts for this as well?
If scripts are okay, one could draft up a specification what an SBT is. For example (based on my limited familiarity with SBTs) something like:

A cardano native token / asset with quantity 1, which
was minted by a policy that ensures single mint & pay to some public key (two parameters: TxOutRef and PubKeyHash) creating an output, that
is governed by an unspendable script (identified by script hash), which
also contains a datum (inline or hash) pointing to the owner (PubKeyHash above).

Note that "from the outside" this would not be resolvable who some SBT belongs to, you would need the parameters of the minting script and anything needed for the datum pre-image to verify. For example the "seed" TxOutRef and the PubKeyHash of the "soul"

2897: <p>A lot is going on at the moment in the Ethereum dev community with Soulbound Tokens: <a href="https://ethereum-magicians.org/t/eip-5114-soulbound-badges/9417" rel="nofollow noreferrer">https://ethereum-magicians.org/t/eip-5114-soulbound-badges/9417</a></p>
<p>What would be the best approach for implementing non-transferable tokens in Cardano?</p>
<p>A soulbound token is a token that is bound to a wallet when it is minted, and cannot be transferred/moved after that. In Cardano, I understand this means it should be locked to a specific UTxO that has to be part of the wallet.</p>
<p>Is it possible to implement this in Cardano without the need of smart contracts?</p>
 387: <p>Any native asset on cardano can be transferred according to the ledger rules.</p>
<p>To make something non-transferrable you would need to make it unspendable.</p>
<ul>
<li>For &quot;pay to pubkey&quot; outputs, this would mean to throw away the key - I don't think this is what you want in this case.</li>
<li>The only alternative &quot;pay to script&quot; outputs are governed by the script (currently either a simple or plutus script). Making these unspendable is easy, think <code>const False</code> for plutus.</li>
</ul>
<p>As you ask &quot;without the need for smart contracts&quot; I would say: No, scripts will be required to implement something like this.</p>
<p>But isn't Ethereum using smart contracts for this as well?</p>
<p>If scripts are okay, one could draft up a specification what an SBT is. For example (based on my limited familiarity with SBTs) something like:</p>
<ul>
<li>A cardano native token / asset with quantity 1, which</li>
<li>was minted by a policy that ensures single mint &amp; pay to some public key (two parameters: <code>TxOutRef</code> and <code>PubKeyHash</code>) creating an output, that</li>
<li>is governed by an unspendable script (identified by script hash), which</li>
<li>also contains a datum (inline or hash) pointing to the owner (<code>PubKeyHash</code> above).</li>
</ul>
<p>Note that &quot;from the outside&quot; this would not be resolvable who some SBT belongs to, you would need the parameters of the minting script and anything needed for the datum pre-image to verify. For example the &quot;seed&quot; <code>TxOutRef</code> and the <code>PubKeyHash</code> of the &quot;soul&quot;</p>
