Просмотр исходного кода

dao-test: remove serial from proposals, and fix exec to use user serial/coin_blind

x 3 лет назад
Родитель
Сommit
9ced92462f

+ 2 - 6
src/contract/dao/proof/dao-exec.zk

@@ -8,7 +8,6 @@ contract "DaoExec" {
 	Base proposal_dest_x,
 	Base proposal_dest_y,
 	Base proposal_amount,
-	Base proposal_serial,
 	Base proposal_token_id,
 	Base proposal_blind,
 
@@ -61,12 +60,9 @@ circuit "DaoExec" {
 		proposal_dest_x,
 		proposal_dest_y,
 		proposal_amount,
-		proposal_serial,
 		proposal_token_id,
 		dao_bulla,
 		proposal_blind,
-		# Blind twice to workaround odd-n poseidon bug
-		proposal_blind,
 	);
 	constrain_instance(proposal_bulla);
 
@@ -75,10 +71,10 @@ circuit "DaoExec" {
 		proposal_dest_y,
 		proposal_amount,
 		proposal_token_id,
-		proposal_serial,
+		user_serial,
 		user_spend_hook,
 		user_data,
-		proposal_blind,
+		user_coin_blind,
 	);
 	constrain_instance(coin_0);
 

+ 0 - 3
src/contract/dao/proof/dao-propose-main.zk

@@ -15,7 +15,6 @@ contract "DaoProposeMain" {
 	Base proposal_dest_x,
 	Base proposal_dest_y,
 	Base proposal_amount,
-	Base proposal_serial,
 	Base proposal_token_id,
 	Base proposal_blind,
 
@@ -56,11 +55,9 @@ circuit "DaoProposeMain" {
 		proposal_dest_x,
 		proposal_dest_y,
 		proposal_amount,
-		proposal_serial,
 		proposal_token_id,
 		dao_bulla,
 		proposal_blind,
-		proposal_blind,
 	);
 	constrain_instance(proposal_bulla);
 

+ 0 - 3
src/contract/dao/proof/dao-vote-main.zk

@@ -8,7 +8,6 @@ contract "DaoVoteMain" {
 	Base proposal_dest_x,
 	Base proposal_dest_y,
 	Base proposal_amount,
-	Base proposal_serial,
 	Base proposal_token_id,
 	Base proposal_blind,
 
@@ -53,11 +52,9 @@ circuit "DaoVoteMain" {
 		proposal_dest_x,
 		proposal_dest_y,
 		proposal_amount,
-		proposal_serial,
 		proposal_token_id,
 		dao_bulla,
 		proposal_blind,
-		proposal_blind,
 	);
 	constrain_instance(proposal_bulla);
 	# TODO: We need to check the proposal isn't invalidated

+ 3 - 7
src/contract/dao/src/dao_client/exec.rs

@@ -86,16 +86,13 @@ impl DaoExecCall {
             self.dao.bulla_blind,
         ]);
 
-        let proposal_bulla = poseidon_hash::<8>([
+        let proposal_bulla = poseidon_hash::<6>([
             proposal_dest_x,
             proposal_dest_y,
             proposal_amount,
-            self.proposal.serial,
             self.proposal.token_id.inner(),
             dao_bulla,
             self.proposal.blind,
-            // @tmp-workaround
-            self.proposal.blind,
         ]);
 
         let coin_0 = poseidon_hash::<8>([
@@ -103,10 +100,10 @@ impl DaoExecCall {
             proposal_dest_y,
             proposal_amount,
             self.proposal.token_id.inner(),
-            self.proposal.serial,
+            self.user_serial,
             user_spend_hook,
             user_data,
-            self.proposal.blind,
+            self.user_coin_blind,
         ]);
 
         let coin_1 = poseidon_hash::<8>([
@@ -134,7 +131,6 @@ impl DaoExecCall {
             Witness::Base(Value::known(proposal_dest_x)),
             Witness::Base(Value::known(proposal_dest_y)),
             Witness::Base(Value::known(proposal_amount)),
-            Witness::Base(Value::known(self.proposal.serial)),
             Witness::Base(Value::known(self.proposal.token_id.inner())),
             Witness::Base(Value::known(self.proposal.blind)),
             // DAO params

+ 1 - 6
src/contract/dao/src/dao_client/propose.rs

@@ -40,7 +40,6 @@ use super::DaoInfo;
 pub struct DaoProposalInfo {
     pub dest: PublicKey,
     pub amount: u64,
-    pub serial: pallas::Base,
     pub token_id: TokenId,
     pub blind: pallas::Base,
 }
@@ -197,16 +196,13 @@ impl DaoProposeCall {
 
         let dao_leaf_position: u64 = self.dao_leaf_position.into();
 
-        let proposal_bulla = poseidon_hash::<8>([
+        let proposal_bulla = poseidon_hash::<6>([
             proposal_dest_x,
             proposal_dest_y,
             proposal_amount,
-            self.proposal.serial,
             self.proposal.token_id.inner(),
             dao_bulla,
             self.proposal.blind,
-            // @tmp-workaround
-            self.proposal.blind,
         ]);
 
         let prover_witnesses = vec![
@@ -219,7 +215,6 @@ impl DaoProposeCall {
             Witness::Base(halo2::Value::known(proposal_dest_x)),
             Witness::Base(halo2::Value::known(proposal_dest_y)),
             Witness::Base(halo2::Value::known(proposal_amount)),
-            Witness::Base(halo2::Value::known(self.proposal.serial)),
             Witness::Base(halo2::Value::known(self.proposal.token_id.inner())),
             Witness::Base(halo2::Value::known(self.proposal.blind)),
             // DAO params

+ 1 - 5
src/contract/dao/src/dao_client/vote.rs

@@ -198,16 +198,13 @@ impl DaoVoteCall {
             self.dao.bulla_blind,
         ]);
 
-        let proposal_bulla = poseidon_hash::<8>([
+        let proposal_bulla = poseidon_hash::<6>([
             proposal_dest_x,
             proposal_dest_y,
             proposal_amount,
-            self.proposal.serial,
             self.proposal.token_id.inner(),
             dao_bulla,
             self.proposal.blind,
-            // @tmp-workaround
-            self.proposal.blind,
         ]);
 
         let vote_option = self.vote_option as u64;
@@ -225,7 +222,6 @@ impl DaoVoteCall {
             Witness::Base(halo2::Value::known(proposal_dest_x)),
             Witness::Base(halo2::Value::known(proposal_dest_y)),
             Witness::Base(halo2::Value::known(proposal_amount)),
-            Witness::Base(halo2::Value::known(self.proposal.serial)),
             Witness::Base(halo2::Value::known(self.proposal.token_id.inner())),
             Witness::Base(halo2::Value::known(self.proposal.blind)),
             // DAO params

+ 2 - 3
src/contract/dao/tests/integration.rs

@@ -396,7 +396,6 @@ async fn integration_test() -> Result<()> {
     let proposal = dao_client::DaoProposalInfo {
         dest: receiver_keypair.public,
         amount: 1000,
-        serial: pallas::Base::random(&mut OsRng),
         token_id: xdrk_token_id,
         blind: pallas::Base::random(&mut OsRng),
     };
@@ -796,8 +795,8 @@ async fn integration_test() -> Result<()> {
                 token_id: xdrk_token_id,
                 //public: user_keypair.public,
                 public: receiver_keypair.public,
-                serial: proposal.serial,
-                coin_blind: proposal.blind,
+                serial: user_serial,
+                coin_blind: user_coin_blind,
                 spend_hook: pallas::Base::from(0),
                 user_data: pallas::Base::from(0),
             },