build_unshield_transition

Function build_unshield_transition 

Source
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 paths
  • output_address - Platform address to receive the unshielded funds
  • unshield_amount - Amount to unshield to the platform address
  • change_address - Orchard address for change output
  • fvk - Full viewing key for spend authorization
  • ask - Spend authorizing key for RedPallas signatures
  • anchor - 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; if None, the minimum fee is computed automatically. If Some, must be >= the minimum fee.
  • platform_version - Protocol version