CHAIN — /docs/chain/transactions
Transactions
A ZUL transaction is a Solana transaction — same wire format, same signature scheme, same instruction model. Anything that can build and sign a Solana transaction can submit to ZUL by pointing at the L2 RPC.
Lifecycle
- Submit —
sendTransactionover JSON-RPC. The node checks signatures and the recent blockhash (the queue keeps the last 150 blockhashes ≈ 75 seconds of validity). - Mempool — a bounded queue with signature deduplication.
- Execution— the next block's batch runs through the SVM. Failed transactions are recorded on-chain with their error.
- Finality — one block. There is a single producer and no forks, so inclusion is finality on the L2. (Settlement to L1 adds its own cadence — see Settlement batches.)
Fees
Fees use standard SVM fee handling, paid in ZUL by the fee payer (the first signer), and collected into a protocol fee account. Compute is metered in compute units exactly as on Solana; the Compute Budget program is preloaded, so priority-fee and CU-limit instructions parse correctly.
What the explorer records
- Signature, slot, index-in-block, success or error.
- Fee paid and compute units consumed.
- Fee payer and the full account key list.
- Program log messages, including shielded-pool log lines.
- A ✦ touched-pool flag when any instruction targets the shielded pool program.
PRIVACY
For shielded transactions the explorer can only show what the chain itself knows: nullifiers in, commitments out, fee paid. Amounts and counterparties never appear because they never exist in public data. See Shielded pool.