Releases: digital-asset/canton
canton v2.2.0
Release of Canton 2.2.0
Canton 2.2.0 has been released on May 16, 2022. You can download the Daml Open Source edition from the Daml Connect Github Release Section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
This Canton release comes with a few minor changes and bug fixes.
What’s New
Minor Improvements
- We've improved the error message of the command
mySequencer.pruning.prune_at
. It will now fail with GRPC status FAILED_PRECONDITION, if the given timestamp is unsafe to prune. (Previous value: INVALID_ARGUMENT) - If the participant is overloaded, it will log a degradation warning. More precisely, if all incoming commands have been rejected during
myParticipant.parameters.warnIfOverloadedFor
(default: 20 seconds) due to PARTICIPANT_BACKPRESSURE, the participant will log a PARTICIPANT_OVERLOADED warning. - The current
<participant>.domains.connect_ha
command has been deprecated. We've added another one with a slightly different argument list in order to support backwards compatible future extensions. Users are encouraged to migrate to the new version of the command, but the previous command will remain available until the next major release. - We've made changes to participant topology dispatching in order to support larger number of parties on a participant node.
Besu Driver
- We've improved the error message emitted due to misconfigurations of the Besu driver in order to provide better and clearer feedback to the user.
- Additionally, we've improved the Besu driver configuration used in our Ethereum example.
Fabric Sequencer
- We've renamed the
query-wait-time
andinvoke-wait-time
in Fabric configuration toquery-wait-time-millis
andinvoke-wait-time-millis
respectively. These are expert settings and shouldn't be changed normally. - We've added a
start-block-height
to the chaincode config of the Fabric driver. With this config option, one can define a starting block height to starting reading from, where the chaincode has been deployed to the ledger. This is useful in cases when the chaincode is deployed long after the ledger has been created and there are many blocks prior to it, which we don't need to process.
Security and Bugfixes
- We've fixed a bug in the participant that rarely causes the participant to refuse to reconnect to a domain and wrongly report that a ledger fork has happened:
ForkHappened
. This has also been fixed in 2.1.1 and in the (yet to be released) 2.0.1.
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+10, mixed mode, sharing) |
Daml | 2.2.0 |
Postgres | postgres (PostgreSQL) 14.2 (Debian 14.2-1.pgdg110+1) |
Oracle | 19.14.0 |
CCF | 0.14.2 |
Ethereum | besu/v21.10.9/linux-x86_64/openjdk-java-11 |
Fabric | 2.2.2 |
Scala | 2.13 |
What's Coming
We are currently working on
- improved participant onboarding using allow-lists.
- ongoing security hardening of the Canton protocol and application.
- providing higher levels of topology management privacy and scalability.
- production ready support of multiple domains per participant.
- improving our documentation with many explicit operational procedures.
canton v2.0.1
Release of Canton 2.0.1
Canton 2.0.1 has been released on May 19, 2022. You can download the Daml Open Source edition from the Daml Connect Github Release Section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
This is a maintenance release, addressing a few issues elaborated below.
Security and Bugfixes
-
We have implemented a validation for resilience against malicious participant nodes.
Currently, some planned validations have not yet been implemented, as stated in
https://docs.daml.com/canton/architecture/requirements/requirements.html#security,
but there was one issue that we prefer to be fixed now. -
We've removed the warning message when using Postgres 10. Canton does functionally support Postgres 10,
but all our performance tuning is done against Postgres 11. -
Fixed a bug in the participant that rarely causes the participant to refuse to reconnect to a domain and wrongly report that a ledger fork has happened:
ForkHappened
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+10, mixed mode, sharing) |
Daml | 2.0.1 |
Postgres | postgres (PostgreSQL) 10.20 (Debian 10.20-1.pgdg90+1) |
Oracle | 19.14 |
Ethereum | besu/v21.10.9/linux-x86_64/openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
canton v2.1.1
Release of Canton 2.1.1
Canton 2.1.1 has been released on April 20, 2022. You can download the Daml Open Source edition from the Daml Connect Github Release Section.
The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
The version 2.1.1 brings a few minor improvements and bugfixes.
Minor Improvements and Bugfixes
- Improvements of Oracle driver when dealing with contention.
- Fixed a rare remote connection bug in the participant when it tries to connect to a domain.
The symptom is that the log reports there was a ledger fork but a fork did not occur.
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.14.1+1, mixed mode, sharing) |
Daml | 2.1.1 |
Postgres | postgres (PostgreSQL) 14.2 (Debian 14.2-1.pgdg110+1) |
Oracle | 19.14.0 |
Ethereum | besu/v21.10.9/linux-x86_64/openjdk-java-11 |
Fabric | 2.2.2 |
Scala | 2.13 |
What's Coming
We are currently working on
- ongoing security hardening of the Canton protocol and application.
- providing higher levels of topology management privacy and scalability.
- production ready support of multiple domains per participant.
- improving our documentation with many explicit operational procedures.
canton v2.1.0
Release of Canton 2.1.0
Canton 2.1.0 has been released on April 13, 2022. You can download the Daml Open Source edition from the Daml Connect Github Release Section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
The version 2.1.0 comes with some fixes, but mostly with interesting news for our enterprise customers: We are lifting the preview flag from our Fabric and Besu domain integrations.
What’s New
General Availability of Besu Driver
This release includes the general availability release of the Enterprise Besu Driver integration.
- To migrate your existing Canton-on-Besu setup to the new release, please refer to the Besu migration section.
- The Besu driver now offers an automatic-deployment option for the
Sequencer.sol
contract which is available when using a single sequencer. This option makes bootstrapping an Besu sequencer easier and helps to avoid common pitfalls around wrongly configured contract addresses or block heights. The Besu sequencer console commandethereum.deploy_sequencer_contract
has also been improved. Please see the documentation for details. - Besu now offers a simple, white-list based authorization mechanism as early-access feature. The authorization mechanism allows fine-grained control of the Ethereum accounts that are allowed to interact with the
Sequencer.sol
smart contract. Please see the documentation for the full details. - The demo has been reworked into a simple and advanced scenario. The simple scenario showcases the new automatic-deployment feature for a single sequencer, while the advanced showcases using the improved
ethereum.deploy_sequencer_contract
for multi-sequencer deployment, and the early-access authorization feature. Please see the reworked documentation for the full details.
Besu Sequencer Migration
This release includes minor changes to the Canton Besu configuration and breaking changes to the Sequencer.sol
smart contract. If you want to use an Besu domain with this release, you will need to redeploy the Sequencer.sol
contract. Please note that with the newly-improved configuration option, it is now easier to redeploy Sequencer.sol
without resetting your Besu network.
Configuration Changes
Minor changes to existing Canton Besu configuration files and deployment scripts are needed to use them with this release:
- The Besu sequencer console command
ethereum.deploy_sequencer_contract
received new optional arguments. Therefore, you now need to add parentheses to its invocation. For example, instead ofethereum_sequencer1.ethereum.deploy_sequencer_contract
, callethereum_sequencer1.ethereum.deploy_sequencer_contract()
- In your Besu node configuration, the RPC HTTP API
TXPOOL
now needs to be enabled ("----rpc-http-api=TXPOOL,..."). - In the Canton configuration, you now also need to specify whether authorization should be enabled and whether the contract uses
type
'already-deployed' (only option possible before) or 'automatic-deployment'.
For example, the following configuration was previously-valid and used for the Besu demo:
sequencer {
type = "ethereum"
config {
client-conf {
client-host="besu-1"
client-port=8550
}
contract {
address="0x0ffd23af8eebc60b3cfdeed6f814988757237314",
block-to-read-from=1
}
}
}
It should now look as follows:
sequencer {
type = "ethereum"
config {
ethereum-client {
type="besu"
}
client-conf {
client-host="besu-1"
client-port=8550
}
authorization-enabled=false
contract {
type="already-deployed"
address="0x0ffd23af8eebc60b3cfdeed6f814988757237314",
block-to-read-from=1
}
}
}
General Availability of Fabric Driver
This release includes the general availability release of the Enterprise Fabric Driver:
- To migrate your existing Canton-on-Fabric setup to the new release, please refer to the Fabric migration section.
- The demo setup has been greatly simplified and the documentation improved. Please see the documentation.
- Fabric Sequencer pruning capabilities using Fabric's private data collections are available as a preview feature by setting
sequencer.config.use-private-data-collections=true
.
Fabric Sequencer migration
This release includes minor changes to the Canton Fabric configuration and breaking changes to the sequencer.go
chaincode smart contract. If you want to use a Fabric domain with this release, you will need to redeploy the sequencer.go
contract.
Configuration Changes
Minor changes to existing Canton Fabric configuration files and deployment scripts are needed to use them with this release.
For example, the following configuration was previously valid and used for the Fabric demo:
sequencer {
type = "fabric"
config {
context-organization-name="org1.example.com"
organizations=[
{
name="org1.example.com"
admin-user = {
msp-id=Org1MSP
hlf-client-user=User1
msp="<path>/msp"
}
hlf-tls-cert-file="<path>/tls/ca.crt"
It should now look as follows:
sequencer {
type = "fabric"
config {
user = {
msp-id=Org1MSP
organization-name="org1.example.com"
client-user=User1
private-key-file="<path>/msp/keystore/priv_sk"
signed-cert-file="<path>/msp/signcerts/[email protected]"
}
organizations=[
{
name="org1.example.com"
tls-cert-file="<path>/tls/ca.crt"
Key Usage and Key Management in Canton
Canton's security is tied to the secure usage of the cryptographic keys involved. While the system operates securely by default, we've added a new section to our manual that explains in detail how we use cryptographic keys to secure our protocol.
In addition, we've added new console macros such as node.topology.owner_to_key_mappings.rotate_key
. A macro
combines a series of console commands. In this particular case, it can be used to rotate keys. We've described it all in our new section on cryptographic key management.
Minor Improvements
- Party allocations via the ledger API will now result in the error
PARTY_ALLOCATION_WITHOUT_CONNECTED_DOMAIN
if the participant is not connected to a domain and party notification is set tovia-domain
. Previously the gRPC request would simply time out and the party became visible when the participant connected to a domain the next time. - We deprecated the developer logging switch
canton.monitoring.log-message-payloads
and added a new config section instead, allowing a user to log much more details about internal data structures. In order to recover the previous logging functionality, please usecanton.monitoring.logging.api.message-payloads = true
instead, but beware that this is an internal logging feature subject to change.
Enterprise Version Only:
- We added an example Oracle storage configuration mixin to
examples/03-advanced-configuration/storage
. - We added a new Oracle storage configuration check testing whether the user is using different users for Ledger API and Canton sync service database, as we have seen users repeatedly running into problems of using the same Oracle schema for the two components.
Preview Features
- We moved the Docker deployment example to the Enterprise release, as the Docker images of the JSON API and Trigger Service are only available to Enterprise customers.
- We improved auto-transfer to complete outstanding transfers after a restart.
- We implemented basic DAR removal. Therefore, Canton now supports, as a preview feature, the removal of DARs and Daml packages. However, the feature is not yet supported by the Ledger API server, and remains therefore as preview.
Security and Bugfixes
- We have upgraded the Open Telemetry library. This library was causing GRPC reflection to fail on the Ledger API server.
- The open source release artefact now correctly extracts into a directory named "canton-open-source" rather than "canton-community", which was our internal code name for the open-sourced version.
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.14.1+1, mixed mode, sharing) |
Daml | 2.1.0 |
Postgres | postgres (PostgreSQL) 14.2 (Debian 14.2-1.pgdg110+1) |
Oracle | 19.14.0 |
Ethereum | besu/v21.10.4/linux-x86_64/openjdk-java-11 |
Fabric | 2.2.2 |
Scala | 2.13 |
What's Coming
We are currently working on
- ongoing security hardening of the Canton protoco...
canton v2.0.0
Release of Canton 2.0.0
Canton 2.0.0 has been released on March 02, 2022. You can download the Daml Open Source edition from the Daml Connect Github Release Section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
We are very happy to announce the General Availability (GA) of Canton. This release is carrying the version number 2.0.0, as Canton is now officially part of the Daml solution stack. Also, the Canton documentation has been integrated into the Daml Documentation. And if you peek at our public repository, you will notice that we have open-sourced the Canton code.
What’s New
There have been many changes since 0.27.1 to improve the stability, performance and usability of the product. Please consult the release notes of the release candidates for detailed changes. Therefore, we restrict the list of changes compared to our last release candidate, 1.0.0-RC8:
-
The sequencer high-availability configuration has been enhanced. In order to enable HA, you now need to set explicitly
sequencer.high-availability.enabled = yes
. Smart default values have been selected for all other configuration options, so high-availability should work out of the box. -
The advanced configuration example have been updated to better reflect a configuration for an actual production deployment.
-
Security around parsing of configuration files has been hardened. We express our gratitude to the finder of this issue.
-
If you use Oracle as a database backend, you need to explicitly set the locale of the Java VM running the Canton nodes to
-Duser.language=en -Duser.country=US
and the Oracle database must specify BINARY as default collation and use AL32UTF8 as default character set encoding. Otherwise, Canton nodes will error on start-up. This is a new measure to avoid data corruption and performance degradations.
Compatibility
Below, we list the versions we use for testing our software.
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.14.1+1, mixed mode, sharing) |
Daml | 2.0.0 |
Postgres | postgres (PostgreSQL) 10.20 (Debian 10.20-1.pgdg90+1) |
Oracle | 19.14 |
Ethereum | besu/v21.10.9/linux-x86_64/openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
- ongoing security hardening of the Canton protocol and application.
- providing higher levels of topology management privacy and scalability.
- production ready support of multiple domains per participant.
- improving our documentation with many explicit operational procedures.
canton v0.27.1
Release of Canton 0.27.1
Canton 0.27.1 has been released on December 15, 2021. You can download the Community edition from our github release section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
This release updates the log4j dependencies used by the Fabric SDK to 2.16.
Only Canton Enterprise is affected by this, in particular the Fabric sequencer
application. Canton itself does not use log4j but the successor logback. As
the logback version we've been using also had a few CVEs, we've used the
opportunity to upgrade to the most recent version 1.2.8.
Security and Bugfixes
- Forced Fabric SDK log4j dependency from 2.13.3 to 2.16
- Upgraded logback version from 1.2.3 to 1.2.8
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7, mixed mode, sharing) |
Daml SDK | 1.16.0 |
Postgres | postgres (PostgreSQL) 11.13 (Debian 11.13-1.pgdg90+1) |
CCF | 0.14.2 |
Ethereum | besu/v20.10.4/linux-x86_64/oracle_openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on Canton 1.0. Because of that, we've skipped a few
release cycles. However, if you want to be on the latest and greatest, you can
download the latest release candidate here:
canton v0.27.0
Release of Canton 0.27.0
Canton 0.27.0 has been released on August 11, 2021. You can download the Community edition from our github release section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
This release adds new features and important stability improvements. The biggest
new feature is the support of Daml
Exceptions
in Canton! We improved the elastic deployment of horizontally scalable sequencer
nodes for performance and high availability. And many more stability and
internal improvements.
What’s New
Daml Exceptions
Canton now supports Daml
Exceptions,
which have been added to Daml in previous versions to express the rollback of
parts of a transaction under failures.
Impact and Migration
Canton now only supports Daml-LF versions of 1.14 above. Please rebuild your
DARs using the Daml SDK 1.16.0 .
Horizontally Scalable Sequencers
We have improved the deployment of horizontally scalable
sequencers,
in particular when deploying sequencer nodes in a dynamic environment. New
sequencer nodes can be deployed dynamically and they will replace failed
sequencer nodes and take over their shards. This is an enterprise-only feature.
Topology Management
We replaced a Daml-based package management workflow between participant nodes
with topology transactions, thereby reducing complexity and improving
performance. We also added commands to authorize the usage of a
package.
Impact and Migration
The parameter waitUntilPackagesReady
in package/Dar related commands has been
replaced by synchronizeVetting
.
The command packages.upload
has been removed, use either dars.upload
or
ledger_api.packages.upload_dar
instead.
Minor Improvements
- If a participant crashes during pruning, the participant will log a warning after restart.
The operator may then decide to prune again or to proceed with a partially pruned state. - The submissions sent to the sequencer are slightly smaller as messages with the same content and
different recipient groups are now sent only once to the sequencer. - Hardening of our storage layer under failures and retries.
- Added configuration validation to detect mistakes (shared storage
configuration between nodes without replication enabled, correct storage configuration for HA nodes)
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7, mixed mode, sharing) |
Daml SDK | 1.16.0 |
Postgres | postgres (PostgreSQL) 11.11 (Debian 11.11-1.pgdg90+1) |
CCF | 0.14.2 |
Ethereum | besu/v20.10.4/linux-x86_64/oracle_openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
- Oracle database support and performance
- Improving stability and long-running behaviour.
- Increase negative test coverage and improve our ability to deal with other outages.
- Supporting large number of participants and parties with privacy.
- Better error codes and fault documentation.
- Support for causality enforcement.
canton v0.26.0
Release of Canton 0.26.0
Canton 0.26.0 has been released on July 15, 2021. You can download the Community edition from our github release section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
We've added a few important features to keep a participant node happy. First, we've added backpressure which will now ensure that a participant can not easily be overloaded by sending too many commands at once.
Then, we've cleaned up how the config includes work, ensuring a consistent order of which config option comes into effect if something has been configured twice.
And many more small changes to improve the user experience and stability of the system.
Please note that this version does not yet support Daml-LF 1.14 (Daml Exceptions).
What’s New
Simple Backpressure Support
Background
Up to now, if a participant receives more requests than it can handle within the participant response time out, most or all commands will timeout and therefore not be committed to the ledger.
Previously, the participant would have consumed a high amount of resources without achieving anything useful. This is now prevented using backpressure.
Specific Changes
We've added a command <participant-name>.resources.set_resource_limits
that allows for imposing a limit on the number of dirty requests and the maximum rate of commands.
While one of these limits is attained or exceeded, the participant will reject any submission with GRPC status ABORTED. Most importantly, a submission will be rejected before it consumes a significant amount of resources.
The number of dirty requests covers requests initiated by the same participant as well as requests initiated by other participants. Compared to the maximum rate, it does more accurately reflect the load on the participant.
However, the maximum number of dirty requests alone does not protect the system from "bursts":
If an application submits a huge number of commands at once, the maximum number of dirty requests will likely be exceeded.
To protect a participant against "bursts", you should also configure a maximum rate.
Resource limits can only be changed if the server runs Canton enterprise. In the community edition, the server has a fixed limit of 10 transactions per second that cannot be changed.
Impact and Migration
The change has no impact on existing Canton deployments.
Config File Precedence
Background
Currently, if a key is defined twice in the Canton config, there are different conventions on which definition is taken.
If you define:
field = 1
field = 2
then Canton will assume field = 2
. So the last definition "wins".
The same behavior occurs, if you define field
in two different included files:
c1.conf:
field = 1
c2.conf
field = 2
main.conf:
include("c1.conf")
include("c2.conf")
Again, if Canton is started with main.conf
, Canton will assume field = 2
.
In contrast, if Canton has been started with --config c1.conf --config c2.conf
, a previous Canton release will assume field = 1
.
Specific Changes
When Canton is started with several configuration files (i.e., --config c1.conf ... -config cn.conf
), then later definitions will override earlier definitions with the same key.
Consequently, the latest definition now always has the highest precedence, independently of whether definitions occur in the same file, in different included files or in different files loaded as separate --config
parameters.
Impact and Migration
If you start Canton with several configuration files (i.e., --config c1.conf ... -config cn.conf
), you should reverse the order of the --config
parameters.
No action is required if the keys loaded by your config files are pairwise different.
Health Commands
We have improved the health commands. The health.status
command is now present on all node types, not only on participant and domain as before.
Additionally, we've replaced the command identity.initialized
with a set of new commands:
health.running
to indicate that the node has started (but might not yet be initialized)health.initialized
to indicate that the node has been successfully initializedhealth.wait_for_running
andhealth.wait_for_initialized
to wait for one of the above conditions.
Minor Improvements
- We've removed the console command
participant.pruning.find_safe_timestamp
in favor of new commandparticipant.pruning.find_safe_offset
- We've renamed the config parameter
my-remote-node.my-api.tls.cert-chain-file
tomy-remote-node.my-api.tls.trust-collection-file
.
Security and Bugfixes
- We resolved an issue that prevented a participant to connect to a domain that has the same unique identifier as the participant.
- We've improved the validation of values saved in the Canton backend: all relevant strings (identifiers, aliases, party names etc.) are now enforced to have an upper limit of characters. This validation happens mainly on the server side: after Canton receives Api calls through the Ledger Api server or the Admin Api. This change prevents truncation errors when storing these strings in a database.
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9, mixed mode, sharing) |
DAML SDK | 1.15.0 |
Postgres | postgres (PostgreSQL) 11.12 (Debian 11.12-1.pgdg90+1) |
CCF | 0.14.2 |
Ethereum | besu/v20.10.4/linux-x86_64/oracle_openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
- Support for DAML exceptions
- Oracle database support
- Improving stability and long-running behaviour.
- Increase negative test coverage and improve our ability to deal with other outages.
- Supporting large number of participants and parties with privacy.
- Better error codes and fault documentation.
- Support for causality enforcement.
canton v0.25.0
Release of Canton 0.25.0
Canton 0.25.0 has been released on June 22, 2021. You can download the Community edition from our github release section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
This release is an important step towards our general availability deadline, featuring improved
domain operational procedures, domain high availability and much better error reporting.
What’s New
Domain Entity Onboarding
We have been redesigning how domains are initialized and how new domain entities are
onboarded to a running system. Previously, the process was hard-coded and internal to Canton.
We now generalised this process and moved it into a set of console commands.
The new set of commands allows now to bootstrap a domain with multiple sequencers, add
new sequencers on the fly to a running domain, or add new mediators for high-availability
purposes.
A side benefit of the domain entity onboarding overhaul is that the Postgres and Oracle domain integrations
in the Enterprise release now support multiple sequencer processes, providing active-active domain
high availability.
Configuration Changes
There have been a few changes to how Canton can be configured:
We've discontinued the configuration parameter canton.<node-type>.<node-name>.storage.database-name
as
it didn't work well across different database connectivity configurations.
Instead, use canton.<node-type>.<node-name>.storage.config.properties.database-name
(postgres only) or
canton.<node-type>.<node-name>.storage.config.url
to set the database name.
See the examples in 03-advanced-configuration for further information on how to set database names.
We've introduced a new config parameter canton.<node-type>.<node-name>.storage.max-connections
.
It allows for setting the maximum number of db connection for that node. For participant
nodes, it will automatically split the specified number of connections between Canton,
ledger api server, and indexer.
The new parameter has lower precedence than the existing low-level parameter
canton.<node-type>.<node-name>.storage.config.num-threads
; so if the low-level parameter has been defined in
existing deployments, the number of connections won't change.
Improved Error Reporting
Canton now increasingly provides error messages with error codes on failures. The error codes
are documented in the corresponding error code section of our manual.
Each error code contains information whether an error is fatal or retryable, which should allow
any application to automatically classify the errors accordingly.
In particular, the ledger Api command submission service will now report many errors synchronously with detailed error
messages. However, this is still a preview feature and we'll polish the experience according to the user
feedback we get.
Minor Improvements
- We've added the
utils.generate_daml_script_participants_conf
macro to export participants config for Daml script.
This should improve the user experience when using Daml script with Canton, as you can generate a Daml script
input configuration from a Canton process. - We've extended pruning to the sequencer and mediator stores.
You can now keep your domain tidy and remove archived data by invoking the pruning commands on the domain.
Security and Bugfixes
- Eliminated a race condition when handling sequenced events from the domain that could crash a participant.
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9, mixed mode, sharing) |
DAML SDK | 1.14.0 |
Postgres | postgres (PostgreSQL) 11.12 (Debian 11.12-1.pgdg90+1) |
CCF | 0.14.2 |
Ethereum | besu/v20.10.4/linux-x86_64/oracle_openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
- Oracle database support
- Improving stability and long-running behaviour, in particular with pruning.
- Increase negative test coverage and improve our ability to deal with other outages.
- Supporting large number of participants and parties with privacy.
- Better error codes and fault documentation.
- Support for causality enforcement.
canton v0.24.0
Release of Canton 0.24.0
Canton 0.24.0 has been released on May 17, 2021. You can download the Community edition from our github release section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.
Summary
This version focuses mostly on preview features. In particular, we have added initial support for participant
high-availability and Oracle storage backend support to our enterprise version. We've also made repair work with dirty
requests.
What’s New
Participant High Availability
You can now configure the enterprise version to run with replicated participants. This is only a preview feature.
Please consult the manual on how to configure it and how it works.
Repair with Dirty Requests
The repair commands allow you to recover from data corruption and system malfunction by manually adjusting your contract
stores, as described in our user manual.
Until now, repair was only able to work on quiet domains without in-flight requests. We have improved this such that repair can be used even on domains with in-flight processing.
Oracle Support
The storage driver now supports a new storage backend: Oracle databases. However, support is currently alpha only and only available in our Enterprise release.
Minor Improvements
- Ability to configure max inbound message size on all APIs as described in our user manual.
- Fixed a bug that prevented writing log messages to the log file after shutdown of Canton had been initiated.
Preview Features
- You might have noticed our new section on error codes on our website. We are currently working on providing exhaustive documentation on errors and their resolution. However, we are in the process of this cleanup and not all errors are yet in the newly documented form.
Security and Bugfixes
- There is no security or bugfix worth mentioning in this release.
Compatibility
Dependency | Version |
---|---|
Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9, mixed mode, sharing) |
DAML SDK | 1.13.1 |
Postgres | postgres (PostgreSQL) 11.12 (Debian 11.12-1.pgdg90+1) |
CCF | 0.14.2 |
Ethereum | besu/v20.10.4/linux-x86_64/oracle_openjdk-java-11 |
Fabric | 2.2.2 |
What's Coming
We are currently working on
- Improving stability and long-running behaviour, in particular with pruning.
- Increase negative test coverage and improve our ability to deal with other outages.
- Supporting large number of participants and parties with privacy.
- Better error codes and fault documentation.
- Support for causality enforcement.