pub fn build_shielded_transfer_transition<P: OrchardProver>(
spends: Vec<SpendableNote>,
recipient: &OrchardAddress,
transfer_amount: u64,
change_address: &OrchardAddress,
fvk: &FullViewingKey,
ask: &SpendAuthorizingKey,
anchor: Anchor,
prover: &P,
memo: [u8; 36],
fee: Option<Credits>,
platform_version: &PlatformVersion,
) -> Result<StateTransition, ProtocolError>Expand description
Builds a ShieldedTransfer state transition (shielded pool -> shielded pool).
Spends existing notes and creates a new note for the recipient. The shielded
fee is deducted from the spent notes. Any remaining change is returned to
the change_address.
ยงParameters
spends- Notes to spend with their Merkle pathsrecipient- Orchard address to receive the transferred notetransfer_amount- Amount to transfer to the recipientchange_address- Orchard address for change output (if any)fvk- Full viewing key for spend authorizationask- Spend authorizing key for RedPallas signaturesanchor- Sinsemilla root of the note commitment tree (Orchard Anchor)prover- Orchard prover (holds the Halo 2 proving key)memo- 36-byte structured memo for the recipient (4-byte type tag + 32-byte payload)fee- Optional fee override; ifNone, the minimum fee is computed automatically. IfSome, must be >= the minimum fee.platform_version- Protocol version