Can I Make Non-Transferable (or selectively transferable) Tokens on Cardano?

Yes, items 1 and 2 in your last post are pretty much correct. There is a lot of flexibility possible, so the actual solution should be built around requirements and user experience.

Here are a couple more observations:

  1. One would start from a template for the smart contract (i.e., a smart contract parameterized by the public key hash of its “owner”), and that template can be specialized to actual smart contracts for the addresses of individual users.
  2. Discovering which contracts exist for an individual wallet might proceed as follows: (a) the user enters an address; (b) the service (web client, backend, or whatever) decomposes that address into the payment part and the staking part; (c) the service uses its knowledge of the staking part to query the blockchain to see which other addresses in that same wallet have ever been used; (d) the service combines each of those addresses with the smart-contract template to compute what the corresponding smart-contract address would be; (e) the service queries the blockchain to see if there are any tokens at any of those smart-contract addresses; (f) the service displays the results that list all of the tokens in smart-contract addresses derived from addresses in their wallet.
  3. The details of single vs multiple smart-contract addresses for the non-transferable NFTs are mostly just bookkeeping. In Daedalus and Yoroi, for instance, the user doesn’t see exactly which of their wallet addresses are holding which tokens. They just see the tokens are in the wallet. The wallet manages the details.

I’d be happy to discuss more directly.

4 Likes