Browse Source

move nullifier from leadcoin to member function

mohab metwally 3 years ago
parent
commit
7a7081dffc
2 changed files with 13 additions and 16 deletions
  1. 13 15
      src/consensus/leadcoin.rs
  2. 0 1
      src/consensus/state.rs

+ 13 - 15
src/consensus/leadcoin.rs

@@ -71,8 +71,6 @@ pub struct LeadCoin {
     pub nonce: pallas::Base,
     /// Coin nonce's commitment
     pub nonce_cm: pallas::Base,
-    /// Coin's serial number
-    pub sn: pallas::Base,
     /// Merkle root of coin1 commitment
     pub coin1_commitment_root: MerkleNode,
     /// coin1 sk
@@ -170,15 +168,6 @@ impl LeadCoin {
         let coin2_commitment = pedersen_commitment_base(coin2_commit_v, coin2_blind);
         // Derive election seeds
         let (y_mu, rho_mu) = Self::election_seeds(eta, pallas::Base::from(slot_index));
-        // Derive a nullifier
-        let sn_msg = [
-            pallas::Base::from(PREFIX_SN),
-            coin1_sk_root.inner(),
-            pallas::Base::from(seed),
-            pallas::Base::from(ZERO),
-        ];
-        let c_sn = poseidon_hash(sn_msg);
-
         // Return the object
         Self {
             value,
@@ -191,7 +180,6 @@ impl LeadCoin {
             tau,
             nonce: pallas::Base::from(seed),
             nonce_cm: coin2_seed,
-            sn: c_sn,
             coin1_commitment_root,
             coin1_sk,
             coin1_sk_root,
@@ -206,6 +194,16 @@ impl LeadCoin {
         }
     }
 
+    fn sn(&self) -> pallas::Base {
+        let sn_msg = [
+            pallas::Base::from(PREFIX_SN),
+            self.coin1_sk_root.inner(),
+            self.nonce,
+            pallas::Base::from(ZERO),
+        ];
+        poseidon_hash(sn_msg)
+    }
+
     /// Derive election seeds from given parameters
     fn election_seeds(eta: pallas::Base, slot: pallas::Base) -> (pallas::Base, pallas::Base) {
         let election_seed_nonce = pallas::Base::from(3);
@@ -259,7 +257,7 @@ impl LeadCoin {
             *c2_cm.y(),
             self.coin1_commitment_root.inner(),
             self.coin1_sk_root.inner(),
-            self.sn,
+            self.sn(),
             *y_coords.x(),
             *y_coords.y(),
             *rho_coord.x(),
@@ -398,7 +396,7 @@ impl LeadCoin {
             Witness::Base(Value::known(value)),
             Witness::MerklePath(Value::known(self.coin1_commitment_merkle_path)),
             Witness::Uint32(Value::known(pos)),
-            Witness::Base(Value::known(self.sn)),
+            Witness::Base(Value::known(self.sn())),
             // coin (3)
             Witness::Base(Value::known(change_pk)),
             Witness::Base(Value::known(change_coin.rho)),
@@ -434,7 +432,7 @@ impl LeadCoin {
             coin_root_sk: self.coin1_sk_root,
             change_coin_commitment: cm3,
             transfered_coin_commitment: cm4,
-            nullifier: self.sn,
+            nullifier: self.sn(),
             tau: self.tau,
             root: self.coin1_commitment_root,
             proof,

+ 0 - 1
src/consensus/state.rs

@@ -421,7 +421,6 @@ impl ValidatorState {
 
             coins.push(vec![coin]);
         }
-
         Ok(coins)
     }