Deploy a Verax Instance
This page is for teams deploying Verax on a new network, not for teams simply issuing attestations on an existing deployment.
Stack Overview
A full Verax deployment spans five layers:
- contracts and registries;
- post-deployment bootstrapping;
- optional standard library and EAS compatibility helpers;
- subgraph indexing;
- SDK and explorer support.
1. Deploy the contracts
The contracts package is the source of truth for deployment and upgrade flows.
- Copy the matching template from
contracts/env/.env.<network>tocontracts/.env. - Fill in RPC credentials, private key, and explorer API key.
- Run the deployment script from
contracts/:
pnpm run deploy <network>
This deploys:
RouterAttestationRegistryModuleRegistryPortalRegistrySchemaRegistry
AttestationRegistry receives its chain prefix from contracts/script/utils.ts.
2. Bootstrap canonical schemas
After the registries are deployed, run the post-deployment bootstrap:
pnpm run deploy:post <network>
This creates the canonical schemas used throughout the stack:
RelationshipnamedGraphRelationshipOffchain
These schema IDs are later reused by the SDK and explorer.
3. Optionally deploy the standard library
If you want the Verax-maintained modules available on the new chain, run:
pnpm run deploy:stdlib <network>
This deploys and registers:
ECDSAModuleV2ERC1271ModuleV2FeeModuleV2IndexerModuleV2IssuersModuleV2SchemaModuleV2SenderModuleV2
4. Optionally deploy EAS compatibility helpers
If the target chain has an EAS deployment and you want a unified Verax/EAS read path, set EAS_REGISTRY_ADDRESS and
run:
pnpm run deploy:eas <network>
This deploys AttestationReader.
5. Deploy the subgraph
The subgraph package is the source of truth for indexing configuration.
- Add the network to
subgraph/networks.json. - Create a
subgraph.<network>.yamlfile. - Add
build:<network>anddeploy:<network>scripts. - Build and deploy the subgraph from
subgraph/.
See Using the Subgraph for the query model once it is live.
6. Add SDK support
The SDK must know about the new chain.
- Add a backend config to
sdk/src/VeraxSdk.ts. - Add the corresponding frontend config.
- Publish a new SDK package version when ready.
The minimal config includes:
chainsubgraphUrlportalRegistryAddressmoduleRegistryAddressschemaRegistryAddressattestationRegistryAddress
7. Add explorer support
The explorer must also be updated.
- Add the chain configuration in
explorer/src/config/index.tsx. - Add the subgraph URL override in
explorer/src/config/subgraphUrls.ts. - Add a network logo if needed.
8. Operational notes
- On mainnet deployments, issuer allowlisting remains active through
PortalRegistry. - On testnet deployments,
PortalRegistryis initialized as permissionless. - If you upgrade contracts, re-run the network reimport flow in
contracts/before publishing new addresses. - Keep the contracts, subgraph, SDK, and explorer in sync; the documentation should only reference addresses and subgraph URLs that are live in all four layers.