Architecture
Three independent components must reach each other:- Qustody API → Quantum Chain RPC (HTTP and optionally WebSocket)
- Qustody API → Post-quantum signing service (HTTPS or gRPC mTLS)
- Qustody API → Your webhook endpoint
Step 1. Configure the RPC connection
Set the node endpoints in Qustody’s environment:Step 2. Configure the signing service
Pick the signer mode that matches your operations model.Option A — gRPC (recommended for production)
Option B — Callback (signer pushes signatures)
GET /v1/transactions?status=PENDING_SIGNATURE, fetches signing payloads, and POSTs back signatures. See External signing.
Option C — Remote HTTPS
/readyz returns 200.
Step 3. Bootstrap a tenant and admin user
Step 4. Create a vault and wallet
CUSTODY_SIGNER_KEYGEN_MODE=qey, omit public_key — Qustody asks the signer to mint one and registers it automatically.
Step 5. Subscribe to webhooks
Step 6. Send your first transaction
SUBMITTED → PENDING_AUTHORIZATION → APPROVED → PENDING_SIGNATURE → BROADCASTING → BROADCAST → CONFIRMED. Each transition fires a webhook. See Transaction lifecycle for the full state diagram.
Step 7. Verify on chain
When you receivetransaction.confirmed:
status should be 0x1 (success).
Operational checklist
Backup RPC
Configure
CUSTODY_NODE_BACKUP_RPC_URLS with at least one alternate node. The circuit breaker fails over automatically.mTLS to signer
For gRPC mode, mutual TLS prevents stolen client tokens from leaking signing access.
Confirmation depth
Default 12 blocks (~3 minutes) is good for most flows. Raise for very high-value transfers.
Monitor metrics
Watch
signer_circuit_breaker_state, node_rpc_errors_total, txpool/queued. Alert on circuit breakers open longer than 1 minute.