Beersy
BRC-133

Multicast Coinbase Transaction Frame Format

The first transaction in a block is a special case, and it does not travel with the ordinary transaction stream. This says how it is carried and who receives it.

About Multicast, sending one transaction to many listeners at once.

AlsoFramesBlocks

Jeff Harrischanged 13 Oct 20265 min read

Reference for an AI

Everything an assistant needs to answer questions about BRC-133 accurately, including what it depends on.

Summary

Why
cannot be verified in isolation, so a scheme that ever sent them separately from their block needs to be clearly marked unsafe and retired, while keeping its wire format documented for old traffic and reserved identifiers.
What
BRC-133 is a deprecated wire format and multicast routing scheme for sending transactions separately from their block over a shared control channel, kept only for historical decoding and reserved identifiers.
How
A coinbase transaction was wrapped in a BRC-131 control frame tagged 0x02 and sent to a global multicast group that every subscriber joins, using its own sequence counter and NACK-based retry, but modern listeners drop these frames by default because a coinbase without its block carries no proof of to…

What this lets you do

  • Recognize and decode archived BlockMsgCoinbase (0x02) frames
  • Understand why a listener's block-control gate drops standalone coinbase frames by default
  • Avoid reusing the reserved BRC-133 number, MsgType 0x02, or flow index 0xFFF8
  • Trace how coinbase frames relate to BRC-131 BlockAnnounce and BRC-144 inline block coinbase carriage
  • Identify the deprecated multicast group used for coinbase and block announce flows

Written by claude-sonnet-5 from the specification text. Where the two differ, the original is correct.

coinbase frameblock-controldropped

The specification

Abstract

This BRC defines the policy and wire mechanism for distributing transactions over the IPv6 multicast fabric. are carried as a dedicated message type within BRC-131 block control frames and delivered to all subscribers via the control-plane multicast group, independently of the shard groups used for ordinary transaction distribution.

Status Note

Deprecated, and retained deliberately. Standalone coinbase carriage, the mechanism this BRC specifies (BRC-131 MsgType 0x02, BlockMsgCoinbase), is deprecated. It is kept on purpose and is not withdrawn.

  • Not produced. A coinbase transaction is invalid to a node unless it is connected to its block, so current implementations never emit standalone coinbase frames. The coinbase travels inline in the block body defined by BRC-144, where it inherits the proof of of the block it belongs to.
  • Dropped by default. A standalone coinbase frame carries no proof of work of its own, so nothing about it can be validated in isolation. A listener that gates block-control frames before fan-out (the reference listener's block-control gate, which is on by default) drops such a frame; the reference implementation counts it under the drop reason coinbase_legacy.
  • Retained deliberately. A future design may need to carry blocks and their coinbase separately across the multicast fabric and recombine them at the edges. This specification keeps that option open, so it remains the reference for such a design, for deployments that disable the gate, and for decoding archived traffic.
  • Reserved. The BRC-133 number, BRC-131 MsgType 0x02, and the virtual flow index 0xFFF8 (GroupCoinbaseFlow) remain reserved for standalone coinbase carriage. They must not be reused for any other purpose.

This BRC is licensed under the Open BSV License.

Motivation

The multicast fabric shards ordinary transactions across per-shard multicast groups based on the top bits of each transaction's TxID. Coinbase transactions cannot be sharded this way because:

  1. Universal relevance — the coinbase TxID is included in every block announcement and is required to verify the block's .
  2. Fee aggregation — coinbase outputs pay the block subsidy and miner fee aggregations that downstream systems need to validate template construction.
  3. Unpredictable placement — no subscriber can predict which shard a coinbase TxID would hash to before the block is found.

BRC-133 addresses this by routing coinbase frames to the group (FF0E::B:FFFE), a global control channel that all subscribers join unconditionally.

Specification

Control-Plane Multicast Group

Coinbase frames are delivered on the GroupBlockBroadcast group:

IndexCompressed AddressConstant
0xFFFEglobalFF0E::B:FFFEGroupBlockBroadcast

The global scope (FF0E) ensures coinbase transactions cross site boundaries. The group index 0xFFFE is in the reserved control-plane range and never overlaps with data-plane shard groups (maximum shard group index is 0x0FFF for shard_bits=12).

The address is shown in form (FF0E::B:FFFE), intra-domain only under RFC 8815; inter-domain delivery uses the SSM address FF3E::B:FFFE (see BRC-129). The frame format and NACK path are unchanged. Coinbase and block-announce frames are separate flows but share the same egress source (the emitting proxy, senderIPv6), so SSM receivers (S,G)-join 0xFFFE once; block-broadcast sources are distributed per BRC-129.

Wire Format

Coinbase transactions are carried as BRC-131 frames (FrameVer 0x04) with MsgType = 0x02 (BlockMsgCoinbase).

OffsetSizeFieldValue
61FrameVersion0x04 (BRC-131)
710x02 = BlockMsgCoinbase
832CoinbaseTxID — SHA256d of the raw coinbase tx bytes
408XXH64(senderIPv6 ∥ 0xFFF8 ∥ zeros); stamped by proxy
488Monotonic per-sender counter; stamped by proxy
5632LayoutPad32All zeros
884PayloadLenLength of the raw coinbase transaction bytes
92*PayloadRaw serialised coinbase transaction (no P2P )

Payload encoding: The payload is a raw BSV serialised transaction — version (4 bytes LE), input vector, output vector, locktime (4 bytes LE) — identical to the encoding used in BRC-12/BRC-124 frames.

Sequencing and Retransmission

Coinbase frames participate in the same NACK-based reliability mechanism as BRC-124 shard frames:

  • The proxy stamps HashKey = XXH64(senderIPv6 ∥ 0xFFF8 ∥ zeros) and SeqNum (monotonic per sender on the coinbase flow) in-place before forwarding. The virtual index 0xFFF8 (GroupCoinbaseFlow) is never used as an actual multicast destination — it appears only in the HashKey computation to give coinbase frames an independent flow identity from BRC-131 block announces, which share the same egress multicast group. If the frame arrives pre-stamped (SeqNum != 0), it is forwarded verbatim.
  • Listeners observe (coinbaseFlowIdx=0xFFF8, zeroSubtreeID, HashKey, SeqNum, ContentID) for gap detection and dispatch NACKs to retry endpoints on gap.
  • Retry endpoints join FF0E::B:FFFE and cache coinbase frames by HashKey ∥ SeqNum. On NACK, the frame is retransmitted to FF0E::B:FFFE.

Relationship to BRC-131 Block Announcements

A BlockAnnounce frame (BRC-131, MsgType 0x01) is sent first and carries the CoinbaseTxID in its payload. The separate BlockMsgCoinbase frame then carries the full raw coinbase bytes. Subscribers that only need to verify the Merkle root may use the CoinbaseTxID from the announce frame without waiting for the coinbase frame itself.

BlockAnnounce and BlockMsgCoinbase form separate flows on the proxy. BlockAnnounce frames use a HashKey derived from (sender, 0xFFFE, zeros); Coinbase frames use a HashKey derived from (sender, 0xFFF8, zeros). Each flow therefore has its own monotonic SeqNum counter, its own HashKey value, and is gap-tracked independently by listeners — even though both egress to the same FF0E::B:FFFE multicast destination.

Constants Reference

NameValueDescription
FrameVerV40x04BRC-131 block control
BlockMsgCoinbase0x02MsgType: raw coinbase transaction (deprecated; reserved, see Status )
GroupBlockBroadcast0xFFFEBlock control multicast group index (egress)
GroupCoinbaseFlow0xFFF8Virtual HashKey ingredient; coinbase flow identity (never a multicast address); reserved

References

Was this helpful?

Search Beersy

Search standards by number, title, author or topic