Skip to content

Commit f14cb52

Browse files
committed
fix l2geth
1 parent 67b0555 commit f14cb52

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

crates/l2geth/src/rpc_client.rs

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ impl ChunkInterpreter for RpcClient<'_> {
111111
.ok_or_else(|| eyre::eyre!("Block {block_hash} not found"))?;
112112

113113
let number = block.header.number;
114+
let parent_hash = block.header.parent_hash;
114115
if number == 0 {
115116
eyre::bail!("no number in header or use block 0");
116117
}
@@ -120,16 +121,27 @@ impl ChunkInterpreter for RpcClient<'_> {
120121
.chain_id(chain_id)
121122
.execution_witness(provider.debug_execution_witness(number.into()).await?);
122123

123-
if let Some(witness) = prev_witness {
124-
if witness.header.number != number - 1 {
125-
eyre::bail!(
126-
"the ref witness is not the previous block, expected {} get {}",
127-
number - 1,
128-
witness.header.number,
129-
);
124+
let prev_state_root = match prev_witness {
125+
Some(witness) => {
126+
if witness.header.number != number - 1 {
127+
eyre::bail!(
128+
"the ref witness is not the previous block, expected {} get {}",
129+
number - 1,
130+
witness.header.number,
131+
);
132+
}
133+
witness.header.state_root
130134
}
131-
witness_builder = witness_builder.prev_state_root(witness.header.state_root);
132-
}
135+
None => {
136+
let parent_block = provider
137+
.get_block_by_hash(parent_hash)
138+
.await?
139+
.expect("parent block should exist");
140+
141+
parent_block.header.state_root
142+
}
143+
};
144+
witness_builder = witness_builder.prev_state_root(prev_state_root);
133145

134146
Ok(witness_builder.build()?)
135147
}

0 commit comments

Comments
 (0)