BRC-20s Token Standard
Introduction
We love the simplicity of BRC-20, but what if we want more utilities from it. So Sync Protocol is striving to link BRC-20 tokens to multiple chains, enhancing their functionality without compromising the BRC-20 standard's simplicity or contributing to congestion on the Bitcoin network.
Therefore, we propose BRC-20S as a solution for syncing and swapping cross-chain BRC-20 tokens seamlessly.
brc-20 Token Standard
Traditional BRC-20 tokens, while beautifully simple, can only be deployed, minted, and transferred within the confines of the BRC-20 standard. This simplicity, unfortunately, becomes a limitation when it comes to expanding utilities and scalability.

brc-20s Token Standard
We are introducing BRC-20S tokens as a bridge to enable the swapping of BRC-20 tokens for ETH, SOL, SUI, and others. This allows users to convert their BRC-20 tokens into BRC-20S tokens and then access multiple chains for utilizing features like governance, yield farming, and more.

Technical Prerequisite
- Custom indexer that validates the BRC-20S mint, transfer, and redeem operations om Bitcoin, as well as the contract state on the SOURCE chain.
- Source chain contract that handles mint and redeem operations on the SOURCE chain.
- BTC-Relay: a BTC-light client implemented as a smart contract on the "source" chain, capable of verifying of inclusion of BTC transactions and parsing them. See e.g. here for a specification, here for a PoC implementation on Ethereum, and here for an audited production implementation in Rust on Interlay.
Protocol
Deploy BRC-20S Toekn on bitcoin The deploy operation stays similar to that of BRC-20 tokens, with minor modifications.
- max field is made optional: max supply is defined on the source chain. Specifying it in the BRC-20s deployment is hence optional but can serve as a failsafe.
- lim field introduced in the BRC-20 standard is removed for scalability reasons. Since BRC-21 tokens follow strict mint and redeem rules, there is no need to impose limits on how many tokens can be minted in a single transaction.
- src field added to specify the chain from which we are "importing" the tokens. Can be a string such as "Ethereum" or a unique integer identifier (would require an agreed-upon directory)
- id field added to act as unique identifier of the token on the source chain, e.g. the ERC-20 contract address on Ethereum. Alternatively, this can be a unique ID assigned to the ERC-20 token by CONTRACT
Definitions
CHAIN: The originating chain, for example, Ethereum or Interlay.COIN: A token generated or hosted on the source chain, designed to be minted as a BRC-20 token on Bitcoin.SCOIN: The BRC-20S version of the COIN.CONTRACT: A smart contract on the CHAIN tasked with handling the minting and redemption processes of COIN on the CHAIN.BTC-RELAY: A smart contract on the CHAIN capable of verifying the Bitcoin main chain (including difficulty adjustments), validating transaction inclusions, and parsing transaction data (specifically, extracting the BRC-21S witness data from P2TR transactions).
Deploy on SOURCE chain
The deployment procedure depends on the implementation of the source chain. Requirements of the CONTRACT smart contract are:
- Lock COIN token and emit "Lock" event
- Unlock COIN token if and only iff a corresponding "redeem" operation was included in a transaction on Bitcoin. Uses BTC-RELAY to verify and validate (i.e. parse) the corresponding Bitcoin transaction.
This assumes a BTC-RELAY contract is already deployed on CHAIN or that CHAIN has built-in Bitcoin light client functionality. For requirements, see here.
Deploy brc-20s token
The "deploy" operation is defined as follows:
{
"p": "brc-20s",
"op": "deploy",
"tick": "ORDI", //has to be the same with the original brc-20 token
"max": "210000000", //has to be same as the original brc-20 token
"lim": "1000", //optimal
"id": 1, //Identifier: inscription number. Subsequent operations must use inscription number
“src”: “CHAIN”,
“contract”: “contract-address-on-CHAIN”
}Example: Depoly brc-20s tokens for ORDI.
Sync brc-20 token to brc-20s token
Inscribe a BRC-20S sync operation on Bitcoin, specifying the amount to be synced in the amt field and the source chain in the src field, The "sync" operation is defined as follows:
{
"p": "brc-20s",
"op": "sync",
"tick": "ordi",
"amt": "1000",
“dest”: “CHAIN”,
“acc”: “account-on-CHAIN”
}e.g. 1000 ORDI from Ethereum Transfer 1000 ORDI tokens on Bitcoin to a bitcoin address created as brc-20s token deployer and get 1000 ORDI on brc-20s.
Swap brc-20s token to CHAIN token
{
"p": "brc-21",
"op": "redeem",
"tick": "bCOIN",
"amt": "1000",
“dest”: “CHAIN”,
“acc”: “account-on-CHAIN”
"address": "address to receive the swap the token"
}e.g. Transfer 1000 ORDI brc-20s tokens on Bitcoin to a bitcoin address created as brc-20s token deployer and swap X ORDI on CHAIN.
| Key | Required? | Description |
|---|---|---|
| p | yes | Protocol: Helps other systems identify and process brc-20 events |
| op | yes | |
| tick | yes | |
| max | yes | |
| lim | no | |
| src | yes | |
| contract | yes |