Confirmation lifecycle
Distinguish relay submission, Solana processing, confirmation, finalization, failure and unknown SDK outcomes.
A signature is not proof of success. Lethenymous APIs distinguish submission from execution and finality.
Relayer status
The relay endpoint returns after RPC submission. Its status API reports one of:
| Status | Meaning |
|---|---|
submitted | No signature status is visible yet, or only a submission acknowledgement is known. |
processed | The transaction is visible at a processed commitment. |
confirmed | Solana reports confirmed commitment. |
finalized | Solana reports finalized success. |
failed | Signature status contains an execution error. |
An absent RPC status does not prove failure. Status may remain submitted until RPC history exposes the transaction.
SDK outcome union
Lethenymous.buildAndSendOutcome() returns finalized-success, finalized-failed or unknown. The convenience buildAndSend() returns the signature only on finalized success; it throws TransactionFailedError or TransactionUnknownError for the other outcomes.
The shielded wallet journals operation state before proof/submit transitions. After restart, call reconcilePending() before choosing notes for another spend. Unknown is intentionally fail-closed: do not free a reserved note merely because a local timeout elapsed.
prepared → submitted → processed → confirmed → finalized success
└───────────────→ finalized failure
Any ambiguous RPC/journal state → unknown until reconciledSee Relayer API and SDK errors & outcomes.