Parcourir la source

contract/consensus: constrain lottery headstart

aggstam il y a 3 ans
Parent
commit
b7b13a33e0

+ 3 - 2
src/contract/consensus/proof/reward_v1.zk

@@ -18,12 +18,12 @@ witness "Reward_V1" {
 	Base mu_y,
 	# Election seed rho
 	Base mu_rho,
-	# Lottery headstart
-	Base headstart,
 	# Sigma1
 	Base sigma1,
 	# Sigma2
 	Base sigma2,
+	# Lottery headstart
+	Base headstart,
 }
 
 circuit "Reward_V1" {
@@ -69,6 +69,7 @@ circuit "Reward_V1" {
 	shifted_target = base_add(target, headstart);
 	constrain_instance(sigma1);
 	constrain_instance(sigma2);
+	constrain_instance(headstart);
 
 	# Play lottery
 	less_than_loose(y, shifted_target);

+ 2 - 1
src/contract/consensus/src/client/proposal_v1.rs

@@ -89,6 +89,7 @@ impl ConsensusProposalRewardRevealed {
             self.rho,
             self.sigma1,
             self.sigma2,
+            HEADSTART,
         ]
     }
 }
@@ -306,9 +307,9 @@ pub fn create_proposal_reward_proof(
         Witness::Scalar(Value::known(value_blind)),
         Witness::Base(Value::known(mu_y)),
         Witness::Base(Value::known(mu_rho)),
-        Witness::Base(Value::known(HEADSTART)),
         Witness::Base(Value::known(sigma1)),
         Witness::Base(Value::known(sigma2)),
+        Witness::Base(Value::known(HEADSTART)),
     ];
 
     let circuit = ZkCircuit::new(prover_witnesses, zkbin.clone());

+ 2 - 1
src/contract/consensus/src/entrypoint/proposal_reward_v1.rs

@@ -37,7 +37,7 @@ use darkfi_serial::{deserialize, Encodable, WriteExt};
 use crate::{
     error::ConsensusError,
     model::{
-        ConsensusRewardParamsV1, ConsensusRewardUpdateV1, SlotCheckpoint, MU_RHO_PREFIX,
+        ConsensusRewardParamsV1, ConsensusRewardUpdateV1, SlotCheckpoint, HEADSTART, MU_RHO_PREFIX,
         MU_Y_PREFIX, REWARD, ZERO,
     },
     ConsensusFunction,
@@ -96,6 +96,7 @@ pub(crate) fn consensus_proposal_reward_get_metadata_v1(
             *rho,
             sigma1,
             sigma2,
+            HEADSTART,
         ],
     ));