From 8fc244b2713e3c71fc15d71816eaa04ea1992780 Mon Sep 17 00:00:00 2001 From: Rostyslav Tyshko Date: Wed, 9 Apr 2025 01:28:56 -0400 Subject: [PATCH] add pedersen commitments to `Transaction` and `TransactionPayload` struct --- storage/src/transaction.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/storage/src/transaction.rs b/storage/src/transaction.rs index 2a7f23c..32cb1f0 100644 --- a/storage/src/transaction.rs +++ b/storage/src/transaction.rs @@ -1,6 +1,7 @@ use log::info; use serde::{Deserialize, Serialize}; use sha2::{digest::FixedOutput, Digest}; +use secp256k1_zkp::{rand, PedersenCommitment, Tweak}; use crate::merkle_tree_public::TreeHashType; @@ -43,6 +44,12 @@ pub struct Transaction { pub encoded_data: Vec<(CipherText, Vec, Tag)>, ///Transaction senders ephemeral pub key pub ephemeral_pub_key: Vec, + ///Public (Pedersen) commitment + pub commitment: Vec, + ///tweak + pub tweak: Tweak, + ///secret_r + pub secret_r: [u8; 32], } #[derive(Debug, Serialize, Deserialize, Clone)] @@ -65,6 +72,12 @@ pub struct TransactionPayload { pub encoded_data: Vec<(CipherText, Vec, Tag)>, ///Transaction senders ephemeral pub key pub ephemeral_pub_key: Vec, + ///Public (Pedersen) commitment + pub commitment: Vec, + ///tweak + pub tweak: Tweak, + ///secret_r + pub secret_r: [u8; 32], } impl From for Transaction { @@ -77,6 +90,8 @@ impl From for Transaction { let hash = ::from(hasher.finalize_fixed()); + let mut rng = rand::thread_rng(); + Self { hash, tx_kind: value.tx_kind, @@ -88,6 +103,9 @@ impl From for Transaction { execution_proof_private: value.execution_proof_private, encoded_data: value.encoded_data, ephemeral_pub_key: value.ephemeral_pub_key, + commitment: value.commitment, + tweak: Tweak::new(&mut rng), + secret_r: [0; 32], } } }