Release of Canton 3.5.13
Canton 3.5.13 has been released on August 13, 2026.Summary
This is a maintenance release with a number of improvements in particular for CantonBFT and traffic enforcement app, as well as minor improvements in various areas.What’s New
Traffic Enforcement App Improvements
-
Added
reject-multi-party-submissionsto the participant’s traffic enforcement configuration. Multi-party submissions normally bypass traffic enforcement, since TEA accounts are bound to a single party. Setting this totruerejects them instead. Disabled by default. -
Added
allow-submissions-on-degradationto the participant’s traffic enforcement configuration. When the balance can’t be determined, for example during a database outage, this lets the submission proceed unchecked instead of failing it, logged at WARN. The submission is still charged, so an account without enough traffic ends up with a negative balance until it is topped up. Does not apply when the traffic service itself refuses the request. Disabled by default. -
Added
database-query-timeout(default 1 second) andaccount-lookup-timeout(default 20 seconds) to the internal traffic enforcement server’s configuration, bounding the database read behindGetAccountand the overall call respectively. The former must be at least one millisecond and the latter must be strictly larger so a timed-out query still leaves room for a retry.
CantonBFT Improvements
- CantonBFT now deletes unnecessary messages from previous views to prevent excessive memory usage during view changes.
- CantonBFT limits standalone mode to non-standard config enabled
- Fixed relative segment latency metric
- CantonBFT now logs more information about the view change process, including the reason for the view change and the new leader.
- Logs about backpressure and P2P that didn’t provide useful information for operators have been removed or have seen their threshold lowered to DEBUG; other log messages have been improved.
- The current epoch graph in the “BFT ordering” dashboard is now a time series rather than a mere stat.
- Batch fetching: a node that is contributing to consensus but doesn’t receive a batch will try to fetch it from other nodes, but previously it would only consider nodes that signed an acknowledgement for the batch. Now it will also consider nodes that didn’t, as they could have retrieved the batch from other nodes earlier and be able to provide it. This improves dissemination success chances, and thus overall ordering latency, for nodes that experience connectivity issues.
- Fixed a deserialization issue with retransmission request
- Remove a deprecated gRPC header previously used internally for P2P authentication
- Start fetching batches earlier, before consensus starts on the block.
- Add metric for which node we are missing batches and need to fetch
- Retrieval of batches will be attempted by multiple nodes in parallel, by default 3 (configurable)
- CantonBFT’s P2P server-side now has configurable keepalive settings and defaults have been made more robust against network infrastructure that may drop idle connections, leaving them in a zombie state.
- Fixed a view change nested timeout cancellation issue when receiving a commit certificate during a view change.
Improved Sequencer Logging
On the sequencer, the log line mentioning all events in a block now also can contain the outcome of the event. By settingcanton.sequencers.sequencer.parameters.enable-async-sequencer-logging = true, the logging will be
moved to the end of the block processing, but will include the outcome of the events in the block. The default
remains false to preserve the current behavior.
Note that as part of this change, the sequencer-id of the traffic control metrics and of the block event processor
metrics dropped the superfluous leading “SEQ::” string.
Detailed Participant to Sequencer Connect Logging
More debug logging has been added to the participant connecting to a sequencer in order to debug a race condition in which connecting appears to hang at times.Minor Improvements
- Fixed deserialization failure in AcsCommitmentCatchUpConfig
- Fixed an issue with
authenticationServiceChannelto ensure it closes properly during shutdown. - gRPC servers can now configure manual gRPC flow control window size; also, both gRPC servers and clients can now configure automatic gRPC flow control initial window size. The default is unchanged, i.e., for servers neither is set unless configured, so that the implementation default applies, and for clients manual flow control is enabled by default with a window size of 1 MB. Only CantonBFT’s default has changed: implementation defaults are used also on the client side.
- LSU: On participant nodes, only expose LSU status of recent LSUs (instead of old past LSUs).
Bugfixes
- Improved engine handing of
UnsupportedContractIdVersion: disclosure from a future version of Canton could cause the engine to crash and fail submissions with an internal error. AUnsupportedContractIdinterpretation error is now returned instead. - Preserve
traceparentinformation for traces withtracestateinformation. When serializing a trace in W3C format, thetraceparentinformation was not preserved which has been fixed. However, a limitation still exists whereby CantonBFT discards thetracestateinformation, which will be fixed in a future release.
Compatibility
The following Canton protocol versions are supported:
Canton has been tested against the following versions of its dependencies: