What Is a BRC-20 Token?

BRC-20 is an experimental fungible token standard using ordinal inscriptions on Bitcoin.

Should Bitcoin only be used as digital gold, or should it support more sophisticated functionality? The introduction of ordinal NFTs sparked a new wave of interest in Bitcoin, with the community beginning to experiment with the potential of using the Bitcoin network as a way of storing immutable data.

One such novel experiment is an attempt to create fungible tokens natively on Bitcoin through a standard called BRC-20. BRC-20 tokens are a clever way to circumvent the programmability limitations of Bitcoin and create semi-fungible tokens using ordinal inscriptions.

In this post, we’ll explore BRC-20 tokens, examine how they work, and consider their viability as a token standard on Bitcoin.

What Are Bitcoin Ordinals?

First, a quick primer on ordinals. Ordinals enable data to be inscribed into individual satoshis on Bitcoin. They use a logical ordering system called ordinal theory to give each individual satoshi a unique number. Then, arbitrary data can be inscribed into each individual satoshi.

This data inscribed to satoshis can range from images, video, audio, text, and even entire applications such as a simplified version of the video game DOOM. As we’ll see below, BRC-20 tokens are essentially ordinal inscriptions with a specific type of text embedded into them, providing a set of rules and specifications for creating and managing the tokens. While inscribing text has been a popular early use case for Bitcoin NFTs, due to the nascency of the technology, new use cases may emerge over time.

Ordinal inscription types diagram
While many types of data can be inscribed using ordinals, inscribing text into individual satoshis is a growing use case. Source

Ordinals enabled NFTs to be created that are completely Bitcoin-native, don’t require layer-2 solutions, work without changes to the Bitcoin protocol, and are backward compatible with the network. Ordinal inscriptions quickly caught on as a way to store immutable information on the Bitcoin blockchain.

What Is the BRC-20 Token Standard?

Initially launched by anonymous developer domo on March 9, 2023, BRC-20 tokens use an experimental standard to create fungible tokens natively on Bitcoin. Notably, the BRC-20 standard does not use smart contracts like popular token standards on EVM blockchains—it enables users to store a script file on Bitcoin and use that to attribute tokens to individual satoshis. BRC-20 tokens embed JSON data into ordinal inscriptions to enable users to deploy, mint, and transfer tokens.

The first BRC-20 tokens created contained the following JSON data defining the token’s name, a limit of 1,000 tokens per mint, and a maximum number of 21 million tokens:

{ 
  "p": "brc-20",
  "op": "deploy",
  "tick": "ordi",
  "max": "21000000",
  "lim": "1000"
}

Even though BRC-20 tokens are just an experiment to create fungibility even according to their creator, they have sparked considerable interest within the Bitcoin community, and other tinkerers started to play around with creating their own BRC-20 tokens. Meanwhile, ordinals infrastructure providers, such as wallet services and marketplaces, have started to integrate BRC-20 to enable their users to mint and exchange BRC-20 tokens.

If nothing else, BRC-20 tokens are a prime example of the power of open-source communities and collaborative development. When a developer introduces a novel concept and makes it open-source, the idea can evolve and take on a life of its own thanks to other enthusiasts continuing to push the limits of the experiment. Such an open, collaborative environment can occasionally stimulate considerable advancements that push the frontier of the underlying technology.

Advantages and Limitations of BRC-20 Tokens

While BRC-20 tokens are considered fungible, it may be more accurate to call them semi-fungible since they can only be exchanged in set increments. 

To mint BRC-20 tokens, a user must create a mint JSON NFT defining the amount to be minted, then compete with others through a priority gas auction to have the chance to finalize the mint. To exchange a BRC-20 token natively on Bitcoin, the seller must create transfer NFTs to break up their original mint NFT into smaller chunks so that they can sell predefined batches of tokens. If a buyer is looking to purchase a specific amount of BRC-20 tokens, the buyer needs to find a seller looking to sell the exact amount of tokens they are looking to buy.

Additionally, to determine the BRC-20 balance of a wallet, users must run or trust an off-chain indexer that is running the ruleset interpreting the inscriptions—having a Bitcoin full node isn’t enough to achieve this task.

Here’s what the creator of BRC-20 has to say about the token standard in its documentation:

“This is just a fun experimental standard demonstrating that you can create off-chain balance states with inscriptions. It by no means should be considered THE standard for fungibility on bitcoin with ordinals, as I believe there are almost certainly better design choices and optimization improvements to be made.”—domo

BRC-20 vs. ERC-20

The comparison between BRC-20 and ERC-20 stands in name only. ERC-20 is a fungible token standard on Ethereum using smart contracts, while BRC-20 is a clever way to create semi-fungible tokens using ordinal inscriptions on Bitcoin. BRC-20 is simpler and more constrained than ERC-20 due to the purposely limited programmability of the Bitcoin blockchain. 

The Future of Tokens on Bitcoin

While not the first instance of attempting to represent assets on Bitcoin—with early experiments such as Colored Coins and more recent explorations such as Taro—BRC-20 is a novel way to create semi-fungible tokens natively on Bitcoin.

While even its own creator seems undecided about the long-term viability of BRC-20 as a token standard, the open-source developer community may seize this concept to evolve it further and push the boundaries of what’s possible with the scripting capabilities of Bitcoin.

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation