From 254bdfdb0d3fc677e87da08826a982dfd5166734 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Mon, 3 Feb 2025 15:57:35 +0100 Subject: [PATCH] Change criteria for a pairing process --- src/commit.rs | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/commit.rs b/src/commit.rs index 4521009..185187c 100644 --- a/src/commit.rs +++ b/src/commit.rs @@ -17,7 +17,6 @@ use sdk_common::sp_client::bitcoin::consensus::deserialize; use sdk_common::sp_client::bitcoin::{Amount, Transaction, OutPoint}; use sdk_common::process::{lock_processes, Process, ProcessState}; use serde_json::json; -use serde_json::Value; use crate::message::{broadcast_message, BroadcastType}; use crate::{lock_freezed_utxos, MutexExt, DAEMON, STORAGE, WALLET}; @@ -78,7 +77,7 @@ fn handle_initial_transaction(tx: Transaction, commit_msg: &CommitMessage) -> Re let merkle_root_bin = pcd_commitment.create_merkle_tree()?.root().unwrap(); - if let Ok(pairing_process_id) = handle_member_list(pcd_commitment, &parsed_roles, process_id) { + if let Ok(pairing_process_id) = handle_member_list(&parsed_roles, process_id) { dump_cached_members()?; // Send a handshake message to every connected client if let Some(new_member) = lock_members().unwrap().get(&pairing_process_id) { @@ -167,27 +166,22 @@ pub fn lock_members() -> Result>, .lock_anyhow() } -fn handle_member_list(pcd_commitment: &Value, roles: &HashMap, process_id: OutPoint) -> Result { - //Check if the keys exists in the pcd - if let Value::Object(ref pcd_map) = pcd_commitment { - if !pcd_map.contains_key("key_parity") - || !pcd_map.contains_key("session_privkey") - || !pcd_map.contains_key("session_pubkey") - { - return Err(Error::msg("Process is not a pairing process")); - } - } else { - return Err(Error::msg("Pcd is missing")); - } - +fn handle_member_list(roles: &HashMap, process_id: OutPoint) -> Result { //Check if there is one role with one member if roles.len() != 1 { return Err(Error::msg("Process is not a pairing process")); } - if let Some(owner_role) = roles.get("owner") { - if owner_role.members.len() == 1 { - let member = owner_role.members.get(0).unwrap(); + //Check if process have a pairing role + if let Some((role_name,_)) = roles.iter().next(){ + if role_name != "pairing" { + return Err(Error::msg("Process is not a pairing process")); + } + } + + if let Some(pairing_role) = roles.get("pairing") { + if pairing_role.members.len() == 1 { + let member = pairing_role.members.get(0).unwrap(); let mut memberlist = lock_members()?; memberlist.insert( process_id,