Skip to content

canton v3.5.15

Choose a tag to compare

@canton-machine canton-machine released this 27 Aug 11:32
· 16 commits to main since this release
57408d0

Release of Canton 3.5.15

Canton 3.5.15 has been released on August 27, 2026.

Summary

This is a release that officially marks CantonBFT as GA for private synchronizers.
It contains a number of improvements for CantonBFT, traffic enforcement app and resource management.

CantonBFT GA

CantonBFT is now GA for private synchronizers, and it is currently undergoing Canton Network production testing as part of the roadmap to Global Synchronizer adoption.

CantonBFT, formerly known as DA BFT, is a new tailor-made BFT ordering service for Canton. CantonBFT replaces the current single-leader CometBFT ordering service on the
Global Synchronizer with a parallel, multi-leader consensus protocol, enabling significantly higher transaction throughput and better availability, especially in the
presence of slow or faulty peers.

CantonBFT draws inspiration from two recent research projects. From Narwhal, CantonBFT decouples data dissemination from data ordering to eliminate the
bottleneck of sharing data on the consensus (Byzantine agreement) critical path. From ISS, CantonBFT divides block ordering into epochs, in which
each eligible leader concurrently leads an independent instance of a BFT ordering algorithm (e.g., a PBFT variant), which load balances the overhead
associated with performing the leader role (compared to all other followers).

More information about the bft orderer architecture can be found in the docs.

Traffic Enforcement App Improvements

Added tracing and metrics for the Traffic Enforcement App performing local traffic accounting on validator nodes. Trace context now propagates across the in-process traffic service.
Enforcement decisions emit TrafficEnforcementBackend.validateTraffic spans with outcome and optional reason attributes, while applied projection deltas emit TeaProjectionHandler.applyDelta spans with event attributes.

New metrics:

Metrics Name Type Description
decisions Counter The number of enforcement decisions, labeled by traffic_enforcement_outcome and, where applicable, traffic_enforcement_reason.
enforcement-check-duration Histogram The time taken to perform traffic enforcement checks, including balance lookups and decision making.
projection-timestamp Gauge The timestamp of the latest event consumed by the traffic enforcement projection.
projection-offset Gauge The latest saved offset of the traffic enforcement projection.

All metrics are prefixed by daml.participant.traffic-enforcement..

Resource management

  • Fixed shutdown of subscription queue when client is cancelled or disconnected
  • Fixed an issue with the P2P grpc connection channel to ensure it closes properly during shutdown.

CantonBFT Improvements

  • Fixed an issue with the P2P grpc connection channel to ensure it closes properly during shutdown.
  • Added metrics about how much time batch fetches take and to count batch fetch timeouts, in both cases labelled by counterparty node.
  • Added support for flushing a node's segment once it sees that a quorum of other segments have completed.
  • Added metric to track the rate of flushed blocks in the local node's segments

Minor Improvements

  • Fixed cryptographic metrics related to signing and decryption that were not being reported correctly.
  • The JSON Ledger API now accepts traceparent and tracestate request header names case-insensitively, in compliance with the specification.
  • Updated Docker base image to 1.0.13, which updates gRPC health probe to v0.4.55.

Compatibility

The following Canton protocol versions are supported:

Dependency Version
Canton protocol versions 34, 35

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM (build 21.0.12+2-nixos, mixed mode, sharing)
Postgres Recommended: PostgreSQL 17.10 (Debian 17.10-1.pgdg13+1) – Also tested: PostgreSQL 14.24 (Debian 14.24-1.pgdg13+2), PostgreSQL 15.19 (Debian 15.19-1.pgdg13+2), PostgreSQL 16.15 (Debian 16.15-1.pgdg13+2), PostgreSQL 18.6 (Debian 18.6-1.pgdg13+2)