stratus/eth/storage/temporary/
mod.rs1pub use inmemory::InMemoryTemporaryStorage;
2
3mod inmemory;
4
5use clap::Parser;
6use display_json::DebugAsJson;
7
8use super::RocksPermanentStorage;
9use crate::eth::primitives::BlockNumber;
10
11#[derive(Parser, DebugAsJson, Clone, serde::Serialize)]
17pub struct TemporaryStorageConfig {
18 }
20
21impl TemporaryStorageConfig {
22 pub fn init(&self, perm_storage: &RocksPermanentStorage) -> anyhow::Result<InMemoryTemporaryStorage> {
24 tracing::info!(config = ?self, "creating temporary storage");
25 let pending_block_number = compute_pending_block_number(perm_storage)?;
26 Ok(InMemoryTemporaryStorage::new(pending_block_number))
27 }
28}
29
30pub fn compute_pending_block_number(perm_storage: &RocksPermanentStorage) -> anyhow::Result<BlockNumber> {
31 let mined_block_number = perm_storage.read_mined_block_number();
32 Ok(if !perm_storage.has_genesis()? && mined_block_number == BlockNumber::ZERO {
33 BlockNumber::ZERO
34 } else {
35 mined_block_number + 1
36 })
37}