build_shielded_transfer_transition

Function build_shielded_transfer_transition 

Source
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 paths
  • recipient - Orchard address to receive the transferred note
  • transfer_amount - Amount to transfer to the recipient
  • change_address - Orchard address for change output (if any)
  • 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 recipient (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