From 2afc6c9a85a33dd220ce9bb288686380200e2588 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Wed, 11 Dec 2024 23:35:50 +0100 Subject: [PATCH] Update create_new_process --- src/api.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/api.rs b/src/api.rs index f8ae639..b9f3a1d 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1195,19 +1195,24 @@ pub fn create_new_process( let outpoint = OutPoint::new(transaction.txid(), 0); // We now need a hash that commits to the clear value of each field + the process id (or outpoint) - let fields_commitment = pcd.hash_all_fields(outpoint)?; + let pcd_commitment = Value::Object(pcd.hash_all_fields(outpoint)?); + + let merkle_root = pcd_commitment.create_merkle_tree()?.root().ok_or(ApiError::new("Invalid merkle tree".to_owned()))?.to_lower_hex_string(); let mut process = Process::new(outpoint); // We now create the first process state with all that data let process_state = ProcessState { commited_in: outpoint, - pcd_commitment: Value::Object(fields_commitment.clone()), + pcd_commitment: pcd_commitment.clone(), + merkle_root: merkle_root.clone(), encrypted_pcd: Value::Object(fields2cipher.clone()), keys: fields2keys.clone(), validation_tokens: vec![], }; + let diffs = create_diffs(&process, &process_state)?; + process.insert_concurrent_state(process_state.clone())?; { @@ -1219,12 +1224,12 @@ pub fn create_new_process( processes.insert(outpoint.clone(), process.clone()); } - let commit_msg = CommitMessage::new_first_commitment(transaction, Value::Object(fields_commitment), roles); + let commit_msg = CommitMessage::new_first_commitment(transaction, pcd_commitment, roles); let updated_process = UpdatedProcess { commitment_tx: outpoint, current_process: process, - new_state: Some(process_state), + new_diffs: diffs, ..Default::default() };