In this tutorial we will create our own BRC20 token on the Bitcoin network.
What are BRC20 Tokens?
BRC20 tokens are created using the Bitcoin Ordinals protocol. The Ordinals protocol is a set of rules that govern how inscriptions are created, transferred and managed. Bitcoin and the ordinals protocol are open source, so anyone can use it to create their own BRC20 tokens.
BRC20 tokens are similar to ERC20 tokens in name only, they aren’t built around a smart contract in the same way that an Ethereum token is. JSON data is linked to a series of Satoshis (aka Sats, lowest denomination of Bitcoin 1 BTC = 100,000,000 Satoshis).
There is more information about how Bitcoin Ordinals and Taproot work in the blog post here:
The UniSat Wallet
The most widely used (and only at time of writing?) wallet that supports BRC20 tokens is UniSat. This is an open-source chrome plugin which is used to mint, hold and trade ordinal based digital assets on the Bitcoin network.
Main site: https://unisat.io/
Chrome plugin: https://chrome.google.com/webstore/detail/unisat-wallet/ppbibelpcjmhbdihakflkdcoccbgbkpo
Source code (including some a repo for ordinal utils): https://github.com/unisat-wallet
The chrome plugin will go through standard steps to set up a digital wallet including setting up a 12 word seed phrase.
Please double check what you are installing and beware of scams. If anything asks you to connect Metamask or claim an airdrop it’s likely a phishing site.
How To Mint BRC20 Tokens
From the UniSat.io website go to “Inscribe”, then click “Deploy” and fill in a unique token ticker symbol which must be 4 characters, a total supply for the maximum available amount of tokens and a limit per mint for an amount that each tx can mint.
From there it will generate the JSON data which will be inscribed to the network.
{
"p":"brc-20",
"op":"deploy",
"tick":"T35T",
"max":"1000000",
"lim":"10000"
}
You’ll then need to provide the receiver address using the wallet address for the UniSat wallet we set up in the last step. You’ll also need to pay for the transaction so it’s easiest to send a small amount of BTC to the UniSat wallet.
Note. BTC block times are 10mins so be patient when waiting for transactioins to arrive.
Once paid for the BRC20 token will be deployed.
Again the transaction will take some time to go through. While waiting you can copy the witness data from the transaction and run it through a hex > ascii converter to see the JSON data that is being inscribed to the Bitcoin network.
Once the token is deployed we can mint tokens using the same tool:
Trading BRC20 Tokens
There is an experimental marketplace for BRC20 tokens at: https://unisat.io/market
We can use this to buy blocks of BRC20 tokens.
The platform is a bit rough around the edges and there is little trading volume or liquidity and demand for much other than the ORDI token.
Conclusion
There are currently, at time of writing, nearly 20,000 BRC20 tokens already created with a total market cap of $500m USD.
The above shows the top 10 BRC20 tokens currently trading. From https://brc-20.io/
The demand for digital assets secured by the Bitcoin network is clear. Whether Bitcoin core developers will embrace this transition is another matter with some talk already taking place about developing blockers to inscription based metadata.
One interesting aspect which, to my knowledge, hasn’t been explored yet is the ability to host code in an inscription and then run it locally somewhere else. Here is a demo of running Javascript code which is inscribed in an ordinal and then imported directly from Unisat/Oridinals website as a JS embedded file.
Bitcoin needs utility and network demand for it to remain secure over the long-term as mining rewards decline and valuations hopefully increase. Ordinals and BRC20 tokens are a long way from perfect but they are a first glimpse at what Bitcoin based digital assets might look like in the future.
Currently for the price of $3 you can inscribe any data you wish to the Bitcoin network. That is compelling and interesting for developers.