diff --git a/lib/modules-lib/bc-db-reader/src/blocks.rs b/lib/modules-lib/bc-db-reader/src/blocks.rs index 2867c98afb44c8bdc65b83398bf2a7228736b6bf..b280dee7d14ac16a459c0dc8566590fd01b665e7 100644 --- a/lib/modules-lib/bc-db-reader/src/blocks.rs +++ b/lib/modules-lib/bc-db-reader/src/blocks.rs @@ -124,12 +124,13 @@ pub fn get_fork_block<DB: DbReadable, R: DbReader>( } /// Get block hash -pub fn get_block_hash<DB: DbReadable>( +pub fn get_block_hash<DB: DbReadable, R: DbReader>( db: &DB, + r: &R, block_number: BlockNumber, ) -> Result<Option<BlockHash>, DbError> { Ok( - if let Some(block) = get_block_in_local_blockchain(db, block_number)? { + if let Some(block) = get_block_in_local_blockchain(db, r, block_number)? { block.hash() } else { None @@ -139,16 +140,12 @@ pub fn get_block_hash<DB: DbReadable>( /// Get block in local blockchain #[inline] -pub fn get_block_in_local_blockchain<DB: DbReadable>( +pub fn get_block_in_local_blockchain<DB: DbReadable, R: DbReader>( db: &DB, + r: &R, block_number: BlockNumber, ) -> Result<Option<BlockDocument>, DbError> { - db.read(|r| { - Ok( - get_dal_block_in_local_blockchain(db, r, block_number)? - .map(|dal_block| dal_block.block), - ) - }) + Ok(get_dal_block_in_local_blockchain(db, r, block_number)?.map(|dal_block| dal_block.block)) } /// Get block in local blockchain diff --git a/lib/modules/blockchain/blockchain/src/dbex.rs b/lib/modules/blockchain/blockchain/src/dbex.rs index 1aea3853ab4ab5268baecb18cdb1c875118335ec..355cb65da99b1895ebdbc5a06242ab0a23f6ceba 100644 --- a/lib/modules/blockchain/blockchain/src/dbex.rs +++ b/lib/modules/blockchain/blockchain/src/dbex.rs @@ -146,9 +146,9 @@ pub fn dbex_bc(profile_path: PathBuf, _csv: bool, _query: DbExBcQuery) -> Result durs_bc_db_reader::current_meta_datas::get_current_blockstamp(&db)? { println!("Current block: #{}.", current_blockstamp); - if let Some(current_block) = - durs_bc_db_reader::blocks::get_block_in_local_blockchain(&db, current_blockstamp.id)? - { + if let Some(current_block) = db.read(|r| { + durs_bc_db_reader::blocks::get_block_in_local_blockchain(&db, r, current_blockstamp.id) + })? { let map_pubkey = durs_bc_db_reader::blocks::get_current_frame(¤t_block, &db)?; let mut vec = map_pubkey.iter().collect::<Vec<(&PubKey, &usize)>>(); diff --git a/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs b/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs index caa7422b049a62594e91d3bdc169ad81da4f173d..be5d5a91624de86d9de898795b4658492af70ca8 100644 --- a/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs +++ b/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs @@ -36,7 +36,7 @@ pub enum InvalidBlockError { pub fn verify_block_validity<DB, R, W>( block: &BlockDocument, db: &DB, - _r: &R, + r: &R, _wot_index: &HashMap<PubKey, WotId>, _wot_db: &BinFreeStructDb<W>, ) -> Result<(), BlockError> @@ -50,6 +50,7 @@ where // Get previous block let previous_block_opt = durs_bc_db_reader::blocks::get_block_in_local_blockchain( db, + r, BlockNumber(block.number().0 - 1), )?; diff --git a/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs b/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs index 7adda645f6b27483dc6907e3570bd3febde2ec2e..645fef8c71c72be37795b81d3bc2df972783895b 100644 --- a/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs +++ b/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs @@ -140,11 +140,15 @@ mod tests { })?; // Local blockchain must contain at least `fork_window_size +2` blocks - assert!(durs_bc_db_reader::blocks::get_block_in_local_blockchain( - &db, - BlockNumber((fork_window_size + 1) as u32) - )? - .is_some()); + assert!(db + .read( + |r| durs_bc_db_reader::blocks::get_block_in_local_blockchain( + &db, + r, + BlockNumber((fork_window_size + 1) as u32) + ) + )? + .is_some()); // Fork tree must contain at least `fork_window_size +2` blocks assert_eq!(fork_window_size, fork_tree.size()); diff --git a/lib/modules/blockchain/blockchain/src/requests/received.rs b/lib/modules/blockchain/blockchain/src/requests/received.rs index 1de8ba259f1a4a9d5f894248bfe2e49f1782e4c8..48c4c7ef076d1a1a976a71f89696c1f2c5d2f7f0 100644 --- a/lib/modules/blockchain/blockchain/src/requests/received.rs +++ b/lib/modules/blockchain/blockchain/src/requests/received.rs @@ -37,10 +37,13 @@ pub fn receive_req( BlockchainRequest::CurrentBlock => { debug!("BlockchainModule : receive BlockchainRequest::CurrentBlock()"); - if let Ok(block_opt) = durs_bc_db_reader::blocks::get_block_in_local_blockchain( - bc.db(), - bc.current_blockstamp.id, - ) { + if let Ok(block_opt) = bc.db().read(|r| { + durs_bc_db_reader::blocks::get_block_in_local_blockchain( + bc.db(), + r, + bc.current_blockstamp.id, + ) + }) { if let Some(block) = block_opt { debug!( "BlockchainModule : send_req_response(CurrentBlock({}))", @@ -70,9 +73,13 @@ pub fn receive_req( block_number ); - if let Ok(block_opt) = - durs_bc_db_reader::blocks::get_block_in_local_blockchain(bc.db(), block_number) - { + if let Ok(block_opt) = bc.db().read(|r| { + durs_bc_db_reader::blocks::get_block_in_local_blockchain( + bc.db(), + r, + block_number, + ) + }) { if let Some(block) = block_opt { debug!( "BlockchainModule : send_req_response(BlockByNumber(#{}))",