Enum monero_wallet::transaction::Transaction
source · pub enum Transaction<P = NotPruned>where
P: PotentiallyPruned,{
V1 {
prefix: TransactionPrefix,
signatures: <P as PotentiallyPruned>::RingSignatures,
},
V2 {
prefix: TransactionPrefix,
proofs: Option<<P as PotentiallyPruned>::RctProofs>,
},
}
Expand description
A Monero transaction.
Variants§
V1
A version 1 transaction, used by the original Cryptonote codebase.
Fields
§
prefix: TransactionPrefix
The transaction’s prefix.
§
signatures: <P as PotentiallyPruned>::RingSignatures
The transaction’s ring signatures.
V2
A version 2 transaction, used by the RingCT protocol.
Fields
§
prefix: TransactionPrefix
The transaction’s prefix.
Implementations§
source§impl<P> Transaction<P>where
P: PotentiallyPruned,
impl<P> Transaction<P>where
P: PotentiallyPruned,
sourcepub fn prefix(&self) -> &TransactionPrefix
pub fn prefix(&self) -> &TransactionPrefix
Get the TransactionPrefix of this transaction.
sourcepub fn prefix_mut(&mut self) -> &mut TransactionPrefix
pub fn prefix_mut(&mut self) -> &mut TransactionPrefix
Get a mutable reference to the TransactionPrefix of this transaction.
source§impl Transaction
impl Transaction
sourcepub fn signature_hash(&self) -> Option<[u8; 32]>
pub fn signature_hash(&self) -> Option<[u8; 32]>
Calculate the hash of this transaction as needed for signing it.
This returns None if the transaction is without signatures.
Trait Implementations§
source§impl<P> Clone for Transaction<P>
impl<P> Clone for Transaction<P>
source§fn clone(&self) -> Transaction<P>
fn clone(&self) -> Transaction<P>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<P> Debug for Transaction<P>
impl<P> Debug for Transaction<P>
source§impl From<Transaction> for Transaction<Pruned>
impl From<Transaction> for Transaction<Pruned>
source§fn from(tx: Transaction) -> Transaction<Pruned>
fn from(tx: Transaction) -> Transaction<Pruned>
Converts to this type from the input type.
source§impl<P> PartialEq for Transaction<P>
impl<P> PartialEq for Transaction<P>
source§fn eq(&self, other: &Transaction<P>) -> bool
fn eq(&self, other: &Transaction<P>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl SignMachine<Transaction> for TransactionSignMachine
Available on crate feature multisig
only.
impl SignMachine<Transaction> for TransactionSignMachine
Available on crate feature
multisig
only.§type Keys = ThresholdKeys<Ed25519>
type Keys = ThresholdKeys<Ed25519>
Keys used for signing operations.
§type Preprocess = Vec<Preprocess<Ed25519, ClsagAddendum>>
type Preprocess = Vec<Preprocess<Ed25519, ClsagAddendum>>
Preprocess message for this machine.
SignatureShare message for this machine.
§type SignatureMachine = TransactionSignatureMachine
type SignatureMachine = TransactionSignatureMachine
SignatureMachine this SignMachine turns into.
source§fn cache(self) -> CachedPreprocess
fn cache(self) -> CachedPreprocess
Cache this preprocess for usage later. This cached preprocess MUST only be used once. Reuse
of it enables recovery of your private key share. Third-party recovery of a cached preprocess
also enables recovery of your private key share, so this MUST be treated with the same
security as your private key share.
source§fn from_cache(
(): (),
_: ThresholdKeys<Ed25519>,
_: CachedPreprocess,
) -> (Self, Self::Preprocess)
fn from_cache( (): (), _: ThresholdKeys<Ed25519>, _: CachedPreprocess, ) -> (Self, Self::Preprocess)
Create a sign machine from a cached preprocess.
After this, the preprocess must be deleted so it’s never reused. Any reuse will presumably
cause the signer to leak their secret share.
source§fn read_preprocess<R: Read>(&self, reader: &mut R) -> Result<Self::Preprocess>
fn read_preprocess<R: Read>(&self, reader: &mut R) -> Result<Self::Preprocess>
Read a Preprocess message. Despite taking self, this does not save the preprocess.
It must be externally cached and passed into sign.
source§fn sign(
self,
commitments: HashMap<Participant, Self::Preprocess>,
msg: &[u8],
) -> Result<(TransactionSignatureMachine, Self::SignatureShare), FrostError>
fn sign( self, commitments: HashMap<Participant, Self::Preprocess>, msg: &[u8], ) -> Result<(TransactionSignatureMachine, Self::SignatureShare), FrostError>
Sign a message.
Takes in the participants’ preprocess messages. Returns the signature share to be broadcast
to all participants, over an authenticated channel. The parties who participate here will
become the signing set for this session.
source§impl SignatureMachine<Transaction> for TransactionSignatureMachine
Available on crate feature multisig
only.
impl SignatureMachine<Transaction> for TransactionSignatureMachine
Available on crate feature
multisig
only.SignatureShare message for this machine.
Read a Signature Share message.
source§fn complete(
self,
shares: HashMap<Participant, Self::SignatureShare>,
) -> Result<Transaction, FrostError>
fn complete( self, shares: HashMap<Participant, Self::SignatureShare>, ) -> Result<Transaction, FrostError>
Complete signing.
Takes in everyone elses’ shares. Returns the signature.
impl<P> Eq for Transaction<P>
impl<P> StructuralPartialEq for Transaction<P>where
P: PotentiallyPruned,
Auto Trait Implementations§
impl<P> Freeze for Transaction<P>
impl<P> RefUnwindSafe for Transaction<P>where
<P as PotentiallyPruned>::RingSignatures: RefUnwindSafe,
<P as PotentiallyPruned>::RctProofs: RefUnwindSafe,
impl<P> Send for Transaction<P>
impl<P> Sync for Transaction<P>
impl<P> Unpin for Transaction<P>
impl<P> UnwindSafe for Transaction<P>where
<P as PotentiallyPruned>::RingSignatures: UnwindSafe,
<P as PotentiallyPruned>::RctProofs: 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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.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,
Pipes by value. This is generally the method you want to use. Read more
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,
Borrows
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,
Mutably borrows
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
Borrows
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
Mutably borrows
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
Borrows
self
, then passes self.deref()
into the pipe function.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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.