diff --git a/src/gtest/test_sapling_note.cpp b/src/gtest/test_sapling_note.cpp index 596cd620a..e54bfb0ac 100644 --- a/src/gtest/test_sapling_note.cpp +++ b/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 @@ -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); } diff --git a/src/zcash/Note.cpp b/src/zcash/Note.cpp index 428df6ca2..be074dab9 100644 --- a/src/zcash/Note.cpp +++ b/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 diff --git a/src/zcash/Note.hpp b/src/zcash/Note.hpp index 31988dc62..23cbf8b30 100644 --- a/src/zcash/Note.hpp +++ b/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 {