From daff63113a180b4c31cfeb5a8ea07ee31896be36 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Tue, 8 Apr 2025 15:59:49 +0200 Subject: [PATCH] Don't only look last output for commitments --- src/process.rs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/process.rs b/src/process.rs index 9a5c138..9748c80 100644 --- a/src/process.rs +++ b/src/process.rs @@ -546,18 +546,19 @@ pub fn check_tx_for_process_updates(tx: &Transaction) -> anyhow::Result = tx.output.iter().filter(|o| o.script_pubkey.is_op_return()).collect(); + if op_return_outputs.len() != 1 { + return Err(anyhow::Error::msg("Transaction must contain exactly one op_return output")); } + let mut state_id = [0u8; 32]; + let data = &op_return_outputs.into_iter().next().unwrap().script_pubkey.as_bytes()[2..]; + if data.len() != 32 { + return Err(anyhow::Error::msg("commited data is not 32B long")); + } + state_id.clone_from_slice(data); // Check if we know about the commited state let new_state: ProcessState; if let Ok(commited_state) = process.get_state_for_id(&state_id) {