1. Update Arcium Rust dependencies
2. Update Arcium TS dependencies
3. (Optional) Update your Arcium.toml
We no longer need the clusters field under localnet in Arcium.toml. New file Arcium.toml should look like this:
clusters field as is will still work.
4. Simplify your Arcium crate imports
No more 10 line import statements fromarcium_anchor, arcium_client, arcium_macros, etc. All of them can be compressed such that the following:
CircuitSource, CallbackAccount, they will still need to be imported separately from arcium_client::idl::arcium::types module.
5. Update your Arcium CPI calls
In yourinit_comp_def calls, you need to add an additional parameter at the third position. So, it used to look like:
0 parameter, it’s just a placeholder for the new parameter.
6. Update your callback functions
No more manually handling all output bytes from an Arcium computation. The new#[arcium_callback] macro will handle all the deserialization of bytes for you based on your circuit’s generated interface file.
7. Update your Context structs
First, all references toPersistentMXEAccount becomes just MXEAccount. This has to be done in both queue_computation_accounts and init_computation_definition_accounts context structs.
Second, we need to update the StakingPoolAccount to FeePool in your queue_computation_accounts Context structs.
8. Add a new error code
In your programErrorCode enum, add a new error code:
9. Replace static mxePublicKey
No more constant MXE public key definition in your tests or client. Instead you can import getMXEPublicKey function from @arcium-hq/client and use it to get the MXE public key.
getMXEPublicKey to fetch MXE public key with retries: