Skip to content

Commit

Permalink
Don't accept messages from signers
Browse files Browse the repository at this point in the history
with outdated chain tips
  • Loading branch information
djordon committed Feb 4, 2025
1 parent e96b448 commit 7be5559
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions signer/src/transaction_signer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ use crate::keys::PublicKey;
use crate::keys::PublicKeyXOnly;
use crate::message;
use crate::message::BitcoinPreSignAck;
use crate::message::Payload;
use crate::message::StacksTransactionSignRequest;
use crate::metrics::Metrics;
use crate::metrics::BITCOIN_BLOCKCHAIN;
Expand Down Expand Up @@ -232,9 +233,9 @@ where
"handling message from signer"
);

let is_from_canonical_coordinator = chain_tip_report.is_from_canonical_coordinator();
match (&msg.inner.payload, is_from_canonical_coordinator) {
(message::Payload::StacksTransactionSignRequest(request), true) => {
let payload = &msg.inner.payload;
match (payload, sender_is_coordinator, chain_tip_status) {
(Payload::StacksTransactionSignRequest(request), true, ChainTipStatus::Canonical) => {
self.handle_stacks_transaction_sign_request(
request,
&chain_tip,
Expand All @@ -243,12 +244,12 @@ where
.await?;
}

(message::Payload::WstsMessage(wsts_msg), _) => {
(Payload::WstsMessage(wsts_msg), _, ChainTipStatus::Canonical) => {
self.handle_wsts_message(wsts_msg, msg.signer_public_key, &chain_tip_report)
.await?;
}

(message::Payload::BitcoinPreSignRequest(requests), true) => {
(Payload::BitcoinPreSignRequest(requests), true, ChainTipStatus::Canonical) => {
let instant = std::time::Instant::now();
let pre_validation_status = self
.handle_bitcoin_pre_sign_request(requests, &chain_tip)
Expand Down Expand Up @@ -277,9 +278,9 @@ where
pre_validation_status?;
}
// Message types ignored by the transaction signer
(message::Payload::StacksTransactionSignature(_), _)
| (message::Payload::SignerDepositDecision(_), _)
| (message::Payload::SignerWithdrawalDecision(_), _) => (),
(Payload::StacksTransactionSignature(_), _, _)
| (Payload::SignerDepositDecision(_), _, _)
| (Payload::SignerWithdrawalDecision(_), _, _) => (),

// Any other combination should be logged
_ => {
Expand Down

0 comments on commit 7be5559

Please sign in to comment.