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

switch nullifier hash to PRF_NF

narodnik 5 лет назад
Родитель
Сommit
7c7119572e
3 измененных файлов с 18 добавлено и 2 удалено
  1. 12 0
      proofs/mint.aux
  2. 2 1
      proofs/spend.pism
  3. 4 1
      src/spend.rs

+ 12 - 0
proofs/mint.aux

@@ -23,6 +23,18 @@
         },
         },
         "NOTE_COMMIT": {
         "NOTE_COMMIT": {
             "maps_to": "pedersen_hash::Personalization::NoteCommitment"
             "maps_to": "pedersen_hash::Personalization::NoteCommitment"
+        },
+        "MERKLE_0": {
+            "maps_to": "pedersen_hash::Personalization::MerkleTree(0)"
+        },
+        "MERKLE_1": {
+            "maps_to": "pedersen_hash::Personalization::MerkleTree(1)"
+        },
+        "MERKLE_2": {
+            "maps_to": "pedersen_hash::Personalization::MerkleTree(2)"
+        },
+        "MERKLE_3": {
+            "maps_to": "pedersen_hash::Personalization::MerkleTree(3)"
         }
         }
     }
     }
 }
 }

+ 2 - 1
proofs/spend.pism

@@ -1,6 +1,7 @@
 constant G_VCV FixedGenerator
 constant G_VCV FixedGenerator
 constant G_VCR FixedGenerator
 constant G_VCR FixedGenerator
 constant G_SPEND FixedGenerator
 constant G_SPEND FixedGenerator
+constant PRF_NF BlakePersonalization
 constant CRH_IVK BlakePersonalization
 constant CRH_IVK BlakePersonalization
 
 
 contract spend_contract
 contract spend_contract
@@ -54,7 +55,7 @@ start
     # Serial:           Fr              = 252 + 4 bits padding
     # Serial:           Fr              = 252 + 4 bits padding
     # TOTAL: 512 bits for preimage
     # TOTAL: 512 bits for preimage
     static_assert_binary_size nf_preimage 512
     static_assert_binary_size nf_preimage 512
-    blake2s nf nf_preimage CRH_IVK
+    blake2s nf nf_preimage PRF_NF
     emit_binary nf
     emit_binary nf
 
 
     # Derive the public key
     # Derive the public key

+ 4 - 1
src/spend.rs

@@ -31,7 +31,7 @@ impl SpendRevealedValues {
         nullifier.copy_from_slice(
         nullifier.copy_from_slice(
             Blake2sParams::new()
             Blake2sParams::new()
                 .hash_length(32)
                 .hash_length(32)
-                .personal(zcash_primitives::constants::CRH_IVK_PERSONALIZATION)
+                .personal(zcash_primitives::constants::PRF_NF_PERSONALIZATION)
                 .to_state()
                 .to_state()
                 .update(&secret.to_bytes())
                 .update(&secret.to_bytes())
                 .update(&serial.to_bytes())
                 .update(&serial.to_bytes())
@@ -61,6 +61,7 @@ impl SpendRevealedValues {
     fn make_outputs(&self) -> [bls12_381::Scalar; 6] {
     fn make_outputs(&self) -> [bls12_381::Scalar; 6] {
         let mut public_input = [bls12_381::Scalar::zero(); 6];
         let mut public_input = [bls12_381::Scalar::zero(); 6];
 
 
+        // CV
         {
         {
             let result = jubjub::ExtendedPoint::from(self.value_commit);
             let result = jubjub::ExtendedPoint::from(self.value_commit);
             let affine = result.to_affine();
             let affine = result.to_affine();
@@ -71,6 +72,7 @@ impl SpendRevealedValues {
             public_input[1] = v;
             public_input[1] = v;
         }
         }
 
 
+        // NF
         {
         {
             // Pack the hash as inputs for proof verification.
             // Pack the hash as inputs for proof verification.
             let hash = multipack::bytes_to_bits_le(&self.nullifier);
             let hash = multipack::bytes_to_bits_le(&self.nullifier);
@@ -83,6 +85,7 @@ impl SpendRevealedValues {
             public_input[3] = hash[1];
             public_input[3] = hash[1];
         }
         }
 
 
+        // Coin
         {
         {
             // Pack the hash as inputs for proof verification.
             // Pack the hash as inputs for proof verification.
             let hash = multipack::bytes_to_bits_le(&self.coin);
             let hash = multipack::bytes_to_bits_le(&self.coin);