There have been a few conversations in the past on slack about serialized tokens and how they could be accomplished. Unfortunately, all of that conversation history is lost. I think it is time to capture this idea in a forum post and get feedback from the community.

The general idea is to be able to assign each token a unique ID which is tracked through the tokens lifecycle.

Example Use

Joe the artist creates a new piece of artwork called “DigitalCurrency”.

Joe now wants to sell the ‘original’ artwork as well as 300 ‘prints’.

Joe also wants his buyers to be able to proove they legally own the artwork by giving them a digital token with the purchase.

Joe registers the JOESART asset

Joe registers the JOESART.DigitalCurrency subasset and indicates he wants serialized tokens

Joe issues 300 JOESART.DigitalCurrency tokens to represent his 300 prints.

When Joe sells the original artwork to a buyer, he also transfers ownership of the JOESART.DigitalCurrency to the buyer.

When Joe sells any of his 300 prints, he also sends the buyer a JOESART.DigitalCurrency token

The ‘original’ artwork owners can now proove they are the legal owner by checking that the owner owns the JOESART.DigitalCurrency asset on the blockchain

The ‘print’ artwork owners can now proove they are the legal owners by checking that the owner has the serialized token in their address.

I believe that the following sections of CP would need to be updated to accomplish this:

Balances

add a ‘token_ids’ field to the balances table to track token id(s)

Issuances

Adds unique_id TEXT field to ‘assets’ table (NULL=not serialized)

Add ‘serialized tokens’ option to first issuance only If issuing supply, set unique_id to # of tokens issued Create/Update record in balances table to indicate serial range (ex: ASSET | ADDRESS | 1-100) If NOT issuing supply, set unique_id to 0 (indicates serialized, but none issued yet)

When additional supply is issued Increase unique_id value by issuance amount Create/Update record in balances table to indicate serial range (ex: ASSET | ADDRESS | 101-200)



###Sends

send.compose

Check if asset has serialized tokens… if YES: Require user to specify unique token id(s) (also support specifying a range of ids) Check balances table and verify user has control of the tokens with the specified id(s)… if YES Send token and embed unique token id(s) into transaction (possibly in memo field?)



send.parse

Check balances table and verify that source has control of the tokens with the specified id(s)… if YES Update balances table to REMOVE specified id(s) from the SOURCE address (ASSET | SOURCE) Update balances table to ADD specified id(s) to the DESTINATION address (ASSET | DESTINATION)



###Orders

Require users to specify token id(s) when listing an order for a serialized token

???

##Questions

Should there be a limit on how many serialized tokens should be issued?

Should there be an XCP fee per serialized token issued? (there is definitely a higher operational cost)

I look forward to hearing some feedback