Update add_validation_token
This commit is contained in:
parent
f789b30372
commit
92f4d62c88
36
src/api.rs
36
src/api.rs
@ -1499,13 +1499,6 @@ pub fn evaluate_state(init_commitment: String, previous_state: Option<String>, s
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_validation_token(init_commitment: String, merkle_root_hex: String, approval: bool) -> ApiResult<ApiReturn> {
|
fn add_validation_token(init_commitment: String, merkle_root_hex: String, approval: bool) -> ApiResult<ApiReturn> {
|
||||||
let mut merkle_root = [0u8; 32];
|
|
||||||
let pcd_commitment_vec = Vec::from_hex(&merkle_root_hex)?;
|
|
||||||
if pcd_commitment_vec.len() != 32 {
|
|
||||||
return Err(ApiError::new("pcd_commitment must be 32B long".to_owned()));
|
|
||||||
}
|
|
||||||
merkle_root.copy_from_slice(&pcd_commitment_vec);
|
|
||||||
|
|
||||||
let mut processes = lock_processes()?;
|
let mut processes = lock_processes()?;
|
||||||
|
|
||||||
let outpoint = OutPoint::from_str(&init_commitment)?;
|
let outpoint = OutPoint::from_str(&init_commitment)?;
|
||||||
@ -1513,29 +1506,30 @@ fn add_validation_token(init_commitment: String, merkle_root_hex: String, approv
|
|||||||
let process = processes.get_mut(&outpoint)
|
let process = processes.get_mut(&outpoint)
|
||||||
.ok_or(ApiError::new("Unknown process".to_owned()))?;
|
.ok_or(ApiError::new("Unknown process".to_owned()))?;
|
||||||
|
|
||||||
let update_state: &mut ProcessState = process.get_state_for_commitments_root(merkle_root)?;
|
{
|
||||||
|
let update_state: &mut ProcessState = process.get_state_for_commitments_root_mut(&merkle_root_hex)?;
|
||||||
|
|
||||||
let message_hash = if approval {
|
let mut merkle_root = [0u8; 32];
|
||||||
AnkHash::ValidationYes(AnkValidationYesHash::from_byte_array(merkle_root))
|
|
||||||
} else {
|
|
||||||
AnkHash::ValidationNo(AnkValidationNoHash::from_byte_array(merkle_root))
|
|
||||||
};
|
|
||||||
|
|
||||||
let local_device = lock_local_device()?;
|
merkle_root.copy_from_slice(&Vec::from_hex(&merkle_root_hex)?);
|
||||||
let sp_wallet = local_device.get_wallet();
|
|
||||||
let proof = Proof::new(message_hash, sp_wallet.get_client().get_spend_key().try_into()?);
|
|
||||||
|
|
||||||
// we copy the state before modifying it
|
let message_hash = if approval {
|
||||||
let previous_state = update_state.clone();
|
AnkHash::ValidationYes(AnkValidationYesHash::from_merkle_root(merkle_root))
|
||||||
|
} else {
|
||||||
|
AnkHash::ValidationNo(AnkValidationNoHash::from_merkle_root(merkle_root))
|
||||||
|
};
|
||||||
|
|
||||||
update_state.validation_tokens.push(proof);
|
let local_device = lock_local_device()?;
|
||||||
|
let sp_wallet = local_device.get_wallet();
|
||||||
|
let proof = Proof::new(message_hash, sp_wallet.get_client().get_spend_key().try_into()?);
|
||||||
|
|
||||||
let new_state = update_state.clone();
|
update_state.validation_tokens.push(proof);
|
||||||
|
}
|
||||||
|
|
||||||
let updated_process = UpdatedProcess {
|
let updated_process = UpdatedProcess {
|
||||||
commitment_tx: OutPoint::from_str(&init_commitment)?,
|
commitment_tx: OutPoint::from_str(&init_commitment)?,
|
||||||
current_process: process.clone(),
|
current_process: process.clone(),
|
||||||
modified_state: Some((previous_state, new_state)),
|
modified_state: Some(merkle_root_hex),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user