Blockstream AMP allows issuers to schedule the periodic transfer of assets to eligible owners. These assets can represent shares or other tokens. Blockstream AMP also allows issuers to calculate payments due by way of dividends or rewards.
This page outlines the ways in which ownership of such assets are managed within Blockstream AMP and outlines the process an issuer can take to handle vesting shares, dividend payouts, or run other types of reward and payout schemes.
It also provides a recap of the asset issuance, assignment, and distribution processes.
The Issuer Tracked Asset type doesn’t place any restrictions on the recipient and there is no need for the issuer to register users in advance. Ownership can be taken by anyone who receives the asset to their Blockstream Green wallet’s ‘Managed Assets’ account. Transfers of the asset between Blockstream Green users is tracked by Blockstream AMP using the user’s Blockstream Green Account ID (GAID). The issuer can view GAID balances for their asset, while the transactions remain private on the Liquid blockchain.
The Transfer-Restricted Asset type requires that the issuer registers the GAID of any potential owners within Blockstream AMP prior to the user being able to receive or transact it. This asset type can be used to issue and manage security tokens, amongst other things. This asset type also tracks and reports on ownership by GAID.
Blockstream AMP issues new assets directly to the issuer’s Elements/Liquid wallet.
For both asset types, an issuer must perform an assignment and then distribution of an amount of the asset in order for the asset to begin circulating amongst users.
This process is the way in which most users will receive a Transfer-Restricted Asset from the issuer.
For the Issuer-Tracked Asset type, this process is still required but the initial distribution is only made to the issuer’s own Blockstream Green wallet, whereupon the issuer can then send out the asset from there to users when they need to. This initial distribution to the issuer’s own Blockstream Green wallet is a required step as it means the asset starts off in a Blockstream Green wallet, enabling the subsequent tracking of the asset as it is sent to users or between users.
The process of assignment and distribution is summarized below.
- The issuer uses the Blockstream AMP API to assign an amount of the issued asset to one or more Blockstream AMP registered users. For Issuer-Tracked Assets this will only be done for one user, the issuer’s own registered user record and GAID. An assignment does not change ownership on the Liquid blockchain, it is an entry in Blockstream AMP that reserves an amount of the asset for a given user.
- When ready, the issuer marks the assignment as ‘ready to distribute’ using the Blockstream AMP API.
- The issuer calls the Blockstream AMP API asking for the distribution data. This data contains all that is needed for their Elements node to transfer the given amounts from the issuer’s Elements node wallet to the Blockstream Green addresses of the assigned users (derived by Blockstream AMP from the provided GAID).
- The issuer runs a distribution script (provided by Blockstream) that uses this data to broadcast the relevant transaction on the Liquid network. The script notifies Blockstream AMP of the changes in ownership so that ownership remains tracked.
Blockstream AMP is notified by the Blockstream Green server every time a user tries to transact a Blockstream AMP issued asset.
If the asset is a Transfer-Restricted Asset, Blockstream AMP will check that the recipient’s GAID is registered and that it meets any further category requirements specified by the issuer. If it does, the transfer is approved and the Blockstream Green server broadcasts the transaction and Blockstream AMP records the change in ownership.
If the asset is an Issuer-Tracked Asset, Blockstream AMP will only check that the recipient address is derived from a Blockstream Green Account ID (GAID) and, if so, record the change in ownership and approve the transaction.
Blockstream AMP uses the assignment and distribution process outlined above to enable the scheduled vesting of shares, represented by the issued asset.
It is possible to make asset assignments depend on a certain point in time before they can be distributed, a feature which is used to allow the scheduling of assignments becoming due to be distributed on a scheduled basis.
A user can have multiple assignments against them for the same asset, all with dates where they become eligible for distribution. This enables concepts such as vesting shares to be set up using Blockstream AMP, whereby an issuer can define a vesting schedule for the automated distribution of assets to their assigned owners.
Blockstream AMP provides an issuer with the ability to view point-in-time ownership information, enabling the calculation of dividend payments, or other non-dividend payments, such as reward schemes, to be made by the issuer.
Dividend or reward data is not dependent on the distributions having been done via the scheduling of assignments, and can be run at any time by an issuer to see which Blockstream Green account (GAID) owns how much of their asset.
Payment of the dividends, or other rewards due, must be done outside of Blockstream AMP, but the transaction details can be recorded using the API. This provides the issuer payment flexibility (L-BTC, BTC, USDt etc) while keeping the payment history in a central repository.
For more information on the API endpoints to use to carry out this process, please contact Blockstream, who will provide you with details and examples.
Issuers can, at any point, view how many vested and not yet vested shares there are, how many have been distributed.
The number of days before the vesting that the email is sent out is configurable by Blockstream for the issuer account. The default is 3 days.
The issuer may choose to distribute the tokens at a later point in time and not on the date they vested. As email delivery is not a guaranteed process, the Issuer should look to manage the vesting schedules outside Blockstream AMP as a compliment to checking the API on a regular basis.
It is possible that a registered user may have additional vesting shares allocated to them which are on a different vesting schedule than the original. In this instance, the new assignments should be recorded separately, so an investor can have more than one set of entries for vesting shares. Example: an Investor is allocated 100 shares where 10 vest every 6 months starting on the 1st June 2020. Later they are allocated another 50 where 25 vest every 12 months starting on the 1st August 2020. Additionally, if an issuer wants to amend an existing vesting schedule they can reclaim the amount that has yet to vest and reallocate under a new schedule, possibly with a new amount as well. So editing is not needed as the issuer essentially ‘reclaims and reallocates’ under the new properties.
Dividends themselves will not be paid out via Blockstream AMP. Blockstream AMP only provides the issuer with the ability to calculate and then record dividend payments, should they choose to keep track of them within Blockstream AMP.
Blockstream AMP will make available the data needed for the issuer to calculate and send out the dividends themselves. For example, the data will allow the issuer to see that Alice vested and received 10 tokens on 1st April 2021. Bob vested and received 5 tokens on 10th April 2021 and that they both held the tokens on the 11th April 2020 when a dividend payment was due.
Vested tokens can be in two states that entitle the registered user to a dividend payment, so data of these are provided via the API:
- Vested (assignment made) but not distributed yet.
- Vested (assignment made) and distributed.
Dividend payment amounts are to be calculated by the issuer based upon the amount of vested tokens held by each Issuer on the dividend due date. Dividends will be paid in whatever form the issuer chooses (e.g. in USD, EUR, BTC, USDt). Dividend payments themselves will therefore not be handled as tracked assets by Blockstream AMP, only recorded as issuer-defined reference data, should the issuer choose to do so.
In this scenario the issuer wishes to view who owns what balance of the token at any given point of time, calculate who is due what reward and record the subsequent payment.
The tokens/assets are likely issued as ‘Issuer Tracked Assets’ and therefore there are no ‘registered user’ records within Blockstream AMP, as there would be for the vesting shares example above. The user does however need to use a Blockstream Green wallet, be that mobile, desktop or GDK based. This does not have to be the case, as the scheme may require that users register up front. For this example we will consider that this is not the case and that anyone is free to receive the asset.
Token/asset in this context refers to the same thing, a Blockstream AMP issued asset representing a security token.
Alice (an Investor) is assigned 100 shares of a token as vesting shares. Every 6 months she will vest 10 tokens. The first due date for a vesting of shares is 1st April 2020. Alice, along with everyone else who holds the token, will be paid dividends in L-BTC once a year on a set date.
- Issues the asset.
- Creates a registered user record for Alice.
- Creates 10 assignments for Alice, totaling 100 tokens. Each assignment is for 10 tokens and the dates of each assignment are each 6 months apart, with the first vest due on 1st April 2020.
- Periodically checks the Blockstream AMP API to see if any of the assignments of vesting shares have vested and become ready to distribute. The issuer will also receive an email notification when any assignment comes due to vest within an issuer-specified notification period (e.g. 3 days before each assignment vests).
- On each vesting date, notifies the issuer (via email) that Alice has vested some of the asset. The transition of the 10 tokens from assigned, not yet vested shares to assigned and ready to distribute tokens happens automatically within Blockstream AMP on the relevant dates and leaves the vested shares as ready to distribute . Distribution is done using the Blockstream AMP API and the issuer’s Elements/Liquid node. They do not have to be distributed though and could remain in a status ready for distribution until the issuer decides to distribute them on the Liquid network.
- If the registered user is not able to receive the distribution (e.g. doesn’t have a Blockstream Green Account ID (GAID) registered) the assignment is still made but the distribution itself can’t be made until a GAID is added to those registered user records.
- After receiving the notification email, or through the periodic API call, the issuer can choose to action the vesting by calling the Blockstream AMP API, which returns distribution data that can be used to distribute the asset to Alice.
- Distribution itself (i.e. the sending of asset amounts to the user over the Liquid network) is done using a script provided by Blockstream. This script uses Blockstream AMP data and passes it to Elements, distributing the asset to Alice and sending transaction data back to Blockstream AMP so that the distribution can be tracked and reported on.
- At any point in time, the issuer can report on asset ownership and use that data to calculate and pay dividends outside of Blockstream AMP. To avoid changes to the underlying data being made while calculating this, the issuer can use the Blockstream AMP API to temporarily suspend all transactions through Blockstream Green for that asset. Afterwards, the Blockstream AMP API can be used to unlock the asset, allowing transactions to take place again.
- The issuer can then record any dividend payments they made using the Blockstream AMP API as reference data (i.e. not tracked by Blockstream AMP, just stored). This data is stored in a free-format text field as it will differ by Issuer, depending on their choice of what to record and how to manage payouts.
If Alice decides to opt out of the scheme then the issuer can delete any remaining, outstanding assignments that have not yet vested. By doing this the issuer essentially ‘reclaims’ the currently not yet vested shares from the user and they return as available balance that can be assigned to another user if need be.
On Jan 1st 2021 “ABCompany” issues a token “ABC” using Blockstream AMP. The token represents shares in ABCompany that will pay out a dividend to any holders at the time of the dividend payout. The dividend payout date is the same for everyone who holds it. They decide to pay a dividend of 0.01 BTC to everyone who holds a vested share on the 1st December each year.
Initially ABCompany issues and fully distributed 100 of these tokens to initial investors. These are regular distributions within Blockstream AMP and are assigned and then distributed using Blockstream AMP as current functionality allows.
They then issue a further 100 tokens that they intend to allocate as vesting shares. They have two initial investors that will receive shares this way, Alice and Bob.
The issuer uses the Blockstream AMP API to:
- Allocate Alice 24 of the shares on a schedule that will vest 2 shares every month, starting on the 1st Feb 2021. They create 12 assignment entries to cover this schedule. Alice has a Green wallet set up as she wants to take wallet control of the shares when they vest and so a GAID is recorded for Alice. As Alice has also provided the issuer with a Bitcoin address to receive her dividend payouts to, the issuer also records this data in their own records.
- Allocate Bob 12 of the shares on a schedule that will vest 1 every month, starting on the 20th Feb 2021. They create 12 assignment entries to cover this schedule. Bob does not have a Green wallet set up at this point and he is not interested in taking wallet control of the shares when they vest. Bob has yet to provide the issuer with a Bitcoin address to receive his dividend payouts to.
The issuer uses the API to check that the vesting schedules have been set up correctly. They see that:
- Alice has 24 allocated and not yet vested shares across 12 assignments. She was allocated them on a schedule with a start date of 1st Feb 2021. On the first vest on 1st March 2021 she will vest an amount of 2. She has recorded a GAID.
- Bob has 12 allocated and not yet vested shares across 12 assignments. He was allocated them on a schedule with a start date of 20th Feb 2021. On the first vest on 20th March 2021 he will vest an amount of 1.
- There are 200 tokens issued. 100 have been distributed (initial distribution), 36 have been allocated as vesting shares and 64 remain in the treasury.
On the 1st March the Issuer checks the API (they will have received an email notification prior to this) and sees that Alice has vested 2 shares. They now show as ‘ready to distribute’ assignments. As Alice has expressed interest in receiving her vested shares to her wallet, the issuer performs a distribution to an address derived by Blockstream AMP from the GAID she previously provided. The vested tokens are distributed to Alice’s wallet by the issuer using the script provided by Blockstream.
On the 20th March the Issuer checks the API and sees that Bob has vested 1 share. It shows as a ‘ready to distribute assignment’. They also received an email when this event occurred. As Bob has not expressed interest in receiving his vested shares to his wallet (and has not provided a GAID for the purpose) the issuer cannot perform distribution to Bob. This is fine by Bob as he knows that he will still earn dividends from the share token he has vested.
Before 1st December 2021 the issuer prepares to pay out dividends on the vested shares. They see that Bob has not provided them with any information of his Bitcoin address and so ask him to provide one.
On the 1st December 2021 the issuer makes a 0.002 BTC payment to Alice using the data provided by the Blockstream AMP API along with the BTC address they previously obtained from her. The issuer uses the Blockstream AMP API to record the dividend payout for her using the free format field.
The issuer does the same for Bob once he has provided them with a GAID to receive the tokens he vested. The issuer, for whatever reason, then decides that Bob deserves to be allocated more vesting shares, in addition to those he is already entitled to. They add an additional allocation to Bob of 12 shares where 1 vests on the 3rd of each month starting 1st March 2022. Bob is now on two schedules effectively, receiving on the 20th and 1st of the months after the start dates. He has 24 assignment entries in total now as a result.
Note: each assignment created has a vesting_timestamp field (seconds since the Unix Epoch) that can be set to schedule the vesting. Please note that our server uses the UTC timezone when then displaying the
vesting_datetime for any assignments created. You may need to consider things like bank holidays etc when you calculate the vesting_timestamp to use.
In this example, ‘asset’ refers to the token that is being used to represent the right to claim a reward from the issuer on any given due date.
“Alice (a Blockstream Green user) receives 100 of the asset after buying them from an exchange. She may also have chosen to buy them directly from the issuer or in a private/OTC trade. On the reward due date, the issuer calculates the amount that Alice is due to receive by way of reward for holding 100 of the asset.”
- Buys 100 of the asset from the exchange.
- Withdraws the asset to her Blockstream Green wallet.
- Calls the Blockstream API and gets data for all holders of the asset and pays out to holders (like Alice) who hold the asset in their own wallets.
- If the issuer is also an exchange, the exchange might pay directly into the accounts of exchange users who own the asset.
- Record the payments made (or a reference to the data they hold themselves that will point back to the payments) within Blockstream AMP.
For users who hold the asset on an exchange, Blockstream AMP will not be able to determine ownership, as the last transaction on the Liquid network will have been a send to an address derived from the exchanges GAID. The exchange and issuer will have to determine a process for payments in such cases.
Updated about 1 year ago