The total amount of tokens cannot change, once the asset is created.
But you can keep non-circulating tokens in the reserve
address.
Minting is done by moving tokens from the reserve
address to the address of your choice.
Burning is the opposite operation and is reversible (once burnt, an asset can be minted again).
If you want to burn tokens in a way that is non-reversible, you can send them to a special ASC1 contract address (to be designed by you). Note that block explorer may not realize that the smart contract actually burns the tokens, and may not display the right circulation. I think you can work around this issue by making the reserve address a smartly designed contract account that allows non-reversible burning.
Note that the reserve
address does not have extra “power” in Algorand, it is purely informational. It just provides a way for block explorers to know the circulation (i.e., total - reserve
) of an asset.
The only fields that the manager
address can change are the ones specified in https://developer.algorand.org/docs/features/asa/#mutable-asset-parameters