From 263c91e2fd47ea8b39f2ce10ce283962de62270f Mon Sep 17 00:00:00 2001 From: Julio <30329843+julio4@users.noreply.github.com> Date: Fri, 22 Aug 2025 12:13:29 +0200 Subject: [PATCH 1/5] Update flashblocks.md --- specs/flashblocks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/specs/flashblocks.md b/specs/flashblocks.md index 6d018680..daf04686 100644 --- a/specs/flashblocks.md +++ b/specs/flashblocks.md @@ -114,11 +114,11 @@ The core data structure sent from the Block Builder to Rollup Boost and then ext ```python class FlashblocksPayloadV1(): - version: Bytes4 + version: Bytes4 payload_id: Bytes8 - parent_flash_hash: Optional[Bytes32] index: uint64 - static: Optional[ExecutionPayloadStaticV1] + parent_flash_hash: Optional[Bytes32] + base: Optional[ExecutionPayloadStaticV1] diff: ExecutionPayloadFlashblockResultV1 metadata: FlashblocksMetadata ``` @@ -1026,4 +1026,4 @@ For RPC Operators, Flashblocks will require a modified RPC node that subscribes # Implementation -A feature complete implementation of all components described in this document can be found in the [rollup-boost](https://github.com/flashbots/rollup-boost), [op-rbuilder](https://github.com/flashbots/rbuilder/tree/develop/crates/op-rbuilder), [flashblocks-websocket-proxy](https://github.com/base/flashblocks-websocket-proxy), and [reth-flashblocks](https://github.com/danyalprout/reth-flashblocks). \ No newline at end of file +A feature complete implementation of all components described in this document can be found in the [rollup-boost](https://github.com/flashbots/rollup-boost), [op-rbuilder](https://github.com/flashbots/rbuilder/tree/develop/crates/op-rbuilder), [flashblocks-websocket-proxy](https://github.com/base/flashblocks-websocket-proxy), and [reth-flashblocks](https://github.com/danyalprout/reth-flashblocks). From ee97d68c791f609cba696c56119652a2519bb095 Mon Sep 17 00:00:00 2001 From: Julio <30329843+julio4@users.noreply.github.com> Date: Fri, 22 Aug 2025 12:18:14 +0200 Subject: [PATCH 2/5] Update flashblocks.md --- specs/flashblocks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/flashblocks.md b/specs/flashblocks.md index daf04686..f8c9db63 100644 --- a/specs/flashblocks.md +++ b/specs/flashblocks.md @@ -1026,4 +1026,4 @@ For RPC Operators, Flashblocks will require a modified RPC node that subscribes # Implementation -A feature complete implementation of all components described in this document can be found in the [rollup-boost](https://github.com/flashbots/rollup-boost), [op-rbuilder](https://github.com/flashbots/rbuilder/tree/develop/crates/op-rbuilder), [flashblocks-websocket-proxy](https://github.com/base/flashblocks-websocket-proxy), and [reth-flashblocks](https://github.com/danyalprout/reth-flashblocks). +A feature complete implementation of all components described in this document can be found in the [rollup-boost](https://github.com/flashbots/rollup-boost), [op-rbuilder](https://github.com/flashbots/op-rbuilder/) and [node-reth](https://github.com/base/node-reth). From ff9c135fc2a81e19b806221a5c3c49d51ee5bdb1 Mon Sep 17 00:00:00 2001 From: Julio <30329843+julio4@users.noreply.github.com> Date: Fri, 22 Aug 2025 14:39:07 +0200 Subject: [PATCH 3/5] Rename ExecutionPayloadStaticV1 to ExecutionPayloadBaseV1 --- specs/flashblocks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/specs/flashblocks.md b/specs/flashblocks.md index f8c9db63..f5879848 100644 --- a/specs/flashblocks.md +++ b/specs/flashblocks.md @@ -10,7 +10,7 @@ - [Data structures](#data-structures) - [**`FlashblocksPayloadV1`**](#flashblockspayloadv1) - [**`ExecutionPayloadFlashblockResultV1`**](#executionpayloadflashblockresultv1) - - [**`ExecutionPayloadStaticV1`**](#executionpayloadstaticv1) + - [**`ExecutionPayloadBaseV1`**](#executionpayloadbasev1) - [**`Metadata`**](#metadata) - [**`AccountMetadata`**](#accountmetadata) - [**`StorageSlot`**](#storageslot) @@ -118,7 +118,7 @@ class FlashblocksPayloadV1(): payload_id: Bytes8 index: uint64 parent_flash_hash: Optional[Bytes32] - base: Optional[ExecutionPayloadStaticV1] + base: Optional[ExecutionPayloadBaseV1] diff: ExecutionPayloadFlashblockResultV1 metadata: FlashblocksMetadata ``` @@ -166,12 +166,12 @@ class ExecutionPayloadFlashblockResultV1(): All fields in this structure represent the cumulative state of the entire block up to and including the current flashblock, not just the changes from this specific flashblock. -### **`ExecutionPayloadStaticV1`** +### **`ExecutionPayloadBaseV1`** Container representing immutable fundamental block properties established at initial block creation, unchanged throughout construction. ```python -class ExecutionPayloadStaticV1(): +class ExecutionPayloadBaseV1(): parent_beacon_block_root: Bytes32 parent_hash: Bytes32 fee_recipient: ExecutionAddress From 307bdd2e7d88008fbe2d8966001f4d8dfecac1ae Mon Sep 17 00:00:00 2001 From: Julio <30329843+julio4@users.noreply.github.com> Date: Fri, 22 Aug 2025 15:50:36 +0200 Subject: [PATCH 4/5] Rename FlashblocksMetadata to Metadata --- specs/flashblocks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/flashblocks.md b/specs/flashblocks.md index f5879848..f47859d8 100644 --- a/specs/flashblocks.md +++ b/specs/flashblocks.md @@ -120,7 +120,7 @@ class FlashblocksPayloadV1(): parent_flash_hash: Optional[Bytes32] base: Optional[ExecutionPayloadBaseV1] diff: ExecutionPayloadFlashblockResultV1 - metadata: FlashblocksMetadata + metadata: Metadata ``` **Field descriptions:** @@ -200,7 +200,7 @@ class ExecutionPayloadBaseV1(): Container encapsulating all metadata for a flashblock, including account state changes and transaction results. ```python -class FlashblockMetadata(): +class Metadata(): accounts: List[AccountMetadata] transactions: List[TransactionMetadata] ``` From e002ea2dcf1087e39be8de848ce38126b6f6c69f Mon Sep 17 00:00:00 2001 From: Julio <30329843+julio4@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:01:02 +0200 Subject: [PATCH 5/5] Update flashblocks.md --- specs/flashblocks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/flashblocks.md b/specs/flashblocks.md index f47859d8..9064e38a 100644 --- a/specs/flashblocks.md +++ b/specs/flashblocks.md @@ -367,7 +367,7 @@ The lifecycle of a Flashblock begins with the Sequencer initiating block creatio It's important to emphasize that during this process, the External Block Builder sends only the incremental changes in each Flashblock, not the full block state each time. Each `FlashblocksPayloadV1` contains just the delta from the previous state (new transactions, updated state roots, etc.), allowing for efficient bandwidth usage and faster propagation. - Only the first Flashblock (with `index` 0) includes the `static` field containing immutable block data, while subsequent Flashblocks omit this field since this information remains constant throughout the block's construction. Each Flashblock includes a `parent_flash_hash` that references the SSZ hash of the previous Flashblock in the sequence, creating a hash-linked chain within the block. + Only the first Flashblock (with `index` 0) includes the `base` field containing immutable block data, while subsequent Flashblocks omit this field since this information remains constant throughout the block's construction. Each Flashblock includes a `parent_flash_hash` that references the SSZ hash of the previous Flashblock in the sequence, creating a hash-linked chain within the block. The combined information received across all flashblocks is sufficient to fully reconstruct the complete block without any additional data.