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

contract/consensus: Introduce ConsensusUnstakeReqParams due to previous commit.

parazyd 3 лет назад
Родитель
Сommit
c9556a160c

+ 5 - 19
src/contract/consensus/src/client/stake_v1.rs

@@ -25,13 +25,10 @@ use darkfi::{
 };
 use darkfi_money_contract::{
     client::{ConsensusNote, OwnCoin},
-    model::{ConsensusInput, ConsensusOutput, ConsensusStakeParamsV1},
+    model::{ConsensusOutput, ConsensusStakeParamsV1, Input},
 };
 use darkfi_sdk::{
-    crypto::{
-        note::AeadEncryptedNote, pasta_prelude::*, MerkleNode, Nullifier, PublicKey, SecretKey,
-        DARK_TOKEN_ID,
-    },
+    crypto::{note::AeadEncryptedNote, pasta_prelude::*, PublicKey, SecretKey, DARK_TOKEN_ID},
     pasta::pallas,
 };
 use log::{debug, info};
@@ -53,10 +50,8 @@ pub struct ConsensusStakeCallBuilder {
     pub epoch: u64,
     /// Blinding factor for value commitment
     pub value_blind: pallas::Scalar,
-    /// Revealed nullifier
-    pub nullifier: Nullifier,
-    /// Revealed Merkle root
-    pub merkle_root: MerkleNode,
+    /// The money `Input` (comes from the previous `Money::Stake` contract call)
+    pub money_input: Input,
     /// `ConsensusMint_V1` zkas circuit ZkBinary
     pub mint_zkbin: ZkBinary,
     /// Proving key for the `ConsensusMint_V1` zk circuit
@@ -107,17 +102,8 @@ impl ConsensusStakeCallBuilder {
             note: encrypted_note,
         };
 
-        let input = ConsensusInput {
-            epoch: self.epoch,
-            coin: self.coin.coin,
-            value_commit: public_inputs.value_commit,
-            nullifier: self.nullifier,
-            merkle_root: self.merkle_root,
-            signature_public: public_key,
-        };
-
         // We now fill this with necessary stuff
-        let params = ConsensusStakeParamsV1 { input, output };
+        let params = ConsensusStakeParamsV1 { input: self.money_input.clone(), output };
         let proofs = vec![proof];
 
         // Now we should have all the params and zk proof.

+ 3 - 3
src/contract/consensus/src/client/unstake_request_v1.rs

@@ -25,7 +25,7 @@ use darkfi::{
 };
 use darkfi_money_contract::{
     client::{ConsensusNote, ConsensusOwnCoin},
-    model::{ConsensusInput, ConsensusOutput, ConsensusStakeParamsV1},
+    model::{ConsensusInput, ConsensusOutput, ConsensusUnstakeReqParamsV1},
 };
 use darkfi_sdk::{
     crypto::{note::AeadEncryptedNote, pasta_prelude::*, MerkleTree, SecretKey},
@@ -41,7 +41,7 @@ use crate::client::common::{
 };
 
 pub struct ConsensusUnstakeRequestCallDebris {
-    pub params: ConsensusStakeParamsV1,
+    pub params: ConsensusUnstakeReqParamsV1,
     pub proofs: Vec<Proof>,
     pub signature_secret: SecretKey,
 }
@@ -136,7 +136,7 @@ impl ConsensusUnstakeRequestCallBuilder {
         };
 
         // We now fill this with necessary stuff
-        let params = ConsensusStakeParamsV1 { input, output };
+        let params = ConsensusUnstakeReqParamsV1 { input, output };
         let proofs = vec![burn_proof, mint_proof];
 
         // Now we should have all the params, zk proof, and signature secret.

+ 3 - 3
src/contract/consensus/src/entrypoint/unstake_request_v1.rs

@@ -17,7 +17,7 @@
  */
 
 use darkfi_money_contract::{
-    error::MoneyError, model::ConsensusStakeParamsV1, CONSENSUS_CONTRACT_COIN_MERKLE_TREE,
+    error::MoneyError, model::ConsensusUnstakeReqParamsV1, CONSENSUS_CONTRACT_COIN_MERKLE_TREE,
     CONSENSUS_CONTRACT_COIN_ROOTS_TREE, CONSENSUS_CONTRACT_INFO_TREE,
     CONSENSUS_CONTRACT_NULLIFIERS_TREE, CONSENSUS_CONTRACT_UNSTAKED_COINS_TREE,
     CONSENSUS_CONTRACT_ZKAS_BURN_NS_V1, CONSENSUS_CONTRACT_ZKAS_MINT_NS_V1,
@@ -46,7 +46,7 @@ pub(crate) fn consensus_unstake_request_get_metadata_v1(
     calls: Vec<ContractCall>,
 ) -> Result<Vec<u8>, ContractError> {
     let self_ = &calls[call_idx as usize];
-    let params: ConsensusStakeParamsV1 = deserialize(&self_.data[1..])?;
+    let params: ConsensusUnstakeReqParamsV1 = deserialize(&self_.data[1..])?;
     let input = &params.input;
     let output = &params.output;
 
@@ -102,7 +102,7 @@ pub(crate) fn consensus_unstake_request_process_instruction_v1(
     calls: Vec<ContractCall>,
 ) -> Result<Vec<u8>, ContractError> {
     let self_ = &calls[call_idx as usize];
-    let params: ConsensusStakeParamsV1 = deserialize(&self_.data[1..])?;
+    let params: ConsensusUnstakeReqParamsV1 = deserialize(&self_.data[1..])?;
     let input = &params.input;
     let output = &params.output;
 

+ 5 - 6
src/contract/consensus/tests/harness.rs

@@ -60,8 +60,8 @@ use darkfi_money_contract::{
         unstake_v1::MoneyUnstakeCallBuilder, ConsensusNote, ConsensusOwnCoin, MoneyNote, OwnCoin,
     },
     model::{
-        Coin, ConsensusOutput, ConsensusStakeParamsV1, MoneyTransferParamsV1, MoneyUnstakeParamsV1,
-        Output,
+        Coin, ConsensusOutput, ConsensusStakeParamsV1, ConsensusUnstakeReqParamsV1,
+        MoneyTransferParamsV1, MoneyUnstakeParamsV1, Output,
     },
     MoneyFunction, CONSENSUS_CONTRACT_ZKAS_BURN_NS_V1, CONSENSUS_CONTRACT_ZKAS_MINT_NS_V1,
     CONSENSUS_CONTRACT_ZKAS_PROPOSAL_NS_V1, MONEY_CONTRACT_ZKAS_BURN_NS_V1,
@@ -461,8 +461,7 @@ impl ConsensusTestHarness {
             coin: owncoin,
             epoch,
             value_blind: money_stake_value_blind,
-            nullifier: money_stake_params.input.nullifier,
-            merkle_root: money_stake_params.input.merkle_root,
+            money_input: money_stake_params.input.clone(),
             mint_zkbin: mint_zkbin.clone(),
             mint_pk: mint_pk.clone(),
         }
@@ -619,7 +618,7 @@ impl ConsensusTestHarness {
         holder: Holder,
         slot: u64,
         staked_oc: ConsensusOwnCoin,
-    ) -> Result<(Transaction, ConsensusStakeParamsV1, SecretKey)> {
+    ) -> Result<(Transaction, ConsensusUnstakeReqParamsV1, SecretKey)> {
         let wallet = self.holders.get_mut(&holder).unwrap();
         let (burn_pk, burn_zkbin) =
             self.proving_keys.get(&CONSENSUS_CONTRACT_ZKAS_BURN_NS_V1).unwrap();
@@ -673,7 +672,7 @@ impl ConsensusTestHarness {
         &mut self,
         holder: Holder,
         tx: Transaction,
-        params: &ConsensusStakeParamsV1,
+        params: &ConsensusUnstakeReqParamsV1,
         slot: u64,
     ) -> Result<()> {
         let wallet = self.holders.get_mut(&holder).unwrap();

+ 7 - 0
src/contract/money/src/model.rs

@@ -251,6 +251,13 @@ pub struct ConsensusStakeUpdateV1 {
 }
 // ANCHOR_END: ConsensusStakeUpdate
 
+/// Parameters for `Consensus::UnstakeRequest`
+#[derive(Clone, Debug, SerialEncodable, SerialDecodable)]
+pub struct ConsensusUnstakeReqParamsV1 {
+    pub input: ConsensusInput,
+    pub output: ConsensusOutput,
+}
+
 /// Parameters for `Consensus::Unstake`
 #[derive(Clone, Debug, SerialEncodable, SerialDecodable)]
 pub struct ConsensusUnstakeParamsV1 {