Update create_new_process

This commit is contained in:
Sosthene 2024-12-11 23:35:50 +01:00
parent 0c702de953
commit 2afc6c9a85

View File

@ -1195,19 +1195,24 @@ pub fn create_new_process(
let outpoint = OutPoint::new(transaction.txid(), 0); 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) // 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); let mut process = Process::new(outpoint);
// We now create the first process state with all that data // We now create the first process state with all that data
let process_state = ProcessState { let process_state = ProcessState {
commited_in: outpoint, 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()), encrypted_pcd: Value::Object(fields2cipher.clone()),
keys: fields2keys.clone(), keys: fields2keys.clone(),
validation_tokens: vec![], validation_tokens: vec![],
}; };
let diffs = create_diffs(&process, &process_state)?;
process.insert_concurrent_state(process_state.clone())?; process.insert_concurrent_state(process_state.clone())?;
{ {
@ -1219,12 +1224,12 @@ pub fn create_new_process(
processes.insert(outpoint.clone(), process.clone()); 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 { let updated_process = UpdatedProcess {
commitment_tx: outpoint, commitment_tx: outpoint,
current_process: process, current_process: process,
new_state: Some(process_state), new_diffs: diffs,
..Default::default() ..Default::default()
}; };