Burning Assets

Burning BRC20 tokens

You can use endpoints available in our API to create PSBTs that can burn brc20 tokens and brc20prog contract deployment inscriptions.

POST https://api.ordinalsbot.com/create-burn-psbt

Create a ready to sign PSBT that will burn a BRC20 transfer inscription (or BRC20PROG contract deploy inscription) and make the burned transfer amount unspendable.

Request Body

Name
Type
Description

utxo*

String

Utxo that includes the inscription to be burned at the 0th sat location. - For BRC20, this would be a transfer inscription

- For BRC20PROG, this would be a contract deploy inscription

Transaction output should be in the following format "507d20a8db517abff4a3558e15f392ac4a7774f7d25c02fe6ec5ff6ca9df4ad2:0" asd Note: Ensure utxo being burned has enough postage to cover the burn transaction fees + changeAmount. Recommended size: 10000 sats.

burnAmount*

Integer

Amount of sats being burned in the OP_RETURN output min: 1, max: 10000

changeAmount*

Integer

Amount of sats being sent back to "paymentAddress" in the burn transaction. min: 330

burnType*

Enum

"BRC20" or "BRC20PROG" based on what type of inscription is being burned.

paymentAddress*

String

Bitcoin payment address where changeAmount will be sent back to.

paymentPublicKey*

String

Bitcoin payment public key where changeAmount will be sent back to.

ordinalPublicKey*

String

Ordinals address of the wallet where the inscription being burned is sent from.

ordinalAddress*

String

Ordinals public key of the wallet where the inscription being burned is sent from.

{
    // PSBT to be signed and published by user's wallet
    "psbtBase64": "cHNi...AAAAA",
    // same PSBT in hex format (for leather wallet)
    "psbtHex": "70736274ff01...47dc200000000",
    // input indices user will need to sign to create the transaction
    "paymentInputIndices": [],
    "ordinalInputIndices": [
        0
    ]
}

Here are sample burned BRC20 tokens on signet:

Burn transaction: https://mempool.space/signet/tx/05ab98b45fbaf41b62d1c678f27f0d8acf6d64c65a0a09be1dedc37f31fa04b9#vin=0

Burned inscription: https://signet-explorer.ordinalsbot.com/inscription/507d20a8db517abff4a3558e15f392ac4a7774f7d25c02fe6ec5ff6ca9df4ad2i0

Burned supply as seen on BRC20 indexer OPI API

/v1/brc20/ticker_info?ticker=trio
{
    "error": null,
    "result": {
        "id": "62",
        "original_tick": "TRIO",
        "tick": "trio",
        "max_supply": "21000000000000000000000000",
        "decimals": 18,
        "limit_per_mint": "21000000000000000000000000",
        "remaining_supply": "0",
        "burned_supply": "30000000000000000000", <<<---
        "is_self_mint": false,
        "deploy_inscription_id": "a2c59a69a75e619000e95679eeda3e1f3a7a5cfb696ba4a6bf7e5c631ef2f332i0",
        "block_height": 199892
    }
}

Burning Inscriptions & Runes

You can use endpoints available in our Token Pay product to create PSBTs that can burn inscriptions and runes. It's also possible to add metadata while burning inscriptions and runes.

Here's a test transaction on signet that burns in the same tx:

1- 1000 tokens of rune: OB•CZTGOXTKHHHEE

2- Inscription id: 5b09700e89333d4a986281a6e8a1261c72039f3daedbc0399f6cd5aa9da88e5di0

3- Adds some metadata that does certain things as per the destination protocol.

Resulting inscription will look like this:

Burned Rune and Inscription with Metadata

You can also use the Utils endpoints to finalize a psbt and broadcast with a higher than zero maxburnamount , this is required for any protocol based on burning bitcoin digital assets.

By default, you can not use a standard node to broadcast an OP_RETURN output that has bitcoin in it. Our nodes have maxburnamount=0.01 (1 million satoshis) pre-configured.

Developers should save signed psbt, finalize and submit via tokenpay endpoints.

Get in touch for any feedback regarding this service in #developers channel on our discord: https://discord.ordinalsbot.com

Last updated