pub struct Builder<'a, P, U: ProverProgress> { /* private fields */ }
Expand description
Generates a Transaction
from its inputs and outputs.
Implementations§
Source§impl<P: Parameters, U: ProverProgress> Builder<'_, P, U>
impl<P: Parameters, U: ProverProgress> Builder<'_, P, U>
Sourcepub fn mock_build<R: RngCore>(
self,
transparent_signing_set: &TransparentSigningSet,
sapling_extsks: &[ExtendedSpendingKey],
orchard_saks: &[SpendAuthorizingKey],
rng: R,
) -> Result<BuildResult, Error<FeeError>>
Available on crate feature test-dependencies
only.
pub fn mock_build<R: RngCore>( self, transparent_signing_set: &TransparentSigningSet, sapling_extsks: &[ExtendedSpendingKey], orchard_saks: &[SpendAuthorizingKey], rng: R, ) -> Result<BuildResult, Error<FeeError>>
test-dependencies
only.Build the transaction using mocked randomness and proving capabilities. DO NOT USE EXCEPT FOR UNIT TESTING.
Source§impl<P, U: ProverProgress> Builder<'_, P, U>
impl<P, U: ProverProgress> Builder<'_, P, U>
Sourcepub fn params(&self) -> &P
pub fn params(&self) -> &P
Returns the network parameters that the builder has been configured for.
Sourcepub fn target_height(&self) -> BlockHeight
pub fn target_height(&self) -> BlockHeight
Returns the target height of the transaction under construction.
Sourcepub fn transparent_inputs(&self) -> &[TransparentInputInfo]
Available on crate feature transparent-inputs
only.
pub fn transparent_inputs(&self) -> &[TransparentInputInfo]
transparent-inputs
only.Returns the set of transparent inputs currently committed to be consumed by the transaction.
Sourcepub fn transparent_outputs(&self) -> &[TxOut]
pub fn transparent_outputs(&self) -> &[TxOut]
Returns the set of transparent outputs currently set to be produced by the transaction.
Sourcepub fn sapling_inputs(&self) -> &[SpendInfo]
pub fn sapling_inputs(&self) -> &[SpendInfo]
Returns the set of Sapling inputs currently committed to be consumed by the transaction.
Sourcepub fn sapling_outputs(&self) -> &[OutputInfo]
pub fn sapling_outputs(&self) -> &[OutputInfo]
Returns the set of Sapling outputs currently set to be produced by the transaction.
Source§impl<'a, P: Parameters> Builder<'a, P, ()>
impl<'a, P: Parameters> Builder<'a, P, ()>
Sourcepub fn new(
params: P,
target_height: BlockHeight,
build_config: BuildConfig,
) -> Self
pub fn new( params: P, target_height: BlockHeight, build_config: BuildConfig, ) -> Self
Creates a new Builder
targeted for inclusion in the block with the given height,
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).
Sourcepub fn with_progress_notifier(
self,
_progress_notifier: Sender<Progress>,
) -> Builder<'a, P, Sender<Progress>>
Available on crate feature std
only.
pub fn with_progress_notifier( self, _progress_notifier: Sender<Progress>, ) -> Builder<'a, P, Sender<Progress>>
std
only.Sets the notifier channel, where progress of building the transaction is sent.
An update is sent after every Sapling Spend or Output is computed, and the u32
sent represents the total steps completed so far. It will eventually send number
of spends + outputs. If there’s an error building the transaction, the channel is
closed.
Source§impl<P: Parameters, U: ProverProgress> Builder<'_, P, U>
impl<P: Parameters, U: ProverProgress> Builder<'_, P, U>
Sourcepub fn add_orchard_spend<FE>(
&mut self,
fvk: FullViewingKey,
note: Note,
merkle_path: MerklePath,
) -> Result<(), Error<FE>>
pub fn add_orchard_spend<FE>( &mut self, fvk: FullViewingKey, note: Note, merkle_path: MerklePath, ) -> Result<(), Error<FE>>
Adds an Orchard note to be spent in this bundle.
Returns an error if the given Merkle path does not have the required anchor for the given note.
Sourcepub fn add_orchard_output<FE>(
&mut self,
ovk: Option<OutgoingViewingKey>,
recipient: Address,
value: u64,
memo: MemoBytes,
) -> Result<(), Error<FE>>
pub fn add_orchard_output<FE>( &mut self, ovk: Option<OutgoingViewingKey>, recipient: Address, value: u64, memo: MemoBytes, ) -> Result<(), Error<FE>>
Adds an Orchard recipient to the transaction.
Sourcepub fn add_sapling_spend<FE>(
&mut self,
fvk: FullViewingKey,
note: Note,
merkle_path: MerklePath,
) -> Result<(), Error<FE>>
pub fn add_sapling_spend<FE>( &mut self, fvk: FullViewingKey, note: Note, merkle_path: MerklePath, ) -> Result<(), Error<FE>>
Adds a Sapling note to be spent in this transaction.
Returns an error if the given Merkle path does not have the same anchor as the paths for previous Sapling notes.
Sourcepub fn add_sapling_output<FE>(
&mut self,
ovk: Option<OutgoingViewingKey>,
to: PaymentAddress,
value: Zatoshis,
memo: MemoBytes,
) -> Result<(), Error<FE>>
pub fn add_sapling_output<FE>( &mut self, ovk: Option<OutgoingViewingKey>, to: PaymentAddress, value: Zatoshis, memo: MemoBytes, ) -> Result<(), Error<FE>>
Adds a Sapling address to send funds to.
Sourcepub fn add_transparent_input(
&mut self,
pubkey: PublicKey,
utxo: OutPoint,
coin: TxOut,
) -> Result<(), Error>
Available on crate feature transparent-inputs
only.
pub fn add_transparent_input( &mut self, pubkey: PublicKey, utxo: OutPoint, coin: TxOut, ) -> Result<(), Error>
transparent-inputs
only.Adds a transparent coin to be spent in this transaction.
Sourcepub fn add_transparent_output(
&mut self,
to: &TransparentAddress,
value: Zatoshis,
) -> Result<(), Error>
pub fn add_transparent_output( &mut self, to: &TransparentAddress, value: Zatoshis, ) -> Result<(), Error>
Adds a transparent address to send funds to.
Sourcepub fn get_fee<FR: FeeRule>(
&self,
fee_rule: &FR,
) -> Result<Zatoshis, FeeError<FR::Error>>
pub fn get_fee<FR: FeeRule>( &self, fee_rule: &FR, ) -> Result<Zatoshis, FeeError<FR::Error>>
Reports the calculated fee given the specified fee rule.
This fee is a function of the spends and outputs that have been added to the builder,
pursuant to the specified FeeRule
.
Sourcepub fn build<R: RngCore + CryptoRng, SP: SpendProver, OP: OutputProver, FR: FeeRule>(
self,
transparent_signing_set: &TransparentSigningSet,
sapling_extsks: &[ExtendedSpendingKey],
orchard_saks: &[SpendAuthorizingKey],
rng: R,
spend_prover: &SP,
output_prover: &OP,
fee_rule: &FR,
) -> Result<BuildResult, Error<FR::Error>>
Available on crate feature circuits
only.
pub fn build<R: RngCore + CryptoRng, SP: SpendProver, OP: OutputProver, FR: FeeRule>( self, transparent_signing_set: &TransparentSigningSet, sapling_extsks: &[ExtendedSpendingKey], orchard_saks: &[SpendAuthorizingKey], rng: R, spend_prover: &SP, output_prover: &OP, fee_rule: &FR, ) -> Result<BuildResult, Error<FR::Error>>
circuits
only.Builds a transaction from the configured spends and outputs.
Upon success, returns a tuple containing the final transaction, and the
[SaplingMetadata
] generated during the build process.
Sourcepub fn build_for_pczt<R: RngCore + CryptoRng, FR: FeeRule>(
self,
rng: R,
fee_rule: &FR,
) -> Result<PcztResult<P>, Error<FR::Error>>
pub fn build_for_pczt<R: RngCore + CryptoRng, FR: FeeRule>( self, rng: R, fee_rule: &FR, ) -> Result<PcztResult<P>, Error<FR::Error>>
Builds a PCZT from the configured spends and outputs.
Upon success, returns a struct containing the PCZT components, and the
[SaplingMetadata
] and [orchard::builder::BundleMetadata
] generated during the
build process.
Auto Trait Implementations§
impl<'a, P, U> Freeze for Builder<'a, P, U>
impl<'a, P, U> RefUnwindSafe for Builder<'a, P, U>where
P: RefUnwindSafe,
U: RefUnwindSafe,
impl<'a, P, U> Send for Builder<'a, P, U>
impl<'a, P, U> Sync for Builder<'a, P, U>
impl<'a, P, U> Unpin for Builder<'a, P, U>
impl<'a, P, U> UnwindSafe for Builder<'a, P, U>where
P: UnwindSafe,
U: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.