What BRC2.0 adds to BRC-20
BRC2.0 introduces four major capabilities:- Smart contracts: Deploy Solidity contracts inscribed on Bitcoin, with state transitions validated by indexers running EVM execution.
- Deposit/withdraw bridge: Move BRC-20 tokens into BRC2.0 contracts as ERC-20-compatible assets.
- Bitcoin precompiles: Native access to Bitcoin transaction verification, signature validation (BIP-322), and UTXO queries.
- Event system: Contract logs that applications can subscribe to for real-time updates.
Architecture and execution model
BRC2.0 indexers run an EVM-compatible execution environment alongside traditional BRC-20 state tracking. When a BRC2.0 operation is inscribed (deploy contract, call function, deposit tokens), indexers execute a deterministic pipeline:
This creates a deterministic state machine whose history is anchored in Bitcoin inscriptions but whose execution happens off-chain.
State separation
BRC2.0 maintains two distinct state domains:| Domain | Contents |
|---|---|
| BRC-20 state | Traditional token balances tracked by BRC-20 inscriptions |
| BRC2.0 contract state | EVM storage, contract accounts, and internal token balances |
Operation types
BRC2.0 defines three new operation types using the"brc20-prog" protocol identifier, beyond BRC-20’s deploy/mint/transfer.
Deploy
Deploy a Solidity contract to the BRC2.0 execution layer. Indexers execute the constructor and assign the contract an address derived from the inscription ID.Protocol identifier. Must equal
"brc20-prog".Operation type.
"deploy" or shorthand "d".Compiled Solidity deployment bytecode as a hex string. Generate with Hardhat, Foundry, or Remix.
Call
Invoke a function on a deployed contract. Indexers validate gas limits and update contract state accordingly.Operation type.
"call" or shorthand "c".Address of the deployed contract to call.
ABI-encoded calldata for the function invocation.
Transact
Combined deposit/withdraw with contract call — moves BRC-20 tokens into a contract and invokes a function in one operation. This is the primary pattern for DeFi interactions: deposit tokens, execute trade/stake/lend, and optionally withdraw results.Operation type.
"transact" or shorthand "t".ABI-encoded calldata including deposit parameters and function arguments.
Deposit and withdraw mechanics
BRC2.0 includes a built-in bridge for moving BRC-20 tokens into smart contracts.Deposit flow
Must equal
"deposit".Ticker of the BRC-20 token to deposit.
Amount to deposit as a stringified integer.
Withdraw flow
To withdraw, inscribe a withdraw operation and send it to any address other thanOP_RETURN. This credits the BRC-20 balance back to the sender.
Must equal
"brc20-module".Must equal
"withdraw".Ticker of the token to withdraw.
Amount to withdraw as a stringified integer.
Module identifier. Must equal
"BRC20PROG".This creates a trustless bridge — no multisig or validator set is required. Indexers enforce the rules deterministically based on inscriptions and EVM execution.
EVM compatibility
BRC2.0 aims for Solidity compatibility but has key differences from Ethereum.Supported
Supported
- Solidity syntax and features
- Standard library contracts (OpenZeppelin, etc.)
- Events and logs
- Storage operations (
SSTORE,SLOAD) - Standard opcodes (
ADD,MUL,CALL, etc.)
Modified behavior
Modified behavior
| Property | BRC2.0 behavior |
|---|---|
| Block time | ~10 minutes (Bitcoin’s block interval) |
block.number | Refers to Bitcoin block height |
block.timestamp | Bitcoin block time (less granular; can go backwards) |
| Gas model | Different costs due to indexer execution constraints |
| Address format | EVM addresses generated from Bitcoin-native addresses (bc1p...); these addresses cannot sign messages |
msg.value | Native ETH value does not exist; use token deposits instead |
Not supported
Not supported
- Native ETH (
msg.value) — use BRC-20 token deposits - Ethereum-style key-based message signing from contract-generated addresses
Gas model
BRC2.0 uses a Bitcoin-anchored gas model:- Gas limits prevent infinite loops during indexer execution.
- If execution exceeds the gas limit, the transaction reverts and state is not updated — standard EVM behavior.
- Gas costs differ from Ethereum due to indexer execution constraints.
Security model and trust assumptions
Immutability
Immutability
Contract bytecode inscribed on Bitcoin cannot be changed. All operations are permanently recorded.
Determinism
Determinism
All indexers must produce identical state given the same inscriptions. The protocol is a deterministic state machine.
Social consensus
Social consensus
Upgradability
Upgradability
Use proxy patterns (similar to Ethereum) for upgradeable contracts.
Precompile trust
Precompile trust
Bitcoin verification precompiles rely on correct implementation in indexer code.
Development workflow
The cycle time is slower than Ethereum due to Bitcoin’s block interval, but inscriptions provide permanent on-chain history of all interactions.
When to use BRC2.0 vs BRC-20
- Use BRC-20 when
- Use BRC2.0 when
- Simple token operations suffice (hold, send, receive)
- You want maximum compatibility with existing wallets and tools
- Lower complexity and gas costs are priorities
- No programmable logic is required