fix: handle re-inscription for unbound inscriptions

This commit is contained in:
Ludo Galabru
2023-08-05 10:49:24 +02:00
parent a1410e29dd
commit a1ffc1a59a
3 changed files with 20 additions and 12 deletions

View File

@@ -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,

View File

@@ -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,

View File

@@ -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,