pub struct Output { /* private fields */ }Expand description
Information about a Sapling output within a transaction.
This struct is for representing Sapling outputs in a partially-created transaction. If
you have a fully-created transaction, use the regular OutputDescription struct.
Implementations§
Source§impl Output
impl Output
Sourcepub fn parse(
cv: [u8; 32],
cmu: [u8; 32],
ephemeral_key: [u8; 32],
enc_ciphertext: Vec<u8>,
out_ciphertext: Vec<u8>,
zkproof: Option<GrothProofBytes>,
recipient: Option<[u8; 43]>,
value: Option<u64>,
rseed: Option<[u8; 32]>,
rcv: Option<[u8; 32]>,
ock: Option<[u8; 32]>,
zip32_derivation: Option<Zip32Derivation>,
user_address: Option<String>,
proprietary: BTreeMap<String, Vec<u8>>,
) -> Result<Self, ParseError>
pub fn parse( cv: [u8; 32], cmu: [u8; 32], ephemeral_key: [u8; 32], enc_ciphertext: Vec<u8>, out_ciphertext: Vec<u8>, zkproof: Option<GrothProofBytes>, recipient: Option<[u8; 43]>, value: Option<u64>, rseed: Option<[u8; 32]>, rcv: Option<[u8; 32]>, ock: Option<[u8; 32]>, zip32_derivation: Option<Zip32Derivation>, user_address: Option<String>, proprietary: BTreeMap<String, Vec<u8>>, ) -> Result<Self, ParseError>
Parses a PCZT output from its component parts.
Source§impl Output
impl Output
Sourcepub fn verify_cv(&self) -> Result<(), VerifyError>
pub fn verify_cv(&self) -> Result<(), VerifyError>
Verifies that the cv field is consistent with the note fields.
Requires that the following optional fields are set:
valuercv
Sourcepub fn verify_note_commitment(&self) -> Result<(), VerifyError>
pub fn verify_note_commitment(&self) -> Result<(), VerifyError>
Verifies that the cmu field is consistent with the note fields.
Requires that the following optional fields are set:
recipientvaluerseed
Source§impl Output
impl Output
Sourcepub fn cv(&self) -> &ValueCommitment
pub fn cv(&self) -> &ValueCommitment
A commitment to the value created by this output.
Sourcepub fn cmu(&self) -> &ExtractedNoteCommitment
pub fn cmu(&self) -> &ExtractedNoteCommitment
A commitment to the new note being created.
Sourcepub fn ephemeral_key(&self) -> &EphemeralKeyBytes
pub fn ephemeral_key(&self) -> &EphemeralKeyBytes
The ephemeral key used to encrypt the note plaintext.
Sourcepub fn enc_ciphertext(&self) -> &[u8; 580]
pub fn enc_ciphertext(&self) -> &[u8; 580]
The encrypted note plaintext for the output.
Once we have memo bundles, we will be able to set memos independently of Outputs. For now, the Constructor sets both at the same time.
Sourcepub fn out_ciphertext(&self) -> &[u8; 80]
pub fn out_ciphertext(&self) -> &[u8; 80]
The encrypted output plaintext for the output.
Sourcepub fn zkproof(&self) -> &Option<GrothProofBytes>
pub fn zkproof(&self) -> &Option<GrothProofBytes>
The Output proof.
This is set by the Prover.
Sourcepub fn recipient(&self) -> &Option<PaymentAddress>
pub fn recipient(&self) -> &Option<PaymentAddress>
The address that will receive the output.
- This is set by the Constructor.
- This is required by the Prover.
- The Signer can use
recipientandrseed(if present) to verify thatenc_ciphertextis correctly encrypted (and contains a note plaintext matching the public commitments), and to confirm the value of the memo.
Sourcepub fn value(&self) -> &Option<NoteValue>
pub fn value(&self) -> &Option<NoteValue>
The value of the output.
This may be used by Signers to verify that the value matches cv, and to confirm
the values and change involved in the transaction.
This exposes the output value to all participants. For Signers who don’t need this information, or after signatures have been applied, this can be redacted.
Sourcepub fn rseed(&self) -> &Option<[u8; 32]>
pub fn rseed(&self) -> &Option<[u8; 32]>
The seed randomness for the output.
- This is set by the Constructor.
- This is required by the Prover.
- The Signer can use
recipientandrseed(if present) to verify thatenc_ciphertextis correctly encrypted (and contains a note plaintext matching the public commitments), and to confirm the value of the memo.
Sourcepub fn rcv(&self) -> &Option<ValueCommitTrapdoor>
pub fn rcv(&self) -> &Option<ValueCommitTrapdoor>
The value commitment randomness.
- This is set by the Constructor.
- The IO Finalizer compresses it into the bsk.
- This is required by the Prover.
- This may be used by Signers to verify that the value correctly matches
cv.
This opens cv for all participants. For Signers who don’t need this information,
or after proofs / signatures have been applied, this can be redacted.
Sourcepub fn ock(&self) -> &Option<OutgoingCipherKey>
pub fn ock(&self) -> &Option<OutgoingCipherKey>
The ock value used to encrypt out_ciphertext.
This enables Signers to verify that out_ciphertext is correctly encrypted.
This may be None if the Constructor added the output using an OVK policy of
“None”, to make the output unrecoverable from the chain by the sender.
Sourcepub fn zip32_derivation(&self) -> &Option<Zip32Derivation>
pub fn zip32_derivation(&self) -> &Option<Zip32Derivation>
The ZIP 32 derivation path at which the spending key can be found for the output.
Sourcepub fn user_address(&self) -> &Option<String>
pub fn user_address(&self) -> &Option<String>
The user-facing address to which this output is being sent, if any.
- This is set by an Updater.
- Signers must parse this address (if present) and confirm that it contains
recipient(either directly, or e.g. as a receiver within a Unified Address).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Output
impl RefUnwindSafe for Output
impl Send for Output
impl Sync for Output
impl Unpin for Output
impl UnwindSafe for Output
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> 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 moreSource§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.