Skip to content

Releases: digital-asset/canton

canton v2.6.3

20 Apr 15:01
678f194

Choose a tag to compare

Release of Canton 2.6.3

Canton 2.6.3 has been released on April 20, 2023. 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 containing fixes.

What’s New

Security and Bugfixes

  • Fixed one issue preventing to use the migrate_domain command on a remote participant.
  • Fixed an issue causing a deadlock on the participant when dealing with a result without a corresponding request.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 3, 4
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v22.1.3/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.6.2

19 Apr 10:04
678f194

Choose a tag to compare

Release of Canton 2.6.2

Canton 2.6.2 has been released on April 19, 2023. 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 containing one minor improvement (see below).

What’s New

Minor Improvements

  • The admin command repair.migrate_domain is now also supported on a remote participant setup.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 3, 4
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v22.1.3/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.6.1

31 Mar 14:19
23a3976

Choose a tag to compare

Release of Canton 2.6.1

Canton 2.6.1 has been released on March 31, 2023. 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, fixing a performance degradation. Production systems of 2.6.0 are advised to consume the upgrade.

What’s New

Activation of unsupported features

In order to activate unsupported features, you now need to explicitly enable dev-version-support on the domain (in
addition to the non-standard config flag). More information can be found in the
documentation.

Security and Bugfixes

  • Fixed a performance degradation in the mediator and database sequencer that leads to slow performance degradations after running a process for days.
  • Fixed an issue in HA participants under high load that may cause a passive replica to not serve transactions when becoming active again.
  • Fixed the database sequencer max-event-age metric not to report excessively old event ages.
  • Fixed an issue in HA database sequencer setups with automatic scheduled pruning when a sequencer loses
    write-access to "exclusive storage". Now another sequencer takes over automatic pruning.
  • Fixed a startup issue where a domain manager / mediator sequencer connection couldn't be changed without starting up cleanly.
  • Fixed an issue where high available sequencer readers were creating higher database load than necessary.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 3, 4
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v22.1.3/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.3.11

30 Mar 17:17
23a3976

Choose a tag to compare

Release of Canton 2.3.11

Canton 2.3.11 has been released on March 30, 2023. 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 release contains minor improvements, namely reducing the database load on highly available
sequencers, as well as an availability bug fix that could prevent a passive participant node to successfully become active.

What’s New

Security and Bugfixes

  • Fixed an issue where the polling logic of the sequencer reader in an HA setting did not honor the configured polling interval.
  • Fixed an issue in HA participants under high load that may cause a passive replica to not serve transactions when becoming active again.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 2.0.0, 3.0.0
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.6.0

16 Mar 07:32
3d64f68

Choose a tag to compare

Release of Canton 2.6.0

Canton 2.6.0 has been released on March 16, 2023. 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 excited to announce Canton 2.6 with major improvements to deal with
malicious participants and operational improvements around rate limiting and
health checks.

Please follow the steps outlined in our
upgrading manual

What’s New

Breaking: Protocol version 2 support removal

Protocol version 2, which was marked as deprecated in Canton 2.3.0 (released on July 2022), is not supported anymore.
If your domain is still running protocol version 2, you first need to upgrade the domain to a more recent
protocol version (3 or 4) using a 2.5 version of Canton and then upgrade the binary to the current version.

Upgrading instructions can be found in the documentation:
upgrading manual

Breaking: Development version support configuration

The following configuration options enable the development/experimental Canton
protocol and Daml LF versions.

NOTE: They are not to be used for production, because we do not provide support
nor data continuity guarantees for the experimental versions!

The flag will-corrupt-your-system-dev-version-support under canton.domains.<domain>.init.domain-parameters
has been removed. Now setting protocol-version to an unstable version (i.e. dev) requires you to explicitly enable
canton.parameters.non-standard-config = yes.

The flags will-corrupt-your-system-dev-version-support and unsafe-enable-daml-lf-dev-version
under canton.participants.<participant>.parameters have been removed.
Now use the new flag canton.participants.<participant>.parameters.dev-version-support to both enable participant connectivity to unstable protocol
version domains and to turn on support for unsafe Daml-LF dev versions. Using this option requires you to explicitly enable
canton.parameters.non-standard-config = yes.

Refer to the documentation.

Ledger Authorization Security Checks

We have implemented all remaining security checks to ensure that a ledger is
well-authorized according to the ledger model's
authorization.

Rate Limitation with Bursts

Background

We have improved the rate limiter algorithm that is used by the participant and the sequencer by introducing a new parameter
named maxBurstFactor. As a result, the steady-state rate limitation is enforced whenever the burst
exceeds maxBurstFactor * maxRate commands above the maxRate. This will reduce the likeliness of undesired backpressure rejects
caused by small and temporary bursts.

Impact and Migration

On the participant node, this factor is part of the normal resource management console commands:
resources.set_resource_limits.

** Breaking ** This causes a small breaking change for console scripts that use
Scala type unpacking of variables, because it now contains a new parameter maxBurstFactor:
val ResourceLimits(dirty, rate[, new parameter maxBurstFactor]) = participant.resources.resource_limits()

On the sequencer node, this factor can be configured using the configuration parameter sequencer.parameters.max-burst-factor = 0.5 (default).

Health Checks

Activeness health check on all nodes

The health server's active check is now supported on all nodes.

Active health check configuration field was renamed from canton.monitoring.health.check.participant to canton.monitoring.health.check.node.
This is a backwards compatible change.

gRPC Health Checking Service (Preview)

A gRPC health checking service is now available in preview to be configured on
each node. This health checking service can be used in Kubernetes deployments
for readiness and liveness probes.

Refer to the documentation gRPC Health Check.

Ledger API streaming related configuration changes

The following backwards-compatible configuration changes apply to a participant
node's ledger API server. The old configuration fields are still accepted, but
they are deprecated.

# Old
canton.participants.<participant>.ledger-api.events-page-size=1000
# New
canton.participants.<participant>.ledger-api.active-contracts-service.max-payloads-per-payloads-page=1000
canton.participants.<participant>.ledger-api.transaction-flat-streams.max-payloads-per-payloads-page=1000
canton.participants.<participant>.ledger-api.transaction-tree-streams.max-payloads-per-payloads-page=1000
# Old
canton.participants.<participant>.ledger-api.active-contracts-service.acs-global-parallelism=10
# New
canton.participants.<participant>.ledger-api.global-max-event-payload-queries=10
# Old
canton.participants.<participant>.ledger-api.events-processing-parallelism=8
# New
canton.participants.<participant>.ledger-api.buffered-events-processing-parallelism=8
canton.participants.<participant>.ledger-api.active-contracts-service.contract-processing-parallelism=8
canton.participants.<participant>.ledger-api.active-contracts-service {
  # Old
  acs-id-page-size=20000
  # New
  max-ids-per-id-page=20000

  # Old
  acs-id-page-buffer-size=1
  # New
  max-pages-per-id-pages-buffer=1

  # Old
  acs-id-fetching-parallelism=2
  # New
  max-parallel-id-create-queries=2

  # Old
  acs-contract-fetching-parallelism=2
  # New
  max-parallel-payload-create-queries=2
}

Below you can see the changed and all the new configuration fields:

canton.participants.<participant>.ledger.api {
  ...
  completions-page-size=1000
  global-max-event-id-queries=20
  global-max-event-payload-queries=10
  active-contracts-service {
    max-ids-per-id-page=20000
    max-pages-per-id-pages-buffer=1
    max-parallel-id-create-queries=2
    max-parallel-payload-create-queries=2
    max-payloads-per-payloads-page=1000
    max-working-memory-in-bytes-for-id-pages=104857600
  }
  transaction-flat-streams {
    max-ids-per-id-page=20000
    max-pages-per-id-pages-buffer=1
    max-parallel-id-consuming-queries=4
    max-parallel-id-create-queries=4
    max-parallel-payload-consuming-queries=2
    max-parallel-payload-create-queries=2
    max-parallel-payload-queries=2
    max-payloads-per-payloads-page=1000
    max-working-memory-in-bytes-for-id-pages=104857600
    transactions-processing-parallelism=8
  }
  transaction-tree-streams {
    max-ids-per-id-page=20000
    max-pages-per-id-pages-buffer=1
    max-parallel-id-consuming-queries=8
    max-parallel-id-create-queries=8
    max-parallel-id-non-consuming-queries=4
    max-parallel-payload-consuming-queries=2
    max-parallel-payload-create-queries=2
    max-parallel-payload-non-consuming-queries=2
    max-parallel-payload-queries=2
    max-payloads-per-payloads-page=1000
    max-working-memory-in-bytes-for-id-pages=104857600
    transactions-processing-parallelism=8
  }
}

Required changes to Besu-based Sequencer deployments

Canton now requires the following versions and features enabled on a Besu deployment:

  • Besu version supported upgraded from 21.10 to 22.1 and changed from IBFT 2.0 to QBFT.
  • In your Besu node configuration, the RPC HTTP API WEB3 now needs to be enabled ("--rpc-http-api=WEB3,...").

Otherwise the Canton version check of Besu will fail with the sequencer node not starting up due to a BESU_VERSION_MISMATCH error.

Minor Improvements

  • We added the ability to run pruning automatically according to a configurable schedule and to track pruning
    progess via the max-event-age metrics. Refer to the ledger pruning
    documentation for an overview and details.
  • The replication.set_passive command is now also supported on a remote participant setup.
  • BREAKING: Improved the input validation at the mediator.
    As a consequence, the mediator may log MEDIATOR_MALICIOUS_MESSAGE in new situations.
    Additionally, the mediator may log MEDIATOR_MALICIOUS_MESSAGE instead of MEDIATOR_INVALID_MESSAGE or vice versa.
    Note that the change can only be observed in rare / unsupported situations, e.g., when the domain topology changes concurrently to a request
    or when the submitting participant sends an invalid request, which is not possible under our current trust assumptions.
    Therefore, no impact is expected to existing deployments.
  • Two new error messages have been added: UNKNOWN_SUBMITTERS and SUBMITTERS_NOT_ACTIVE mimic the already existing UNKNOWN_INFORMEES and
    INFORMEES_NOT_ACTIVE messages, respectively reporting if any submitter is not known at all and if no domain can be found where all
    submitters are hosted and active.
  • Performance improvement by enabling the use of epoll native transport when running on Linux for x86_64, ARM64 and S390_64. In case
    you want to avoid using the native transport, configured it with the -Dio.netty.transport.noNative=true system property setting.
  • Fixed issues with the KMS integration in replicated node setups.
  • Fixed HA fail-over issues for domain manager and mediator.

Bugfix to the Oracle storage backend

Contracts with large number of stakeholders could lead to an Oracle exception (codes ORA-03146 or ORA-01461) while
writing the contract metadata. We have modified the storage operation to no...

Read more

canton v2.5.5

09 Mar 10:03
3d64f68

Choose a tag to compare

Release of Canton 2.5.5

Canton 2.5.5 has been released on March 09, 2023. 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 bringing small fixes.

What’s New

Bugfix to the Oracle storage backend

Contracts with large number of stakeholders could lead to an Oracle exception (codes ORA-03146 or ORA-01461) while
writing the contract metadata. We have modified the storage operation to not trigger the given limitation anymore.
As there is no workaround, we advise users of the Oracle storage backend to upgrade in order to avoid this limitation.

Reduced docker images

The docker images have been trimmed to reduce the number of shipped dependencies.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 2, 3, 4
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.5.4

01 Mar 18:54
3d64f68

Choose a tag to compare

Release of Canton 2.5.4

Canton 2.5.4 has been released on March 01, 2023. 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 bringing security update to the docker image.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 2, 3, 4
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.3.10

08 Mar 17:53
3d64f68

Choose a tag to compare

Release of Canton 2.3.10

Canton 2.3.10 has been released on March 08, 2023. 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

Canton 2.3.10 has been released as part of Daml 2.3.10 with no additional change on Canton.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 2.0.0, 3.0.0
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.3.9

01 Mar 16:50
3d64f68

Choose a tag to compare

Release of Canton 2.3.9

Canton 2.3.9 has been released on March 01, 2023. 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 an issue of Canton deployments using Oracle as the storage driver.
Affected users are advised to upgrade to this version.

What’s New

Bugfix to the Oracle storage backend

Contracts with large number of observers could lead to an Oracle exception (code ORA-03146) while writing the contract metadata.
We have modified the storage operation to not trigger the given limitation anymore. As there is no workaround,
we advise users of the Oracle storage backend to upgrade in order to avoid this limitation.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 2.0.0, 3.0.0
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)
Postgres postgres (PostgreSQL) 14.7 (Debian 14.7-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric 2.2.2

canton v2.5.3

08 Feb 13:03
da5bda7

Choose a tag to compare

Release of Canton 2.5.3

Canton 2.5.3 has been released on February 08, 2023. 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 an issue.

What’s New

Security and Bugfixes

  • Fixed a bug preventing creation of transactions with a large number of sibling nodes.

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

Dependency Version
Canton protocol versions 2, 3, 4
Ethereum contract versions 1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)
Postgres postgres (PostgreSQL) 14.6 (Debian 14.6-1.pgdg110+1)
Oracle 19.15.0
Besu besu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric 2.2.2