Skip to content

canton v0.21.0

Compare
Choose a tag to compare
@canton-machine canton-machine released this 23 Feb 19:56
fbc0652

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.