Browse Source

Allow transaction::Builder RNG to be configured

master
Jack Grigg 5 years ago
parent
commit
532299d46e
No known key found for this signature in database
GPG Key ID: 9E8255172BBF9898
  1. 27
      zcash_primitives/src/transaction/builder.rs

27
zcash_primitives/src/transaction/builder.rs

@ -178,8 +178,8 @@ impl TransactionMetadata {
}
/// Generates a [`Transaction`] from its inputs and outputs.
pub struct Builder {
rng: OsRng,
pub struct Builder<R: RngCore + CryptoRng> {
rng: R,
mtx: TransactionData,
fee: Amount,
anchor: Option<Fr>,
@ -188,9 +188,9 @@ pub struct Builder {
change_address: Option<(OutgoingViewingKey, PaymentAddress<Bls12>)>,
}
impl Builder {
impl Builder<OsRng> {
/// Creates a new `Builder` targeted for inclusion in the block with the given height,
/// using default values for general transaction fields.
/// using default values for general transaction fields and the default OS random.
///
/// # Default values
///
@ -198,12 +198,27 @@ impl Builder {
/// expiry delta (20 blocks).
///
/// The fee will be set to the default fee (0.0001 ZEC).
pub fn new(height: u32) -> Builder {
pub fn new(height: u32) -> Self {
Builder::new_with_rng(height, OsRng)
}
}
impl<R: RngCore + CryptoRng> Builder<R> {
/// Creates a new `Builder` targeted for inclusion in the block with the given height
/// and randomness source, using default values for general transaction fields.
///
/// # Default values
///
/// The expiry height will be set to the given height plus the default transaction
/// expiry delta (20 blocks).
///
/// The fee will be set to the default fee (0.0001 ZEC).
pub fn new_with_rng(height: u32, rng: R) -> Builder<R> {
let mut mtx = TransactionData::new();
mtx.expiry_height = height + DEFAULT_TX_EXPIRY_DELTA;
Builder {
rng: OsRng,
rng,
mtx,
fee: DEFAULT_FEE,
anchor: None,

Loading…
Cancel
Save