Skip to main content
This guide covers upgrading from v0.10.x to v0.11.x. The main breaking change for app developers is a new callback_cu_limit argument on queue_computation. The toolchain is otherwise unchanged: Anchor stays at v1.0.2 and Solana CLI stays at 3.1.10, so there is no Anchor migration this time. v0.11.x also adds Arcis enums and Option<T>, multi-instruction callbacks, and new required node config fields.

Before you start

v0.11.x is a code-and-tooling upgrade. Existing MXE, cluster, and computation-definition accounts remain compatible. Rebuild and redeploy your program after adding the callback_cu_limit argument. Node operators must update their node-config.toml: three fields are now required (see Node operators).

1. Update Arcium tooling

arcup self update
arcup update
Verify:
arcium --version
You should see 0.11.1.
Anchor (1.0.2) and Solana CLI (3.1.10) are unchanged from v0.10.x. If you already migrated to the Anchor v1 toolchain for v0.10.x, there is nothing further to install.

2. Update dependencies

Bump the Arcium Rust crates from your project root:
cargo update --manifest-path programs/your-program-name/Cargo.toml --package arcium-client --precise 0.11.1
cargo update --manifest-path programs/your-program-name/Cargo.toml --package arcium-macros --precise 0.11.1
cargo update --manifest-path programs/your-program-name/Cargo.toml --package arcium-anchor --precise 0.11.1
cargo update --manifest-path encrypted-ixs/Cargo.toml --package arcis --precise 0.11.1
Bump the TypeScript clients to 0.11.1:
npm install @arcium-hq/client@0.11.1 @arcium-hq/reader@0.11.1

3. Add callback_cu_limit to queue_computation

queue_computation takes a new seventh argument, callback_cu_limit: u32, the compute unit limit for the callback transaction. Pass 0 to keep the default. Every call site must be updated:
// Before (v0.10.x): 6 arguments
queue_computation(
    ctx.accounts,
    computation_offset,
    args,
    vec![/* callback instructions */],
    1, // num_callback_txs
    0, // cu_price_micro
)?;

// After (v0.11.x): 7 arguments
queue_computation(
    ctx.accounts,
    computation_offset,
    args,
    vec![/* callback instructions */],
    1, // num_callback_txs
    0, // cu_price_micro
    0, // callback_cu_limit (0 = default)
)?;

4. Arcis circuit changes

Enums and Option<T> are now supported in circuits. No existing code needs to change; these are additive. Both have one constraint: they cannot be the input or output of a confidential instruction, and enum discriminants cannot be set explicitly. See Operations and Types.

5. Node operators

Update your Docker image tag in docker-compose.yml:
# Before
image: arcium/arx-node:v0.10.3

# After
image: arcium/arx-node:v0.11.1
Then pull and restart:
docker compose pull
docker compose up -d
Three node-config.toml fields are now required; the config fails to parse without them:
[node]
computations_limit = 10  # Max computations the node executes concurrently

[solana]
secondary_endpoint_rpc = "<your-fallback-rpc-url>"   # Failover RPC, ideally a different provider
secondary_endpoint_wss = "<your-fallback-websocket-url>"  # Failover WebSocket, ideally a different provider
The node fails over to the secondary endpoints when the primary RPC lags or stops responding, so point them at a different provider than your primary endpoints. The recommended ASYNC_MPC_STREAM_WINDOW_MB, ASYNC_MPC_CONN_WINDOW_MB, and ASYNC_MPC_CC transport-tuning environment variables are documented in Node setup. Use arcium reclaim-failure-rent to close and refund failure-claim accounts past their challenge period. As part of the staking rollout, the arcium migrate-legacy-cluster, migrate-legacy-mxe-account, migrate-legacy-recovery-peer, and migrate-legacy-arx-node commands migrate pre-staking accounts to the staking layout. These are not required for the v0.11 code upgrade itself; run them once the staking program is live on your network.

6. Verify migration

arcium build
cargo check --all
arcium test

7. Changes summary

Changev0.10.xv0.11.x
queue_computation6 parameters7 parameters (adds callback_cu_limit: u32)
Solana CLI3.1.103.1.10 (unchanged)
Anchor CLI1.0.21.0.2 (unchanged)
Arcium Rust crates0.10.30.11.1
TypeScript clients@arcium-hq/{client,reader}@0.10.3@arcium-hq/{client,reader}@0.11.1
Arx node Dockerv0.10.3v0.11.1
Node config[node] offset, [solana] endpointsadds required computations_limit, secondary_endpoint_rpc, secondary_endpoint_wss
Arcis enums / OptionUnsupportedSupported (not as circuit input or output)

New in v0.11.x

These features are new in v0.11.x. See the linked documentation for details:
  • Arcis enums and Option<T>: unit, tuple, and struct enum variants plus the full Option combinator surface. See Operations.
  • Multi-instruction callbacks: instructions may now follow the Arcium callback in the same transaction, as long as the last two instructions are lighthouse assertions.
  • Reader fee getters: getComputationFee and getComputationFeeFromQueueTx read a computation’s fee from @arcium-hq/reader. See JavaScript client.
  • CLI: arcium inspect mempool --include-expired, arcium inspect execpool --json, arcium reclaim-failure-rent, and the migrate-legacy-* commands for the staking upgrade.

What’s next?

Deployment

Deploy and manage your MXE.

Arcis operations

Use enums and Option<T> in your circuits.