BRC-149: Multicast BEEF object frame format#183
Draft
jefflightweb wants to merge 5 commits into
Draft
Conversation
jefflightweb
marked this pull request as draft
July 24, 2026 20:53
Contributor
Author
|
Marking this draft while we revise the BEEF submission-record design. The multi-topic submission record (topicCount 1..15) fans out one ingress object into up to 15 multicast frames, which — on the open/anonymous ingress class — is an amplification vector with no cost coupling. We're reworking so that multi-topic fan-out is an authenticated/metered capability and the open path stays single-topic. Will mark ready for review once the revision lands. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request:
Proposes a new standard by creating a new markdown file in the appropriate directory and requests discussion and assignment of a BRC number
Summary
BRC-149: Multicast BEEF Object Frame Format
Companion to #181 (BRC-148, the BEEF object plane). BRC-148 allocates the plane and, following the repo convention that frame formats are specified apart from addressing (BRC-124 vs BRC-129; BRC-143/BRC-144 vs their carriage rules), defers the concrete wire formats to a separate BRC. BRC-149 assigns FrameVer
0x09and fixes the three byte layouts the plane needs.The multicast object frame (FrameVer
0x09, assigned here — the next code after BRC-142's0x08) is a 92-byte header plus payload that reuses the BRC-124 header at identical offsets, so existing classifiers, NACK retransmission (BRC-126), and fragmentation (BRC-130) require no changes. ContentID isSHA-256d(payload)(the reassembly and duplicate-suppression key, never the subject TxID); TopicID isSHA-256(topic name), occupying the field that carries the SubtreeID in transaction frames, and is the delivery-selectivity key; HashKey and SeqNum carry the flow semantics BRC-148 defines. The payload is the BEEF object verbatim, its leading version word (BRC-62 / BRC-95 / BRC-96) acting as an encoding-capability gate.Two unicast records complete the plane. The submission record is the
0xBEEF-tagged envelope a publisher sends to operator ingress, naming one BEEF object to one or more overlay topics; on shared ports it is distinguished from a framed datagram (network magic0xE3E1F3E8) and a bare transaction (BRC-12 / BRC-30) purely by leading bytes, which cannot collide. The delivery record is the envelope a delivery edge streams to a subscriber — TopicID, length, object verbatim. Both records exist because BEEF bytes are not self-delimiting without a full structural parse, which the fabric never performs; unlike the BRC-143/BRC-144 push lanes, BEEF lanes therefore carry an explicit length-carrying envelope.Depends on #181 for the plane definition (the
./0148.mdlinks resolve once it merges); the BRC-143/BRC-144 push-format references (#175/#176) are cited as in-submission. Index-row conflicts with #181 are expected and trivial (adjacent rows in README/SUMMARY/transactions README).Changes: new transactions/0149.md; index entries in README.md, SUMMARY.md, transactions/README.md. No changes to existing BRCs.