Skip to main content

Match the chain to the environment

Sandbox always uses Moca Chain Testnet. Production uses Moca Chain mainnet when you set credentialNetwork: "mainnet". If your app’s chain does not match its build environment, you can hit unexpected errors. See Environments for the full mapping.

Treat credentials as network-specific

Credentials, schemas, and programs are network-specific. Credentials issued on Testnet are not available on Mainnet, and Devnet-issued credentials are not available on either. When you move to a new network:
  • Re-issue credentials on the target network.
  • Recreate issuance schemas and programs if needed.
  • Check your Issuer and Verifier DIDs, which may differ per network.

Keep each environment separate

  • Sandbox and production each have their own Developer Dashboard, and nothing you set up in sandbox carries over. Copy the Partner ID from each Dashboard; do not assume they match.
  • Register a JWKS URL in each Dashboard, and keep production private keys apart from sandbox keys. See JWKS endpoint.
  • Read buildEnv, credentialNetwork, Partner ID, program IDs, and API origins from configuration, not hard-coded values, so a production build never ships with sandbox values.

Test on sandbox, then launch

Build and test the full flow on sandbox first. When it works end to end, follow the Launch checklist to set up production.

Migrating from older SDK versions

Starting with AirKit 1.10.0, Sandbox is Testnet-only — the temporary credentialNetwork: "devnet" opt-in is removed.

What changed

Impact

  • Credentials issued on Devnet are not available on Testnet or Mainnet
  • Smart Account addresses remain the same across networks
  • Re-issue test credentials on Testnet, or on Mainnet for production launches