Skip to content

Commit

Permalink
refactor(mine_loop): Factor out coinbase transaction preparation
Browse files Browse the repository at this point in the history
  • Loading branch information
aszepieniec authored and Sword-Smith committed Jan 20, 2025
1 parent e170c92 commit 11bfca6
Showing 1 changed file with 27 additions and 14 deletions.
41 changes: 27 additions & 14 deletions src/mine_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,32 @@ pub(crate) async fn make_coinbase_transaction_stateless(
proving_power: TxProvingCapability,
vm_job_queue: &JobQueue<TritonVmJobPriority>,
) -> Result<(Transaction, TxOutputList)> {
let (composer_outputs, transaction_details) =
prepare_coinbase_transaction_stateless(latest_block, composer_parameters, timestamp)?;

info!("Start: generate single proof for coinbase transaction");
let transaction = GlobalState::create_raw_transaction(
transaction_details,
proving_power,
vm_job_queue,
TritonVmProofJobOptions {
job_priority: TritonVmJobPriority::High,
job_settings: Default::default(),
},
)
.await?;
info!("Done: generating single proof for coinbase transaction");

Ok((transaction, composer_outputs))
}

/// Compute `TransactionDetails` and a list of `TxOutput`s for a coinbase
/// transaction.
fn prepare_coinbase_transaction_stateless(
latest_block: &Block,
composer_parameters: ComposerParameters,
timestamp: Timestamp,
) -> Result<(TxOutputList, TransactionDetails)> {
let mutator_set_accumulator = latest_block.mutator_set_accumulator_after().clone();
let next_block_height: BlockHeight = latest_block.header().height.next();
info!("Creating coinbase for block of height {next_block_height}.");
Expand Down Expand Up @@ -411,20 +437,7 @@ pub(crate) async fn make_coinbase_transaction_stateless(
and tx must be balanced because the one output receives exactly the coinbase amount",
);

info!("Start: generate single proof for coinbase transaction");
let transaction = GlobalState::create_raw_transaction(
transaction_details,
proving_power,
vm_job_queue,
TritonVmProofJobOptions {
job_priority: TritonVmJobPriority::High,
job_settings: Default::default(),
},
)
.await?;
info!("Done: generating single proof for coinbase transaction");

Ok((transaction, composer_outputs))
Ok((composer_outputs, transaction_details))
}

/// Create a transaction with a coinbase for the indicated address.
Expand Down

0 comments on commit 11bfca6

Please sign in to comment.