Browse Source

Refactor and replace factory method random() with constructor.

pull/4/head
Simon 6 years ago
parent
commit
d17f8d1cc7
  1. 13
      src/gtest/test_sapling_note.cpp
  2. 12
      src/zcash/Note.cpp
  3. 4
      src/zcash/Note.hpp

13
src/gtest/test_sapling_note.cpp

@ -3,6 +3,8 @@
#include "zcash/Address.hpp"
#include "zcash/Note.hpp"
#include "amount.h"
#include "random.h"
#include "librustzcash.h"
#include <array>
@ -53,10 +55,10 @@ TEST(SaplingNote, TestVectors)
TEST(SaplingNote, Random)
{
// Test creating random notes using the same sk
auto sk = SaplingSpendingKey::random();
SaplingNote note1 = SaplingNote::random(sk);
SaplingNote note2 = SaplingNote::random(sk);
// Test creating random notes using the same spending key
auto address = SaplingSpendingKey::random().default_address().get();
SaplingNote note1(address, GetRand(MAX_MONEY));
SaplingNote note2(address, GetRand(MAX_MONEY));
ASSERT_EQ(note1.d, note2.d);
ASSERT_EQ(note1.pk_d, note2.pk_d);
@ -64,8 +66,7 @@ TEST(SaplingNote, Random)
ASSERT_NE(note1.r, note2.r);
// Test diversifier and pk_d are not the same for different spending keys
sk = SaplingSpendingKey::random();
SaplingNote note3 = SaplingNote::random(sk);
SaplingNote note3(SaplingSpendingKey::random().default_address().get(), GetRand(MAX_MONEY));
ASSERT_NE(note1.d, note3.d);
ASSERT_NE(note1.pk_d, note3.pk_d);
}

12
src/zcash/Note.cpp

@ -40,15 +40,11 @@ uint256 SproutNote::nullifier(const SproutSpendingKey& a_sk) const {
return PRF_nf(a_sk, rho);
}
// Create a note based on a given spending key, with random r and value. Useful for testing.
SaplingNote SaplingNote::random(const SaplingSpendingKey& sk) {
auto addr = sk.default_address().get();
auto d = addr.d;
auto pk_d = addr.pk_d;
uint256 r;
// Construct and populate Sapling note for a given payment address and value.
SaplingNote::SaplingNote(const SaplingPaymentAddress& address, const uint64_t value) : BaseNote(value) {
d = address.d;
pk_d = address.pk_d;
librustzcash_sapling_generate_r(r.begin());
auto value = GetRand(10000);
return SaplingNote(d, pk_d, value, r);
}
// Call librustzcash to compute the commitment

4
src/zcash/Note.hpp

@ -52,13 +52,13 @@ public:
SaplingNote() {};
SaplingNote(const SaplingPaymentAddress &address, uint64_t value);
virtual ~SaplingNote() {};
virtual uint256 cm() const override;
uint256 nullifier(const SaplingSpendingKey &sk, const uint64_t position) const;
static SaplingNote random(const SaplingSpendingKey &sk);
};
class BaseNotePlaintext {

Loading…
Cancel
Save