From 3357181fe2771cbbf67450f3c1f6fb2deeb14b78 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Wed, 15 Jan 2025 10:47:47 -0500 Subject: [PATCH] Handle sign::ProcessorMessage::[Preprocesses, Shares] --- coordinator/src/main.rs | 38 ++++++++++++++++++++++-- coordinator/tributary/src/transaction.rs | 2 -- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/coordinator/src/main.rs b/coordinator/src/main.rs index e1f6708a..f189ffad 100644 --- a/coordinator/src/main.rs +++ b/coordinator/src/main.rs @@ -24,7 +24,7 @@ use serai_task::{Task, TaskHandle, ContinuallyRan}; use serai_cosign::{Faulted, SignedCosign, Cosigning}; use serai_coordinator_substrate::{CanonicalEventStream, EphemeralEventStream, SignSlashReport}; -use serai_coordinator_tributary::{Signed, Transaction, SubstrateBlockPlans}; +use serai_coordinator_tributary::{SigningProtocolRound, Signed, Transaction, SubstrateBlockPlans}; mod db; use db::*; @@ -216,9 +216,41 @@ async fn handle_processor_messages( ); } messages::sign::ProcessorMessage::Preprocesses { id, preprocesses } => { - todo!("TODO Transaction::Batch + Transaction::Sign") + let set = ValidatorSet { network, session: id.session }; + if id.attempt == 0 { + // Batches are declared by their intent to be signed + // TODO: Document this in processor <-> coordinator rebuild issue + if let messages::sign::VariantSignId::Batch(hash) = id.id { + TributaryTransactions::send(&mut txn, set, &Transaction::Batch { hash }); + } + } + + TributaryTransactions::send( + &mut txn, + set, + &Transaction::Sign { + id: id.id, + attempt: id.attempt, + round: SigningProtocolRound::Preprocess, + data: preprocesses, + signed: Signed::default(), + }, + ); + } + messages::sign::ProcessorMessage::Shares { id, shares } => { + let set = ValidatorSet { network, session: id.session }; + TributaryTransactions::send( + &mut txn, + set, + &Transaction::Sign { + id: id.id, + attempt: id.attempt, + round: SigningProtocolRound::Share, + data: shares, + signed: Signed::default(), + }, + ); } - messages::sign::ProcessorMessage::Shares { id, shares } => todo!("TODO Transaction::Sign"), }, messages::ProcessorMessage::Coordinator(msg) => match msg { messages::coordinator::ProcessorMessage::CosignedBlock { cosign } => { diff --git a/coordinator/tributary/src/transaction.rs b/coordinator/tributary/src/transaction.rs index f72d2620..b302f8d7 100644 --- a/coordinator/tributary/src/transaction.rs +++ b/coordinator/tributary/src/transaction.rs @@ -259,9 +259,7 @@ impl TransactionTrait for Transaction { Transaction::Cosign { .. } => TransactionKind::Provided("Cosign"), Transaction::Cosigned { .. } => TransactionKind::Provided("Cosigned"), - // TODO: Provide this Transaction::SubstrateBlock { .. } => TransactionKind::Provided("SubstrateBlock"), - // TODO: Provide this Transaction::Batch { .. } => TransactionKind::Provided("Batch"), Transaction::Sign { id, attempt, round, signed, .. } => TransactionKind::Signed(