pub struct TransactionPlan {
pub actions: Vec<ActionPlan>,
pub transaction_parameters: TransactionParameters,
pub detection_data: Option<DetectionDataPlan>,
pub memo: Option<MemoPlan>,
}
Expand description
A declaration of a planned Transaction
,
for use in transaction authorization and creation.
Fields§
§actions: Vec<ActionPlan>
§transaction_parameters: TransactionParameters
§detection_data: Option<DetectionDataPlan>
§memo: Option<MemoPlan>
Implementations§
Source§impl TransactionPlan
impl TransactionPlan
Authorize this TransactionPlan
with the provided SpendKey
.
The returned AuthorizationData
can be used to build a Transaction
.
Source§impl TransactionPlan
impl TransactionPlan
Sourcepub fn build_unauth_with_actions(
self,
actions: Vec<Action>,
witness_data: &WitnessData,
) -> Result<Transaction>
pub fn build_unauth_with_actions( self, actions: Vec<Action>, witness_data: &WitnessData, ) -> Result<Transaction>
Builds a TransactionPlan
by slotting in the
provided prebuilt actions instead of using the
ActionPlan
s in the TransactionPlan.
Sourcepub fn apply_auth_data(
&self,
auth_data: &AuthorizationData,
transaction: Transaction,
) -> Result<Transaction>
pub fn apply_auth_data( &self, auth_data: &AuthorizationData, transaction: Transaction, ) -> Result<Transaction>
Slot in the AuthorizationData
and derive the synthetic
blinding factors needed to compute the binding signature
and assemble the transaction.
Sourcepub fn build(
self,
full_viewing_key: &FullViewingKey,
witness_data: &WitnessData,
auth_data: &AuthorizationData,
) -> Result<Transaction>
pub fn build( self, full_viewing_key: &FullViewingKey, witness_data: &WitnessData, auth_data: &AuthorizationData, ) -> Result<Transaction>
Build the serial transaction this plan describes.
Sourcepub async fn build_concurrent(
self,
full_viewing_key: &FullViewingKey,
witness_data: &WitnessData,
auth_data: &AuthorizationData,
) -> Result<Transaction>
Available on crate feature parallel
only.
pub async fn build_concurrent( self, full_viewing_key: &FullViewingKey, witness_data: &WitnessData, auth_data: &AuthorizationData, ) -> Result<Transaction>
parallel
only.Build the transaction this plan describes while proving concurrently. This can be used in environments that support tokio tasks.
Sourcepub fn witness_data(&self, sct: &Tree) -> Result<WitnessData, Error>
pub fn witness_data(&self, sct: &Tree) -> Result<WitnessData, Error>
Returns a WitnessData
, which may be used to build this transaction.
Source§impl TransactionPlan
impl TransactionPlan
Sourcepub fn sort_actions(&mut self)
pub fn sort_actions(&mut self)
Sort the actions in TransactionPlan
by type, using the protobuf field number in the ActionPlan
.
Sourcepub fn effect_hash(&self, fvk: &FullViewingKey) -> Result<EffectHash>
pub fn effect_hash(&self, fvk: &FullViewingKey) -> Result<EffectHash>
Computes the EffectHash
for the [Transaction
] described by this
TransactionPlan
.
This method does not require constructing the entire [Transaction
],
but it does require the associated FullViewingKey
to derive
effecting data that will be fed into the EffectHash
.
This method is not an EffectingData
impl because it needs an extra input,
the FVK, to partially construct the transaction.
pub fn spend_plans(&self) -> impl Iterator<Item = &SpendPlan>
pub fn output_plans(&self) -> impl Iterator<Item = &OutputPlan>
pub fn delegations(&self) -> impl Iterator<Item = &Delegate>
pub fn undelegations(&self) -> impl Iterator<Item = &Undelegate>
pub fn undelegate_claim_plans( &self, ) -> impl Iterator<Item = &UndelegateClaimPlan>
pub fn ibc_actions(&self) -> impl Iterator<Item = &IbcRelay>
pub fn validator_definitions(&self) -> impl Iterator<Item = &Definition>
pub fn proposal_submits(&self) -> impl Iterator<Item = &ProposalSubmit>
pub fn proposal_withdraws(&self) -> impl Iterator<Item = &ProposalWithdraw>
pub fn delegator_vote_plans(&self) -> impl Iterator<Item = &DelegatorVotePlan>
pub fn validator_votes(&self) -> impl Iterator<Item = &ValidatorVote>
pub fn proposal_deposit_claims( &self, ) -> impl Iterator<Item = &ProposalDepositClaim>
pub fn swap_plans(&self) -> impl Iterator<Item = &SwapPlan>
pub fn swap_claim_plans(&self) -> impl Iterator<Item = &SwapClaimPlan>
pub fn community_pool_spends(&self) -> impl Iterator<Item = &CommunityPoolSpend>
pub fn community_pool_deposits( &self, ) -> impl Iterator<Item = &CommunityPoolDeposit>
pub fn community_pool_outputs( &self, ) -> impl Iterator<Item = &CommunityPoolOutput>
pub fn position_openings(&self) -> impl Iterator<Item = &PositionOpen>
pub fn position_closings(&self) -> impl Iterator<Item = &PositionClose>
pub fn position_withdrawals( &self, ) -> impl Iterator<Item = &PositionWithdrawPlan>
pub fn ics20_withdrawals(&self) -> impl Iterator<Item = &Ics20Withdrawal>
Sourcepub fn dest_addresses(&self) -> Vec<Address>
pub fn dest_addresses(&self) -> Vec<Address>
Convenience method to get all the destination addresses for each OutputPlan
s.
Sourcepub fn num_outputs(&self) -> usize
pub fn num_outputs(&self) -> usize
Convenience method to get the number of OutputPlan
s in this transaction.
Sourcepub fn num_spends(&self) -> usize
pub fn num_spends(&self) -> usize
Convenience method to get the number of SpendPlan
s in this transaction.
Sourcepub fn num_proofs(&self) -> usize
pub fn num_proofs(&self) -> usize
Convenience method to get the number of proofs in this transaction.
Sourcepub fn populate_detection_data<R: CryptoRng + Rng>(
&mut self,
rng: R,
precision: Precision,
)
pub fn populate_detection_data<R: CryptoRng + Rng>( &mut self, rng: R, precision: Precision, )
Method to populate the detection data for this transaction plan.
Sourcepub fn with_populated_detection_data<R: CryptoRng + Rng>(
self,
rng: R,
precision_bits: Precision,
) -> Self
pub fn with_populated_detection_data<R: CryptoRng + Rng>( self, rng: R, precision_bits: Precision, ) -> Self
A builder-style version of TransactionPlan::populate_detection_data()
.
Populates the detection data for this transaction plan.
Sourcepub fn memo_key(&self) -> Option<PayloadKey>
pub fn memo_key(&self) -> Option<PayloadKey>
Convenience method to grab the MemoKey
from the plan.
Trait Implementations§
Source§impl Clone for TransactionPlan
impl Clone for TransactionPlan
Source§fn clone(&self) -> TransactionPlan
fn clone(&self) -> TransactionPlan
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for TransactionPlan
impl Debug for TransactionPlan
Source§impl Default for TransactionPlan
impl Default for TransactionPlan
Source§fn default() -> TransactionPlan
fn default() -> TransactionPlan
Source§impl<'de> Deserialize<'de> for TransactionPlan
impl<'de> Deserialize<'de> for TransactionPlan
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl DomainType for TransactionPlan
impl DomainType for TransactionPlan
Source§impl From<TransactionPlan> for TransactionPlan
impl From<TransactionPlan> for TransactionPlan
Source§fn from(msg: TransactionPlan) -> Self
fn from(msg: TransactionPlan) -> Self
Source§impl Serialize for TransactionPlan
impl Serialize for TransactionPlan
Source§impl TryFrom<TransactionPlan> for TransactionPlan
impl TryFrom<TransactionPlan> for TransactionPlan
Auto Trait Implementations§
impl !Freeze for TransactionPlan
impl RefUnwindSafe for TransactionPlan
impl Send for TransactionPlan
impl Sync for TransactionPlan
impl Unpin for TransactionPlan
impl UnwindSafe for TransactionPlan
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
Source§impl<T> EventDomainType for Twhere
T: DomainType,
<T as DomainType>::Proto: ProtoEvent,
Error: From<<T as TryFrom<<T as DomainType>::Proto>>::Error>,
impl<T> EventDomainType for Twhere
T: DomainType,
<T as DomainType>::Proto: ProtoEvent,
Error: From<<T as TryFrom<<T as DomainType>::Proto>>::Error>,
§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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§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.