Skip to main content

Overview

Arcium offers two TS libraries, which provide tools and utilities for interacting with Arcium and the MXEs (MPC eXecution Environments) deployed on it. Client library @arcium-hq/client:
  • Handle secret sharing and encryption of inputs
  • Submit confidential transactions
  • Manage callbacks for computation results
Reader library @arcium-hq/reader:
  • Read MXE data
  • View computations for a given MXE
Generally speaking, the client library is used to build & invoke computations on MXEs and then track their outputs, while the reader library is more so to track the overall network. To get a better idea of its place in the general architecture, we highly recommend taking a look at the computation lifecycle.

Installation

Client library:
npm install @arcium-hq/client
Reader library:
npm install @arcium-hq/reader

API Reference

For complete TypeScript SDK documentation and API reference for the client and reader libraries, visit: ts.arcium.com/api

Reclaiming Computation Rent

Every queued computation allocates a Solana account that holds rent. After the computation lifecycle completes, you should reclaim that rent.

After successful finalization

Once a computation reaches Finalized status (after the callback executes), use claimComputationRent to close the account and reclaim the rent:
import { claimComputationRent } from '@arcium-hq/client';

const sig = await claimComputationRent(
    provider,           // AnchorProvider
    clusterOffset,      // cluster the computation was queued on
    computationOffset,  // BN - the offset used when queueing
);
The signer must be the original payer who queued the computation. Using a different signer will fail with InvalidAuthority.
Computations that remain in Queued status expire after 180 slots (~72 seconds). Expired computations can be reclaimed using the reclaimExpiredComputationFee instruction, which also returns any fees from the fee pool. See the API reference for details.

Using the client

Prefer a more step-by-step approach? Get started with learning how to encrypt inputs for confidential transactions.