diff --git a/crates/chain/src/chain.rs b/crates/chain/src/chain.rs
index 58bb53721..766a599e1 100644
--- a/crates/chain/src/chain.rs
+++ b/crates/chain/src/chain.rs
@@ -705,7 +705,8 @@ impl Chain {
let reverted_block_hashes = db
.get_reverted_block_hashes_by_root(¤t_reverted_block_root)?
- .expect("reverted block hashes should exists");
+ .expect("reverted block hashes should exists")
+ .block_hashes;
db.rewind_reverted_block_smt(reverted_block_hashes)?;
current_reverted_block_root = db.get_reverted_block_smt_root()?;
@@ -770,7 +771,8 @@ impl Chain {
let reverted_block_hashes = db
.get_reverted_block_hashes_by_root(¤t_reverted_block_root)?
- .expect("reverted block hashes should exists");
+ .expect("reverted block hashes should exists")
+ .block_hashes;
db.rewind_reverted_block_smt(reverted_block_hashes)?;
current_reverted_block_root = db.get_reverted_block_smt_root()?;
diff --git a/crates/store/src/traits/chain_store.rs b/crates/store/src/traits/chain_store.rs
index b1e2d96c2..a7a807a54 100644
--- a/crates/store/src/traits/chain_store.rs
+++ b/crates/store/src/traits/chain_store.rs
@@ -14,7 +14,7 @@ use gw_db::schema::{
META_CHAIN_ID_KEY, META_LAST_VALID_TIP_BLOCK_HASH_KEY, META_REVERTED_BLOCK_SMT_ROOT_KEY,
META_TIP_BLOCK_HASH_KEY,
};
-use gw_types::offchain::global_state_from_slice;
+use gw_types::offchain::{global_state_from_slice, SMTRevertedBlockHashes};
use gw_types::packed::{Script, WithdrawalKey};
use gw_types::{
from_box_should_be_ok,
@@ -252,7 +252,7 @@ pub trait ChainStore: KVStoreRead {
fn get_reverted_block_hashes_by_root(
&self,
reverted_block_smt_root: &H256,
- ) -> Result