TLDR: Token issuers on Spark can permanently destroy tokens by burning them, which removes them from circulation. This is accomplished by the issuer signing a burn transaction that updates the token state with Spark Operators, ensuring the total supply is reduced and the burned tokens can never be recovered.
Overview
Burning on Spark is the process of permanently removing tokens from circulation. Unlike transfers or freezes, burning is irreversible—once tokens are burned, they cannot be recovered or reissued. This mechanism gives issuers control over their token’s total supply and is commonly used for deflationary tokenomics, redemption processes, or correcting mistakes.
How It Works
When an issuer wants to burn tokens, they initiate a burn transaction by signing a request with their Issuer Private Key. This request specifies the Token Transaction Outputs (TTXOs) to be burned and is sent to the Spark Operator group managing that token.
The Spark Operators validate the burn request by:
- Verifying the issuer’s signature
- Confirming the issuer owns the tokens being burned
- Checking that the tokens are not frozen
- Ensuring the burn doesn’t violate any protocol rules
Once validated, the SOs update the token state to mark those TTXOs as burned, permanently removing them from the circulating supply. The burn is then propagated across the network to ensure all nodes have a consistent view of the token’s supply.
Key Properties
- Irreversible: Burned tokens cannot be recovered
- Supply Reduction: The total supply is permanently decreased
- Issuer-Only: Only the token issuer can burn tokens (from their own balance)
- Auditable: All burns are recorded in the token’s transaction history
Common Use Cases
- Deflationary Mechanics: Reducing supply to increase scarcity
- Redemption Events: Burning tokens when users redeem for fiat or other assets
- Error Correction: Removing tokens that were minted in error
- Buyback Programs: Issuers buying back and burning tokens from circulation
Burning as a Regular Wallet Holder
While the burnTokens() method is only available in the Issuer SDK, regular wallet holders can burn tokens by transferring them to the Spark burn address:
spark1pgssyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszykl0d2
Tokens sent to this address are permanently removed from circulation and cannot be recovered.
// Burn tokens by sending to burn address
const BURN_ADDRESS = "spark1pgssyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszykl0d2";
await wallet.transferTokens({
tokenIdentifier: "btkn1...",
tokenAmount: 1000n,
receiverSparkAddress: BURN_ADDRESS
});
Burning is irreversible. Always double-check the amount before sending tokens to the burn address.