IMPORTANT NOTE: copied and slightly adapted from the respective file from Canton's enterprise repo
Our deployment topologies require many servers representing nodes and apps to be deployed simultaneously. We use the following prefixes for their names:
- dso: for the servers operated by the dso
- alice: for servers operated by alice acting as a self-hosted validator operator
- bob: for servers operated by bob acting as a self-hosted validator operator
Most of our tests share the same long-running Canton instance,
see ./start-canton.sh and simple-topology-canton.conf.
Test isolation is implemented by each test using unique Daml party names and leveraging Daml privacy features.
Most of our tests use the same definition of the Splice setup,
see simple-topology.conf.
To avoid port collisions, tests run sequentially, see ConcurrentEnvironmentLimiter.
Chosen ports should be between 4001 and 32767, as the other ports tend to be either reserved or will be randomly chosen for client connections: https://en.wikipedia.org/wiki/Ephemeral_port
Consequently, we use the following port allocation scheme when manually allocating static ports:
A port number has five digits and is of the form <Network Index><Node Index><API Index>, where:
<Network Index>is between 5 and 31 and uniquely identifies a splice instance.<Node Index>is between 0 and 9 and uniquely identifies the node within the network.<API Index>is between 0 and 99 and uniquely identifies an API exposed by the node.
Exception: Ports used by CometBFT instances are allocated using a dedicated scheme based on the CometBFT default ports.
All CometBFT ports we use (both locally and on clusters) are of the form 266<Node Index><API Index>,
where <Node Index> defaults to 0 and <API Index> is one of 6 (P2P), 7 (RPC) and 0 (Prometheus metrics).
To avoid collisions with our grpc-web proxy (which proxies ports N to N+1000, see below),
all network indices must be odd numbers.
5: Default for integration tests- See
simple-topology.conf,simple-topology-canton.conf.
- See
9: Local runbook integration test and participant identities dump test,sv1Local,aliceValidatorLocal- See
local-sv-node,local-validator-node
- See
11: Ports forwarded from remote participant as part ofcncluster [participant|sequencer|mediator]_console15: Simulated time- See
simple-topology.confwith ports bumped by 10k,simple-topology-canton-simtime.conf
- See
25: Toxi-proxy ports- See
simple-topology.confwith ports bumped by 20k (currently for the ledger API, but may be extended for other connections in the future)
- See
26: Reserved for CometBFT27: Standalone Canton instances launched in integration tests28: Canton instances used for soft domain migration tests
1: SV12: SV23: SV34: SV45: Alice6: Bob7: Splitwell
00: Canton, Prometheus metrics endpoint01: Participant, Ledger API02: Participant, Admin API03: Validator, Admin API04: Wallet, Admin API05: DSO, Admin API07: Mediator, Admin API08: Sequencer, Public API09: Sequencer, Admin API10: Sequencer, BFT P2P API11: ANS user, Admin API12: Scan, Admin API13: Splitwell, Admin API14: SV, Public API + Admin API15: SV, Admin API (reserved)
5301is the Ledger API of Participant 3 in Splice network instance 5.17309is the Admin API of Domain 3 in Splice network instance 17.
Run ./scripts/print-config-summary.sh to print the actual ports used by our main configuration files.
Note that the ports used in our cluster deployments are not identical to the ones used in testing. For more details on the setup in the cluster, please refer to the cluster README.