BRC-144: Block frame format - #176
Merged
Merged
Conversation
Collaborator
|
Merged as BRC-223 (renumbered from proposed BRC-144), commit 8205398 on master. |
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-144: Block Frame Format
Adds BRC-144, the push wire form of a block — the 80-byte header, block-level counts, the ordered list of subtree roots the block references, the full coinbase transaction, the block height, and the coinbase merkle path — for delivery and ingest over a byte stream. It carries everything a receiver needs to assemble and validate the block without a follow-up fetch. Frame integers are fixed-width big-endian; consensus-defined payloads (header, coinbase, BUMP) keep their native serialisation.
Motivation: a block commits to its transactions through a header and names its subtrees in order — the block↔subtree association that binds independently delivered subtrees (BRC-143) into a block. In an announce/pull system a node is notified then pulls the full block; a push delivery has no fetch URL, so the frame carries the complete block body inline. Its field sequence mirrors the block serialisation a node already ingests — header, counts, subtree roots, full coinbase, height, coinbase BUMP — with each variable-length integer replaced by a fixed-width big-endian field. The coinbase is carried in-band because a node rejects a loose coinbase on its transaction path and block assembly needs its bytes.
Changes: new transactions/0144.md; index entries in README.md, SUMMARY.md, transactions/README.md. No changes to existing BRCs.