- Your transaction completes - Confidential data is submitted and queued in the cluster’s mempool
- Computation waits in queue - MPC nodes process computations from the mempool in order
- MPC execution - When your computation’s turn comes, MPC nodes execute it offchain
- Callback invocation - Results are returned via your callback instruction
Await computation completion with awaitComputationFinalization
On v0.10.x, failed finalization reports a
CircuitFailureReason such as OffChainCircuitFetchFailed, OffChainCircuitHashMismatch, CircuitCUMismatch, LocalCircuitFetchFailed, or CircuitSerialization.Read and assert the callback result
Finalization tells you the callback has run, but not what it produced. Consume the result the way you would in any Solana program: await an emitted event, or read updated account state. Events are the common path because Arcium callbacks typically relay encrypted payloads for the client to decrypt offchain. Event-based decryption requires the callback to emit both the ciphertext and the nonce. See the callback-sideemit! pattern in the Arcium program guide.
On the client side, register the event listener before queuing the computation so it’s attached by the time the callback fires. Helpers and imports are omitted for brevity: awaitEvent is a test-scaffold wrapper around program.addEventListener, cipher comes from the encryption setup in Encrypting inputs, and expect / expectedSum are shown in a test context.
- Event path:
subscribe → queue → finalize → await event → decrypt → assert - Account path:
queue → finalize → read account → assert
What’s next?
Protecting inputs
Learn how to protect data before sending to the MXE.
Deployment
Deploy your MXE program to devnet or mainnet.