From 02c9360ca248d92406ed0acb4b8efa1049d2d369 Mon Sep 17 00:00:00 2001 From: Ho Date: Sat, 8 Nov 2025 15:08:08 +0900 Subject: [PATCH] fix issue in guest rc.6 --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- crates/libzkp/src/tasks/batch.rs | 24 +++++++++++++++++++----- crates/libzkp/src/tasks/chunk.rs | 29 +---------------------------- 4 files changed, 25 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3143e2904..b65d66354 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3960,7 +3960,7 @@ dependencies = [ [[package]] name = "l2geth" -version = "4.5.47" +version = "4.6.3" dependencies = [ "alloy", "async-trait", @@ -4089,7 +4089,7 @@ dependencies = [ [[package]] name = "libzkp" -version = "4.5.47" +version = "4.6.3" dependencies = [ "alloy-primitives", "base64 0.22.1", @@ -4111,7 +4111,7 @@ dependencies = [ [[package]] name = "libzkp-c" -version = "4.5.47" +version = "4.6.3" dependencies = [ "l2geth", "libzkp", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "prover" -version = "4.5.47" +version = "4.6.3" dependencies = [ "async-trait", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index bb1f3285c..78a6dfa82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ edition = "2021" homepage = "https://scroll.io" readme = "README.md" repository = "https://github.com/scroll-tech/scroll" -version = "4.5.47" +version = "4.6.3" [workspace.dependencies] scroll-zkvm-prover = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "360f364" } diff --git a/crates/libzkp/src/tasks/batch.rs b/crates/libzkp/src/tasks/batch.rs index cda9e90fb..b160a093a 100644 --- a/crates/libzkp/src/tasks/batch.rs +++ b/crates/libzkp/src/tasks/batch.rs @@ -7,6 +7,7 @@ use scroll_zkvm_types::{ BatchHeaderValidium, BatchInfo, BatchWitness, Envelope, EnvelopeV6, EnvelopeV7, EnvelopeV8, LegacyBatchWitness, ReferenceHeader, N_BLOB_BYTES, }, + chunk::ChunkInfo, public_inputs::{ForkName, Version}, task::ProvingTask, utils::{to_rkyv_bytes, RancorError}, @@ -234,15 +235,28 @@ impl BatchProvingTask { } }; + // patch: ensure block_hash field is ZERO for scroll domain + let chunk_infos = self + .chunk_proofs + .iter() + .map(|p| + if version.domain == Domain::Scroll { + ChunkInfo { + prev_blockhash: B256::ZERO, + post_blockhash: B256::ZERO, + ..p.metadata.chunk_info.clone() + } + } else { + p.metadata.chunk_info.clone() + } + ).collect(); + + BatchWitness { version: version.as_version_byte(), fork_name: version.fork, chunk_proofs: self.chunk_proofs.iter().map(|proof| proof.into()).collect(), - chunk_infos: self - .chunk_proofs - .iter() - .map(|p| p.metadata.chunk_info.clone()) - .collect(), + chunk_infos, blob_bytes: self.blob_bytes.clone(), reference_header, point_eval_witness, diff --git a/crates/libzkp/src/tasks/chunk.rs b/crates/libzkp/src/tasks/chunk.rs index 0a283592c..ce0304b68 100644 --- a/crates/libzkp/src/tasks/chunk.rs +++ b/crates/libzkp/src/tasks/chunk.rs @@ -33,34 +33,7 @@ impl TryFromWithInterpreter for ChunkProvingTask { ) -> Result { let mut block_witnesses = Vec::new(); for block_hash in value.block_hashes { - let mut witness = - interpreter.try_fetch_block_witness(block_hash, block_witnesses.last())?; - if witness.header.number == 1 { - use std::str::FromStr; - let hacked_state_root = match witness.chain_id { - // cloak-xen-sequencer.sepolia - 5343513301 => Some(B256::from_str( - "0x0711f02d6f85b0597c4705298e01ee27159fdd8bd8bdeda670ae8b9073091246", - )?), - // cloak-etherfi-sequencer.sepolia - 5343513302 => Some(B256::from_str( - "0x7b44ea23770dda8810801779eb6847d56be0399e35de7c56465ccf8b7578ddf6", - )?), - // cloak-shiga-sequencer.sepolia - 5343513303 => Some(B256::from_str( - "0x05973227854ac82c22f164ed3d4510b7df516a0eecdfd9bed5f2446efc9994b9", - )?), - // cloak-xen-sequencer.mainnet - 5343523301 => Some(B256::from_str( - "0x8da1aaf41660ddf7870ab5ff4f6a3ab4b2e652568d341ede87ada56aad5fb097", - )?), - _ => None, - }; - if let Some(hacked_state_root) = hacked_state_root { - witness.prev_state_root = hacked_state_root; - tracing::warn!("hack genesis state root {:?} for cloak testnet to work around a wrong gensis configuration", witness.prev_state_root); - } - } + let witness = interpreter.try_fetch_block_witness(block_hash, block_witnesses.last())?; block_witnesses.push(witness); }