Change criteria for a pairing process
This commit is contained in:
parent
159fd78a3a
commit
f722dee8f6
@ -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<MutexGuard<'static, HashMap<OutPoint, Member>>,
|
||||
.lock_anyhow()
|
||||
}
|
||||
|
||||
fn handle_member_list(pcd_commitment: &Value, roles: &HashMap<String, RoleDefinition>, process_id: OutPoint) -> Result<OutPoint> {
|
||||
//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<String, RoleDefinition>, process_id: OutPoint) -> Result<OutPoint> {
|
||||
//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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user