File tree Expand file tree Collapse file tree 1 file changed +21
-9
lines changed Expand file tree Collapse file tree 1 file changed +21
-9
lines changed Original file line number Diff line number Diff 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 }
You can’t perform that action at this time.
0 commit comments