Refactor and replace factory method random() with constructor.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user