From b01d28a57dbedd4ad51485a5de4cab9121ced0eb Mon Sep 17 00:00:00 2001 From: thomaslavaur Date: Tue, 1 Apr 2025 14:13:17 +0200 Subject: [PATCH] add the attached data to the transaction --- .../Operations/generate_inputs_for_transaction.py | 2 ++ circom_circuits/Operations/transaction.circom | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/circom_circuits/Operations/generate_inputs_for_transaction.py b/circom_circuits/Operations/generate_inputs_for_transaction.py index 148edb2..5dd439e 100755 --- a/circom_circuits/Operations/generate_inputs_for_transaction.py +++ b/circom_circuits/Operations/generate_inputs_for_transaction.py @@ -218,6 +218,7 @@ zone_in = [F(randrange(0,p,1)) for i in range(nInputs) ] note_nonce_in = [F(randrange(0,p,1)) for i in range(nInputs)] sk_in = [F(randrange(0,p,1)) for i in range(nInputs)] pk_in = [ poseidon2_hash([F(355994159511987982411097843485998670968942801951585260613801918349630142543),sk_in[i]]) for i in range(nInputs) ] +attached_data = F(randrange(0,p,1)) note_cm_in = [poseidon2_hash([F(181645510297841241569044198526601622686169271532834574969543446901055041748),state_in[i],value_in[i],unit,note_nonce_in[i],pk_in[i],zone_in[i]]) for i in range(nInputs) ] cm_nodes = [[F(randrange(0,p,1)) for i in range(32)] for j in range(nInputs) ] @@ -322,6 +323,7 @@ with open("input.json", "w") as file: file.write('],') else: file.write(',') + file.write('\n\t"attached_data" :\t\t\t\t\t\t"'+str(attached_data)+'",') file.write('\n\t"state_out" :\t\t\t\t\t[') for i in range(nOutputs): file.write('"') diff --git a/circom_circuits/Operations/transaction.circom b/circom_circuits/Operations/transaction.circom index 894fa29..5fdc083 100644 --- a/circom_circuits/Operations/transaction.circom +++ b/circom_circuits/Operations/transaction.circom @@ -27,6 +27,8 @@ template transfer(nInputs, nOutputs){ signal input zoneID_out[nOutputs]; signal output commitments[nOutputs]; + signal input attached_data; + signal output balance; @@ -102,6 +104,10 @@ template transfer(nInputs, nOutputs){ } balance <== b; + //dummy quadratic contraints to avoid optimisation erasing the public input + signal dummy; + dummy <== attached_data * attached_data; + } component main {public [zoneID_in,commitments_root,zoneID_out]}= transfer(1,1); \ No newline at end of file