Struct sapling_crypto::bundle::Bundle
source · pub struct Bundle<A: Authorization, V> { /* private fields */ }
Implementations§
source§impl<S: InProgressSignatures, V> Bundle<InProgress<Unproven, S>, V>
impl<S: InProgressSignatures, V> Bundle<InProgress<Unproven, S>, V>
sourcepub fn create_proofs<SP: SpendProver, OP: OutputProver>(
self,
spend_prover: &SP,
output_prover: &OP,
rng: impl RngCore,
progress_notifier: impl ProverProgress
) -> Bundle<InProgress<Proven, S>, V>
pub fn create_proofs<SP: SpendProver, OP: OutputProver>( self, spend_prover: &SP, output_prover: &OP, rng: impl RngCore, progress_notifier: impl ProverProgress ) -> Bundle<InProgress<Proven, S>, V>
Creates the proofs for this bundle.
source§impl<P: InProgressProofs, V> Bundle<InProgress<P, Unsigned>, V>
impl<P: InProgressProofs, V> Bundle<InProgress<P, Unsigned>, V>
sourcepub fn prepare<R: RngCore + CryptoRng>(
self,
rng: R,
sighash: [u8; 32]
) -> Bundle<InProgress<P, PartiallyAuthorized>, V>
pub fn prepare<R: RngCore + CryptoRng>( self, rng: R, sighash: [u8; 32] ) -> Bundle<InProgress<P, PartiallyAuthorized>, V>
Loads the sighash into this bundle, preparing it for signing.
This API ensures that all signatures are created over the same sighash.
source§impl<V> Bundle<InProgress<Proven, Unsigned>, V>
impl<V> Bundle<InProgress<Proven, Unsigned>, V>
sourcepub fn apply_signatures<R: RngCore + CryptoRng>(
self,
rng: R,
sighash: [u8; 32],
signing_keys: &[SpendAuthorizingKey]
) -> Result<Bundle<Authorized, V>, Error>
pub fn apply_signatures<R: RngCore + CryptoRng>( self, rng: R, sighash: [u8; 32], signing_keys: &[SpendAuthorizingKey] ) -> Result<Bundle<Authorized, V>, Error>
Applies signatures to this bundle, in order to authorize it.
This is a helper method that wraps Bundle::prepare
, Bundle::sign
, and
Bundle::finalize
.
source§impl<P: InProgressProofs, V> Bundle<InProgress<P, PartiallyAuthorized>, V>
impl<P: InProgressProofs, V> Bundle<InProgress<P, PartiallyAuthorized>, V>
sourcepub fn sign<R: RngCore + CryptoRng>(
self,
rng: R,
ask: &SpendAuthorizingKey
) -> Self
pub fn sign<R: RngCore + CryptoRng>( self, rng: R, ask: &SpendAuthorizingKey ) -> Self
Signs this bundle with the given redjubjub::SigningKey
.
This will apply signatures for all notes controlled by this spending key.
sourcepub fn append_signatures(
self,
signatures: &[Signature<SpendAuth>]
) -> Result<Self, Error>
pub fn append_signatures( self, signatures: &[Signature<SpendAuth>] ) -> Result<Self, Error>
Appends externally computed redjubjub::Signature
s.
Each signature will be applied to the one input for which it is valid. An error will be returned if the signature is not valid for any inputs, or if it is valid for more than one input.
source§impl<V> Bundle<InProgress<Proven, PartiallyAuthorized>, V>
impl<V> Bundle<InProgress<Proven, PartiallyAuthorized>, V>
source§impl<A: Authorization, V> Bundle<A, V>
impl<A: Authorization, V> Bundle<A, V>
sourcepub fn from_parts(
shielded_spends: Vec<SpendDescription<A>>,
shielded_outputs: Vec<OutputDescription<A::OutputProof>>,
value_balance: V,
authorization: A
) -> Option<Self>
pub fn from_parts( shielded_spends: Vec<SpendDescription<A>>, shielded_outputs: Vec<OutputDescription<A::OutputProof>>, value_balance: V, authorization: A ) -> Option<Self>
Constructs a Bundle
from its constituent parts.
sourcepub fn shielded_spends(&self) -> &[SpendDescription<A>]
pub fn shielded_spends(&self) -> &[SpendDescription<A>]
Returns the list of spends in this bundle.
sourcepub fn shielded_outputs(&self) -> &[OutputDescription<A::OutputProof>]
pub fn shielded_outputs(&self) -> &[OutputDescription<A::OutputProof>]
Returns the list of outputs in this bundle.
sourcepub fn value_balance(&self) -> &V
pub fn value_balance(&self) -> &V
Returns the net value moved into or out of the Sapling shielded pool.
This is the sum of Sapling spends minus the sum of Sapling outputs.
Returns the authorization for this bundle.
In the case of a Bundle<Authorized>
, this is the binding signature.
Transitions this bundle from one authorization state to another.
Transitions this bundle from one authorization state to another.
Trait Implementations§
source§impl<A: Clone + Authorization, V: Clone> Clone for Bundle<A, V>where
A::OutputProof: Clone,
impl<A: Clone + Authorization, V: Clone> Clone for Bundle<A, V>where
A::OutputProof: Clone,
source§impl<A: Debug + Authorization, V: Debug> Debug for Bundle<A, V>where
A::OutputProof: Debug,
impl<A: Debug + Authorization, V: Debug> Debug for Bundle<A, V>where
A::OutputProof: Debug,
source§impl<V: DynamicUsage> DynamicUsage for Bundle<Authorized, V>
impl<V: DynamicUsage> DynamicUsage for Bundle<Authorized, V>
Auto Trait Implementations§
impl<A, V> Freeze for Bundle<A, V>
impl<A, V> RefUnwindSafe for Bundle<A, V>where
A: RefUnwindSafe,
V: RefUnwindSafe,
<A as Authorization>::AuthSig: RefUnwindSafe,
<A as Authorization>::OutputProof: RefUnwindSafe,
<A as Authorization>::SpendProof: RefUnwindSafe,
impl<A, V> Send for Bundle<A, V>where
A: Send,
V: Send,
<A as Authorization>::AuthSig: Send,
<A as Authorization>::OutputProof: Send,
<A as Authorization>::SpendProof: Send,
impl<A, V> Sync for Bundle<A, V>where
A: Sync,
V: Sync,
<A as Authorization>::AuthSig: Sync,
<A as Authorization>::OutputProof: Sync,
<A as Authorization>::SpendProof: Sync,
impl<A, V> Unpin for Bundle<A, V>where
A: Unpin,
V: Unpin,
<A as Authorization>::AuthSig: Unpin,
<A as Authorization>::OutputProof: Unpin,
<A as Authorization>::SpendProof: Unpin,
impl<A, V> UnwindSafe for Bundle<A, V>where
A: UnwindSafe,
V: UnwindSafe,
<A as Authorization>::AuthSig: UnwindSafe,
<A as Authorization>::OutputProof: UnwindSafe,
<A as Authorization>::SpendProof: 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
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§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.source§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.source§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.source§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.source§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.source§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.source§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.source§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.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§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 moresource§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 moresource§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
source§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
source§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.source§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.source§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.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Tap for T
impl<T> Tap for T
source§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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.source§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.source§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.source§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.source§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.source§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.source§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.