Skip to content

Commit

Permalink
Use proper block origin in block import
Browse files Browse the repository at this point in the history
  • Loading branch information
liuchengxu committed Oct 1, 2024
1 parent 038b605 commit 4d6df12
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 9 deletions.
7 changes: 5 additions & 2 deletions crates/sc-consensus-nakamoto/src/block_import.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ where
&mut self,
block: BitcoinBlock,
substrate_parent_block: HashAndNumber<Block>,
origin: BlockOrigin,
) -> sp_blockchain::Result<(BlockImportParams<Block>, Option<BlockImportParams<Block>>)> {
let HashAndNumber {
number: parent_block_number,
Expand Down Expand Up @@ -347,7 +348,7 @@ where
let substrate_block_hash = header.hash();
let bitcoin_block_hash = block.header.block_hash();

let mut block_import_params = BlockImportParams::new(BlockOrigin::Own, header);
let mut block_import_params = BlockImportParams::new(origin, header);
let (total_work, fork_choice) = calculate_chain_work_and_fork_choice(
&self.client,
&block.header,
Expand Down Expand Up @@ -477,6 +478,7 @@ pub trait BitcoinBlockImport: Send + Sync + 'static {
async fn import_block(
&mut self,
block: BitcoinBlock,
origin: BlockOrigin,
) -> Result<ImportStatus, sp_consensus::Error>;
}

Expand All @@ -501,6 +503,7 @@ where
async fn import_block(
&mut self,
block: BitcoinBlock,
origin: BlockOrigin,
) -> Result<ImportStatus, sp_consensus::Error> {
if let Some(block_number) = self.client.block_number(block.block_hash()) {
return Ok(ImportStatus::AlreadyInChain(block_number));
Expand Down Expand Up @@ -541,7 +544,7 @@ where
.map_err(|err| import_err(format!("{err:?}")))?;

let (block_import_params, maybe_import_params_for_block_executor) = self
.prepare_substrate_block_import(block, substrate_parent_block)
.prepare_substrate_block_import(block, substrate_parent_block, origin)
.map_err(|err| import_err(err.to_string()))?;

if let Some(import_params) = maybe_import_params_for_block_executor {
Expand Down
4 changes: 2 additions & 2 deletions crates/sc-consensus-nakamoto/src/import_queue.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ pub struct ImportManyBlocksResult {
/// be called as well.
async fn import_many_blocks(
import_handle: &mut dyn BitcoinBlockImport,
_blocks_origin: BlockOrigin,
origin: BlockOrigin,
blocks: Vec<BitcoinBlock>,
) -> ImportManyBlocksResult {
tracing::trace!("[import_many_blocks] importing {} blocks", blocks.len());
Expand All @@ -171,7 +171,7 @@ async fn import_many_blocks(
Err(BlockImportError::Cancelled)
} else {
// The actual import.
let import_result = import_handle.import_block(block).await;
let import_result = import_handle.import_block(block, origin).await;

match import_result {
Ok(ImportStatus::AlreadyInChain(number)) => {
Expand Down
3 changes: 2 additions & 1 deletion crates/subcoin-node/src/commands/import_blocks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use sc_client_api::HeaderBackend;
use sc_consensus_nakamoto::{BitcoinBlockImport, BitcoinBlockImporter, ImportConfig};
use sc_service::config::PrometheusConfig;
use sc_service::SpawnTaskHandle;
use sp_consensus::BlockOrigin;
use sp_runtime::traits::{Block as BlockT, CheckedDiv, NumberFor, Zero};
use sp_runtime::Saturating;
use std::path::{Path, PathBuf};
Expand Down Expand Up @@ -131,7 +132,7 @@ impl ImportBlocksCmd {
for index in from..=to {
let block = bitcoind_backend.block_at(index)?;
bitcoin_block_import
.import_block(block)
.import_block(block, BlockOrigin::Own)
.await
.map_err(sp_blockchain::Error::Consensus)?;

Expand Down
7 changes: 4 additions & 3 deletions crates/subcoin-service/src/block_executor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ mod tests {
};
use sc_service::config::DatabaseSource;
use sc_service::BasePath;
use sp_consensus::BlockOrigin;
use sp_core::Encode;
use subcoin_test_service::{block_data, new_test_node_and_produce_blocks};
use tokio::runtime::Handle;
Expand Down Expand Up @@ -345,7 +346,7 @@ mod tests {
let test_blocks = block_data();

bitcoin_block_import
.import_block(test_blocks[1].clone())
.import_block(test_blocks[1].clone(), BlockOrigin::Own)
.await
.unwrap();

Expand All @@ -370,13 +371,13 @@ mod tests {
bitcoin_block_import.set_block_executor(block_executor);

let import_status = bitcoin_block_import
.import_block(test_blocks[2].clone())
.import_block(test_blocks[2].clone(), BlockOrigin::Own)
.await
.unwrap();
assert!(matches!(import_status, ImportStatus::Imported { .. }));

let import_status = bitcoin_block_import
.import_block(test_blocks[3].clone())
.import_block(test_blocks[3].clone(), BlockOrigin::Own)
.await
.unwrap();
assert!(matches!(import_status, ImportStatus::Imported { .. }));
Expand Down
5 changes: 4 additions & 1 deletion crates/subcoin-test-service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,10 @@ pub async fn new_test_node_and_produce_blocks(

for block_number in 1..=up_to {
let block = test_blocks[block_number as usize].clone();
let import_status = bitcoin_block_import.import_block(block).await.unwrap();
let import_status = bitcoin_block_import
.import_block(block, BlockOrigin::Own)
.await
.unwrap();
assert!(matches!(import_status, ImportStatus::Imported { .. }));
}

Expand Down

0 comments on commit 4d6df12

Please sign in to comment.