pub fn create_proposed_transactions<DbT, ParamsT, InputsErrT, FeeRuleT, ChangeErrT, N>(
wallet_db: &mut DbT,
params: &ParamsT,
clock: &impl Clock,
rng: &mut impl CryptoRng,
spend_prover: &impl SpendProver,
output_prover: &impl OutputProver,
spending_keys: &SpendingKeys,
ovk_policy: OvkPolicy,
proposal: &Proposal<FeeRuleT, N>,
expiry_height: Option<BlockHeight>,
) -> Result<NonEmpty<TxId>, CreateErrT<DbT, InputsErrT, FeeRuleT, ChangeErrT, N>>Expand description
Construct, prove, and sign a transaction or series of transactions using the inputs supplied by the given proposal, and persist it to the wallet database.
Returns the database identifier for each newly constructed transaction, or an error if an error occurs in transaction construction, proving, or signing.
rng supplies the randomness used to construct, prove, and sign each transaction.
When evaluating multi-step proposals, only transparent outputs of any given step may be spent in later steps; attempting to spend a shielded note (including change) output by an earlier step is not supported, because the ultimate positions of those notes in the global note commitment tree cannot be known until the transaction that produces those notes is mined, and therefore the required spend proofs for such notes cannot be constructed.
expiry_height, when set, replaces the builder-derived expiry for every step’s
transaction before it is built and signed.
A nonzero expiry_height below the proposal’s
min_target_height is rejected with
Error::ExpiryHeightBelowTargetHeight. An expiry_height of zero,
which disables expiry, is exempt from this check.