pub fn build_unshield_transition<P: OrchardProver>(
spends: Vec<SpendableNote>,
output_address: PlatformAddress,
unshield_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 an Unshield state transition (shielded pool -> platform address).
Spends existing notes and sends part of the value to a transparent platform
address. The shielded fee is deducted from the spent notes. Any remaining
value is returned to the shielded change_address.
ยงParameters
spends- Notes to spend with their Merkle pathsoutput_address- Platform address to receive the unshielded fundsunshield_amount- Amount to unshield to the platform addresschange_address- Orchard address for change outputfvk- 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 change output (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