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.

§proofs: Option<<P as PotentiallyPruned>::RctProofs>

The transaction’s proofs.

Implementations§

source§

impl<P> Transaction<P>
where P: PotentiallyPruned,

source

pub fn version(&self) -> u8

Get the version of this transaction.

source

pub fn prefix(&self) -> &TransactionPrefix

Get the TransactionPrefix of this transaction.

source

pub fn prefix_mut(&mut self) -> &mut TransactionPrefix

Get a mutable reference to the TransactionPrefix of this transaction.

source

pub fn write<W>(&self, w: &mut W) -> Result<(), Error>
where W: Write,

Write the Transaction.

Some writable transactions may not be readable if they’re malformed, per Monero’s consensus rules.

source

pub fn serialize(&self) -> Vec<u8>

Write the Transaction to a Vec<u8>.

source

pub fn read<R>(r: &mut R) -> Result<Transaction<P>, Error>
where R: Read,

Read a Transaction.

source§

impl Transaction

source

pub fn hash(&self) -> [u8; 32]

The hash of the transaction.

source

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.

source

pub fn weight(&self) -> usize

Calculate the transaction’s weight.

Trait Implementations§

source§

impl<P> Clone for Transaction<P>
where P: Clone + PotentiallyPruned, <P as PotentiallyPruned>::RingSignatures: Clone, <P as PotentiallyPruned>::RctProofs: Clone,

source§

fn clone(&self) -> Transaction<P>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<P> Debug for Transaction<P>
where P: Debug + PotentiallyPruned, <P as PotentiallyPruned>::RingSignatures: Debug, <P as PotentiallyPruned>::RctProofs: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Transaction> for Transaction<Pruned>

source§

fn from(tx: Transaction) -> Transaction<Pruned>

Converts to this type from the input type.
source§

impl<P> PartialEq for Transaction<P>
where P: PartialEq + PotentiallyPruned, <P as PotentiallyPruned>::RingSignatures: PartialEq, <P as PotentiallyPruned>::RctProofs: PartialEq,

source§

fn eq(&self, other: &Transaction<P>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl SignMachine<Transaction> for TransactionSignMachine

Available on crate feature multisig only.
§

type Params = ()

Params used to instantiate this machine which can be used to rebuild from a cache.
§

type Keys = ThresholdKeys<Ed25519>

Keys used for signing operations.
§

type Preprocess = Vec<Preprocess<Ed25519, ClsagAddendum>>

Preprocess message for this machine.
§

type SignatureShare = Vec<SignatureShare<Ed25519>>

SignatureShare message for this machine.
§

type SignatureMachine = TransactionSignatureMachine

SignatureMachine this SignMachine turns into.
source§

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)

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>

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>

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.
§

type SignatureShare = Vec<SignatureShare<Ed25519>>

SignatureShare message for this machine.
source§

fn read_share<R: Read>(&self, reader: &mut R) -> Result<Self::SignatureShare>

Read a Signature Share message.
source§

fn complete( self, shares: HashMap<Participant, Self::SignatureShare>, ) -> Result<Transaction, FrostError>

Complete signing. Takes in everyone elses’ shares. Returns the signature.
source§

impl<P> Eq for Transaction<P>
where P: Eq + PotentiallyPruned, <P as PotentiallyPruned>::RingSignatures: Eq, <P as PotentiallyPruned>::RctProofs: Eq,

source§

impl<P> StructuralPartialEq for Transaction<P>
where P: PotentiallyPruned,

Auto Trait Implementations§

§

impl<P> Freeze for Transaction<P>
where <P as PotentiallyPruned>::RingSignatures: Freeze, <P as PotentiallyPruned>::RctProofs: Freeze,

§

impl<P> RefUnwindSafe for Transaction<P>
where <P as PotentiallyPruned>::RingSignatures: RefUnwindSafe, <P as PotentiallyPruned>::RctProofs: RefUnwindSafe,

§

impl<P> Send for Transaction<P>
where <P as PotentiallyPruned>::RingSignatures: Send, <P as PotentiallyPruned>::RctProofs: Send,

§

impl<P> Sync for Transaction<P>
where <P as PotentiallyPruned>::RingSignatures: Sync, <P as PotentiallyPruned>::RctProofs: Sync,

§

impl<P> Unpin for Transaction<P>
where <P as PotentiallyPruned>::RingSignatures: Unpin, <P as PotentiallyPruned>::RctProofs: Unpin,

§

impl<P> UnwindSafe for Transaction<P>
where <P as PotentiallyPruned>::RingSignatures: UnwindSafe, <P as PotentiallyPruned>::RctProofs: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> Conv for T

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> FmtForward for T

source§

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,

Causes self to use its Display implementation when Debug-formatted.
source§

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,

Causes self to use its LowerHex implementation when Debug-formatted.
source§

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,

Causes self to use its Pointer implementation when Debug-formatted.
source§

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,

Causes self to use its UpperHex implementation when Debug-formatted.
source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where 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) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

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

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
where Self: Borrow<B>, B: ?Sized,

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
where Self: BorrowMut<B>, B: ?Sized,

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
where Self: AsRef<R>, R: ?Sized,

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
where Self: AsMut<R>, R: ?Sized,

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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> TryConv for T

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V