Shared ownership of an asset

I’m working on a platform where I’d like to create an asset and share it across multiple accounts by a specific percentage. For example, this asset is a baseball card with 4 rights holders owning 25% of the card, each. Is there a way to do that on Algorand? From what I’ve been reading you can’t, but just thought I would reach out to the community and ask in hopes I’m missing something.

If this is possible, will each of the 4 accounts that shares the ownership of this asset all have 1 asset each in its account or will it count as 25% of that asset in the account? If the former, I fear that 1000 assets per account becomes an issue with my use-case.

Ideally I want one person to have 1 account and be able to tokenize their baseball cards on the blockchain. With a max limit of 1000, I worry that I might need to create and maintain multiple accounts per user, which feels like overhead.

You could make 1 ASA for the card and give it 100 quantity, and then for each of the four give them a qty of 25.

Thanks for the reply @JasonW! I think I’ll try that out. The decimals parameter then applies to the 100 quantity that was created with the asset. So that if one of the 4 wanted to sell a percentage of their ownership share of the card they could, which would then make it divisible. I think I get that.

However, what about the 1 ASA, in which account is it stored in that example? One of the 4 or maybe another/parent account?

You can use any account to create the ASA. Note that the creator account is special in that it must always be able to receive tokens of this ASA (so it must keep a minimum balance of at least 0.2 Algo).

The reason for that is that the way to destroy the ASA is to send all the tokens to the ASA creator account and send a special transaction: https://developer.algorand.org/docs/features/asa/#destroying-an-asset

Hello @fabrice, thanks for the reply and the insight. My worry here is that we have a maximum limit of 1000 ASA’s per account. Given my usecase of tokenizing baseball cards, I fear that I’ll run into an issue with having to manage a number of different accounts once that 1000 limit has been reached.

So when you say any account can be used to create the ASA, are you saying that I can use any random account on the network so long as it hasn’t already reached the 1000 limit or are these “any accounts” ones that I’d have to create and manage on my own at the company level?

Sorry for all the questions, I’m just getting into Algorand and I’m trying to plan out the architecture of the application/usecase that I’m working on.

“Creating” an account on the Algorand blockchain is really just sending (at least 0.1) Algos to the address of the account.

You can use any account for which you can sign transactions (e.g., you know the secret key(s)), to create ASAs. The only constraint is that the minimum balance of an account that created x ASA must be 0.1+0.1 x Algos. And x must be at most 1000.

One difficult question is how to keep the secret keys for the accounts you created. I see three choices there:

  1. Just have an independent secret key / public key per account. This has the advantage of compartmentalizing the accounts, and may be useful from a security point of view.
  2. Use the way kmd works: you have a main seed, from this seed you derive the secret keys of many different accounts.
  3. Use a single secret key / public key, and make all the accounts a 1-out-of-2 multisig account, where the first key is your public key and the second key is a random key that nobody knows the secret key. When doing that you must ensure that this second key is indeed really random.