Issuer Tracked Assets¶
Issuers may want to issue an asset that only uses Blockstream AMP to track ownership and transfers. With this type of asset, transfers are only restricted by requiring that the receiving destination comes from a Blockstream Green Managed Assets account, or one of the issuer’s own Liquid treasury addresses. Investor and category records within Blockstream AMP are not used for investor management, assignment and distribution. Although there may be external restrictions placed on the investors under this model, the lack of a Blockstream AMP Investor record means we refer to them as ‘Tracked’ assets, as their ownership is only tracked by Blockstream AMP, not restricted by investor categorization.
Note
Blockstream AMP will also let an issuer define an API endpoint for each asset that will handle the authorization of transfer requests. When an ‘issuer authorization endpoint’ has been specified against an asset, Blockstream AMP passes Blockstream Green transfer requests to the issuer for approval. The result from that is then returned to the Blockstream Green server. The process below outlines the default behaviour of tracked assets and assumes no use of the issuer authorization endpoint. If an issuer authorization endpoint has not been set, the issuer can only prevent someone from sending (through the use of a UTXO blacklist), but cannot prevent someone from receiving an asset.
The following process is applicable to Tracked Assets:
An issuer creates an asset flagged as not requiring investor registration.
The issuer creates a single Investor record and records their own Blockstream Green Managed Assets Account ID (GAID) against it.
The issuer assigns the full amount of the issued asset to their own investor record.
The assignment is distributed in full to the issuer’s investor record.
All further transfers to investors, and between investors, are done via Blockstream Green transactions sending the asset between Managed Assets accounts. The transfers are authorized and transaction data recorded by Blockstream AMP, making it available for reporting via Blockstream AMP.
The
/gaids/{gaid}/balance
and/gaids/{gaid}/balance/{assetUuid}
API endpoints, amongst others, can be used to view GAID balances.
Please refer to the definitions within the Investor-Restricted Assets section for explanations of the terminology used above, e.g. assignment and distributions.
An Asset is issued by the Blockstream AMP Server based upon an assets/issue API request by the issuer. The Asset, and any associated Reissuance Tokens, are issued directly to the address provided by the issuer. The initial issuance amounts can only be moved by the issuer’s Elements Core wallet.
Distributions of the asset can only be performed by the issuer’s Elements Core wallet. The issuer should create a single Investor record, representing themselves, and record their own Blockstream Green Managed Assets Account ID (GAID) against it. The token is then assigned to and then distributed to the issuer’s own investor record. From this point on, all transactions will be tracked and co-signed by the Blockstream Green server and the transactions recorded in Blockstream AMP to maintain ownership and transfer history.
The issuer can then send the asset from their own Blockstream Green Managed Assets wallet to the Blockstream Green Managed Assets wallets of their investors. Before the Blockstream Green server co-signs any transaction request it checks with Blockstream AMP to ensure the receiving Investor is authorized to receive the asset. In the case of Tracked assets, this authorization only consists of a check to make sure that the receiving wallet is a valid Blockstream Green Managed Assets account. If authorization is successful, the Blockstream Green server co-signs the transaction and it is broadcast on the Liquid network. The change in ownership is noted by Blockstream AMP.
Being the only one holding the wallet keys controlling the asset’s reissuance token, only the issuer can perform Reissuances. The Blockstream AMP API provides reissuance data (amount) to a Blockstream AMP Python client that runs against the issuer’s Elements node and actions the reissuance request. The Python script sends data back to Blockstream AMP so the distribution can be tracked. Once an asset has been reissued it can be distributed to investors through the process of assignment and distribution as above.
If an Investor wishes to send some of the token to another Investor’s wallet, and have the Blockstream Green server co-sign the transaction request, it checks with Blockstream AMP to ensure the receiving Investor is authorized to receive the asset. If authorization is successful, the Blockstream Green server co-signs the transaction and it is broadcast on the Liquid network. The change in ownership is noted by Blockstream AMP.
The process of redeeming a token begins with the Investor sending an amount of the token to the issuer by using one of the provided treasury addresses. The issuer then uses the Blockstream AMP Python script to burn the required amount. The Python script sends data back to Blockstream AMP so that changes to the circulating supply are recorded by Blockstream AMP.
Note
Steps 3 and 5 are essentially the same action, the diagram shows them separately to distinguish that the issuer’s own Blockstream Green wallet is used to receive the initial distribution. A single Blockstream AMP Python Script will perform all of the script tasks above.