Shielded Withdrawals
How It Works
Public Outputs
Public Inputs (37 fields)
ShieldedWithdrawal {
noteNullifiers: [Field; 6], // 6 — spent note nullifiers
txNullifier: Field, // 1 — transaction nullifier
root: Field, // 1 — Merkle tree root
noteChangeCommitment: Field, // 1 — sender's change note
noteFeeChangeCommitment: Field, // 1 — sender's fee change note
value: Field, // 1 — withdrawal amount (public)
recipientAddress: Field, // 1 — destination address (public)
coinId: Field, // 1 — token address (public)
ciphertextChange: [Field; 9], // 9 — encrypted change note
ciphertextFeeChange: [Field; 9], // 9 — encrypted fee change note
gasFee: GasFee, // 3 — gas parameters
nullifiersHash: Field, // 1 — hash of all 6 nullifiers
fee: Field, // 1 — relayer fee amount
feeTokenAddress: Field, // 1 — fee token address
}
// Total: 6 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 9 + 9 + 3 + 1 + 1 + 1 = 37Differences from Shielded Transfer
Aspect
Shielded Transfer
Shielded Withdrawal
On-Chain Execution
Wallet-Only Mode
Last updated