Parcourir la source

daod/ exec: add vote + input/output values to proof. witness them and pass to Proof::create

lunar-mining il y a 4 ans
Parent
commit
07c2fbb3f2
2 fichiers modifiés avec 27 ajouts et 0 suppressions
  1. 15 0
      bin/daod/proof/dao-exec.zk
  2. 12 0
      bin/daod/src/dao_contract/exec/wallet.rs

+ 15 - 0
bin/daod/proof/dao-exec.zk

@@ -20,6 +20,21 @@ contract "DaoExec" {
     Base dao_public_x,
     Base dao_public_x,
     Base dao_public_y,
     Base dao_public_y,
     Base dao_bulla_blind,
     Base dao_bulla_blind,
+
+    # votes
+    Base win_votes,
+    Base total_votes,
+    Scalar win_votes_blind,
+    Scalar total_votes_blind,
+    
+    # outputs + inputs
+    Base user_serial,
+    Base user_coin_blind,
+    Base dao_serial,
+    Base dao_coin_blind,
+    Base input_value,
+    Scalar input_value_blind,
+
 }
 }
 
 
 circuit "DaoExec" {
 circuit "DaoExec" {

+ 12 - 0
bin/daod/src/dao_contract/exec/wallet.rs

@@ -105,6 +105,18 @@ impl Builder {
             Witness::Base(Value::known(dao_public_x)),
             Witness::Base(Value::known(dao_public_x)),
             Witness::Base(Value::known(dao_public_y)),
             Witness::Base(Value::known(dao_public_y)),
             Witness::Base(Value::known(self.dao.bulla_blind)),
             Witness::Base(Value::known(self.dao.bulla_blind)),
+            // votes
+            Witness::Base(Value::known(pallas::Base::from(self.win_votes))),
+            Witness::Base(Value::known(pallas::Base::from(self.total_votes))),
+            Witness::Scalar(Value::known(self.win_votes_blind)),
+            Witness::Scalar(Value::known(self.total_votes_blind)),
+            // outputs + inputs
+            Witness::Base(Value::known(self.user_serial)),
+            Witness::Base(Value::known(self.user_coin_blind)),
+            Witness::Base(Value::known(self.dao_serial)),
+            Witness::Base(Value::known(self.dao_coin_blind)),
+            Witness::Base(Value::known(pallas::Base::from(self.input_value))),
+            Witness::Scalar(Value::known(self.input_value_blind)),
         ];
         ];
 
 
         let public_inputs = vec![proposal_bulla];
         let public_inputs = vec![proposal_bulla];