Transferring certificates between users

There are many reasons why users would want to transfer certificates to another user that do not involve trading. Organizations might have a dedicated user account for claiming. In this case, traders have to transfer the purchased certificates to this account for them to be claimed. Or a big corporate buys certificates and wants to gift them to its suppliers. There are many more scenarios where it would be useful to transfer certificates to another user, both within the organization and to external users. But simple transfers e.g. for accounting reasons cannot be confused with trading of certificates. There is no value being exchanged and the certificates are simply moved from one account to the other.

If volumes are public, certificates can be transferred between users without any additional actions needed. This is not the case for certificates with hidden volumes. To prevent double spending, there are two ways to transfer private certificates between users. First, users can request to make their private certificates public. Once they are made public, they can be transferred because it is impossible for the owner to double spend them. If volumes should stay private, the validity of the transaction has to be verified by the issuer. If the issuer approves the transfer, the certificates are moved to the recipient account without disclosing sensitive information. The recipient is now the owner of the certificates which gives him the permission to sell or claim them.

Requirements

  1. Users should be able to transfer certificates to any registered user

  2. Users should only be able to transfer the number of certificates that they own or less

  3. Users should not be able to double spend their certificates

  4. Users should be able to make their private certificates public

  5. Users should be able to make their public certificates private

  6. Users should be able to transfer certificates without disclosing volume information