canton v0.21.0
Release of Canton 0.21.0
Canton 0.21.0 has been released on February 23, 2021. You can download the Community edition from our github release section. Please also consult the full documentation of this release.
Summary
We have been quiet for a few weeks, but here is our latest advancement that comes with many small user facing changes and some significant performance and efficiency improvements under the hood.
What’s New
Improved Interaction with the Ledger
BREAKING: You can now submit multi-party commands via the ledger API and the Canton console. This is a breaking change that required us to modify the signature of participant.ledger_api.commands.submit
, submit_flat
, and submit_async
commands. They now accept multiple "actAs" submitters rather than a single submitter party.
There are also new console commands participant.ledger_api.transactions.subscribe_flat
and participant.ledger_api.transactions.subscribe_trees
. These commands allow for directly subscribing to the transaction stream.
BREAKING: We've also generalized the existing commands flat
and trees
to take a set of parties instead of a single party, leading to a minor break in the console commands.
Better Documentation
The documentation now includes anchor tags to specific commands/metrics, which is great for pointing other users to some specific command.
Also, we've improved the user experience of the console documentation in the case when more complex return types are used. These return types are now linked to their appropriate scaladocs page.
Finally, we've improved the ethereum sequencer demo example and corrected the docker repository used.
Console Improvements
We've improved the behaviour of the console commands. Commands with an explicit timeout will no longer timeout early due to gRPC console timeouts. And console commands with potentially large outputs now allow the option to limit the returned results.
Performance Improvements
We have done quite a few performance improvements in the recent past. You might notice a higher transaction throughput when running higher loads, but the result is highly dependent on the workflow you are using.
Additionally, we have improved the pruning performance quite a bit, ensuring that we can prune substantially faster than we can add new transactions.
Finally, reconnecting a participant to an idle domain (no transactions or transfers involving the participant) was previously slow, as we replayed from the last transaction. This has been fixed now.
Other Minor Improvements
- Sandbox mode: You can start Canton with a
--sandbox
flag. This will use a default sandbox configuration, automatically starting a participant that is connected to a local domain using in-memory stores. - The Graphite Metrics reporter now prefixes all metrics by default with
hostname
.
Preview Features
- You can now use the daml 1.11 language preview features such as Choice Observers.
Security and Bugfixes
- Fixed a crash recovery bug in which participant-level events (such as the publishing of DAML packages) would republish following pruning and participant restart.
- Preventing pruning of data that may be needed for crash recovery.
- The reconciliation checks now pick up correctly changes from repair requests.
- Eliminated several race conditions in crash recovery (in particular when recovering from a crash during crash recovery)
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9, mixed mode, sharing) |
DAML SDK | 1.11.0-snapshot.20210217.6338.0.ba6ba901 |
Postgres | postgres (PostgreSQL) 11.10 (Debian 11.10-1.pgdg90+1) |
CCF | 0.14.2 |
Ethereum | besu/v20.10.0/linux-x86_64/oracle_openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
- High availability for Canton Enterprise.
- Improving stability and long-running behaviour, in particular with pruning.
- Increase negative test coverage and improve our ability to deal with other outages.
- Moving the domain service into a distributed setup.
- We are working on adding Oracle support.