Skip to main content
This release requires a program redeploy due to a change in the Arcium program ID. Follow this guide to migrate your MXE from v0.5.x to v0.6.2.

1. Redeploy Required

The Arcium program ID has changed. You must redeploy your MXE program to use v0.6.2.
VersionProgram ID
v0.5.xBpaW2ZmCJnDwizWY8eM34JtVqp2kRgnmQcedSVc9USdP
v0.6.2Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ
After updating dependencies and code (steps below), run:
arcium deploy --cluster-offset <your-offset> --keypair-path <path> --rpc-url <url>

2. Update Rust Dependencies

Update your program dependencies to v0.6.2:
cd programs/your-program-name
cargo update --package arcium-client --precise 0.6.2
cargo update --package arcium-macros --precise 0.6.2
cargo update --package arcium-anchor --precise 0.6.2
Update your encrypted-ixs dependencies:
cd ../../encrypted-ixs
cargo update --package arcis --precise 0.6.2
arcis-imports no longer exists in v0.6.2. You must migrate to the arcis crate (see section 7).

3. Update TypeScript Dependencies

npm install @arcium-hq/[email protected]

4. Rename SignerAccount to ArciumSignerAccount (Rust)

The SignerAccount type has been renamed to ArciumSignerAccount. Update all references in your program:
// Before v0.6
#[account(
    init_if_needed,
    payer = payer,
    space = 8 + 1,
    seeds = [b"SignerAccount"],
    bump,
    address = derive_sign_pda!(),
)]
pub sign_pda_account: Account<'info, SignerAccount>,
// v0.6.2
#[account(
    init_if_needed,
    payer = payer,
    space = 8 + 1,
    seeds = [b"ArciumSignerAccount"],
    bump,
    address = derive_sign_pda!(),
)]
pub sign_pda_account: Account<'info, ArciumSignerAccount>,
The seed in the seeds attribute must also be updated from b"SignerAccount" to b"ArciumSignerAccount".

5. Update PDA Seed in TypeScript

If you derive the signer PDA manually in your TypeScript code, update the seed:
// Before v0.6
const signPda = PublicKey.findProgramAddressSync(
  [Buffer.from("SignerAccount")],
  program.programId
)[0];
// v0.6.2
const signPda = PublicKey.findProgramAddressSync(
  [Buffer.from("ArciumSignerAccount")],
  program.programId
)[0];

6. (Optional) Configure Arcium.toml for Non-Localnet Testing

v0.6.2 adds the --cluster flag to run tests against devnet, mainnet, or custom clusters directly.

Prerequisites

ModeRequirements
Localnet (default)Docker running, ports available
Remote clustersCluster offset in Arcium.toml, RPC URL in Anchor.toml

Configure Cluster Offsets

Add cluster configurations to your Arcium.toml:
[localnet]
nodes = 2
localnet_timeout_secs = 60
backends = ["Cerberus"]

# Cluster configs for non-localnet testing
# Get offset from `arcium deploy` or `arcium init-mxe` output
[clusters.devnet]
offset = 123

[clusters.mainnet]
offset = 456

# Custom clusters are also supported
[clusters.my-custom-cluster]
offset = 789

Run Tests

# Localnet (default) - starts Docker, validator, ARX nodes
arcium test

# Devnet - uses cluster config from Arcium.toml
arcium test --cluster devnet

# Mainnet
arcium test --cluster mainnet

# Custom cluster
arcium test --cluster my-custom-cluster

RPC Configuration

For non-localnet testing, configure your RPC endpoint in Anchor.toml:
[provider]
cluster = "devnet"
wallet = "~/.config/solana/id.json"
Non-localnet tests skip Docker, local validator, and ARX nodes entirely. The CLI reads the cluster offset from Arcium.toml and sets the ARCIUM_CLUSTER_OFFSET environment variable for your tests.
If you run arcium test --cluster devnet without configuring [clusters.devnet] in Arcium.toml, you’ll see an error with instructions to add the configuration.

7. Migrate from arcis-imports to arcis

The arcis-imports crate no longer exists in v0.6.2. You must migrate to the arcis crate:
# Before v0.6 (Cargo.toml)
[dependencies]
arcis-imports = "0.5.1"
# v0.6.2 (Cargo.toml)
[dependencies]
arcis = "0.6.2"
In your circuit code, update the import:
// Before v0.6
use arcis_imports::*;
// v0.6.2
use arcis::*;

8. Verify Migration

After completing all steps, verify your migration:
# Build
arcium build

# Type check
cargo check --all

# Run tests
arcium test

9. Summary of Breaking Changes

ChangeBefore v0.6v0.6.2
Program IDBpaW2ZmCJnDwizWY8eM34JtVqp2kRgnmQcedSVc9USdPArcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ
Signer Account TypeSignerAccountArciumSignerAccount
Signer PDA Seed"SignerAccount""ArciumSignerAccount"
Rust Dependencies0.5.x0.6.2
TypeScript Client@arcium-hq/[email protected]@arcium-hq/[email protected]
Arcis Cratearcis-importsarcis