From 10e779c1e92ba34746f643bc1e8b5d8527a06faf Mon Sep 17 00:00:00 2001 From: Rostyslav Tyshko Date: Wed, 9 Apr 2025 01:34:03 -0400 Subject: [PATCH] mint_utxo_private commitments --- node_core/src/lib.rs | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/node_core/src/lib.rs b/node_core/src/lib.rs index 33bc228..fef36a3 100644 --- a/node_core/src/lib.rs +++ b/node_core/src/lib.rs @@ -175,9 +175,9 @@ impl NodeCore { let acc_map_read_guard = self.storage.read().await; - let accout = acc_map_read_guard.acc_map.get(&acc).unwrap(); + let account = acc_map_read_guard.acc_map.get(&acc).unwrap(); - let ephm_key_holder = &accout.produce_ephemeral_key_holder(); + let ephm_key_holder = &account.produce_ephemeral_key_holder(); ephm_key_holder.log(); let eph_pub_key = @@ -185,14 +185,35 @@ impl NodeCore { let encoded_data = Account::encrypt_data( &ephm_key_holder, - accout.key_holder.viewing_public_key, + account.key_holder.viewing_public_key, &serde_json::to_vec(&utxo).unwrap(), ); - let tag = accout.make_tag(); + let tag = account.make_tag(); let comm = generate_commitments(&vec![utxo]); + // TODO: fix address when correspoding method will be added + let sc_addr = ""; + let mut rng = rand::thread_rng(); + let secret_r: [u8; 32] = rng.gen(); + + let sc_state = acc_map_read_guard.block_store.get_sc_sc_state(sc_addr).map_err(ExecutionFailureKind::db_error)?; + + let mut vec_values_u64: Vec> = sc_state.into_iter().map(|slice| Self::vec_u8_to_vec_u64(slice.to_vec())).collect(); + + let context = acc_map_read_guard.produce_context(account.address); + + let serialized_context = serde_json::to_vec(&context).unwrap(); + + let serialized_context_u64 = Self::vec_u8_to_vec_u64(serialized_context); + + vec_values_u64.push(serialized_context_u64); + + let vec_public_info: Vec = vec_values_u64.into_iter().flatten().collect(); + + let (tweak, secret_r, commitment) = new_commitment_vec(vec_public_info, &secret_r); + Ok(( TransactionPayload { tx_kind: TxKind::Private, @@ -210,6 +231,9 @@ impl NodeCore { .unwrap(), encoded_data: vec![(encoded_data.0, encoded_data.1.to_vec(), tag)], ephemeral_pub_key: eph_pub_key.to_vec(), + commitment, + tweak, + secret_r: secret_r.try_into().unwrap(), } .into(), result_hash,