Skip to main content
This guide covers upgrading from v0.8.0 to v0.9.x. The main changes are version bumps, CLI flag changes, and the mxe-keys command being merged into mxe-info.

1. Update Arcium Tooling

arcup self update
arcup update
Verify:
arcium --version

2. Update Rust Dependencies

cd programs/your-program-name
cargo update --package arcium-client --precise 0.9.2
cargo update --package arcium-macros --precise 0.9.2
cargo update --package arcium-anchor --precise 0.9.2
cd ../../encrypted-ixs
cargo update --package arcis --precise 0.9.2

3. Update TypeScript Dependencies

npm install @arcium-hq/client@0.9.2
Multiple functions now accept an optional confirmOptions parameter (ConfirmOptions from @solana/web3.js) to control transaction confirmation behavior (commitment level, preflight checks, etc.). Affected functions: uploadCircuit(), initMxePart1(), initMxePart2(), recoverMxe(), initKeyRecoveryExecution(), submitKeyRecoveryShare(), and finalizeKeyRecoveryExecution().

4. CLI Changes

Deploy and init-mxe commands

The short flag for keypair changed from -kp to -k due to the migration to clap v4 (which requires single-character short flags). If you use the long form --keypair-path, no changes are needed.
# Before (v0.8.0)
arcium deploy -kp ~/.config/solana/id.json ...

# After (v0.9.0)
arcium deploy -k ~/.config/solana/id.json ...
# Or use the long form (unchanged):
arcium deploy --keypair-path ~/.config/solana/id.json ...

--authority flag removed

The --authority / -a flag has been removed from both deploy and init-mxe commands. The MXE authority is now always set to the keypair signer (payer). If you previously used --authority to specify a separate MXE authority pubkey, you must now use the intended authority keypair directly via --keypair-path.

mxe-keys removed

The arcium mxe-keys command has been removed. Its output (X25519, Ed25519, ElGamal keys) is now included in arcium mxe-info.

mxe-info expanded

arcium mxe-info now additionally displays:
  • MXE status (Active/Migration)
  • X25519 public key
  • Ed25519 verifying key
  • ElGamal public key
  • Recovery cluster peer offsets

5. Node Operators

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

# After
image: arcium/arx-node:v0.9.2
Then pull and restart:
docker compose pull
docker compose up -d

6. Verify Migration

arcium build
cargo check --all
arcium test

7. Changes Summary

Changev0.8.0v0.9.x
Deploy short flag-kp-k
--authority flagAvailable on deploy/init-mxeRemoved (keypair signer is always authority)
MXE key infoarcium mxe-keysMerged into arcium mxe-info
Rust dependencies0.8.00.9.x
TypeScript client@arcium-hq/client@0.8.0@arcium-hq/client@0.9.x
Arx Node Dockerv0.8.5v0.9.x

New in v0.9.x

These features are new in v0.9.x. See the linked documentation for details:
  • BaseField division operations: safe_inverse(), field_division(), and euclidean_division() methods on BaseField. See Primitives.
  • New macros: include_bytes!(), include!(), and encrypted_mod!() for code organization and data embedding. See Operations.
  • Cluster migration: New migrate-cluster CLI command to move MXEs between clusters. See Deployment.