What is BRC20 Inscription? Part 1

BRC20

The emergence of the new BRC-20 standard for launching interchangeable tokens on the Bitcoin network literally blew up the community and triggered a fee hike not seen since the last bullrun. And although the first BRC-20 token was launched back on March 8th, this topic has gained hype only now, against the backdrop of the meme season on Ethereum. Today we’ll explain why memcoins have pamped Bitcoin tokens and how it works in general. It’s going to be a bit technical, but we’ll explain everything.

What is BRC-20?

BRC-20 is an attempt to create a solution to run interchangeable tokens like on Ethereum or any other blockchain that supports smart contracts. The new token standard was introduced by Twitter user domo on March 8, 2023.

The name BRC-20 is similar to the Ethereum interchangeable token standard, but that’s where the similarities end. The very abbreviation BRC stands for “Bitcoin Request for Comment”, and the new standard is based not on smart contracts, but on the already known to us Ordinals Protocol, which allowed us to launch the Bitcoin-NFT, which was high in March. Now let’s go into more detail.

How does it work?

As we know, Ordinals Protocol allows you to create ordinals for individual satoshis and attach data to them via TapRoot. BRC-20 uses this feature to create a system for deploying and accounting for tokens. Unlike ERC-20, BRC-20 does not support smart contracts and transactions are done via JavaScript Object Notation (JSON), which places limitations on how these tokens can be used. In essence, BRC-20 has only 3 functions:

Deploy: the initial deployment of the token. When deploying, the user can specify the maximum offer, the ticker of the new token, and the mint limit for a single wallet.

Mint: allows other users to receive an already deployed token to their Ordinal-compliant wallet.

Transfer: used to transfer BRC-20 tokens between wallets.

How to create tokens on Bitcoin?

A concrete example will help you better understand how it works. Let’s say a user wants to create his BRC-20 token, for this he needs to:

  1. Download an Ordinal and TapRoot compatible wallet and fund it.
  2. Create a new Ordinal, i.e. the same Bitcoin-NFT. Only instead of a file as an Inscription, you need to attach a few lines of JSON code to it. Here, for example, is the code for deploying the BRC-20 token $ordi:
  3. Next, this code is attached to a satoshi numbered via Ordinals Protocol and recorded on the blockchain. In essence, the satoshi becomes a kind of analog to a smart contract that records that the $ordi token has been deployed and is available for minting.

Now, let’s say another user wants to minte that very token. To do so, he needs to:

  1. Also have an Ordinal-compatible wallet with a balance.
  2. Create a new Ordinal and add an inscription in another code that specifies how many $ordi tokens he wants to commit:
  3. This Ordinal confirms the balance of $ordi tokens in the wallet. Although the entry itself, as before, is only available as a Satoshi inscription.

Lastly, let’s say a user wants to send his BRC-20 tokens to another wallet. To do so:

  1. He again creates a new Ordinal in which he adds the Transfer function code via an inscription specifying the number of tokens he wants to send:
  2. Now, he just needs to send this Ordinal with an Inscription to the wallet to which he wants to transfer BRC-20 tokens.
  3. If the Inscription is valid, i.e. the amount of tokens transferred does not exceed the amount of tokens on the user’s balance, the transaction is considered successful after the Ordinal is sent.

Here comes the question: how does the protocol keep track of how many tokens you can send, it’s not even a transaction in its usual sense? The algorithm tracks the transactions with Ordinals that have taken place on the wallet and deduces the current balance based on them. For example:

You created an Ordinal, which you used to commit 1000 tokens X. Then you created another Ordinal with the transfer function and sent it to another wallet. Since sending an Ordinal is itself a public transaction, the protocol can read the contents of the inscription and see that your current balance is 1000 $ordi – 500 $ordi that you transferred with the transfer-Ordinal. That is, you will not be able to transfer the transfer-Ordinal a second time if the amount in the inscription is greater than $500 $ordi.

In simple terms, a BRC-20 is a ledger within the Bitcoin ledger that uses inscriptions attached to satoshis to store its records. It’s about the same as if you were handing people dollar bills with a pencil on them that says that along with that dollar, the holder is handing over 500 pieces of wrappers to the recipient. Only the entire history of the transfer of that dollar would be recorded in a ledger and could be traced back to the creation of the dollar inscription itself.

What kind of wallet would be suitable for BRC-20?

The creator of BRC-20 himself points out that it is only an experimental launch of the interchangeable token standard in the Bitcoin network and the design is far from perfect. However, users already have 2 tools to interact with BRC-20:

  1. Any Ordinal-compatible wallet: Some examples we dealt with in our article on Bitcoin-NFT. Only the inscriptions themselves will have to be done manually, i.e. copy the code for the required function from GitBook and enter the amounts and tickers yourself.
  2. Unisat wallet: this is the first service that deployed a convenient user interface for working with BRC-20. No code, just buttons and forms to fill in data.

That’s it for now. The BRC-20 infrastructure is in its infancy, despite the general hype around the technology. But probably, as in the case of Bitcoin NFT, new solutions and platforms will appear in the near future, so it is not excluded that soon even a beginner will be able to work with BRC-20.