AmpTokenization
Asset Issuance
How to issue a Liquid asset, understand reissuance tokens, and model supply-management choices.
Complete Setup and Installation first.
This guide uses:
- the request helper from Making Requests
uuid
You also need:
- an AMP wallet on Liquid
- enough L-BTC to pay transaction fees
What this operation does
Asset issuance creates the first supply of a Liquid asset and optionally creates reissuance tokens that let you mint more supply later.
The two core supply models are:
- fixed supply: set
reissue_amountto0 - reissuable supply: set
reissue_amountabove0
Issue a new asset
import { v4 as uuidv4 } from 'uuid'
const issueResult = await broadcastRequest({
action: 'add',
resource: `/wallets/${walletId}/spend-requests`,
details: {
id: uuidv4(),
wallet_id: walletId,
tx_type: 'issue',
request: {
issue_amount: 100000,
reissue_amount: 1,
coingecko_id: 'bitcoin',
contract: {
name: 'My Token',
ticker: 'MTK',
domain: 'mytoken.example.com',
version: 0,
precision: 8,
},
},
},
})Key fields
| Field | Meaning |
|---|---|
issue_amount | Initial supply to create |
reissue_amount | Number of reissuance tokens to create |
contract.name | Human-readable asset name |
contract.ticker | Asset symbol |
contract.domain | Verification domain |
contract.precision | Number of decimal places, from 0 to 8 |
Understanding reissuance
If reissue_amount is greater than 0, the issuance also creates reissuance authority that can later mint more supply.
| Supply model | Configuration | Result |
|---|---|---|
| Fixed supply | reissue_amount: 0 | No later minting path |
| Reissuable | reissue_amount: 1 | One active reissuance token |
| Split authority | reissue_amount: >1 | Reissuance authority can be distributed across wallets |
Reissue more supply
const reissueResult = await broadcastRequest({
action: 'add',
resource: `/wallets/${walletId}/spend-requests`,
details: {
id: uuidv4(),
wallet_id: walletId,
tx_type: 'reissue',
request: {
asset_id: assetId,
amount: 25000,
},
},
})Use the asset ID when reissuing. Do not pass the reissuance token ID in the asset_id field.
Transfer reissuance authority
The wallet holding the reissuance token controls future minting. Moving that token moves minting authority.
await broadcastRequest({
action: 'add',
resource: `/wallets/${issuerWalletId}/spend-requests`,
details: {
id: uuidv4(),
wallet_id: issuerWalletId,
tx_type: 'send',
request: {
asset_id: reissuanceTokenId,
recipients: [
{
amount: 1,
recipient: { type: 'wallet', value: treasuryWalletId },
},
],
},
},
})