blockspace.wiki

BRC-20

Tick ledgers written as JSON inscriptions, and since 2026-08-11 also on bare OP_RETURN. A BRC-20 mint has two claimants, the sat and the tick. BRC-100 is covered here too.

BRC-20 2.25 % of the chain's bytes in Book A, as of block 972,299, 2026-10-20 09:30:48 UTC

A BRC-20 tick is a fungible token named by its tick. BTI's token table says a tick is a token because its units transfer by themselves under the protocol's ledger rules. The inscription that carries an operation is not the token. Its identity is the case-folded tick.

How BRC-20 puts data on Bitcoin #

BRC-20 operations are JSON bodies. Most are inscriptions, inside ord's witness envelope. Case 10 of the BTI case studies is the first BRC-20 mint, at block 779,833, one block after the ordi deploy. Its body is 71 bytes of JSON in a 338-byte reveal. Case 3's body reads {"p":"brc-20","op":"mint","tick":"牛b","amt":"1000"}, 53 bytes.

A second population writes the same JSON shape, {"p":"brc-20"}, into a bare OP_RETURN output. The census marks it by the prefix 7b227022 ({"p). When BTI gated them in on 2026-08-11, the full decode found 652,884 parseable carriers, 36.3 MB in the adapters table's figure.

How BTI attributes the bytes #

BRC-20 has two carriers and one namespace, and three sources:

source kind trust what it records
opi-brc20 metaprotocol adapter on the OPI BRC-20 ledger derived the inscribed ledger: deploys, mints, transfers
brc20-opreturn native decoder native the OP_RETURN population, with BTI's replay as the record
brc20-prog second-source adapter on the BRC2.0 EVM derived, two hops sightings of tick movements the EVM executed

A tick seen on both carriers is one token with two sources. Ticks found only on OP_RETURN, such as 'prompt', 'lol' and 'gamestop', whose lengths the inscribed rules exclude, enter by their OP_RETURN deploy.

The co-claim. A BRC-20 mint inscription has two claimants: the sat it is inscribed on and the tick. They divide the bytes they share. In case 10 the tick's regions are only the 107-byte envelope span, so it takes 53.5 bytes of Book B and the sat takes 284.5. Book C belongs to the sat alone. The JSON is the inscription's content, and "the ledger claims where it was written, not what the picture is". The two claims are labelled differently: the tick's is mint, the sat's is inscribe.

A bias that was found and fixed. In the case studies the brc20 adapter could not recover the signer of a taproot key-path spend, so its claims failed closed to riding while the sat's were dedicated. Finding F7 called this a directional bias toward the sat. It was ruled on 2026-08-10: one shared retry helper now serves brc20 and alkanes too, and "the asymmetry is closed".

The OP_RETURN record. Ruleset v1's fact table says no ledger for OP_RETURN BRC-20 exists anywhere: OPI only reads inscriptions, and BRC2.0 was checked and is not one either. So BTI's replay is the record (B32). Its rules are recorded too:

  • mints are deploy-gated: 240,060 of 538,648 mints name a tick not yet deployed, and are residue;
  • a mint credits the add field where it is present and valid, otherwise the first non-OP_RETURN output;
  • a transfer debits the first input's previous output and credits the minimum-value non-OP_RETURN output, a counted convention that decodes both a listing and a marketplace sale;
  • amounts are scaled to 18 decimals, and the last mint is clamped to the supply left.

The transferability gate was passed on chain: deploy at block 896,552, mint at 896,558, and transfer at 896,583 to a different script.

BRC-100 #

BRC-100 is a separate family in the books, with its own tick ledger written in inscriptions. Its only external source, inBRC's mirror, stopped answering (first probed dead 2026-08-05, again 2026-08-11), so BTI was ruled its indexer on 2026-08-11. The decoder records these facts:

  • p is case-insensitive;
  • 4-byte ticks are reserved;
  • a transfer is a two-step transfer: the transfer inscription writes no tick claim, and the send that spends it does;
  • every operation has two claimants, the tick and the carrying sat, and the tick's Book C is 0 under B14.

The adapters table measured 200 MB in 2,601 blocks, and at block 822,364 BRC-100 was 97.21 % of its block. Live (as of block 972,299, 2026-10-20 09:30:48 UTC): Book A 0.14 GB, 0.02 % of the chain, 560 ticks, 715,589 operations, first height 805913. The live API reports 0.02 GB of Book C for the family. Blockspace Holdings' documents do not explain how that matches the tick's Book C of 0. The leaderboard's coverage table lists BRC-100 holders as not measured.

Live figures #

BRC-20's books (as of block 972,299, 2026-10-20 09:30:48 UTC):

measure value
Book A 17.49 GB
Book C 2.42 GB
share of the chain's bytes (Book A) 2.25 %
share of all Book A bytes 13.08 %
ticks 372,135
operations 95,940,625
first height 779832

Read from the protocols API on 2026-10-20 (books at block 972,199), the sources split as follows. opi-brc20: 17.38 GB over 372,001 ticks. brc20-opreturn: 110.3 MB over 188 ticks. brc20-prog: 0.94 MB over 229 ticks. One tick, SATS, is its own sub-item at 3.79 GB. sats is the largest tick by content, 605 MB of mints, so a board ranking BRC-20 content must say it is the sum of many small files.

Holders: read on 2026-10-20, the leaderboard's coverage table placed 99.08 % of BRC-20's Book A on 1,574,070 addresses.

Not covered by a source #

Blockspace Holdings' documents give no bytes:vbytes ratio for BRC-20 on its own; the July 2026 run measured inscriptions as a whole. OP-20, which uses BRC-20's OP_RETURN shape plus a required add credit address, is its own family in the books and is not described here.

Sources #

  1. block.space docs: data types · block.space/docs/datatypes
  2. block.space docs: rankings · block.space/docs/rankings
  3. block.space protocols API · block.space/api/protocols
  4. block.space leaderboard coverage API (holders measured per protocol) · block.space/api/leaderboard/coverage
  5. Blockspace Holdings records

Live figures: protocols as of block 972,299, 2026-10-20 09:30:48 UTC. Refreshed hourly.

Updated 2026-10-20 · This page as Markdown