A private synchronizer requires deploying sequencer and mediator nodes, configuring their database backends, and connecting validators. This guide covers the infrastructure setup for both standalone and hybrid deployments.Documentation Index
Fetch the complete documentation index at: https://docs.canton.network/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you begin:- A Kubernetes cluster (1.27+) with Helm 3 installed
- PostgreSQL 14+ (managed service recommended for production)
- TLS certificates for the sequencer endpoint
- Canton release artifacts (Docker images or JARs)
- Familiarity with Canton’s synchronizer architecture
Ordering backends
The sequencer requires a backend to store and order messages. Canton supports two options:- Centralized ordering (PostgreSQL) — A single PostgreSQL database acts as the ordering backend. Simpler to operate, suitable for private synchronizers where a single operator manages the infrastructure. Currently in Alpha.
- Decentralized ordering (BFT with CometBFT) — Multiple sequencer nodes run BFT consensus. Required when multiple independent parties operate the synchronizer and no single party should control ordering. This is how the Global Synchronizer operates.
Database setup
You need separate PostgreSQL databases for the sequencer and mediator. Each node stores its own state independently. Create separate databases (sequencer_db, mediator_db) with dedicated users. For production, use a managed PostgreSQL service (Cloud SQL, RDS, Azure Database for PostgreSQL) with automated backups, high availability, at least 4 vCPUs / 16 GB memory, and SSD-backed storage.
Deploying the sequencer
Helm chart configuration
Create a values file for the sequencer:Deploying the mediator
Create a values file for the mediator:Initializing the synchronizer
After both nodes are running, initialize the synchronizer topology. Using the Canton Console connected to the sequencer:Connecting validators
Once the synchronizer is initialized, validators can connect to it. On each validator’s Canton Console:participant.synchronizers.list_connected().
Verification
Confirm end-to-end functionality by allocating a test party and creating a contract on the private synchronizer. Check the sequencer health endpoint (HTTP 200 means ready) and verify the mediator is registered in the synchronizer topology.Production considerations
- TLS everywhere — Use TLS for all connections between validators and the synchronizer
- Network policies — Restrict sequencer endpoint access to known validator IPs
- Monitoring — Sequencer and mediator nodes expose Prometheus metrics; use the same monitoring stack as your validators
- Backups — Back up sequencer and mediator databases regularly