Skip to content

Releases: digital-asset/canton

canton v2.2.0

17 May 05:21
17366f9
Compare
Choose a tag to compare

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 and invoke-wait-time in Fabric configuration to query-wait-time-millis and invoke-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

19 May 20:51
17366f9
Compare
Choose a tag to compare

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

20 Apr 08:48
317ed8d
Compare
Choose a tag to compare

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

13 Apr 13:58
317ed8d
Compare
Choose a tag to compare

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 command ethereum.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 of ethereum_sequencer1.ethereum.deploy_sequencer_contract, call ethereum_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 to via-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 use canton.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...
Read more

canton v2.0.0

02 Mar 10:19
c1391ee
Compare
Choose a tag to compare

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

17 Dec 08:26
a0a2430
Compare
Choose a tag to compare

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 community 1.0.0-rc4
canton enterprise 1.0.0-rc4

canton v0.27.0

11 Aug 13:57
a0a2430
Compare
Choose a tag to compare

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

15 Jul 16:45
a0a2430
Compare
Choose a tag to compare

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 initialized
  • health.wait_for_running and health.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 command participant.pruning.find_safe_offset
  • We've renamed the config parameter my-remote-node.my-api.tls.cert-chain-file to my-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

22 Jun 10:15
a0a2430
Compare
Choose a tag to compare

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

17 May 17:42
a0a2430
Compare
Choose a tag to compare

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.