Add BatchSignerTask

Uses a wrapper around AlgorithmMachine Schnorrkel to let the message be &[].
This commit is contained in:
Luke Parker
2024-09-09 01:01:29 -04:00
parent 4152bcacb2
commit ed0221d804
13 changed files with 371 additions and 51 deletions

View File

@@ -26,7 +26,7 @@ mod db;
use db::*;
// Fetches transactions to sign and signs them.
pub(crate) struct TransactionTask<
pub(crate) struct TransactionSignerTask<
D: Db,
ST: SignableTransaction,
P: TransactionPublisher<TransactionFor<ST>>,
@@ -44,7 +44,7 @@ pub(crate) struct TransactionTask<
}
impl<D: Db, ST: SignableTransaction, P: TransactionPublisher<TransactionFor<ST>>>
TransactionTask<D, ST, P>
TransactionSignerTask<D, ST, P>
{
pub(crate) fn new(
db: D,
@@ -90,7 +90,7 @@ impl<D: Db, ST: SignableTransaction, P: TransactionPublisher<TransactionFor<ST>>
#[async_trait::async_trait]
impl<D: Db, ST: SignableTransaction, P: TransactionPublisher<TransactionFor<ST>>> ContinuallyRan
for TransactionTask<D, ST, P>
for TransactionSignerTask<D, ST, P>
{
async fn run_iteration(&mut self) -> Result<bool, String> {
let mut iterated = false;
@@ -193,17 +193,16 @@ impl<D: Db, ST: SignableTransaction, P: TransactionPublisher<TransactionFor<ST>>
&mut txn,
match id {
VariantSignId::Transaction(id) => id,
_ => panic!("TransactionTask signed a non-transaction"),
_ => panic!("TransactionSignerTask signed a non-transaction"),
},
&buf,
);
}
self
.publisher
.publish(signed_tx)
.await
.map_err(|e| format!("couldn't publish transaction: {e:?}"))?;
match self.publisher.publish(signed_tx).await {
Ok(()) => {}
Err(e) => log::warn!("couldn't broadcast transaction: {e:?}"),
}
}
}