> For the complete documentation index, see [llms.txt](https://patches-1.gitbook.io/ordinals-standards-discussions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://patches-1.gitbook.io/ordinals-standards-discussions/ordinals-standards-proposals/brc-20.md).

# BRC-20

### Important Links:

Domo's initial Twitter Thread\
<https://twitter.com/domodata/status/1634247606262964228>

Domo's Gitbook:\
<https://domo-2.gitbook.io/brc-20-experiment/>

## BRC-20: An Experimental Standard

BRC-20 is an experimental protocol aimed at developing off-chain balance states on the Bitcoin network using a protocol called Ordinals.

> :warning: **Disclaimer:** Read every word if you decide to test. These will be worthless. Use at your own risk.

### Key Features

* Facilitates creation and management of balances on Bitcoin.
* Encourages exploration of alternative designs and optimizations.
* Provides Deploy, Mint, and Transfer functions.
* Open to improvements and enhancements from the community.

### Functions

#### Deploy

Initializes the BRC-20 but doesn't affect the state.

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

#### Mint

Provides the initial balance to the owner of the mint function inscription.

```json
{
  "p": "brc-20",
  "op": "mint",
  "tick": "ordi",
  "amt": "1000"
}
```

#### Transfer

Decreases the balance of the sender and increases that of the receiver.

```json
{
  "p": "brc-20",
  "op": "transfer",
  "tick": "ordi",
  "amt": "100"
}
```

### Balance Management

* To get a balance, deploy your own or mint from existing deployments.
* For transferring balances, inscribe the transfer function to an ordinal compatible wallet, ensuring that the transfer inscription details are valid.

#### Validity of Transfer Function

* A valid transfer function is required for transferring a balance.
* Validity depends on whether the inscription amount doesn't exceed the available balance when inscribed.
* If a user no longer wishes to transfer their transfer function, they can simply transfer the transfer function inscription to themselves to restore their available balance to the overall balance.

### Important Notes

* Do not send inscriptions to non-ordinal compatible wallet taproot addresses.
* Ensure transfer inscriptions are only used once.
* Minting transfer inscription to oneself first is necessary to prevent others from spending your balance.
* The system is limited to a maximum supply that cannot exceed the uint64\_max and the number of decimals cannot exceed 18.

### Open to Improvements

This protocol is open to improvements and design enhancements by anyone. The goal is to keep exploring the potential possibilities of Ordinals and establish a universally accepted standard in the future.
