From a53ba2c842408ff713643a6b479cd88f03cf1cd3 Mon Sep 17 00:00:00 2001 From: Morty Date: Tue, 9 Dec 2025 22:05:09 +0800 Subject: [PATCH 1/2] fix: codec v7 version field --- crates/codec/src/decoding/v7/mod.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/crates/codec/src/decoding/v7/mod.rs b/crates/codec/src/decoding/v7/mod.rs index 684ac2b1..0e5bfc05 100644 --- a/crates/codec/src/decoding/v7/mod.rs +++ b/crates/codec/src/decoding/v7/mod.rs @@ -56,11 +56,11 @@ pub fn decode_v7(blob: &[u8]) -> Result { }; // decode the payload. - decode_v7_payload(buf) + decode_v7_payload(version, buf) } /// Decode the blob data into a [`Batch`]. -pub(crate) fn decode_v7_payload(blob: &[u8]) -> Result { +pub(crate) fn decode_v7_payload(version: u8, blob: &[u8]) -> Result { let buf = &mut (&*blob); // check buf len. @@ -103,7 +103,7 @@ pub(crate) fn decode_v7_payload(blob: &[u8]) -> Result { skipped_l1_message_bitmap: None, }; - Ok(Batch::new(7, None, payload)) + Ok(Batch::new(version, None, payload)) } #[cfg(test)] @@ -294,4 +294,22 @@ mod tests { Ok(()) } + + #[test] + fn test_should_decode_v8_mock() -> eyre::Result<()> { + let blob = read_to_bytes("./testdata/blob_v7_uncompressed.bin")?; + let mut blob = blob.to_vec(); + // Manually patch the version byte to 8 to simulate a v8 blob. + // BlobSliceIter skips the first byte (index 0) of every 32-byte chunk. + // So the first data byte (version) is at index 1. + blob[1] = 8; + + let batch = decode_v7(&blob)?; + assert_eq!(batch.version, 8); + + let blocks = batch.data.l2_blocks(); + assert_eq!(blocks.len(), 4); + + Ok(()) + } } From 94522279acc88144d63be566ed7916cf7f601522 Mon Sep 17 00:00:00 2001 From: Morty Date: Tue, 9 Dec 2025 22:31:55 +0800 Subject: [PATCH 2/2] fix: comment --- crates/codec/src/decoding/v7/mod.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/codec/src/decoding/v7/mod.rs b/crates/codec/src/decoding/v7/mod.rs index 0e5bfc05..e98e38cc 100644 --- a/crates/codec/src/decoding/v7/mod.rs +++ b/crates/codec/src/decoding/v7/mod.rs @@ -56,11 +56,16 @@ pub fn decode_v7(blob: &[u8]) -> Result { }; // decode the payload. - decode_v7_payload(version, buf) + decode_payload(version, buf) +} + +pub(crate) fn decode_payload(version: u8, blob: &[u8]) -> Result { + let payload = decode_v7_payload(blob)?; + Ok(Batch::new(version, None, payload)) } /// Decode the blob data into a [`Batch`]. -pub(crate) fn decode_v7_payload(version: u8, blob: &[u8]) -> Result { +pub(crate) fn decode_v7_payload(blob: &[u8]) -> Result { let buf = &mut (&*blob); // check buf len. @@ -97,13 +102,11 @@ pub(crate) fn decode_v7_payload(version: u8, blob: &[u8]) -> Result