mirror of
https://github.com/alexgo-io/bitcoin-indexer.git
synced 2026-06-16 18:19:17 +08:00
fix: handle re-inscription for unbound inscriptions
This commit is contained in:
@@ -672,14 +672,12 @@ async fn handle_command(opts: Opts, ctx: &Context) -> Result<(), String> {
|
||||
let inscription_indexing_processor =
|
||||
start_inscription_indexing_processor(&config, ctx, None);
|
||||
|
||||
let block_ingestion_processor = start_block_ingestion_processor(&config, ctx, None);
|
||||
|
||||
download_and_pipeline_blocks(
|
||||
&config,
|
||||
cmd.start_block,
|
||||
cmd.end_block,
|
||||
hord_config.first_inscription_height,
|
||||
Some(&block_ingestion_processor),
|
||||
None,
|
||||
Some(&inscription_indexing_processor),
|
||||
10_000,
|
||||
&ctx,
|
||||
|
||||
@@ -402,12 +402,14 @@ pub fn augment_block_with_ordinals_inscriptions_data_and_write_to_db_tx(
|
||||
// Handle re-inscriptions
|
||||
let mut reinscriptions_data = HashMap::new();
|
||||
for (_, inscription_data) in inscriptions_data.iter() {
|
||||
if let Some(inscription_id) = find_blessed_inscription_with_ordinal_number(
|
||||
&inscription_data.ordinal_number,
|
||||
inscriptions_db_tx,
|
||||
ctx,
|
||||
) {
|
||||
reinscriptions_data.insert(inscription_data.ordinal_number, inscription_id);
|
||||
if inscription_data.ordinal_number != 0 {
|
||||
if let Some(inscription_id) = find_blessed_inscription_with_ordinal_number(
|
||||
&inscription_data.ordinal_number,
|
||||
inscriptions_db_tx,
|
||||
ctx,
|
||||
) {
|
||||
reinscriptions_data.insert(inscription_data.ordinal_number, inscription_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -554,9 +556,6 @@ pub fn augment_transaction_with_ordinals_inscriptions_data(
|
||||
}
|
||||
};
|
||||
|
||||
// The reinscriptions_data needs to be augmented as we go, to handle transaction chaining.
|
||||
reinscriptions_data.insert(traversal.ordinal_number, traversal.get_inscription_id());
|
||||
|
||||
let outputs = &tx.metadata.outputs;
|
||||
inscription.inscription_number = inscription_number;
|
||||
inscription.ordinal_offset = traversal.get_ordinal_coinbase_offset();
|
||||
@@ -605,6 +604,9 @@ pub fn augment_transaction_with_ordinals_inscriptions_data(
|
||||
continue;
|
||||
}
|
||||
|
||||
// The reinscriptions_data needs to be augmented as we go, to handle transaction chaining.
|
||||
reinscriptions_data.insert(traversal.ordinal_number, traversal.get_inscription_id());
|
||||
|
||||
ctx.try_log(|logger| {
|
||||
info!(
|
||||
logger,
|
||||
|
||||
@@ -959,7 +959,15 @@ pub fn delete_data_in_hord_db(
|
||||
inscriptions_db_conn_rw: &Connection,
|
||||
ctx: &Context,
|
||||
) -> Result<(), String> {
|
||||
info!(
|
||||
ctx.expect_logger(),
|
||||
"Deleting entries from block #{start_block} to block #{end_block}"
|
||||
);
|
||||
delete_blocks_in_block_range(start_block as u32, end_block as u32, blocks_db_rw, &ctx);
|
||||
info!(
|
||||
ctx.expect_logger(),
|
||||
"Deleting inscriptions and locations from block #{start_block} to block #{end_block}"
|
||||
);
|
||||
delete_inscriptions_in_block_range(
|
||||
start_block as u32,
|
||||
end_block as u32,
|
||||
|
||||
Reference in New Issue
Block a user