> 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-structure-and-standards/sample-oip-002-for-brc20.md).

# Sample OIP-002 for BRC20

**OIP: 002**\
**Title: BRC-20: An Experimental Standard for Developing Off-Chain Balance States on the Bitcoin Network using Ordinals**\
**Author: Patches (@TMCC\_Patches)**\
**Discussions-To:** \
**Status: Draft**\
**Type: Standards Track**\
**Created: 2023-06-13**\
**Post-History:**\
**Replaces:**\
**Superseded-By:**\
**Resolution:**

***

### **Abstract**

BRC-20 is an experimental protocol aimed at developing off-chain balance states on the Bitcoin network using a protocol called Ordinals. This proposal lays out the protocol's key features and functions, and invites improvements and enhancements from the community.

### **Motivation**

The purpose of BRC-20 is to facilitate the creation and management of balances on Bitcoin, and to encourage exploration of alternative designs and optimizations. It provides `Deploy`, `Mint`, and `Transfer` functions and is open to improvements and enhancements from the community.

### **Specification**

#### **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.

### **Rationale**

The system is limited to a maximum supply that cannot exceed the uint64\_max and the number of decimals cannot exceed 18. Minting transfer inscription to oneself first is necessary to prevent others from spending your balance.

### **Backwards Compatibility**

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.

### **References**

* Domo's initial Twitter Thread: [Twitter Link](https://twitter.com/domodata/status/1634247606262964228)
* Domo's Gitbook: [Gitbook Link](https://domo-2.gitbook.io/brc-20-experiment/)
