From d7d49fa0c872d4de4f8ae783874298fb837f3f7c Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 16:08:47 +0000 Subject: [PATCH 01/20] Update API reference links and add Daml Standard Library Mintlify-Source: dashboard-editor --- docs-main/api-reference.mdx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/docs-main/api-reference.mdx b/docs-main/api-reference.mdx index e068db2c..f0e10326 100644 --- a/docs-main/api-reference.mdx +++ b/docs-main/api-reference.mdx @@ -7,26 +7,34 @@ The API Reference covers every programmatic interface to Canton - review endpoin - + Generated reference for Canton's Ledger API across 5 gRPC packages - review services, request/response schemas, and version history for commands, updates, and more. - - + Review interfaces, type aliases mapping Daml primitives to TS types, and companion objects/functions used to serialize values between JSON and typed Daml data. + + + Generated module reference for the Daml stdlib - covers core modules and more. + + + + An OpenRPC specification for the dApp to interact with a Wallet Provider. + + - - Generated module reference for the Daml stdlib - covers core modules and more. + + Versioned OpenRPC reference - use this to integrate wallets and dApps with the Splice Wallet Gateway. - - Versioned OpenRPC reference - use this to integrate wallets and dApps with the Splice Wallet Gateway. + + Developing with Canton Network's OpenAPI endpoints for: Canton Coin data, name service, token standard, and more. - + \ No newline at end of file From ed3eb5172c37b4d09fac398aea85fab546c20d89 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 18:29:17 +0000 Subject: [PATCH 02/20] Add Wallet Gateway release notes and update navigation Mintlify-Source: dashboard-editor --- docs-main/docs.json | 6 ++++++ docs-main/wallet-gateway.mdx | 15 +++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 docs-main/wallet-gateway.mdx diff --git a/docs-main/docs.json b/docs-main/docs.json index a4aabf03..99b62b79 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -3125,6 +3125,12 @@ "integrations/wallets/canton-vs-web3", "integrations/wallets/for-users" ] + }, + { + "group": "Release Notes", + "pages": [ + "wallet-gateway" + ] } ] }, diff --git a/docs-main/wallet-gateway.mdx b/docs-main/wallet-gateway.mdx new file mode 100644 index 00000000..26a850f9 --- /dev/null +++ b/docs-main/wallet-gateway.mdx @@ -0,0 +1,15 @@ +--- +title: "Release Notes" +--- + +Release notes and version history for Wallet integrations. + +### Wallet Gateway + +#### Wallet + +- Added endpoint `POST /v0/wallet/development-fund-coupons/allocate` to allocate a development fund coupon for a given beneficiary, amount, expiration time, and reason. +- Added endpoint `GET /v0/wallet/development-fund-coupons` to retrieve all active DevelopmentFundCoupon contracts, sorted by expiration date. +- Added endpoint `POST /v0/wallet/development-fund-coupons/{contract_id}/withdraw` to withdraw a development fund coupon when the wallet user party is the development fund manager. +- Minting delegation management added to the wallet UI. +- Enhanced rewards collection automation to support collecting development fund coupons. \ No newline at end of file From d8dfe31838aeac3d900e63c60a6201eac963424d Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 18:32:18 +0000 Subject: [PATCH 03/20] Update Wallet Gateway docs with new endpoints and features Mintlify-Source: dashboard-editor --- docs-main/wallet-gateway.mdx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs-main/wallet-gateway.mdx b/docs-main/wallet-gateway.mdx index 26a850f9..057768da 100644 --- a/docs-main/wallet-gateway.mdx +++ b/docs-main/wallet-gateway.mdx @@ -6,10 +6,22 @@ Release notes and version history for Wallet integrations. ### Wallet Gateway -#### Wallet +#### 0.x.x - Added endpoint `POST /v0/wallet/development-fund-coupons/allocate` to allocate a development fund coupon for a given beneficiary, amount, expiration time, and reason. - Added endpoint `GET /v0/wallet/development-fund-coupons` to retrieve all active DevelopmentFundCoupon contracts, sorted by expiration date. - Added endpoint `POST /v0/wallet/development-fund-coupons/{contract_id}/withdraw` to withdraw a development fund coupon when the wallet user party is the development fund manager. - Minting delegation management added to the wallet UI. -- Enhanced rewards collection automation to support collecting development fund coupons. \ No newline at end of file +- Enhanced rewards collection automation to support collecting development fund coupons. + +### Reference Wallet + +#### 0.x.x + +- loreum ipsum + +### Splice Portfolio + +#### 0.x.x + +- loreum ipsum \ No newline at end of file From 673e7a66fffbfab2a43a00038269ab8488308524 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 18:56:12 +0000 Subject: [PATCH 04/20] Add new release notes pages and update navigation Mintlify-Source: dashboard-editor --- docs-main/d-app-sdk.mdx | 9 +++++++++ docs-main/docs.json | 5 ++++- docs-main/reference-wallet.mdx | 9 +++++++++ docs-main/splice-portfolio.mdx | 9 +++++++++ docs-main/wallet-gateway.mdx | 22 ++++------------------ 5 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 docs-main/d-app-sdk.mdx create mode 100644 docs-main/reference-wallet.mdx create mode 100644 docs-main/splice-portfolio.mdx diff --git a/docs-main/d-app-sdk.mdx b/docs-main/d-app-sdk.mdx new file mode 100644 index 00000000..60ae2cb4 --- /dev/null +++ b/docs-main/d-app-sdk.mdx @@ -0,0 +1,9 @@ +--- +title: "dApp SDK" +--- + +Release notes and version history for the dApp SDK. + +### 0.x.x + +- loreum ipsum \ No newline at end of file diff --git a/docs-main/docs.json b/docs-main/docs.json index 99b62b79..e31166fe 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -3129,7 +3129,10 @@ { "group": "Release Notes", "pages": [ - "wallet-gateway" + "wallet-gateway", + "reference-wallet", + "splice-portfolio", + "d-app-sdk" ] } ] diff --git a/docs-main/reference-wallet.mdx b/docs-main/reference-wallet.mdx new file mode 100644 index 00000000..e0641d8a --- /dev/null +++ b/docs-main/reference-wallet.mdx @@ -0,0 +1,9 @@ +--- +title: "Reference Wallet" +--- + +Release notes and version history for Reference Wallet. + +### 0.x.x + +- loreum ipsum \ No newline at end of file diff --git a/docs-main/splice-portfolio.mdx b/docs-main/splice-portfolio.mdx new file mode 100644 index 00000000..fdc74b18 --- /dev/null +++ b/docs-main/splice-portfolio.mdx @@ -0,0 +1,9 @@ +--- +title: "Splice Portfolio" +--- + +Release notes and version history for Splice Portfolio. + +### 0.x.x + +- loreum ipsum \ No newline at end of file diff --git a/docs-main/wallet-gateway.mdx b/docs-main/wallet-gateway.mdx index 057768da..b9f8bc4d 100644 --- a/docs-main/wallet-gateway.mdx +++ b/docs-main/wallet-gateway.mdx @@ -1,27 +1,13 @@ --- -title: "Release Notes" +title: "Wallet Gateway " --- -Release notes and version history for Wallet integrations. +Release notes and version history for Wallet Gateway. -### Wallet Gateway - -#### 0.x.x +### 0.x.x - Added endpoint `POST /v0/wallet/development-fund-coupons/allocate` to allocate a development fund coupon for a given beneficiary, amount, expiration time, and reason. - Added endpoint `GET /v0/wallet/development-fund-coupons` to retrieve all active DevelopmentFundCoupon contracts, sorted by expiration date. - Added endpoint `POST /v0/wallet/development-fund-coupons/{contract_id}/withdraw` to withdraw a development fund coupon when the wallet user party is the development fund manager. - Minting delegation management added to the wallet UI. -- Enhanced rewards collection automation to support collecting development fund coupons. - -### Reference Wallet - -#### 0.x.x - -- loreum ipsum - -### Splice Portfolio - -#### 0.x.x - -- loreum ipsum \ No newline at end of file +- Enhanced rewards collection automation to support collecting development fund coupons. \ No newline at end of file From bafa87719972b069b72a31123f2728a654e4baae Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Fri, 8 May 2026 16:05:50 -0400 Subject: [PATCH 05/20] release note pages --- docs-main/release-notes.mdx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 docs-main/release-notes.mdx diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx new file mode 100644 index 00000000..d8aac5e3 --- /dev/null +++ b/docs-main/release-notes.mdx @@ -0,0 +1,19 @@ +--- +title: "Release Notes" +--- +Release notes and version history for all things Canton Network. + + + + Wallet integration: Wallet Gateway, Reference Wallet, Splice Portfolio, and dApp SDK. + + + + All things Global Synchronizer. + + + + PQS, Daml Shell, Canton, and Daml repo items (ie: damlc, DAML language) + + + \ No newline at end of file From 43a760a8fe906906b59c933507941142d5a33fd1 Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Fri, 8 May 2026 16:15:26 -0400 Subject: [PATCH 06/20] icon --- docs-main/release-notes.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx index d8aac5e3..001105d4 100644 --- a/docs-main/release-notes.mdx +++ b/docs-main/release-notes.mdx @@ -4,15 +4,15 @@ title: "Release Notes" Release notes and version history for all things Canton Network. - + Wallet integration: Wallet Gateway, Reference Wallet, Splice Portfolio, and dApp SDK. - + All things Global Synchronizer. - + PQS, Daml Shell, Canton, and Daml repo items (ie: damlc, DAML language) From 46b12cd181db52f9a2e06fd1601a9880ff9e39c5 Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Fri, 8 May 2026 16:22:26 -0400 Subject: [PATCH 07/20] canton network card --- docs-main/release-notes.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx index 001105d4..7135ed7f 100644 --- a/docs-main/release-notes.mdx +++ b/docs-main/release-notes.mdx @@ -16,4 +16,8 @@ Release notes and version history for all things Canton Network. PQS, Daml Shell, Canton, and Daml repo items (ie: damlc, DAML language) + + Network related stuff + + \ No newline at end of file From eb204bd4f3424c85338a1ab1a205a7607e695339 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 19:57:32 +0000 Subject: [PATCH 08/20] Add release notes to docs navigation Mintlify-Source: dashboard-editor --- docs-main/docs.json | 12 ++++++++++++ docs-main/release-notes-1.mdx | 5 +++++ docs-main/release-notes.mdx | 20 +------------------- 3 files changed, 18 insertions(+), 19 deletions(-) create mode 100644 docs-main/release-notes-1.mdx diff --git a/docs-main/docs.json b/docs-main/docs.json index 156a5580..3fbba488 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -140,6 +140,12 @@ "shared/support-channels", "shared/support-checklist" ] + }, + { + "group": "Release Notes", + "pages": [ + "release-notes-1" + ] } ] }, @@ -3005,6 +3011,12 @@ "sdks-tools/reference-projects/cn-quickstart", "sdks-tools/reference-projects/splice-reference-apps" ] + }, + { + "group": "Release Notes", + "pages": [ + "release-notes" + ] } ] }, diff --git a/docs-main/release-notes-1.mdx b/docs-main/release-notes-1.mdx new file mode 100644 index 00000000..f30cb73f --- /dev/null +++ b/docs-main/release-notes-1.mdx @@ -0,0 +1,5 @@ +--- +title: "Release Notes" +--- + +Canton Network related release notes \ No newline at end of file diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx index 7135ed7f..f5696342 100644 --- a/docs-main/release-notes.mdx +++ b/docs-main/release-notes.mdx @@ -1,23 +1,5 @@ --- title: "Release Notes" --- -Release notes and version history for all things Canton Network. - - - Wallet integration: Wallet Gateway, Reference Wallet, Splice Portfolio, and dApp SDK. - - - - All things Global Synchronizer. - - - - PQS, Daml Shell, Canton, and Daml repo items (ie: damlc, DAML language) - - - - Network related stuff - - - \ No newline at end of file +T \ No newline at end of file From bfe734e432bf03052b7708a7492cc3edf2a29a48 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 15:14:48 +0000 Subject: [PATCH 09/20] Remove old release notes and update navigation Mintlify-Source: dashboard-editor --- docs-main/docs.json | 18 ++++++------------ docs-main/release-notes-1.mdx | 5 ----- 2 files changed, 6 insertions(+), 17 deletions(-) delete mode 100644 docs-main/release-notes-1.mdx diff --git a/docs-main/docs.json b/docs-main/docs.json index 3fbba488..99c3e7fc 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -140,12 +140,6 @@ "shared/support-channels", "shared/support-checklist" ] - }, - { - "group": "Release Notes", - "pages": [ - "release-notes-1" - ] } ] }, @@ -2477,12 +2471,6 @@ "global-synchronizer/troubleshooting-guide/error-code-reference" ] }, - { - "group": "Release Notes", - "pages": [ - "global-synchronizer/release-notes/release-notes" - ] - }, { "group": "Reference", "pages": [ @@ -2499,6 +2487,12 @@ "global-synchronizer/reference/splice-metrics", "global-synchronizer/reference/error-codes" ] + }, + { + "group": "Release Notes", + "pages": [ + "global-synchronizer/release-notes/release-notes" + ] } ] }, diff --git a/docs-main/release-notes-1.mdx b/docs-main/release-notes-1.mdx deleted file mode 100644 index f30cb73f..00000000 --- a/docs-main/release-notes-1.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Release Notes" ---- - -Canton Network related release notes \ No newline at end of file From 3f3a87691d165ebf438b10a93dbbf6291fdd60e7 Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Wed, 13 May 2026 11:31:18 -0400 Subject: [PATCH 10/20] release note landing page --- docs-main/index.mdx | 2 +- docs-main/release-notes.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-main/index.mdx b/docs-main/index.mdx index ec298e13..f45d73ed 100644 --- a/docs-main/index.mdx +++ b/docs-main/index.mdx @@ -39,7 +39,7 @@ mode: "center" Review what you need to get started on a new project on DevNet. - + Review the release details for the latest updates, enhancements, and bug fixes. diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx index f5696342..734fc7a7 100644 --- a/docs-main/release-notes.mdx +++ b/docs-main/release-notes.mdx @@ -2,4 +2,4 @@ title: "Release Notes" --- -T \ No newline at end of file +hello \ No newline at end of file From d500f01fb742fe03663f3ea6440ec15e91047cce Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Wed, 13 May 2026 11:36:46 -0400 Subject: [PATCH 11/20] landing page cards --- docs-main/release-notes.mdx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx index 734fc7a7..0bce9b98 100644 --- a/docs-main/release-notes.mdx +++ b/docs-main/release-notes.mdx @@ -2,4 +2,12 @@ title: "Release Notes" --- -hello \ No newline at end of file +hello + + +Review what you need to get started on a new project on DevNet. + + + +Review the release details for the latest updates, enhancements, and bug fixes. + From 02b6fbb297a2a6f3a8f10c4c1dabc51ae24c0f6e Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 16:12:15 +0000 Subject: [PATCH 12/20] Add new product docs and update release notes description Mintlify-Source: dashboard-editor --- docs-main/d-app-sdk.mdx | 8 +- docs-main/docs.json | 22 +- .../release-notes/release-notes.mdx | 2556 +---------------- docs-main/reference-wallet.mdx | 8 +- docs-main/splice-portfolio.mdx | 8 +- docs-main/wallet-gateway.mdx | 14 +- docs-main/wallet-sdk.mdx | 3 + 7 files changed, 141 insertions(+), 2478 deletions(-) create mode 100644 docs-main/wallet-sdk.mdx diff --git a/docs-main/d-app-sdk.mdx b/docs-main/d-app-sdk.mdx index 60ae2cb4..e9f433a7 100644 --- a/docs-main/d-app-sdk.mdx +++ b/docs-main/d-app-sdk.mdx @@ -1,9 +1,3 @@ --- title: "dApp SDK" ---- - -Release notes and version history for the dApp SDK. - -### 0.x.x - -- loreum ipsum \ No newline at end of file +--- \ No newline at end of file diff --git a/docs-main/docs.json b/docs-main/docs.json index f362deba..b2b85e8b 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -1902,12 +1902,6 @@ "global-synchronizer/troubleshooting-guide/error-code-reference" ] }, - { - "group": "Release Notes", - "pages": [ - "global-synchronizer/release-notes/release-notes" - ] - }, { "group": "Reference", "pages": [ @@ -1932,6 +1926,12 @@ "global-synchronizer/deployment/community-helm-templating", "global-synchronizer/deployment/community-keycloak-config" ] + }, + { + "group": "Release Notes", + "pages": [ + "global-synchronizer/release-notes/release-notes" + ] } ] }, @@ -1971,6 +1971,16 @@ "integrations/wallets/canton-vs-web3", "integrations/wallets/for-users" ] + }, + { + "group": "Release Notes", + "pages": [ + "wallet-gateway", + "reference-wallet", + "splice-portfolio", + "d-app-sdk", + "wallet-sdk" + ] } ] }, diff --git a/docs-main/global-synchronizer/release-notes/release-notes.mdx b/docs-main/global-synchronizer/release-notes/release-notes.mdx index 29c1f0f6..006433ca 100644 --- a/docs-main/global-synchronizer/release-notes/release-notes.mdx +++ b/docs-main/global-synchronizer/release-notes/release-notes.mdx @@ -1,6 +1,6 @@ --- title: "Release Notes" -description: "Verbatim Splice release notes from upstream tag 0.6.3" +description: "Release notes and version history for Global Synchronizer software" --- import ExternalSpliceMainSpliceRstCodeDocsSrcReleaseNotesYaml192 from "/snippets/external/splice/main/splice-rst-code-docs-src-release-notes-yaml-192.mdx"; @@ -8,37 +8,27 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcReleaseNotesYaml192 from "/snippets {/* COPIED_START source="splice:docs/src/release_notes.rst" hash="b9660f66" */} -This section was copied from existing reviewed documentation. -**Source:** `docs/src/release_notes.rst` -Reviewers: Skip this section. Remove markers after final approval. + This section was copied from existing reviewed documentation. **Source:** `docs/src/release_notes.rst` Reviewers: Skip this section. Remove markers after final approval. ## 0.6.3 - Scan app - > - The `app_activity_record_store` table has been modified to avoid unexpected DB performance issues. Upon upgrade to this version, the existing data in this table which has been ingested since the `0.5.18` release will be deleted in order to support that. This impacts the data being served via the experimental field `app_activity_records` on the `/v0/events` and `/v0/events/{update_id}` endpoints. Specifically the `app_activity_records` field will not contain the data which has been provided for the events which happened between the `0.5.18` and this release. Note that the `app_activity_records` data already provided for events during this period is correct and the network explorers who have ingested this data should keep a copy of it. > - Add `/v1/holdings/summary` endpoint that drops the `accumulated_holding_fees_unlocked`, `accumulated_holding_fees_locked`, `accumulated_holding_fees_total`, and `total_available_coin` response fields and the `as_of_round` request parameter, as those values are not meaningful aggregates. The same endpoint is also exposed on the validator scan-proxy. The `/v0/holdings/summary` endpoint is now deprecated but remains available. - - SV app - > - Bump the minimum DAR versions to the ones from splice 0.5.7 which introduced the development fund manager as downgrades to earlier versions already fail. SV app automation will unvet those on the SV nodes. - > > The concrete versions are: - > - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.15 | - > | amuletNameService | 0.1.16 | - > | dsoGovernance | 0.1.21 | - > | validatorLifecycle | 0.1.6 | - > | wallet | 0.1.15 | - > | walletPayments | 0.1.15 | - > + > | name | version | + > | --- | --- | + > | amulet | 0.1.15 | + > | amuletNameService | 0.1.16 | + > | dsoGovernance | 0.1.21 | + > | validatorLifecycle | 0.1.6 | + > | wallet | 0.1.15 | + > | walletPayments | 0.1.15 | > - Fix an issue where onboarding a new SV could fail when importing the ACS snapshot due to a vetting issue. - - SV deployment - > - Update `participantAddress` in `scan-values.yaml` and `sv-validator-values.yaml` to use the participant address without a migration suffix. Ensure that you override this with the correct helm install name for the participant or reinstall the participant without a migration suffix. > - CometBFT: increased resource requests from 2 CPU and 5Gi to 3 CPUs and 7Gi, and the limit from 8Gi to 10Gi to better fit observed resource usage. @@ -47,7 +37,6 @@ Reviewers: Skip this section. Remove markers after final approval. Note: 0.6.1 and 0.6.0 were skipped on TestNet and MainNet due to regressions uncovered on DevNet. - Scan app - > - Note that the following endpoints that have been deprecated are planned for removal in the next release (0.6.3), or the following one (0.6.4) at the latest: > - `/v0/closed-rounds` > - `/v0/top-validators-by-validator-faucets` @@ -64,27 +53,17 @@ Note: 0.6.1 and 0.6.0 were skipped on TestNet and MainNet due to regressions unc > - `/v0/top-validators-by-purchased-traffic` > - `/v0/activities` > - `/v0/transactions` - - SV / Validator apps - > - Hard Domain Migrations (HDMs) and HDM-based disaster recovery are no longer supported. In particular: - > > - the validator configuration `domain-migration-dump-path` was removed, > - the SV onboarding mode `domain-migration` (`name` / `dump-file-path`) was removed. - > > Logical synchronizer upgrades (LSU) are now the only supported mechanism for protocol upgrades and network-wide disaster recovery. - > > - Updated the documentation to clarify that the `MIGRATION_ID` will not change in the future and that all validators should keep the current value for the foreseeable future. - > > - Updated the Logical Synchronizer Upgrade documentation to include details for Roll Forward LSUs used for disaster recovery. - - Deployment - - > - SV only: Introduced the concept of **serial ID** alongside the existing **migration ID** for synchronizer deployment. The migration ID is now frozen at its current value and configured only once, as the `migration.id` field in helm chart values. The serial ID is incremented by 1 for each logical synchronizer upgrade and replaces the migration ID in synchronizer (sequencer/mediator/CometBFT) release names, DNS entries, DB names, chain IDs and port numbers. Participant naming and the participant DB name continue to use MIGRATION_ID, which is now frozen. All example YAML files and documentation have been updated to use `SERIAL_ID` for addressing and `MIGRATION_ID` for migration-specific configuration. For existing networks, `SERIAL_ID` must initially be set to the current value of `MIGRATION_ID`. Newly initialized networks start with `SERIAL_ID=0`. This also changed the name of the participant helm installation in the documentation, along with the `participantAddress` in `sv-values.yaml`. You can either reinstall the helm chart with the new name or ensure the `participantAddress` reflects the name of your helm chart installation. + > - SV only: Introduced the concept of **serial ID** alongside the existing **migration ID** for synchronizer deployment. The migration ID is now frozen at its current value and configured only once, as the `migration.id` field in helm chart values. The serial ID is incremented by 1 for each logical synchronizer upgrade and replaces the migration ID in synchronizer (sequencer/mediator/CometBFT) release names, DNS entries, DB names, chain IDs and port numbers. Participant naming and the participant DB name continue to use MIGRATION\_ID, which is now frozen. All example YAML files and documentation have been updated to use `SERIAL_ID` for addressing and `MIGRATION_ID` for migration-specific configuration. For existing networks, `SERIAL_ID` must initially be set to the current value of `MIGRATION_ID`. Newly initialized networks start with `SERIAL_ID=0`. This also changed the name of the participant helm installation in the documentation, along with the `participantAddress` in `sv-values.yaml`. You can either reinstall the helm chart with the new name or ensure the `participantAddress` reflects the name of your helm chart installation. > - Fixed a regression introduced in 0.6.1 where the `reloader.stakater.com/auto` annotation was silently dropped from all Deployments rendered by the Splice helm charts, disabling the auto-reload behaviour regardless of the `enableReloader` value. - - Canton - > - Bugfixes and stability improvements. Among other things, fix a regression in 0.6.0/0.6.1 which causes participants to get stuck at random times, requiring a restart to recover. ## 0.6.1 @@ -92,260 +71,170 @@ Note: 0.6.1 and 0.6.0 were skipped on TestNet and MainNet due to regressions unc Note: 0.6.0 was skipped as it introduced a regression where the SV UI governance page can become unusable due to slow SQL query. - SV/Scan UI - > - Fix an issue where the query for listing vote results could degrade to a sequential scan breaking the SV/Scan UI governance page. - - SV UI - > - Fix calendar in the effective date field reverting selected month - - Canton - > - Upgrade to Canton 3.5. Note that unlike the upgrade to 3.4 this is still just applied like any other upgrade through a helm upgrade or upgrade of the compose files. Reference [UNRELEASED.md](https://github.com/digital-asset/canton/blob/release-line-3.5/UNRELEASED.md) for release notes. More polished release notes will be made available later. - - SV App - - > - Package versions *newer* than the version specified in the AmuletRules configuration are now automatically unvetted by the SV app after a successful downgrade vote. - + > - Package versions _newer_ than the version specified in the AmuletRules configuration are now automatically unvetted by the SV app after a successful downgrade vote. - Deployment - > - SV apps now support a `copy-votes-from` setting that automatically mirrors governance votes from another named SV, which can help operators keep votes in sync when they run multiple SV nodes. > - The SV helm chart now supports a new `synchronizers` value that replaces the previous `domain` value. The new structure allows configuring `current`, `successor`, and `legacy` synchronizer nodes, each with `sequencerPublicUrl`, `sequencerAddress`, `mediatorAddress`, optional `sequencerPruningConfig`, `enableBftSequencer`, and inline `cometBFT`. The `synchronizers.skipInitialization` field replaces `domain.skipInitialization`. The previous `domain` value is still accepted for backwards compatibility but cannot be combined with `synchronizers`. We strongly recommend updating your `sv-values.yaml` to use the new `synchronizers` structure, as the `domain` value will be removed in a future release. See `helm-sv-install` for the updated configuration instructions. > - The Scan helm chart now supports a new `synchronizers` value that replaces the previous top-level `sequencerAddress`, `mediatorAddress`, and `bftSequencers` values. The new structure requires `synchronizers.current.sequencer` and `synchronizers.current.mediator`, and optionally supports `successor` and `legacy` entries with the same fields, as well as per-synchronizer `bftSequencerConfig.p2pUrl`. The previous `sequencerAddress` and `mediatorAddress` values are still accepted for backwards compatibility but cannot be combined with `synchronizers`. We strongly recommend updating your `scan-values.yaml` to use the new `synchronizers` structure, as the previous values will be removed in a future release. See `helm-sv-install` for the updated configuration instructions. - - Scan - > - Added a new `GET /v2/updates/hash/{hash}` endpoint that returns the update associated with a given external transaction hash of a prepared transaction. This endpoint is not always BFT safe, see the Scan OpenAPI documentation for details. > - `POST /v0/state/acs` has been labeled as deprecated, and replaced by a newer `POST /v1/state/acs`. The new `/v1` endpoint replaces the event ID in the response from `/v0` by an (optional) update ID. The update ID for each contract in the ACS refers to the update in which the contract has been created. This value is guaranteed to be consistent across all instances of Scan, therefore is suitable for BFT reads. The update ID will be omitted for contracts created in a prior migration ID, or potentially in the future in extreme cases of disaster recovery. - - Validator - > - The HTTP client used by the CN apps (Validator, Scan, SV, Wallet) now honours the standard `http.nonProxyHosts` Java system property to bypass a configured HTTP forward proxy for specific hosts. This matches the JDK's own default `ProxySelector` behaviour, so the same property also applies to other JVM egress components. See `validator-http-proxy-compose` and `validator-http-proxy-helm` for configuration examples. - - LocalNet - > - Added support for configuring the protocol version used in LocalNet. - - Participant - > - Set `commitment-use-db-snapshot-for-participant-lookup = true` by default. If you manually set this, you can remove your overwrite. - - Daml - > - Remove use of rollback nodes to support protocol version 35 - > > > - `AmuletRules`. Replace `InvalidTransfer` exceptions with `failWithStatus`: - > > - > > > - `ITR_InsufficientFunds` → `FailureStatus` with error_id = `splice.lfdecentralizedtrust.org/insufficient-funds` - > > > - `ITR_UnknownSynchronizer` → `FailureStatus` with error_id = `splice.lfdecentralizedtrust.org/unknown-synchronizer` - > > > - `ITR_InsufficientTopupAmount` → `FailureStatus` with error_id = `splice.lfdecentralizedtrust.org/insufficient-topup-amount` - > > > - `ITR_Other ("More than the maximum number of inputs")` → `FailureStatus` with error_id = `splice.lfdecentralizedtrust.org/maximum-inputs-exceeded` - > > > - `ITR_Other ("More than the maximum number of outputs")` → `FailureStatus` with error_id = `splice.lfdecentralizedtrust.org/maximum-outputs-exceeded` - > > + > > > - `ITR_InsufficientFunds` → `FailureStatus` with error\_id = `splice.lfdecentralizedtrust.org/insufficient-funds` + > > > - `ITR_UnknownSynchronizer` → `FailureStatus` with error\_id = `splice.lfdecentralizedtrust.org/unknown-synchronizer` + > > > - `ITR_InsufficientTopupAmount` → `FailureStatus` with error\_id = `splice.lfdecentralizedtrust.org/insufficient-topup-amount` + > > > - `ITR_Other ("More than the maximum number of inputs")` → `FailureStatus` with error\_id = `splice.lfdecentralizedtrust.org/maximum-inputs-exceeded` + > > > - `ITR_Other ("More than the maximum number of outputs")` → `FailureStatus` with error\_id = `splice.lfdecentralizedtrust.org/maximum-outputs-exceeded` > > - `WalletAppInstall_ExecuteBatch`. No longer catches exceptions and returns them as `AmuletOperationOutcome` / `COO_Error`. Instead, the transaction is aborted. - > > > > - `TransferCommand_Send`. No longer catches exceptions and returns them as `TransferCommandResultFailure`. Instead, the transaction is aborted without merging inputs. - > > > > - `DsoRules_CloseVoteRequest` no longer catches exceptions. Previously, it would close the vote request with outcome `VRO_AcceptedButActionFailed`. The transaction will now abort on failure. - > > - The Daml compiler used for the splice DARs has been upgraded to 3.4.11. - > > - The Daml changes require an upgrade to these versions: - > - > > | name | version | - > > |--------------------|---------| - > > | amulet | 0.1.18 | - > > | amuletNameService | 0.1.19 | - > > | dsoGovernance | 0.1.24 | - > > | validatorLifecycle | 0.1.7 | - > > | wallet | 0.1.19 | - > > | walletPayments | 0.1.18 | + > > | name | version | + > > | --- | --- | + > > | amulet | 0.1.18 | + > > | amuletNameService | 0.1.19 | + > > | dsoGovernance | 0.1.24 | + > > | validatorLifecycle | 0.1.7 | + > > | wallet | 0.1.19 | + > > | walletPayments | 0.1.18 | ## 0.5.18 - SV App - > - A new optional configuration map `additionalPackagesToUnvet` to unvet additional supported packages was added in the SV app configuration. This is only aimed as a security measure to add the ability to downgrade to previous versions in case of major issues or to prevent corrupted and unsecured packages from being used. More information about this new configuration can be found in the Unvet insecure package versions guide. - - Deployment - > - We've added support for the [Stakater Reloader](https://github.com/stakater/Reloader) annotation, which performs a rolling restart of pods when their referenced Secrets or ConfigMaps change. The annotation is included by default in all Splice Helm charts. You can disable it by setting `enableReloader` to `false` in your Helm values file. Reloader must be installed separately; if it is not present, the annotation is harmless and will be ignored. See also the new deployment tips in the Validator and SV Helm guides. - - Scan - > - The following tabs and features have been removed from Scan UI. Their corresponding API endpoints are still available, yet deprecated, and will be removed soon. Users are strongly advised to migrate to non-deprecated API endpoints as soon as possible. - > > > - Canton Coin Activity > > - Recent activity list, and all leaderboards > > - Total app & validator rewards > > - The round as-of which the content has been computed (no round-based data is listed any more) > > - The tab has been renamed "Canton Coin Configuration" - > > > > - Governance > > - Completely removed - > > > > - Validators > > - Completely removed - > > - Improve CPU usage of update and event history. - > > - Scan now ingests and serves app activity records for traffic-based rewards, which delivers Increments 2 and 3 from the [CIP-104 incremental roll-out plan](https://github.com/canton-foundation/cips/blob/main/cip-0104/cip-0104.md#incremental-roll-out). - > > The responses from the `/v0/events` and `/v0/events/{update_id}` [endpoints](https://github.com/canton-network/splice/blob/004f19622e4a145840f18d3fda9d71c9a751a282/apps/scan/src/main/openapi/scan.yaml#L1579-L1639) now include the `traffic_summary` ([schema](https://github.com/canton-network/splice/blob/004f19622e4a145840f18d3fda9d71c9a751a282/apps/scan/src/main/openapi/scan.yaml#L4007-L4026)) and `app_activity_records` ([schema](https://github.com/canton-network/splice/blob/004f19622e4a145840f18d3fda9d71c9a751a282/apps/scan/src/main/openapi/scan.yaml#L4027-L4063)) fields. - > -> - >
- > - > Note - > - > +
+ Note +
- > - > These new fields enable the Canton Network community to start validating the traffic-based rewards model and to prepare for the full roll-out of CIP-104 in the future. - > - > **Network explorer operators**: consider ingesting traffic summaries and app activity records in your network explorer apps together with the mediator verdicts and use them to provide both per-transaction and per-round previews of the expected traffic-based app rewards when CIP-104 goes live. - > - > **App developers**: review the app activity records for your app to understand the impact of traffic-based app rewards on your app. Keep in mind that the rewards depend on the exact transaction structure of your app, which might change when you stop creating `FeaturedAppActivityMarker` contracts in your transactions. Traffic-based app rewards also depend on the featured app status of counter-parties in your transactions. Expected rewards can therefore differ between DevNet, TestNet and MainNet because different apps are featured. - > - > The new fields are marked as experimental in the API specification, as the validation might show that changes are required. Most likely that will though not be the case. - > - >
+> These new fields enable the Canton Network community to start validating the traffic-based rewards model and to prepare for the full roll-out of CIP-104 in the future. +> +> **Network explorer operators**: consider ingesting traffic summaries and app activity records in your network explorer apps together with the mediator verdicts and use them to provide both per-transaction and per-round previews of the expected traffic-based app rewards when CIP-104 goes live. +> +> **App developers**: review the app activity records for your app to understand the impact of traffic-based app rewards on your app. Keep in mind that the rewards depend on the exact transaction structure of your app, which might change when you stop creating `FeaturedAppActivityMarker` contracts in your transactions. Traffic-based app rewards also depend on the featured app status of counter-parties in your transactions. Expected rewards can therefore differ between DevNet, TestNet and MainNet because different apps are featured. +> +> The new fields are marked as experimental in the API specification, as the validation might show that changes are required. Most likely that will though not be the case. - Canton - > - A cause of frequent `SEQUENCER_SUBMISSION_REQUEST_REFUSED` errors when using BFT sequencer connections and request amplification has been addressed. Set `canton.sequencers.sequencer.sequencer-client.amplify-on-max-sequencing-time-too-far` to `false` to restore previous behavior. - > > > - The `SequencerService.sendAsync` gRPC service will now return `SEQUENCER_MAX_SEQUENCING_TIME_TOO_FAR` instead of `SEQUENCER_SUBMISSION_REQUEST_REFUSED` for transactions with a `maxSequencingTime` too far in the future from the sequencer view (usually when sequencer is catching up and is behind on processing). This is a breaking API change. - > > - The Ledger JSON API `v2/package-vetting` endpoint has been deprecated in favor of two new endpoints: `v2/package-vetting/list` and `v2/package-vetting/update`. These new endpoints are equivalent in functionality, but more compliant with HTTP specifications and tools. ## 0.5.17 - SVs - - - BFT sequencer connections are recommended again with this upgrade. To enable them, remove the config flags to disable them from the SV and validator configuration used to disable them. - - - SV and Validator app - > - Going forward unusable splice DARs will be automatically unvetted by the super validators. This will be used for DARs that can already not be used, e.g., because a downgrade of AmuletRules to that version is not possible so it does not force more aggressive upgrades for validators or app devs. - > > The minimum supported versions are: - > - > > | name | version | - > > |--------------------|---------| - > > | amulet | 0.1.14 | - > > | amuletNameService | 0.1.14 | - > > | dsoGovernance | 0.1.19 | - > > | validatorLifecycle | 0.1.5 | - > > | wallet | 0.1.14 | - > > | walletPayments | 0.1.14 | - + > > | name | version | + > > | --- | --- | + > > | amulet | 0.1.14 | + > > | amuletNameService | 0.1.14 | + > > | dsoGovernance | 0.1.19 | + > > | validatorLifecycle | 0.1.5 | + > > | wallet | 0.1.14 | + > > | walletPayments | 0.1.14 | - Scan - > - Added a new `/v1/domains/{domain_id}/parties/{party_id}/participant-id` endpoint that returns all participant IDs hosting a given party, supporting parties hosted on multiple participants. The previous `/v0` endpoint only supported single-participant hosting. > - Added an optional `external_transaction_hash` field to the response of `GET /v1/updates/{update-id}`, `GET /v2/updates/{update-id}`, GET `/v1/updates`, and GET `/v2/updates` endpoints. While currently not set, this field will eventually include the transaction hashes signed by external parties. > - **Experimental**: Added an optional `app_activity_records` field to the response of `GET /v0/events/{update-id}` and `POST /v0/events` endpoints. This is currently never set but will eventually include traffic summaries and app activity records are included alongside verdicts in event history items. This is part of the CIP-104 preview and is subject to change. App activity record computation will be enabled step-by-step on Dev/Test/MainNet, once the SVs have successfully concluded their performance testing. - - SV UI - > - Fixed the SV UI to correctly handle parties hosted on multiple participants (e.g., the DSO party). - - LocalNet - > - LocalNet now supports running multiple synchronizers side by side for testing multi-synchronizer scenarios. By default, only the `global` synchronizer is active. To enable the second synchronizer called `app-synchronizer`, start LocalNet with the `multi-sync` Docker Compose profile (`--profile multi-sync`). The `app-provider` and `app-user` participant nodes are cross-connected to both synchronizers. See `multi-sync-localnet` for details. ## 0.5.16 - Daml - **Action recommended from app devs:** - **App devs whose app's Daml code statically depends on** `splice-amulet < 0.1.17` should recompile their Daml code to link against `splice-amulet >= 0.1.17` in order to be ready to consume new field `contractStateSchemaVersion` added to `AmuletRules`. - - This is required because once the new fields are set, downgrades of `AmuletRules` will fail. Note that the field will not be set automatically after this upgrade. It is strongly recommended to avoid direct dependencies on amulet and replace them by dependencies through token standard interfaces. - - No change is required for apps that build against the `token_standard` or `featured_app_activity_markers_api`. - - - - Restrict `AmuletConfig` to not allow fees as part of [CIP 107](https://github.com/canton-foundation/cips/blob/main/cip-0107/cip-0107.md). This has no functional effect as [CIP 78](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0078/cip-0078.md) set the fees to zero already. - - This also disables the choice `AmuletRules_ComputeFees` as it always returned 0. Application providers that statically link against `splice-amulet` will need to remove usages of this choice when recompiling against the new `splice-amulet` version. - - - Support 24h signing delays for token standard CC transfers and allocations, see [CIP 107](https://github.com/canton-foundation/cips/blob/main/cip-0107/cip-0107.md). - - - This change concerns the CC implementation of the token standard APIs, so no change is required for clients of these APIs to make use of the new 24h submission delay. However, Scan returns a slightly different choice context, so make sure that your app passes that along opaquely. - - As part of this change additional constraints are imposed on `AmuletConfig`. All of these constraints are satisfied by the current configs on DevNet, TestNet and MainNet: - - CC usage fees can no longer be set to non-zero values. They were set to zero in CIP 78. - - `extraFeaturedAppRewardAmount` can no longer be set to a different value than `featuredAppActivityMarkerAmount`. Both of those are currently set to \$1. - - The config schedule on `AmuletRules` can no longer contain `futureValues`. The ability to do so through the UI was removed in CIP 51 but in theory it would have still been possible to set this through internal APIs. - - This does change transaction structure, in particular, `AmuletRules_Transfer` is no longer a child node of the token standard operations and some other choices. Token standard compliant history parsing should not require adjustments. However apps and wallets that parse the Splice choices directly may need to be adjusted. - - The check that the lock on a locked amulet expires before the underlying amulet expires has been removed. - - - `TransferCommand` is deprecated and will be removed in a future version. It was originally introduced to support 24h signing delays and is no longer required now that this is also available through the token standard APIs. This also applies to the corresponding validator APIs `/v0/admin/external-party/transfer-preapproval/prepare-send` and `/v0/admin/external-party/transfer-preapproval/submit-send` which should be replaced by the Token Standard APIs. - - - Add missing validation of `sv` party to `DsoRules_ClaimExpiredRewards`. - - - Add missing TransferInstruction_Update choice for AmuletTransferInstruction to support expiry. - - - Add AmuletAllocation_DsoExpire choice to support expiry of expired allocations. - - These Daml changes require an upgrade to the following Daml versions **before** voting to set the transfer fees to zero: - - | name | version | - |--------------------|---------| - | amulet | 0.1.17 | - | amuletNameService | 0.1.18 | - | dsoGovernance | 0.1.23 | - | validatorLifecycle | 0.1.6 | - | wallet | 0.1.18 | - | walletPayments | 0.1.17 | +**App devs whose app's Daml code statically depends on** `splice-amulet < 0.1.17` should recompile their Daml code to link against `splice-amulet >= 0.1.17` in order to be ready to consume new field `contractStateSchemaVersion` added to `AmuletRules`. + +This is required because once the new fields are set, downgrades of `AmuletRules` will fail. Note that the field will not be set automatically after this upgrade. It is strongly recommended to avoid direct dependencies on amulet and replace them by dependencies through token standard interfaces. + +No change is required for apps that build against the `token_standard` or `featured_app_activity_markers_api`. + +- Restrict `AmuletConfig` to not allow fees as part of [CIP 107](https://github.com/canton-foundation/cips/blob/main/cip-0107/cip-0107.md). This has no functional effect as [CIP 78](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0078/cip-0078.md) set the fees to zero already. + This also disables the choice `AmuletRules_ComputeFees` as it always returned 0. Application providers that statically link against `splice-amulet` will need to remove usages of this choice when recompiling against the new `splice-amulet` version. +- Support 24h signing delays for token standard CC transfers and allocations, see [CIP 107](https://github.com/canton-foundation/cips/blob/main/cip-0107/cip-0107.md). + - This change concerns the CC implementation of the token standard APIs, so no change is required for clients of these APIs to make use of the new 24h submission delay. However, Scan returns a slightly different choice context, so make sure that your app passes that along opaquely. + - As part of this change additional constraints are imposed on `AmuletConfig`. All of these constraints are satisfied by the current configs on DevNet, TestNet and MainNet: + - CC usage fees can no longer be set to non-zero values. They were set to zero in CIP 78. + - `extraFeaturedAppRewardAmount` can no longer be set to a different value than `featuredAppActivityMarkerAmount`. Both of those are currently set to \$1. + - The config schedule on `AmuletRules` can no longer contain `futureValues`. The ability to do so through the UI was removed in CIP 51 but in theory it would have still been possible to set this through internal APIs. + - This does change transaction structure, in particular, `AmuletRules_Transfer` is no longer a child node of the token standard operations and some other choices. Token standard compliant history parsing should not require adjustments. However apps and wallets that parse the Splice choices directly may need to be adjusted. + - The check that the lock on a locked amulet expires before the underlying amulet expires has been removed. +- `TransferCommand` is deprecated and will be removed in a future version. It was originally introduced to support 24h signing delays and is no longer required now that this is also available through the token standard APIs. This also applies to the corresponding validator APIs `/v0/admin/external-party/transfer-preapproval/prepare-send` and `/v0/admin/external-party/transfer-preapproval/submit-send` which should be replaced by the Token Standard APIs. +- Add missing validation of `sv` party to `DsoRules_ClaimExpiredRewards`. +- Add missing TransferInstruction\_Update choice for AmuletTransferInstruction to support expiry. +- Add AmuletAllocation\_DsoExpire choice to support expiry of expired allocations. + +These Daml changes require an upgrade to the following Daml versions **before** voting to set the transfer fees to zero: + +| name | version | +| --- | --- | +| amulet | 0.1.17 | +| amuletNameService | 0.1.18 | +| dsoGovernance | 0.1.23 | +| validatorLifecycle | 0.1.6 | +| wallet | 0.1.18 | +| walletPayments | 0.1.17 | - Validator App - The validator APIs `/v0/admin/external-party/transfer-preapproval/prepare-send` and `/v0/admin/external-party/transfer-preapproval/submit-send` are deprecated and will be removed in a future version. Replace any usages of validator API endpoints by calls to the Token Standard APIs. - - - Fix a bug that caused the Validator App to fail during restarts when the Scan Apps defined in `scanClient.seedUrls` were unavailable. This fix ensures the Validator App uses its persisted scan connections from previous runs, removing the dependency on seedUrls scan availability for successful reboots. - +- Fix a bug that caused the Validator App to fail during restarts when the Scan Apps defined in `scanClient.seedUrls` were unavailable. This fix ensures the Validator App uses its persisted scan connections from previous runs, removing the dependency on seedUrls scan availability for successful reboots. - Wallet UI - - Extend the `/development-fund` page to make active coupons visible to beneficiaries. Note: Beneficiaries cannot withdraw coupons. - Update `/development-fund` page warning messages to reflect beneficiary visibility on active and historical coupons. - - Scan - - Improve the performance of ACS snapshot generation, reducing the magnitude of periodic spikes in database activity and avoiding log warnings about advisory locks. - Add a new Grafana dashboard to monitor the progress of ACS snapshot generation. - - Infrastructure - - Update the JDK base image for all Splice and Canton images from 21.0.7 to 21.0.10 (Eclipse Temurin). This includes a fix for [JDK-8347811](https://bugs.openjdk.org/browse/JDK-8347811), which caused incorrect detection of cgroup controllers on cgroupv2 hosts, potentially leading to the JVM ignoring container memory and CPU limits. -- Canton - - - A new field `paid_traffic_cost` exposes the traffic cost paid by the node on completion events and update events - - On completions, the field contains the cost paid by the node for the submission of the transaction. May be 0 for failed transactions that did not incur any traffic cost. - - On updates, the field contains the cost paid by the node for the submission of the transaction, if available on this node and to the querying parties. In particular, the cost is only available on the submitting node and when querying with a filter that includes submitting parties. The cost is available for Daml transactions and re-assignments. Not for topology transactions. - ## 0.5.15 - Validator App - - Remove the `new-sequencer-connection-pool` flag as it didn't do what it was supposed to do. If you did set it, you can safely remove it regardless of whether you disabled the new sequencer connection pools in the participant or not. - - Scan - - **Experimental**: Add an optional `traffic_summary` field to the response of `GET /v0/events/{update-id}` and `POST /v0/events` endpoints. When enabled by SV configuration, traffic summaries are included alongside verdicts in event history items. This is part of the CIP-104 preview and is subject to change. - Traffic summaries will be enabled step-by-step on Dev/Test/MainNet, once the SVs have successfully concluded their performance testing. - - Wallet UI - - Introduce a new `/development-fund` panel providing a complete UI for managing Development Fund allocations (see [CIP-0082](https://github.com/canton-foundation/cips/blob/main/cip-0082/cip-0082.md) and [CIP-0100](https://github.com/canton-foundation/cips/blob/main/cip-0100/cip-0100.md) for context). - The panel includes: - Display of total available Development Fund balance @@ -356,17 +245,10 @@ The validator APIs `/v0/admin/external-party/transfer-preapproval/prepare-send` - Simple Users: read-only access to fund total - Current Development Fund Manager: full allocation and withdrawal capabilities - Former Development Fund Manager: can manage and view allocations created under their tenure, but cannot create new ones - - Docs - - Add a new `development_fund` page documenting the Development Fund. - - Canton - - - Fix the bug in the new topology client cache. It is recommended to remove the temporary additional flags `ADDITIONAL_CONFIG_DISABLE_NEW_TOPOLOGY_CLIENT` set in your participants and mediators configurations. - - - JSON API: Synthetic `value` fields in oneOf wrapper types (e.g., `AssignCommand`, `UnassignCommand`, `Completion`) are now marked as required in the OpenAPI and AsyncAPI specifications, matching the actual API logic where these fields must always be present. ## 0.5.14 @@ -380,13 +262,10 @@ The validator APIs `/v0/admin/external-party/transfer-preapproval/prepare-send` - Canton - Fix issue where sequencer startup could take more than 10 minutes. - APIs: - - *BREAKING* The - + - _BREAKING_ The > - `/v2/updates` HTTP POST and websocket GET endpoints > - `/v2/updates/flats` HTTP POST and websocket GET endpoints - were incorrectly retuning LedgerEffects events (i.e., `CreatedEvent` and `ExercisedEvent`). They are now corrected to return AcsDelta (flat) events (i.e., `CreatedEvent` and `ArchivedEvent`). - - `GetUpdatesRequest.updateFormat` now appears marked as required in the OpenAPI/AsyncAPI specs even though it was previously optional. This is a specification fix to align with the actual behavior of the API, which requires this field. If your client code was previously omitting this field, you will need to update it to include a valid value. ## 0.5.13 @@ -394,76 +273,62 @@ The validator APIs `/v0/admin/external-party/transfer-preapproval/prepare-send` - SV Participant - Participant pruning for super validators is now supported and recommended. Follow the documentation for instructions on how to enable it. - Scan txlog script - - scan_txlog.py script has been deprecated. It will not be maintained moving forward, and will be removed completely in a future release. A user interested in understanding how to parse transactions from history is reffered to the Reading and parsing transaction history involving Token Standard contracts section. + - scan\_txlog.py script has been deprecated. It will not be maintained moving forward, and will be removed completely in a future release. A user interested in understanding how to parse transactions from history is reffered to the Reading and parsing transaction history involving Token Standard contracts section. - Canton - - JSON Ledger API OpenAPI/AsyncAPI Specification Updates - We've corrected the OpenAPI and AsyncAPI specification files to properly reflect field requirements as defined in the Ledger API `.proto` files. Additionally, specification files now include the Canton version in their filenames (e.g., `openapi-3.4.11.yaml`). - + - JSON Ledger API OpenAPI/AsyncAPI Specification Updates We've corrected the OpenAPI and AsyncAPI specification files to properly reflect field requirements as defined in the Ledger API `.proto` files. Additionally, specification files now include the Canton version in their filenames (e.g., `openapi-3.4.11.yaml`). > - Impact and Migration If you regenerate client code from these updated specifications, your code may require changes due to corrected field optionality. You have two options: - > > - **Keep using the old specification** - The JSON API server maintains backward compatibility with previous specification versions. > - **Upgrade to the new specification** - Update your client code to handle the corrected optional/required fields: > - **Java (OpenAPI Generator)**: Code compiles without changes, but static analysis tools may flag nullability differences. > - **TypeScript**: Handle optional fields using `!` or `??` operators as needed. - > > The JSON API server remains compatible with specification files from all 3.4.x versions (e.g., 3.4.9). - - Sequencer Inspection Service - A new service is available on the Admin API of the sequencer. It provides an RPC that allows to query for traffic summaries of sequenced events. Refer to the [traffic documentation](https://docs.digitalasset.com/subnet/3.4/howtos/operate/traffic.html) for more details. - - Minor Improvements - - The `sequencer-client.enable-amplification-improvements` flag now defaults to `true` - New connection pool: - The connections gRPC channels are now correctly using the defined client keep-alive configuration. **If you had disabled the new connection pools because of issues before, please reenable them and report any issues.** - The connections gRPC channels are now configured with a `maxInboundMessageSize` set to `MaxInt` instead of the default 4MB (this will be improved in the future to use the dynamic synchronizer parameter `maxRequestSize`). - Added `keep-alive-without-calls` and `idle-timeout` config values in the keep alive gRPC client configuration. See [https://grpc.io/docs/guides/keepalive/#keepalive-configuration-specification](https://grpc.io/docs/guides/keepalive/#keepalive-configuration-specification) for details. Note that when `keep-alive-without-calls` is enabled, `permit-keep-alive-without-calls` must be enabled on the server side, and `permit-keep-alive-time` adjusted to allow for a potentially higher frequency of keep alives coming from the client. - `keep-alive-without-calls` can have a negative performance impact. Be cautious when turning it on, and in general prefer using `idle-timeout` when possible. - - | Config | DefaultValue | - |--------------------------|--------------| - | keep-alive-without-calls | false | - | idle-timeout | 30 minutes | - +| Config | DefaultValue | +| --- | --- | +| keep-alive-without-calls | false | +| idle-timeout | 30 minutes | The value for `idle-timeout` should be set lower than timeouts in the network stack between client and server. In particular, check the idle timeout configuration of Load Balancers. Defaults for [AWS ALB](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html), [AWS NLB](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/update-idle-timeout.html), [GCP](https://docs.cloud.google.com/load-balancing/docs/https/request-distribution#http-keepalive-timeout). +Example: - Example: - - Participant config: - - ```python - canton.participants.participant.sequencer-client.keep-alive-client.idle-timeout = 5 minutes - # And / Or - canton.participants.participant.sequencer-client.keep-alive-client.keep-alive-without-calls = true - canton.participants.participant.sequencer-client.keep-alive-client.keep-alive-time = 6 minutes - ``` - - Sequencer config: +Participant config: - ```python - # Must be enabled if keep-alive-without-calls is enabled on the client side - canton.sequencers.sequencer.public-api.keep-alive-server.permit-keep-alive-without-calls = true - canton.sequencers.sequencer.public-api.keep-alive-server.permit-keep-alive-time = 5 minutes - ``` +```python +canton.participants.participant.sequencer-client.keep-alive-client.idle-timeout = 5 minutes +# And / Or +canton.participants.participant.sequencer-client.keep-alive-client.keep-alive-without-calls = true +canton.participants.participant.sequencer-client.keep-alive-client.keep-alive-time = 6 minutes +``` - - Lowered the log level of certain warnings to INFO level, if validation of the confirmation request or confirmation response failed due to a race with a topology change. +Sequencer config: - - Bugfixes +```python +# Must be enabled if keep-alive-without-calls is enabled on the client side +canton.sequencers.sequencer.public-api.keep-alive-server.permit-keep-alive-without-calls = true +canton.sequencers.sequencer.public-api.keep-alive-server.permit-keep-alive-time = 5 minutes +``` - - Switched the gRPC service `SequencerService.subscribe` and `SequencerService.downloadTopologyStateForInit` to manual control flow, so that the sequencer doesn't crash with an `OutOfMemoryError` when responding to slow clients. - - When the new connection pool is disabled using `sequencer-client.use-new-connection-pool = false`, the health of the connection pool is no longer reported as a component in `.health.status` (before the fix, the connection pool component would report a "Not initialized" status). - - Fixed a race condition in mediator that could cause verdicts for invalid requests to not be emitted to ongoing inspection service streams. If you have disabled asynchronous processing using `canton.mediators.mediator.mediator.asynchronous-processing = false`, you may remove this override now. +- Lowered the log level of certain warnings to INFO level, if validation of the confirmation request or confirmation response failed due to a race with a topology change. +- Bugfixes + - Switched the gRPC service `SequencerService.subscribe` and `SequencerService.downloadTopologyStateForInit` to manual control flow, so that the sequencer doesn't crash with an `OutOfMemoryError` when responding to slow clients. + - When the new connection pool is disabled using `sequencer-client.use-new-connection-pool = false`, the health of the connection pool is no longer reported as a component in `.health.status` (before the fix, the connection pool component would report a "Not initialized" status). + - Fixed a race condition in mediator that could cause verdicts for invalid requests to not be emitted to ongoing inspection service streams. If you have disabled asynchronous processing using `canton.mediators.mediator.mediator.asynchronous-processing = false`, you may remove this override now. ## 0.5.12 - Wallet backend - - Fix a bug ([\#3970](https://github.com/canton-network/splice/issues/3970)) that caused transaction history for entries created by Splice versions prior to 0.5.11 to fail to decode in the backend and thus not show in the wallet UI. These entries are now shown again in the wallet UI. + - Fix a bug ([#3970](https://github.com/canton-network/splice/issues/3970)) that caused transaction history for entries created by Splice versions prior to 0.5.11 to fail to decode in the backend and thus not show in the wallet UI. These entries are now shown again in the wallet UI. - Validator - Add support for custom fault-tolerance configurations for **scan** and **sequencer** connections. Please see the updated documentation for Helm-based deployments. This introduces the new configuration keys `scanClient` and `synchronizer` as the new recommended way to configure **scan** and **sequencer** connections. Existing configuration options `scanAddress`, `nonSvValidatorTrustSingleScan`, `decentralizedSynchronizerUrl`, `useSequencerConnectionsFromScan` are still supported, but will be deprecated in a future release. We recommend migrating to the new `scanClient` and `synchronizer` configuration options as soon as possible. Docker Compose-based deployments do not currently support the new custom configuration options. - Wallet UI @@ -476,39 +341,30 @@ The value for `idle-timeout` should be set lower than timeouts in the network st ## 0.5.11 -**SV node operators must only deploy this release on networks where all other SV nodes run Splice 0.5.10 or higher!** Otherwise the sequencers will disagree on the traffic cost of confirmation responses and fork the ledger. + **SV node operators must only deploy this release on networks where all other SV nodes run Splice 0.5.10 or higher!** Otherwise the sequencers will disagree on the traffic cost of confirmation responses and fork the ledger. -The reason for this is that sequencer nodes running code prior to Splice 0.5.10 do not parse the new dynamic domain parameter that is used to perform a coordinated update of the traffic cost of confirmation responses across all SV nodes. These sequencers would thus ignore the change in the traffic cost computation. + The reason for this is that sequencer nodes running code prior to Splice 0.5.10 do not parse the new dynamic domain parameter that is used to perform a coordinated update of the traffic cost of confirmation responses across all SV nodes. These sequencers would thus ignore the change in the traffic cost computation. -Validator node operators are not affected by this requirement, as the change only affects sequencer nodes. + Validator node operators are not affected by this requirement, as the change only affects sequencer nodes. - SV app - - Add a new config parameter to control whether the SV app should enable free confirmation responses in the dynamic domain parameters. This new parameter is set to `true` by default, so that no manual config changes by SV operators are required to enable free confirmation responses on networks running this version of Splice. - This change implements Increment 1 "Make confirmation responses free using the heuristic implementation" from [CIP-104 - Traffic-Based App Rewards](https://github.com/canton-foundation/cips/blob/main/cip-0104/cip-0104.md#incremental-roll-out). - - Validator and SV app - > - The `splice-util-batched-markers` dar is now uploaded automatically. - - Daml - - Optimize the number of views in the automation run by the SV app to convert `FeaturedAppActivityMarker` contracts into `AppRewardCoupon` contracts. - - Support weighting of featured app markers. This can be used through the new `BatchedMarkersProxy_CreateMarkersV2` or `FeaturedAppRight_CreateActivityMarkerV2` choice in the new `splice-api-featured-app-v2` package. Note that this is intended for creating markers proportional to the burn of applications not for increasing the weight of markers created from regular app activity e.g. to increase the weight of markers created as part of a transfer. Refer to the tokenomics committee for detailed guidelines on usage. - This requires a Daml upgrade to - - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.16 | - > | amuletNameService | 0.1.17 | - > | dsoGovernance | 0.1.22 | - > | validatorLifecycle | 0.1.6 | - > | wallet | 0.1.17 | - > | walletPayments | 0.1.16 | + > | name | version | + > | --- | --- | + > | amulet | 0.1.16 | + > | amuletNameService | 0.1.17 | + > | dsoGovernance | 0.1.22 | + > | validatorLifecycle | 0.1.6 | + > | wallet | 0.1.17 | + > | walletPayments | 0.1.16 | ## 0.5.10 @@ -531,16 +387,13 @@ Validator node operators are not affected by this requirement, as the change onl - Added a new external endpoint `GET /v0/unclaimed-development-fund-coupons` to retrieve all active unclaimed development fund coupon contracts. - Daml - Implement minting delegation described as part of [CIP-0073 - Weighted Validator Liveness Rewards for SV-Chosen Parties](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0073/cip-0073.md). See the minting delegations section for details. - - New templates have been added in the `splice-wallet` package: - **MintingDelegationProposal**: Represents a proposal from beneficiary to the delegate to create a `MintingDelegation`. - **MintingDelegation**: Represents an active delegation granting the delegate the authority to mint rewards on behalf of the beneficiary. - Enabling this feature on all validators requires the SVs to vote on the following Daml versions: - - | name | version | - |--------|---------| - | wallet | 0.1.16 | + | name | version | + | --- | --- | + | wallet | 0.1.16 | - Wallet - Added a new internal endpoint `POST /v0/wallet/development-fund-coupons/allocate` to allocate a development fund coupon for a given beneficiary, amount, expiration time, and reason. - Added a new internal endpoint `GET /v0/wallet/development-fund-coupons` to retrieve all active DevelopmentFundCoupon contracts, sorted by expiration date, where the wallet user party is either the development fund manager or the beneficiary. @@ -560,2179 +413,4 @@ Note: 0.5.7 introduced a significant performance regression related to the proce - Scan - deprecated `/v0/total-amulet-balance` and `/v0/wallet-balance` endpoints have been removed in favor of using /registry/metadata/v1/instruments/{instrumentId} and /v0/holdings/summary, respectively. - Deployments - - The default logger has been switched to use an asynchronous appender, for all the nodes, for better performance. The behavior can be switched back to synchronous logging by setting the environment variable `LOG_IMMEDIATE_FLUSH=true`. This now includes helm deployments as well, in 0.5.7 the default was changed only for docker-compose deployments. - - - This version breaks backwards compatibility with migration dumps taken on 0.4.x versions. Please make sure that you are deploying with `migrating: false` (helm) / without `-M` (docker-compose). For helm-based validator deployments: - - In some cases, helm might not properly update the state after you removed the `migrating` flag. You can check before the upgrade if it got properly applied through `kubectl describe deployment -n validator validator-app` and look for this env var: - - - - If you see it, the deployment still has `migrating: true` activated. You can clear that flag by, for example, uninstalling and reinstalling the validator helm release (but not participant and postgres). You can either directly reinstall the new version or first do the reinstall on the old version and then upgrade. - -## 0.5.7 - -Daml: - - -> ->
-> -> Important -> -> - -> -> **Action recommended from app devs:** -> -> **App devs whose app's Daml code statically depends on** `splice-amulet < 0.1.15` should recompile their Daml code to link against `splice-amulet >= 0.1.15` in order to be ready to consume the two new fields introduced in `AmuletConfig` (`optDevelopmentFundManager`) and `IssuanceConfig` (`optDevelopmentFundPercentage`) once either of them is set. -> -> This is required because once the new fields are set, downgrades of `AmuletRules` will fail. At the moment, this recompilation is not strictly required, as setting these fields is not planned immediately. -> -> No change is required for apps that build against the `token_standard` or `featured_app_activity_markers_api`. -> ->
-> -> - Sequencer connections -> - Fixed an issue in the sequencer connection logic in splice 0.5.6 that resulted in participants randomly crashing and restarting. -> - Daml -> - Implement Daml changes for [CIP-0082 - Establish a 5% Development Fund (Foundation-Governed)](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0082/cip-0082.md): -> -> > - New templates: -> > - **UnclaimedDevelopmentFundCoupon**: Represents unallocated Development Fund entitlements created per issuance round. Coupons are owned by the DSO, have no expiry, and serve as accounting instruments. ACS size is managed through merging rather than expiration. -> > - **DevelopmentFundCoupon**: Represents an allocated portion of the Development Fund for a specific beneficiary. Coupons can be withdrawn by the Development Fund Manager or expired by the DSO, in both cases restoring the amount to an unclaimed coupon. -> > - Configuration extensions: -> > - `IssuanceConfig` is extended with an optional `optDevelopmentFundPercentage`, defining the fraction of each mint allocated to the Development Fund (validated to be within `[0.0, 1.0]`). -> > - `AmuletConfig` is extended with an optional `optDevelopmentFundManager`, designating the party authorized to allocate Development Fund entitlements. -> > - AmuletRules updates: -> > - Modify `AmuletRules_MiningRound_StartIssuing`: Issuance logic now deducts the Development Fund share before distributing rewards. When a nonzero allocation is configured, a new `UnclaimedDevelopmentFundCoupon` is created per round. If `optDevelopmentFundPercentage` is `None`, a default value of **0.05** is applied. The accrual of `UnclaimedDevelopmentFundCoupon` contracts thus starts as soon as the new Daml models are voted in. -> > - A new choice `AmuletRules_MergeUnclaimedDevelopmentFundCoupons`: Adds a batch merge operation to combine multiple `UnclaimedDevelopmentFundCoupon` contracts into a single one for ACS size control. -> > - A new choice `AmuletRules_AllocateDevelopmentFundCoupon`: Allows the Development Fund Manager to allocate unclaimed entitlements to beneficiaries, creating `DevelopmentFundCoupon` contracts and returning any remaining unclaimed amount. -> > - Modify `AmuletRules_Transfer`: Transfers now accept `DevelopmentFundCoupon` as a valid input when the sender matches the beneficiary and report the total Development Fund amount consumed. -> > - DsoRules updates: -> > - A a new choice `DsoRules_MergeUnclaimedDevelopmentFundCoupons`: Enables the DSO to trigger unclaimed coupon merges via governance. -> > - Add a new `DsoRules_ExpireDevelopmentFundCoupon`: Allows the DSO to expire an allocated `DevelopmentFundCoupon`, restoring its amount to an `UnclaimedDevelopmentFundCoupon`. -> > -> > Note that the UI changes in the Wallet app required to allocate funds are not yet implemented and will be delivered in a later release. Please refer to this issue: [Tracking - CIP-0082 - 5% Development Fund](https://github.com/canton-network/splice/issues/3218). -> > -> > These Daml changes require an upgrade to the following Daml versions **before** voting to set the transfer fees to zero: -> > -> > | name | version | -> > |--------------------|---------| -> > | amulet | 0.1.15 | -> > | amuletNameService | 0.1.16 | -> > | dsoGovernance | 0.1.21 | -> > | splitwell | 0.1.15 | -> > | validatorLifecycle | 0.1.6 | -> > | wallet | 0.1.15 | -> > | walletPayments | 0.1.15 | -> -> - SV app -> -> \- Add a new trigger, `MergeUnclaimedDevelopmentFundCouponsTrigger`` that automatically monitors ``UnclaimedDevelopmentFundCoupon`\` and, -> once their number reaches at least twice the configured threshold, merges the smallest coupons into a single one. This approach keeps contract-ids of larger coupons stable to minimize contention with externally prepared transactions which reference these ids. -> -> \- Add a new config field to `SvOnboardingConfig` named `unclaimedDevelopmentFundCouponsThreshold` defining the -> threshold above which `UnclaimedDevelopmentFundCoupon` s are merged. The default value is set to 10. -> -> - Deployments -> -> \- The default logger has been switched to use an asynchronous appender, for all the nodes, for better performance. -> The behavior can be switched back to synchronous logging by setting the environment variable `LOG_IMMEDIATE_FLUSH=true`. -> -> - Validator -> - Expose `/v0/holdings/summary` endpoint from scan proxy. - -## 0.5.6 - -- Sequencer - - Includes a number of performance improvements that should improve the stability of the sequencer under higher load. - -## 0.5.5 - -- API security - - Tightened authorization checks for all non-public API endpoints. - - All non-public endpoints now properly respect the current user rights defined in the participant user management service. Revoking user rights on the participant will revoke access to the corresponding API endpoints. - - In general, endpoints that required authentication before will now check that the authenticated user is not deactivated on the participant and has `actAs` rights for the relevant party (wallet party for the wallet app API, SV operator party for the SV app API, etc). - - - Administrative SV app endpoints now require participant admin rights. - - The following SV app endpoints now require the user to have participant admin rights in the participant user management service. - - > - `/v0/admin/domain/pause` - > - `/v0/admin/domain/unpause` - > - `/v0/admin/domain/migration-dump` - > - `/v0/admin/domain/identities-dump` - > - `/v0/admin/domain/data-snapshot` - - This allows for finer grained access control where users with `actAs` rights for the SV operator party but without participant admin rights may use the SV or wallet UIs, but may not perform administrative actions like hard synchronizer migrations. - - Note that only the service users of the SV and validator apps should automatically have participant admin rights. If you are using other users to access the above endpoints, check their rights. - - - Some endpoints will have changed authorization rules in an upcoming release. - - > - SV app `/v0/dso` is currently public, but will require authorization as SV operator, similar to most other SV app endpoints. Use the public `/v0/dso` endpoint in the scan app if you need to fetch DSO info. -- Validator - - Added support for picking a custom name for new parties created when onboarding users via the `/v0/admin/users` API. See docs. - - Added an optional `excludeDebugFields`` boolean to the request body of allocation and transfer endpoints for the Token Standard component (``splice-api-token-allocation-v1`` and ``splice-api-token-transfer-instruction-v1`\`). Clients can now set this to true to omit debug information from the response in order to save on bandwidth. - -## 0.5.4 - -- Participant - - Fix a bug introduced in 0.5.0/0.5.1 that could cause participant pruning to prune active data. The bug only manifests in a rare edge case involving a manual ACS import on a participant that was already running for some time. - - Fix a performance regression in participants that causes the processing of events to pause for multiple minutes at random times, due to a bad database query plan on the critical part of the indexer pipeline. -- Scan - - Removed the non-existing `command_id` field from the OpenAPI spec of all scan endpoints that return transactions. The field was included in the "required" section without being a property of the returned transaction object. This is only a bugfix in the OpenAPI spec and has no impact on the actual API behavior. - -## 0.5.3 - -Note: 0.5.2 mistakingly introduced default pruning for Canton participants and should be skipped in favor of 0.5.3. Participants **do not** prune any data by default. Pruning can be enabled explicitly by any validator operator. For more information please check the docs. - -- Sequencer connections - - Improve retries for sending sequencer submissions when a sequencer rejects the request with an overloaded error code by retrying immediately on another node. - - The network timeout for the connection was lowered to 15 seconds to detect failures faster. -- Validator - - Fix bug that caused validators to fail on restoring participant users without rights during a synchronizer migration. -- Scan - - The round-based aggregates for balance values (changes to holding fees and initial amounts since round zero) have diverged between scans because of the way amulet expiration is counted in rounds. The balance values recorded in the round aggregates are effectively not depended upon anymore by scan APIs, and are now set to zero to avoid consensus problems when an SV reads aggregates from the rest of the network when first joining. - - Please note that `/v0/total-amulet-balance` and `/v0/wallet-balance` endpoints are marked for removal, and will be removed in an upcoming release. See the Scan OpenAPI documentation for details: /v0/total-amulet-balance and /v0/wallet-balance. -- Daml - - Fixed a bug in `WalletUserProxy_TransferInstruction_Withdraw`, where the controller was required to be the `receiver` instead of the `sender` of the transfer instruction. Upgrade to `splice-util-featured-app-proxies` version `1.2.1` or newer to get the fix. -- SV app - - The SV app will no longer store the update history and such, will not be able to answer historical queries. All updates involving the DSO party will still be stored and returned by Scan. - - Deployment - - The helm values under `scan`, that is `publicUrl` and `internalUrl` are now mandatory. All SVs already deploy scan on DevNet, TestNet and MainNet so this should have no impact. -- Docs - - Improvements to validator docs on Synchronizer Upgrades with Downtime. - -## 0.5.1 - -- Canton Participant - - Fix an issue where after a restart the participant could fail to come up as a query exceeded the 65353 query parameter limit. This should only an issue for SVs or participants with very high traffic. - -## 0.5.0 - - -Upgrade to Canton 3.4: This upgrade requires a Synchronizer Migration with Downtime and cannot be applied through a regular upgrade. For details refer to the approved [CIP](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0089/cip-0089.md) as well as the respective documentation pages for validators and SVs. - - -- Deployment - - > - **Breaking**: Docker-compose based deployments of LocalNet, validator, and SV expose only to 127.0.0.1 by default. If you want to expose externally, use `-E` in validator and superValidator `start.sh`. For LocalNet, set `export HOST_BIND_IP=0.0.0.0` manually. - -- Validator - - > - `/v0/admin/users/offboard`: Offboarding a user now also deletes the ledger API user in the participant node. - > - If you need to use an HTTP proxy in your environment, you can now use `https.proxyHost` and `https.proxyPort` Java system properties. Please see HTTP Proxy configuration for Kubernetes-Based deployment and HTTP Proxy configuration for Docker Compose-Based deployment. - -- Scan - - - Added a `record_time_match` property to `/v0/state/acs`, `/v0/holdings/state` and `/v0/holdings/summary` API requests. Finds a snapshot that exactly matches the specified `record_time` if set to `exact` (default), or finds the first snapshot at or before the specified `record_time` if set to `at-or-before`\`. - -- Docs - - - Document additional approach for resuming a validator disaster recovery process that has failed at the step of importing the `ACS`. - - Added a section on configuring traffic topups for Docker-compose deployments - - Add a section on `wallet_how_to_earn_featured_app_rewards` - -- Mediator - - - Mediators now prune data to only retain the last 30 days matching the 30 day pruning interval of sequencers. - -## 0.4.25 - -Note: 0.4.24 was published incorrectly and should be skipped in favor of 0.4.25. - -- Canton Participant - - Fix an issue where after a restart the participant could fail to come up as a query exceeded the 65353 query parameter limit. This should only an issue for SVs or participants with very high traffic. - -## 0.4.23 - -- Daml - - Added the `splice-util-token-standard-wallet.dar` package that provides support for implementing auto-merging of holdings and airdrop campaigns, as explained in `holding_utxo_management`. The package is optional and not uploaded by default to a validator node. - - Extended the `splice-util-featured-app-proxies.dar` package to support executing batch/bulk transfers of Canton Network token standard tokens, both for featured and unfeatured apps. -- Performance improvements - - Scan - - > - Cache open rounds with a default TTL of 30s. This should reduce load when rounds change and lots of clients try to read the open rounds. [View PR 2860.](https://github.com/canton-network/splice/pull/2860) - > - Reduce database load when the connection to the mediator verdict ingestion is restarted. [View PR 2861.](https://github.com/canton-network/splice/pull/2861) -- Deployment - - Increased the resource allocation for most apps, double check any changes if you override the default resources. [View PR 2972.](https://github.com/canton-network/splice/pull/2972) - -## 0.4.22 - -- SV - - Improve throughput of `FeaturedAppActivityMarkerTrigger`, which converts `FeaturedAppActivityMarker` contracts to `AppRewardCoupon` contracts as described in [CIP-0047 Featured App Activity Markers](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0047/cip-0047.md). The new implementation uses larger batches (100 markers by default, instead of 5) and parallelizes their execution (by default up to 4x). The work is split between different SVs in a way that completely avoids contention when there are not too many (by default 10k) markers, and that minimizes contention using random sampling of batches when the automation is in catchup mode because there are too many markers. Catchup mode only triggers when one or more of the SVs failed to convert the markers assigned to them for too long. - -## 0.4.21 - -- Deployment - - Validator deployments on k8s now support no-auth mode. Please note that this is not recommended for production deployments and relies purely on network-level access control for securing the validator, i.e. anyone with access to your node can act on your behalf. - - The `chown` init containers in the validator and SV helm charts have been replaced by setting the `fsGroup` in the security context of the pods. This overcomes certain security policies that disallow init containers from having `chown` capabilities, and in most environments should achieve the same effect. In certain environments, the `fsGroup` directive might be ignored. In that case, you can add an init container using the `extraInitContainers` helm value to achieve the same effect as before, as documented in this section. -- Reward collection - - Changed the behavior of automation around rewards and coupons to run for the first time in the interval of `round open time` -\> `round open time + tick duration`. This might increase the observed duration between rewards and coupons being issued and until they are collected. Once the first tick elapses, retries will happen more aggressively. -- Scan - - Add the `v0/events` API. For private transactions, this API returns events that contain only mediator verdicts. For transactions visible to the DSO (like Amulet transfers), the API combines mediator verdicts and associated updates by `update_id`. Events can be retrieved by `update_id` by using `/v0/events/{update_id}`. Please see the new section about Events in the Scan Bulk Data API for more details. -- SV - - Published conversion rates are now clamped to the configured range, and the clamped value is published instead of only logging a warning and not publishing an updated value for out-of-range values. - - UI usability improvements. -- Monitoring - - The SV App now exposes metrics for SV-voted coin prices and the coin price in latest open mining round. - -## 0.4.20 - -- Deployment - - Fix a bug where the setting the affinity for the `splice-cometbft` and `splice-global-domain` helm charts would remove the anti affinity for the `cometbft` and the `sequencer` deployment. This ensures that if multiple SVs are run on the same nodes, not more than one `cometbft` pod can be deployed on the same node and that no more than one `sequencer` pod can be deployed to the same node (a `cometbft` pod can still share a node with a `sequencer` pod). This can be disabled by setting the `enableAntiAffinity` helm value to `false` (default `true`). - - Replace `-Dscala.concurrent.context.minThreads=8` with `-Dscala.concurrent.context.numThreads=8` and set `-XX:ActiveProcessorCount=8` in the `defaultJvmOptions` for all the helm charts that deploy scala apps. This should ensure that the internal execution contexts spawn 8 threads to handle processing and that the JVM is configured for 8 CPUs as well. The previous behavior would spawn up to number of available processors, which can be up to the number of CPUs on the actual node if no CPU limit is set. This should avoid overloading the nodes during heavy processing. -- SV - - UI - - Add the ability to specify a validator party hint when generating onboarding secrets. - - The UI now provides a formatted message for easily sharing onboarding details with validator operators. - -## 0.4.19 - -> - Sequencer -> -> - Fix a regression introduced in 0.4.18 that made topology transactions significantly more expensive to process. -> -> - Docker images -> -> - All app & UI images now use a non-root user. -> -> - Validator -> -> > - Add a trigger to export these party metrics: -> > -> > > - `validator_synchronizer_topology_num_parties`: Counts the number of parties allocated on the Global Synchronizer -> > > - `validator_synchronizer_topology_num_parties_per_participant`: Uses the label `participant_id` and counts the number of parties hosted on the Global Synchronizer per participant. Note that multi-hosted parties are counted for each participant they are hosted on. -> > -> > The trigger does not run by default. See `enable_extra_metric_triggers` for instructions on how to enable it. -> -> - SV -> -> - Deployment -> - Remove CPU limits from the helm charts for `scan`, `mediator` and `sequencer` apps. This should avoid issues with cpu scheduling that might lead to performance degradations. -> - UI -> - When updating the `AmuletRules` config, the UI will omit any transfer fee steps with value zero from the `AmuletRules` config stored on-ledger. Thereby making the `AmuletRules` contract smaller and saving traffic for transactions using it. This is motivated by [CIP-0078 CC Fee Removal](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0078/cip-0078.md) . -> -> - Canton and SDK: -> -> > - Introduction of 2 new alpha primitives in `DA.Crypto.Text` Module in SDK version `3.3.0-snapshot.20250930.0`. Note: To make use of the functionality added here, you must compile against SDK version `3.3.0-snapshot.20250930.0` and newer and you must first upgrade Canton to the version in Splice `0.4.19` before you can upload those dars to your validator. -> > - sha256 : BytesHex -\> BytesHex: Computes the SHA-256 hash of the given hexadecimal bytes. -> > - secp256k1WithEcdsaOnly : SignatureHex -\> BytesHex -\> PublicKeyHex -\> Bool: Verifies an ECDSA signature on the secp256k1 curve, checking if the signature matches the message and public key. - -## 0.4.18 - -> - Daml -> - release `splice-util-featured-app-proxies-1.1.0` with support for a `WalletUserProxy`, which simplifies the creation of featured app activity markers for wallet app providers when their users engage in token standard workflows. -> -> - Implement Daml changes for [CIP-0079 - Demonstrate Third-Party Price Feed Integration for CC Listing](https://github.com/global-synchronizer-foundation/cips/pull/101/files): -> -> > These Daml changes require an upgrade to the following Daml versions: -> > -> > | name | version | -> > |--------------------|---------| -> > | amulet | 0.1.14 | -> > | amuletNameService | 0.1.15 | -> > | dsoGovernance | 0.1.20 | -> > | validatorLifecycle | 0.1.5 | -> > | wallet | 0.1.14 | -> > | walletPayments | 0.1.14 | -> - Scan -> - Performance bugfix for the `/v0/wallet-balance` endpoint, especially when requesting a balance for a party that does not exist, which previously would timeout. -> - UIs -> - Implement changes from CIP-78 CC Fee Removal. - -## 0.4.17 - - -**Action required from app devs:** - -1. **App devs whose app's Daml code statically depends on** `splice-amulet < 0.1.14` must recompile their Daml code to link against `splice-amulet >= 0.1.14`. - - The reason being that earlier versions of the `AmuletRules` template do not support setting the transfer fees to zero. Attempting to downgrade to them will raise a `PRECONDITION_FAILED` error stating that the `ensure` clause evaluated to `false`. - - No change is required for apps that build against the `token_standard` or `featured_app_activity_markers_api`. - -2. **App devs whose app predicts holding fees on transfers** must adjust their code to no longer expect any holding fees once this Daml change gets voted in. - - The simplest option is to make your code independent of whether the change was voted in by removing the prediction of holding fees. You can instead extract the actual holding fees charged from the transfer transaction itself; i.e., using the "holdingFees" field of the `TransferSummary` in the "summary" field of the `TransferResult`. - - -- Daml - - Implement Daml changes for [CIP-0078 - CC Fee Removal](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0078/cip-0078.md): - - > - Change all Amulet transfers to not charge holding fees on inputs. - > - Fix a bug in the `ensure` clause of `AmuletRules` that prevented setting the Amulet transfer fees to zero. - > - Fix a bug in the featured app rewards issuance for `AmuletRules_Transfer` that prevented featured app rewards to be issued when the Amulet transfer fees are set zero. - > - > These Daml changes require an upgrade to the following Daml versions **before** voting to set the transfer fees to zero: - > - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.14 | - > | amuletNameService | 0.1.14 | - > | dsoGovernance | 0.1.19 | - > | validatorLifecycle | 0.1.5 | - > | wallet | 0.1.14 | - > | walletPayments | 0.1.14 | -- Canton - - Add `CanExecuteAs` and `CanExecuteAsAnyParty` user rights that can be used for the `InteractiveSubmissionService/ExecuteSubmission` endpoint. `CanActAs` permissions imply `CanExecuteAs` so this is backwards compatible. -- Validator - - Expose `/dso` endpoint from scan proxy -- Wallet - - Do not deduct holding fees from available balance if `splice-amulet >= 0.1.14` is configured in the `AmuletConfig` of the network. -- Deployment - - Participant - - > - Remove CPU limits in the `splice-participant` helm chart, to avoid throttling because of the way K8s handles CPU limits - - - Validator - - - Allow disabling the deployment of `ans-web-ui` and `wallet-web-ui` in the `splice-validator` helm chart by setting `.ansWebUi.enabled` and `validatorWebUi.enabled` to `false`. Thanks to Marcin Kocur for contributing this change in [https://github.com/canton-network/splice/pull/2171](https://github.com/canton-network/splice/pull/2171) -- LocalNet - - Add the environment variable `LATEST_PACKAGES_ONLY` (default: true). This modifies the previous default behavior — if set to true, only the latest version of each package is uploaded instead of all versions. This reduces resource usage but might cause issues if you try to use localnet to test an app that is compiled against an older version. In that case, set the environment variable to false to restore the prior behavior. -- Community docs - - Add Keycloak Configuration Guide for Validators. Thanks to mikeProDev for contributing this change in [https://github.com/canton-network/splice/pull/2247](https://github.com/canton-network/splice/pull/2247) - -## 0.4.16 - -- Daml - - Add the `splice-util-featured-app-proxies` package to simplify the creation of featured app activity markers for token standard actions. This is a utility package that is not uploaded by default to a validator node. An example use-case for this package is an exchange that wants to [earn app rewards on deposits and withdrawals](https://docs.digitalasset.com/integrate/devnet/exchange-integration/extensions.html) of CN token standard tokens. -- Docs - - SV - - Document process for ignoring party IDs for reward expiry automation that is currently recommended after each Daml upgrade, to reduce the impact of validators that are unable to complete the Daml upgrade due to being on an outdated version of Splice. - - Make the filter for ignoring party ids for reward expiry automation also ignore beneficiaries for SV reward coupons so that it is not required to ignore the SV if only one beneficiary has problems. - -## 0.4.15 - -- Canton - - > - SV - > - Increase default events buffer sizes to a maximum of 200MiB for the sequencer. This should improve performance for the sequencer when serving events to nodes have subscriptions that are slightly lagging behind. This will slightly increase memory usage for the sequencer. - > - > - Ledger API - > - > > - Add `maxRecordTime` to `PrepareSubmissionRequest` to limit the record time until which a prepared transaction can be used. - > > - Add an alpha version of `com.daml.ledger.api.v2.admin.PartyManagementService/GenerateExternalPartyTopology` and `com.daml.ledger.api.v2.admin.PartyManagementService/AllocateExternalParty`. These endpoints can be used instead of the validator endpoints `/v0/admin/external-party/topology/generate` and `/v0/admin/external-party/topology/submit` and will eventually supersede them. - -- Docs - - - Various improvements to the docs on recovering a validator from an identities backup, including adding a section on obtaining an identities backup from a database backup. - - Add documentation about Wasted traffic. - -- Deployment - - - Cometbft - - > - Increase resource requests from 1 CPU and 1Gi to 2 CPUs and 2Gi, to better fit observed resource usage. - > - Remove CPU limits to avoid throttling because of the way K8s handles CPU limits - -## 0.4.14 - -- SV app - - > - Add the option to ignore certain parties when running expiry on reward contracts. This can added to the app configuration. Example: `canton.sv-apps.sv.automation.ignored-expired-rewards-party-ids = [ "test-party::1220b3eeb21b02e14945e419c5d9e986ce8102171c50e1444010ab054e11eba262c9" ]` - -## 0.4.13 - -- Deployment - - SV - - Increase the CPU limits assigned to the sequencer from 4 CPUs to 8 CPUs. This should avoid any throttling during periods of high load and during catch-up after downtime. - - Cometbft - - State sync is disabled by default. State sync introduces a dependency on the sponsoring node for fetching the state snapshot on startup and therefore a single point of failure. It should only be enabled when joining a new node to a chain that has already been running for a while. In all other cases, including for a new node after it has completed initialization and after network resets, state sync should be disabled. - - Observability - - Global Synchronizer Utilization dashboard now includes an average over an hour of the transaction rate. - - Canton/Sequencer Messages dashboard now includes hourly totals, and a pie chart of the distribution of message types over the last 24 hours. -- Validator Compose Deployment - - Expose Canton ledger API by default. Reference the docs for details. -- Daml - - Fix a bug where activity record expiration had a reference to the `AmuletRules` contract which resulted in transactions failing when trying to expire an activity record for a party that has not upgraded to the latest version of the Daml models. This caused an issue on DevNet where transactions submitted by the SV app failed repeatedly which resulted in the circuit breaker getting triggered and blocking all submissions. - - > These Daml changes requires an upgrade to the following Daml versions: - > - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.13 | - > | amuletNameService | 0.1.13 | - > | dsoGovernance | 0.1.18 | - > | validatorLifecycle | 0.1.5 | - > | wallet | 0.1.13 | - > | walletPayments | 0.1.13 | - -## 0.4.12 - -- Docs - - Clarifications around the validator disaster recovery process. - - Add how-to docs for Token Standard usage. -- Cometbft - - Doubled the default mempool size and deduplication cache size as they get exceeded on prod networks occasionally. -- Splice Development - - Vagrant (new) - - Add Vagrantfile as a convenient way to spin up a local development environment for Splice. See [README.vagrant.md](https://github.com/canton-network/splice/blob/0.4.12/README.vagrant.md) and [Vagrantfile](https://github.com/canton-network/splice/blob/0.4.12/Vagrantfile) for details. - - A subset of the tests now run on PRs from forks without approval from a maintainer (see [TESTING.md](https://github.com/canton-network/splice/blob/0.4.12/TESTING.md) for details) -- Performance improvements - - Improve sequencer performance when processing events from CometBFT, this should allow the sequencer to catch-up after downtime much faster. - -## 0.4.11 - -- SV and Validator apps - - Add a randomized delay to broadcasting of package vetting changes used on Daml upgrades. This ensures that there is no load spike when all validators try to do so at the same time. This has no impact on behavior as Daml upgrades are announced ahead of time and the broadcasting still happens before the switchover. - - The CometBFT PVC is now annotated with `helm.sh/resource-policy: keep`, so that in the event of a (potentially accidental) `helm uninstall` the CometBFT data is not deleted and the node can more easily be recovered. -- Docs - - Mark the workflows in the `splice-wallet-payments` package as **deprecated**, and recommend using the Canton Network Token Standard APIs instead. - - Mark the Splice Wallet transfer offers as **deprecated**, and recommend using the Canton Network Token Standard APIs instead. - -## 0.4.10 - -- SV Application - - Fully remove the automation and logic around DSO delegate elections. - - UI enhancements. -- Daml - - Deprecate Daml choices related to DSO delegate elections. - - - Implements [CIP-0068 - Bootstrap network from non-zero round](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0068/cip-0068.md) Now the first SV can specify a non-zero initial round that can be used on network initialization or resets. - - > These Daml changes requires an upgrade to the following Daml versions: - > - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.13 | - > | amuletNameService | 0.1.13 | - > | dsoGovernance | 0.1.17 | - > | validatorLifecycle | 0.1.5 | - > | wallet | 0.1.13 | - > | walletPayments | 0.1.13 | -- Helm - - The `splice-istio-gateway` Helm chart has been deprecated, and will be removed in a future release. It has been replaced with explicit instructions in the validator docs and SV docs on how to set up Istio ingress for the validator and SV nodes. -- Docs - - Add section on disabling BFT sequencer connections for SV participants. -- Stability improvements - - Add circuit breaker functionality for ledger API command submissions in all splice apps; causes splice apps to pause attempting new command submissions if the synchronizer is overloaded. - - Add rate-limiting to scan `/acs/{party}` endpoint. - -## 0.4.9 - -- SV Application - - Status reports are now submitted every 2min rather than every 1min. This has no impact other than on monitoring infrastructure so you may need to adjust some alerts to be slightly less aggressive. -- Canton - - Fix an issue where topology transaction signatures where duplicated based on the actual signature as opposed to the public key of the signature. This caused transactions with thousands of signatures on DevNet due to an SV with KMS enabled using a non-deterministic signature scheme which slowed down onboarding of new nodes to an unusable level. -- Documentation - - Clarified that the Daml API `splice-token-burn-mint-v1` is not part of the token standard, see `app_dev_daml_api`. -- Scan - - Added basic rate limits to the HTTP APIs. There are configured by default to allow up to 200 req/s per endpoint. The values can be adjusted under the keys `canton.scan-apps.scan-app.parameters.rate-limiting`. - -## 0.4.8 - -- Deployment - - - Good-to-know but no changes needed: Added new helm values `persistence.enablePgInitContainer` and `extraInitContainers` allowing configuration around deployment init containers. So far this is implemented only for the validator and participant helm charts. The default values for these won't change your current deployment, so if uninterested you can safely ignore. - -- SV Application - - - Add the ability to configure a different topology change delay for the synchronizer parameters and change the default to `250ms`. This should have a slight impact on improving the performance of the sequencer. Until a majority of nodes upgrade to `0.4.8` the `ReconcileDynamicSynchronizerParametersTrigger` might produce warnings. - -- Dashboards - - - Moved the acknowledgements section from the catchup dashboard to a dedicated dashboard in the `canton` folder. - -- Istio Reference Ingress - - - Include in the `splice-cluster-ingress-runbook` helm chart an Istio local rate limit filter that adds basic rate limits to a subset of endpoints in Scan. This will be enabled by default if using the helm charts provided for Istio and the Scan ingress is enabled. If not using Istio, the included EnvoyFilter can be used as an inspiration to add rate limits. These rate limits will be expanded in the future to more endpoints. - -- Canton - - Reduced the acknowledgement interval for participants, mediators and sequencers to 10 minutes. This has no impact other than on the acknowlegdement metrics exposed by the sequencer. - -## 0.4.7 - -Note: 0.4.6 had a bug and should be skipped in favor of 0.4.7 which fixed a bug where the `skipSynchronizerInitialization` option could still result in the SV app crashing if its mediator was unreachable which can happen in certain cases when the sequencer is down. - -- Info (new) - - *important* This release contains a new helm chart "splice-info" which is supposed to be installed on all SV nodes and made publicly accessible. The new `info` endpoint provides: - - - Static information about network, sv, synchronizers, config digests of ip ranges and identities under `https://info.sv.<YOUR_HOSTNAME>`. - - Regularly updated (every minute) copy of DSO information under `https://info.sv.<YOUR_HOSTNAME>/runtime/dso.json`. - - The relevant documentation is updated at `sv-helm`. -- Scan - - Fix [bug \#1252](https://github.com/canton-network/splice/issues/1252): populate the token metadata total supply using the aggregates used for closed rounds. The data used corresponds to the data served by the `/v0/total-amulet-balance` endpoint in `app_dev_scan_api` for the latest closed round. - - Fix [bug \#1280](https://github.com/canton-network/splice/pull/1280): `record_time` in Scan API `/updates` is now right-padded to 6 digits (microseconds). -- Validator - - Fix a bug where sweeps through transfer preapprovals failed with a `CONTRACT_NOT_FOUND` error if the transfer preapproval provider party (usually the validator operator) of the receiver is featured. -- Splice - - Building the Splice repo, and running the vast majority of integration tests locally, no longer requires JFrog access. -- SV - - Added a `domain.skipInitialization` helm value that can be set for nodes that have already been onboarded and allows the SV app to start without the sequencer being up. This is useful for long-running sequencer database migrations. - - Retired deprecated code for old Daml choices `AmuletRules_AddFutureAmuletConfigSchedule`, `AmuletRules_RemoveFutureAmuletConfigSchedule` and `AmuletRules_UpdateFutureAmuletConfigSchedule` -- Sequencer - - Fix a sequential scan in a pruning query. This requires a long-running sequencer database migration (expected around an hour on mainnet). Make sure to set `domain.skipInitialization` on the SV app so the rest of your SV node can continue functioning. The liveness probe of the sequencer will fail during the migration so make sure to temporarily bump `livenessProbeInitialDelaySeconds` and reduce it back to the default after the migration is complete. Otherwise the liveness probe will kill the sequencer and the migration will never complete. -- Participant - - Fix an issue in sequencer BFT connections where the node got completely disconnected on certain failures even if only one sequencer reported those failures. -- Daml - - Deprecated Daml choices `AmuletRules_AddFutureAmuletConfigSchedule`, `AmuletRules_RemoveFutureAmuletConfigSchedule` and `AmuletRules_UpdateFutureAmuletConfigSchedule` - - This requires a Daml upgrade to versions - - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.12 | - > | amuletNameService | 0.1.12 | - > | dsoGovernance | 0.1.16 | - > | validatorLifecycle | 0.1.5 | - > | wallet | 0.1.12 | - > | walletPayments | 0.1.12 | - -## 0.4.5 - -- SV - - - *breaking* SV participants now enable sequencer BFT connections for the SV participant by default. You must remove the `useSequencerConnectionsFromScan: false` config and the `decentralizedSynchronizerUrl` config from your SV helm values. If needed, the previous behavior can be restored by setting those two variables again as well as the following configs (through `ADDITIONAL_CONFIG_*` environment variables for validator app and SV app respectively: `canton.validator-apps.validator_backend.disable-sv-validator-bft-sequencer-connection = true` `canton.sv-apps.sv.bft-sequencer-connection = false` - - - The extra beneficiaries weight config has been fixed to accept integer values. The string values for weight have been deprecated and will be removed in future releases. It is recommended to fix the config as per this example, the previous config: - - extraBeneficiaries: - - beneficiary: "BENEFICIARY_1_PARTY_ID" - weight: "1000" - - changes to: - - extraBeneficiaries: - - beneficiary: "BENEFICIARY_1_PARTY_ID" - weight: 1000 - - Thanks to Divam Narula for contributing this change in [https://github.com/canton-network/splice/pull/1371](https://github.com/canton-network/splice/pull/1371) - -- Daml - - - security: change `AmuletRules_Transfer` and `AmuletRules_ComputeFees` to take an explicit argument `expectedDso : Optional Party` and check that against the `dso` party value in `AmuletRules`. This value must be provided, and thus protects people that delegate calls to these choices from unintentionally allowing calls to `AmuletRules` contracts with a different `dso` party. - - This addresses suggestion S-8 reported by Quantstamp in their security review. - - Application developers that call these choices directly must adjust their call-sites to set the the `expectedDso` value. All calls to these choices from within the splice codebase have been adapted. - - - security: apply the spirit of suggestion S-8 to all non-DevNet choices on `AmuletRules` and `ExternalAmuletRules` granted to users. Concretely, we added the `expectedDso` party as a required argument to `AmuletRules_BuyMemberTraffic`, `AmuletRules_CreateExternalPartySetupProposal`, `AmuletRules_CreateTransferPreapproval`, and `ExternalPartyAmuletRules_CreateTransferCommand`. - - Ledger API clients calling these choices should set that value to the `dso` party-id of the network they are operating on. They can retrieve that with BFT by calling `GET /v0/scan-proxy/dso-party-id` on their validator's `validator-api-scan-proxy`. - - Third-party Daml code calling these choices should set it based on the `dso` party that the third-party workflow was started with. All calls to these choices from within the splice codebase have been adapted. - - - security: add a missing check that the actor is a current SV party to `DsoRules_ExpireSubscription` - - - prudent engineering: enforce on calls to `ExternalPartyAmuletRules_CreateTransferCommand` that `expiresAt` is in the future - - - prudent engineering: change all splice Daml code to fetch all reference data using checked fetches where the caller specifies the expected `dso` party - - These Daml changes require an upgrade to the following Daml versions: - - > | name | version | - > |-------------------|---------| - > | amulet | 0.1.11 | - > | amuletNameService | 0.1.11 | - > | dsoGovernance | 0.1.15 | - > | wallet | 0.1.11 | - > | walletPayments | 0.1.11 | - -## 0.4.4 - -- Daml - - This release contains two sets of Daml changes that build upon each other: - - 1. Implement [CIP-0064 - Delegateless Automation](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0064/cip-0064.md) - - These Daml changes requires an upgrade to the following Daml versions: - - | name | version | - |--------------------|---------| - | amulet | 0.1.9 | - | amuletNameService | 0.1.9 | - | dsoGovernance | 0.1.13 | - | validatorLifecycle | 0.1.3 | - | wallet | 0.1.9 | - | walletPayments | 0.1.9 | - - 2. Implement [CIP-0066 - Mint Canton Coin from Unminted/Unclaimed Pool](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0066/cip-0066.md) and fix security issues and suggestions raised by Quantstamp as part of their [audit of the Splice codebase](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0057/cip-0057.md#abstract). Note that the backend and frontend changes from CIP 66 are not yet implemented so we recommend holding off on upgrading to the new Daml models for now. - - > - CC-1 (low severity): addressed by rate limiting every SV wrt casting votes on a `VoteRequest` and updating their `AmuletPriceVote` to defend against them causing undue contention, which would block other SVs from voting, closing the vote, or advancing the mining rounds. - > - > This change introduces a new config value `voteCooldownTime` in the `DsoRules` configuration that defines the cooldown time between votes of the same SV. If not set, then the default value is 1 minute. - > - > - CC-2 (low severity): addressed by enabling delegateless automation from CIP-0064 by default - > - > - CC-4 (low severity): addressed by - > - > - checking that `expiresAt` is in the future in the choice body of `DsoRules_ExecuteConfirmedAction`, `DsoRules_AddConfirmedSv`, and `ValidatorOnboarding_Match`. - > - > - CC-5 (low severity): addressed by - > - > - requiring steps of a valid `SteppedRate` to be strictly ascending - > - enforcing this validation on the `transferFee` in `AmuletConfig` - > - failing `chargeSteppedRate` if a negative step is found - > - > - S-2 (auditor suggestion): addressed by - > - > - adding basic validation for all fields of `AmuletConfig` to reduce the risk of misconfigurations - > - restricting the choice `AmuletRules_Mint` to only be called in DevNet setups - > - properly handling the edge case of amulet that expired when checking whether a lock expires before an amulet in the `doesLockExpireBeforeAmulet` function - > - checking that `createdAt` and `ratePerRound` of an `ExpiringAmount` are positive; and enforcing that check in the `expiringAmount` smart constructor - > - checking that the `validatorRewardPercentage` and the `appRewardPercentage` in a valid `IssuanceConfig` are non-negative and do not exceed 100% - > - changing the `ensure` clause of `MemberTraffic` to enforce non-empty `memberId` and `synchronizerId` fields - > - enforcing a length limit of 280 characters on the `trackingId` of `TransferOffer` as a prudent engineering measure - > - > - S-3 (auditor suggestion): addressed by - > - > - calling `FeaturedAppRight_Withdraw` in the implementation of `DsoRules_RevokeFeaturedAppRight` - > - calling `Confirmation_Expire` in the implementation of `DsoRules_ExpireStaleConfirmation` - > - > - S-7 (auditor suggestion): addressed by checking the `dso` party whenever executing a confirmed action. - > - > - S-8 (auditor suggestion): addressed by - > - > - checking the expected `dso` party on all calls to the helper methods `exerciseAppTransfer`, `exercisePaymentTransfer`, and `exerciseComputeFees` to safe-guard against a delegee providing an unexpected `AmuletRules` contract from an `AmuletRules` contract with a `dso` party under their control - > - > - adding deprecation markers to the - > - > > - `ValidatorFaucetCoupon` template - > > - `AmuletRules_AddFutureAmuletConfigSchedule`, `AmuletRules_RemoveFutureAmuletConfigSchedule`, `AmuletRules_UpdateFutureAmuletConfigSchedule` choices that are deprecated in favor using a `CRARC_SetConfig` governance vote with effective dating - > > - `DsoRules_RequestElection`, `DsoRules_ElectDsoDelegate`, and `DsoRules_ArchiveOutdatedElectionRequest` choices that are deprecated in favor of delegateless automation - > - > - clarifying that the `amuletRulesCid` parameter of `DsoRules_AddConfirmedSv` is a historical artifact - > - > These Daml changes requires an upgrade to the following Daml versions: - > - > | name | version | - > |--------------------|---------| - > | amulet | 0.1.10 | - > | amuletNameService | 0.1.10 | - > | dsoGovernance | 0.1.14 | - > | validatorLifecycle | 0.1.4 | - > | wallet | 0.1.10 | - > | walletPayments | 0.1.10 | - -- SV - - - The actual delegate-based triggers inheriting from SvTaskBasedTrigger are modified so that they implement the changes described in the delegateless automation CIP once the new dsoGovernance DAR is vetted. - - The Delegate Election page in the SV UI is removed automatically once the new dsoGovernance DAR implementing the delegateless automation CIP is vetted. - -- Scan - - - Fix a [bug (#1254)](https://github.com/canton-network/splice/issues/1254) where the token metadata name and acronym for Amulet were not populated based on the `splice-instance-names` config. - -- Validator - - - **Breaking**: The validator app now enforces that the traffic topup interval is \>= the automation polling interval (30s by default). Previously it implicitly rounded up if the topup interval was smaller which caused confusion on how much traffic is purchased each time. If your topup interval was \>= 30s you are not affected. If you are affected, set the topup interval to the polling interval (30s unless changed) to recover the prior behavior. - -- Docs - - - Improve the application development documentation to better explain the available APIs and how to use them. - - Add relevant links to the new application developer documentation pages published by Digital Asset at [https://docs.digitalasset.com/build/3.4/](https://docs.digitalasset.com/build/3.4/). - - Fixed docker-compose docs around migrating from a non-authenticated validator to an authenticated validator. A complete wipe of the validator database is not required, as opposed to what the docs previously stated. See the relevant section on authenticated docker-compose validators. - -## 0.4.3 - -- Validator - - Fix a [bug (#1216)](https://github.com/canton-network/splice/issues/1216) where sends through transfer preapprovals failed with a `CONTRACT_NOT_FOUND` ERROR if the receiver's provider party was featured. - - Fix a bug where uploading dars would not immediately vet the dependencies that had a vetting entry effective in the future. - - Fix a [bug (#1215)](https://github.com/canton-network/splice/issues/1215) where wallet transaction could get stuck when creating transfer offers from the wallet UI. -- Synchronizer Migrations - - Fix a rare bug where a crash of the validator or SV while trying to restore the data after a migration could result in an inconsistent state being restore. - -## 0.4.2 - -- SV - - Add official support for operating an SV participant with keys managed by an external Key Management Service (KMS). -- Deployment - - Fix a typo in the `splice-participant` Helm chart that caused the participant container to be named `participant-1` instead of `participant`. - - Java 21 replaces Java 17 in all Docker images and as the base JDK for building Splice apps. -- Scan - - Fix a bug where the `/v0/holdings/summary` endpoint would return incomplete results when the requested parties had more than 1000 holdings. Additionally, that endpoint and `/v0/holdings/state` will now fail if an empty list of parties is provided. - - `/v2/updates` endpoints are now available on the Scan app, `/v1/updates` endpoints are deprecated. The `/v2/updates` endpoints no longer return the `offset` field in responses, and `events_by_id` are now lexicographically ordered by ID for conveniently viewing JSON results. -- Mediator - - Fix an issue where the mediator sometimes got stuck after initialization and required a restart to recover. -- Validator - - docker-compose, breaking: Restoration from identities dump requires to specify path to `identities.json` and not directory containing it. This is consistent with the documented behavior. See [\#387](https://github.com/canton-network/splice/pull/387) -- Auth - - Added an option to override the default connection and read timeouts for the JWKS URL when using `auth.algorithm="rs-256"`. - -## 0.4.1 - -- Validator - - Expose token-standard endpoints on the validator scan-proxy. The paths are the normal token standard path with a `/api/validator/v0/scan-proxy` prefix. - - Fix a bug where transfers using transfer pre-approvals (both through the wallet UI and automatic via sweeps) were broken until the DARs released in 0.4.0 are effective. - - Fix a bug that requires the latest dars to be uploaded when [re-onboarding a validator and recovering the balances of all the users](https://dev.global.canton.network.digitalasset.com/validator_operator/validator_disaster_recovery.html#re-onboard-a-validator-and-recover-balances-of-all-users-it-hosts) -- Sequencer - - Improve sequencer startup time by fixing a slow query. -- Define [standard k8s labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels) for most k8s resources deployed through Splice Helm charts. Thanks to Stephane Loeuillet for contributing an initial proposal for this change in [https://github.com/canton-network/splice/pull/296](https://github.com/canton-network/splice/pull/296). -- Scan - - Backfilling of all Scan data is now enabled by default. - -## 0.4.0 - - -- Upgrade to Canton 3.3: This upgrade requires a Hard Synchronizer migration and cannot be applied through a regular helm upgrade. For details refer to the [CIP draft](https://github.com/global-synchronizer-foundation/cips/pull/66). - - -- Daml - - Implement [CIP 47](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0047/cip-0047.md) and [CIP 56](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0056/cip-0056.md). - - This requires an upgrade to the following Daml versions: - - | name | version | - |--------------------|---------| - | amulet | 0.1.9 | - | amuletNameService | 0.1.9 | - | dsoGovernance | 0.1.12 | - | validatorLifecycle | 0.1.3 | - | wallet | 0.1.9 | - | walletPayments | 0.1.9 | -- Deployment - - This release includes a change to the database schema that will trigger a short database migration. On DevNet and MainNet, the migration is expected to take 2min for scan applications, and much less for validator and sv applications. - - Add jemalloc into the docker images. This is not enabled by default but allows for easier testing. Thanks to Stanislav German-Evtushenko for contributing this in [https://github.com/canton-network/splice/pull/318](https://github.com/canton-network/splice/pull/318) -- Validator - - Fix an issue where the automation for completing `TransferCommand` failed if the provider had a featured app right. - - Fixes and stability improvements for the validator re-onboarding flow. Among other things: - - Recovery of standard local parties is now automatically possible even if the validator is hosting external parties. - - It is now possible to force the recovery attempt for a party that was skipped during the fully automated recovery flow. - - Improve the error message when trying to use the wallet outside of localhost or https. Thanks to Stephane Loeuillet for contributing this in [https://github.com/canton-network/splice/pull/322](https://github.com/canton-network/splice/pull/322). -- Scan - - Scan now implements some Token Standard endpoints that are under the `/registry` path. `https://scan.sv.<YOUR_HOSTNAME>/registry` should be routed to `/registry` at port 5012 in service `scan-app` in the `sv` namespace, the same way that `/api/scan` already is. - -## 0.3.21 - - -- This release includes a change to the database schema that will trigger a long database migration of the scan and validator app databases, resulting in increased downtime of SV nodes, and to a much lesser extent the validator nodes. - - The migration will be triggered the first time an application is started after the version upgrade, and will leave the application in an unavailable state until the migration is finished. It is expected to take up to 1:30h for SV nodes and less than 10min for validator nodes on MainNet. The migration is expected to take significantly less time on DevNet and TestNet due to the recent resets of these networks. Note that even after the database migration completed, you might observe an additional (shorter) period of downtime for scan (and only scan) due to Postgres autovacuuming. - - The following points are essential for a successful migration: - - - Make sure to upgrade all apps in parallel (i.e., the scan app, validator app, and sv app for SV nodes) - - Make sure you have at least 50% free disk space on the database volume, or set it to expand automatically (the migration will consume a significant amount of temporary disk space). - - Make sure you the [temp_file_limit](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-TEMP-FILE-LIMIT) Postgres parameter is set to a sufficiently high number. The actual usage is hard to predict, so we recommend setting it to the maximum value for the duration of the migration. - - Additionally, consider the following actions to reduce your downtime due to the migration: - - - For the duration of the migration, pause any non-essential services accessing the database (e.g., a postgres exporter pushing database metrics to grafana). - - For the duration of the migration, increase the hardware configuration (upgrading from 2 CPUs / 8GB RAM to 8 CPUs / 32 GB RAM lowered the duration by ~20%). - - The first Postgres autovacuum after migration is expected to be significantly slower than usual vacuum runs. In case autovacuum doesn't trigger shortly after the migration, you might want to trigger a vacuum on your app databases manually to have better control over the additional potential downtime for scan. - - -- Deployments - - Validator, app and scan support specifying a scope when requesting the token from the participant. This enables use of IAMs that make the scope parameter mandatory. -- Frontends - - The Wallet and Scan UIs now show the Update ID of every transaction. These IDs are consistent with those used in the `updates` endpoints of the Scan API. - - Wallet UI: Add a logout button to the "Loading" and "Logged in but not onboarded" states to enable recovering from all types of login failures. - -## 0.3.20 - -- Performance - - - Improved the performance of ACS snapshot generation - -- Frontends - - - Relax config validation on audience to not require that it is a URL as this causes issues with some IAMs. - -- API - - - interdependencies in the Open API specs are now inlined in every yaml file, so that the files can be used independently of each other (and no longer incorrectly reference the common.yaml file in the bundle). - -- Deployment - - - The `splice-util-lib`\` helm chart is no longer published. The library has always been packaged with every helm chart that uses it, there is no need to pull it separately from the ghcr.io container registry. - -- Implement [Canton Improvement Proposal cip-0051](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0051/cip-0051.md) - - > - Added the optional `targetEffectiveAt` field to the `VoteRequest` template, which allows specifying an effective date and time for the vote request. Additionally, the `DsoRules_CloseVoteRequest` now enforces the new semantics for vote requests that include an effective date and time. - > - > - These changes will take full effect once all SVs upgrade to the new DAML package version and corresponding frontend and backend updates. - > - > - New Vote Request Semantics: - > - > > - Vote Requests with an Effective Date-Time (`targetEffectiveAt != None`): - > > - **Voting Period Starts (now \< voteBefore):** - > > - Early closing occurs if a super-majority of SVs rejects the vote request. - > > - > > - **Voting Period Ends (now ≥ voteBefore and now \< targetEffectiveAt):** - > > - If a super-majority has voted, the vote request remains open and SVs can still change their votes. - > > - If not, the vote request is marked as expired. - > > - Early closing occurs upon a super-majority of rejections after expiration. - > > - > > - **Effective Date-Time Reached (now ≥ targetEffectiveAt):** - > > - If a super-majority accepts the vote request, the change takes effect. - > > - Otherwise, the vote request is registered as rejected. - > > - > > - Vote Requests Without an Effective Date-Time (`targetEffectiveAt = None`): - > > - **Voting Period Starts (now \< voteBefore):** - > > - Early closing occurs when a super-majority rejects. - > > - Early acceptance occurs when a super-majority agrees. - > > - > > - **Voting Period Ends (now ≥ voteBefore):** - > > - The vote request is marked as expired. - > - > - The Daml changes in this release require a governance vote to upgrade the package configs to: - > - > - Introducing `CRARC_SetConfig` choice in favor of `CRARC_AddFutureAmuletConfigSchedule`, `CRARC_AddUpdateAmuletConfigSchedule` and `CRARC_AddRemoveAmuletConfigSchedule` - > - > - The new action `CRARC_SetConfig` allows the SV to set the configuration of AmuletRules configuration in the same way of `SRARC_SetConfig`. This action is only available when the new dars below are vetted. - > - > - Handling parallel proposals - > - > > - Before: concurrent editing proposals (`CRARC_SetConfig` and `SRARC_SetConfig`) risked overwriting new changes with outdated values because the entire new configuration replaced the old one, regardless of the specific changes. - > > - Now: concurrent editing proposals (`CRARC_SetConfig` and `SRARC_SetConfig`) apply only to the fields that were intented to be changed. A copy of the current configuration is passed along the modified configuration at the creation of a proposal. - > - > - Governance: new dars - > - > > | name | version | - > > |--------------------|---------| - > > | amulet | 0.1.8 | - > > | amuletNameService | 0.1.8 | - > > | dsoGovernance | 0.1.11 | - > > | validatorLifecycle | 0.1.2 | - > > | wallet | 0.1.8 | - > > | walletPayments | 0.1.8 | - -- CometBFT - - > - Updated CometBFT to [0.37.15](https://github.com/cometbft/cometbft/blob/v0.37.15/CHANGELOG.md?rgh-link-date=2025-04-03T08%3A37%3A21.000Z#v03715) - -## 0.3.19 - -- Stability improvements - -## 0.3.18 - -- Scan - - `scan_txlog.py` will safely save its cache specified with `--cache-file-path`. A failed run will always revert to the prior cache, such as if the disk ran out of space while cache was being written. -- Docs - - SV and validator ingress: Clarify that all traffic not explicitly allowed as per the docs should be blocked for security reasons. - - Clarify that the GCP and AWS KMS drivers are available only for licensed users of Canton Enterprise. - -## 0.3.17 - - -- This release fixes an issue where the Validator app would uploads dars before being vetted. This can result in ledger API command submissions that target those DARs directly (as opposed to a third-party DAR that depends on them) breaking. - If you are upgrading from 0.3.15, please upgrade directly to 0.3.17. If you don't submit any commands directly against the ledger API (as opposed to the validator APIs) for the amulet DARs you are not affected. - - -- Docs - - Update documentation on configuring SV egress. - - Add note about `.localhost` addresses used by Docker Compose-based validator deployments. - -## 0.3.16 - -- SV and validator apps - - The SV and validator apps now preserve participant-local user state across synchronizer upgrades with downtime. More specifically, SVs and validators now preserve identity provider configs and users with all state attached to them (including, for example, rights and metadata annotations). -- Scan - - The Scan API in scan-internal.yaml and scan-external.yaml have been merged into one scan.yaml file. Deprecated endpoints are marked with `deprecated: true`. -- Deployment - - Make synchronizer migration PVC names configurable through `pvc.volumeName`. Thanks to Stéphane Loeuillet for contributing this in [https://github.com/digital-asset/decentralized-canton-sync/pull/338](https://github.com/digital-asset/decentralized-canton-sync/pull/338) - -## 0.3.15 - - -- This release fixes a Scan backfilling regression introduced in 0.3.14. Please skip 0.3.14 and upgrade directly to 0.3.15. - - -- Deployment - - Change the port used by nginx in the UI docker images from 80 to 8080. - - The services defined by the helm charts still expose port 80 by default, but now all of them are configurable through the helm values, eg: the validator helm chart has new values configured through `service.wallet.port` & `service.ans.port`. - - The compose deployments contain an updated nginx.conf that now uses the new 8080 ports. - - - Move `topup` section from the `validator-values.yaml` example file to the `standalone-validator.yaml` example file to make it more clear that configuring topups is a reasonable option only for non-SV validators. See [canton-network/splice#255](https://github.com/canton-network/splice/pull/255) - - - Added the `initialAmuletPrice` helm option to set the initial amulet price vote (i.e., the price for which your SV node will vote when onboarded). See the configuration instructions. Note that this only takes effect for new nodes. For already existing nodes, change the price vote through the SV UI. -- Validator - - Added the option to specify multiple `validatorWalletUsers` in the validator helm charts. The existing `validatorWalletUser` option is still supported. -- Docs - - Added documentation for managing network resets for validators and super validators. - -## 0.3.13 - -- Docs - - Add documentation about `traffic`. - - Add documentation about computing total burnt coin. - - Enable commenting on doc pages. -- Config changes - - Increased the time before a participant retries a sequencer submission back to 10 seconds (from 5 seconds). This ensures we're not too aggressive in retrying, thus leading to traffic waste. - -## 0.3.12 - -- Docs - - Add SV pruning section. - - Add historical backups section to the SV docs. - - Add historical backups section to the Validator docs. -- Performance - - Updated table definitions in Scan to improve performance of `/transactions` and `/activities` endpoints. This requires a SQL migration that will run on app startup for ~15m on devnet and ~2m on mainnet according to our tests. -- Deployment - - Add OCI annotations to provide standardized information attached to a Docker image. Details provided are image name, image version, creation date, base image, repository, and commit hash. - - Fix an issue in the SV helm chart where the resource section was omitted if `attachPvc` was set to `false`. See [https://github.com/digital-asset/decentralized-canton-sync/issues/299](https://github.com/digital-asset/decentralized-canton-sync/issues/299) - - Add a new `serviceAccountName` value to all Splice Helm charts to allow specifying a custom service account for deployed pods. - - Increased the size of the caches and the mempool for CometBFT in an effort to try to improve it's performance under load - -## 0.3.11 - -- Validator - - Add an option to enable participant pruning. -- Observability - - Add a dashboard for sequencer client metrics. -- Docs - - Extend Scan API docs docs. - - Various smaller documentation updates and improvements. - -## 0.3.10 - -- Validator app - - Add support for operating a validator participant with keys stored in an external Key Management Service (KMS). - -- Metrics - - Added `splice_store_last_ingested_record_time_ms` metric for the last ingested record time in each store and an associated dashboard. This can be used to track general activity of the node. - -- Docs - - - Add Troubleshooting section. - - Add overview docs for the Validator Onboarding Process. - - Add docs for Getting console access to Canton nodes. - - Add docs for Configuring deployed apps. - - Add docs for Validator Ingress & Egress requirements. - - Add overview docs about Metrics. - - Add overview docs about Application Development. - - Improve API docs. - - Various smaller documentation updates and improvements. - -- SV UI - - Various improvements to the SV UI. - -## 0.3.9 - -- SV UI - - Add better spacing between items and alerts/badges in navigation bar -- Docs - - Added a section on hardware requirements to the validator docs. - - Improved the docs around required network parameters for starting a new validator. - - Added network diagrams of SVs and validators. - - Added initial docs on how to access metrics for validators and SVs. - -## 0.3.8 - -- Fixes to documentation and scripts around using the publicly available images and Helm charts - -## 0.3.7 - -- Deployment - - When recovering a validator from an identities dump `nodeIdentifier` must now match `newParticipantIdentifier`. This was already a requirement when `newParticipantIdentifier` was removed again after the restore was complete so this just catches misconfigurations earlier. - - In the docker-compose start script, the migration id is now a mandatory argument instead of defaulting to 0. This should not require any changes as no network is on migration id 0 at the moment so you must already have it set. - - Release versions of docker images and helm charts are now publicly available respectively from Github Container Registry at ghcr.io/digital-asset/decentralized-canton-sync/docker and ghcr.io/digital-asset/decentralized-canton-sync/helm. No credentials are required to download these release artifacts. The default `imageRepo` value in helm charts has been updated to ghcr.io/digital-asset/decentralized-canton-sync/docker. - -## 0.3.6 - -- Validator app - - > - The wallet sweep automation now supports sweeping to end user parties. - > - Fix a bug where the validator operator was unable to preapproval incoming transfers if a user on the same validator preapproved incoming transfers first. - -- SV app - - > - Onboarding secrets now encode the sponsoring SV party to provide better error messages in case a secret is used to onboard against an SV that did not issue it. Secrets are still just opaque strings so no change is required. - -- Wallet UI - - - Added a confirmation dialog when enabling preapproval of incoming direct transfers. - -- Deployment - - - The release bundle has been removed again from the docs image. The docs instead link to the release bundles publicly available on the OSS GitHub repo. - -- CometBFT - - - The CometBFT version has been updated to 0.37.13. No change should be required from SV operators. - -## 0.3.5 - -- Scan - - Added new metrics for the Scan app to monitor the ingestion of transactions and contract reassignments into the update history. -- Deployment - - The setting `spliceDomainNames.nameServiceDomain` must now be supplied for the `splice-cluster-ingress-runbook` helm chart. See the `sv-helm` example. - - Added a new Grafana dashboard for monitoring utilization of the Global Synchronizer, currently estimated by comparing the total number of transactions processed to those visible to the DSO party. The larger this delta is, the more likely it is that the Global Synchronizer is used for private transactions beyond those needed for operating the synchronizer itself. - - The docs image expects a new environment variable `SPLICE_CLUSTER`. In production, that would be one of `dev`, `test` or `main`. The cn-docs Helm chart takes this value from the `networkName` Helm value. -- Metrics - - All metrics named starting with `cn_` now start with `splice_` instead. Example Grafana configuration has been updated to match, but any custom consumers of these metrics must be updated manually. -- Daml - - Restructured the Daml code of AmuletRules_BuyMemberTraffic to avoid an intermediate transfer to the DSO party before the amulets were burned. There is no change in the amount that gets burned or the rewards are issued, just a slight change in the transaction structure to accomplish this. - - This requires an upgrade to the following Daml versions: - - | name | version | - |--------------------|---------| - | amulet | 0.1.7 | - | amuletNameService | 0.1.7 | - | dsoGovernance | 0.1.10 | - | validatorLifecycle | 0.1.1 | - | wallet | 0.1.7 | - | walletPayments | 0.1.7 | - -## 0.3.4 - -- SV UI - - Switch to `YYYY-MM-DD`-based date formatting and 24h-based time formatting. -- Deployment - - The release bundle is now included in the docs image, for easier hosting by the GSF. - - Add a new `jsonApiServerPathPrefix` value to the participant helm chart that allows setting a path prefix for JSON API endpoints, to simplify configuring ingress routing to the participant JSON API. -- Stability improvements - -## 0.3.3 - -- All UIs (except the experimental app manager and splitwell UIs) - - Added the `openid` scope to their authorization requests to comply with the [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest). -- Scan - - Scan instances will now run a background process that replicates the history of the network from before their SV node joined. This affects data returned by the `/v1/updates` endpoints, missing data for other API endpoints (such as `/v0/transactions`) will be backfilled in a future update. This one-time process is expected to take up to a few days to complete, depending on the size of the missing history. During this time, scan instances will consume slightly more compute and networking resources than usual, and the `/v1/updates` endpoint will return an error until the replication has finished on that particular instance. Progress on your own scan instance can be monitored through the `cn_history_backfilling_*` metrics. - - The `/v1/updates` endpoint now excludes updates resulting from ACS imports. This change was already mentioned in the 0.2.5 release notes, but due to a bug was not actually implemented until now. - -## 0.3.2 - -- Bugfixes - - Fix JSON API bug that was causing UNAUTHENTICATED responses on calls to GetLedgerEnd - -## 0.3.1 - - -- This release fixes an upgrading-related bug in 0.3.0. Please skip 0.3.0 and upgrade directly to 0.3.1 through the Synchronizer Upgrade with Downtime procedure. - - -- Bugfixes - - Fix Canton topology import issue that can cause synchronizer upgrades with downtime to fail on some networks. -- Deployment - - Make the wallet sweep config value `use-transfer-preapproval` optional in the validator helm chart with a default of `false`. - -## 0.3.0 - - -- **Daml recompilation may be required:** this release changes the definition of the `AmuletRules` template arguments, as it introduces a new optional config value called `transferPreapprovalFee` (see `daml_changes_0.3.0`). If your Daml code depends on `splice-amulet` \< `0.1.6`, then you **must recompile** and redeploy it after the network was upgraded to `splice-amulet-0.1.6` and before the SVs change this optional config value away from its default value. -- This release must be applied through the Synchronizer Upgrade with Downtime procedure. - - -- Canton - - This release upgrades from Canton 3.1 to Canton 3.2. In addition to stability improvements, the primary change is adding support for externally hosted parties, which enables supporting Amulet custody. - -- Validator App, Scan App - - - Add support for Amulet custody. - - Fixed a bug where BFT scan calls would fail even though enough remote scan connections are available. This would happen if roughly a third of the SV nodes are offline. - -- Wallet UI - - - Support for non-external parties to exchange amulets with externally hosted ones via pre-approved transfers. - -- SV UI - - - The SV UI now shows a confirmation dialog when creating a Vote Request or Voting. - -- Deployment - - - An optional value `uiPollInterval` has been added to the Helm charts for `splice-scan`, `splice-sv-node`, and `splice-validator`. This value allows you to configure the interval at which the deployed UIs poll the services for updates in milliseconds. If unspecified, the default value is 1000 (1 second). - - The log field `labels."k8s-pod/cn-component"` has been renamed to `labels."k8s-pod/splice-component"`. - -- Security - - - Fix a Canton node initialization issue that caused newly initialized participants, mediators, and sequencers to reuse their root namespace signing key for all signing purposes. Upgrading to this release will also fix the key usage on all validators and SVs that were originally onboarded on an affected version (versions 0.2.4 to 0.2.8), generating fresh signing keys for affected Canton nodes. - -- Docs - - - Added a new section to the Validator documentation on how to share the operator wallet with multiple users. See `validator-users`. - - Added a new subsection to Supervalidator documentation documenting the URL conventions agreed upon by the SV operators. - -### Daml Changes in 0.3.0 - -The Daml changes introduce support for the external signing of the keys of a Daml party. Signatures required from these external parties can be collected via a crypto custodian's system, and can involve multiple human confirmers. Transactions submitted in the name of these parties can thus take multiple hours from the creation of the transaction signing request to the final commit of the transaction on the network. This increased latency required several changes in the Daml models underlying Amulet. They can be reviewed in detail by diffing the `daml` directory in the [https://github.com/canton-network/splice](https://github.com/canton-network/splice) repo. - -The key changes are summarized below: - -> - Changes the existing `AmuletRules` template: -> -> - Add a new config field `transferPreapprovalFee` in the `AmuletConfig` stored in `AmuletRules`. -> - -once this field is set to `Some value`, you can no longer call choices on `AmuletRules` using Daml code built against a version before `splice-amulet-0.1.6`! Please recompile and redistribute your Daml code once the SVs have upgraded to `splice-amulet-0.1.6` on your target network. -> -> - Add the choices `AmuletRules_CreateTransferPreapproval` and `AmuletRules_CreateExternalPartySetupProposal` explained below. -> -> - New workflows and templates: -> -> - Introduce the ability for a party to declare to the network that they are OK with receiving incoming Amulet transfers from any party by creating a `TransferPreapproval`. This is used by externally hosted parties to receive funds without having to actively confirm that they are OK to receive the funds. It must also be used by parties that want to receive funds from externally hosted parties, as external party wallets currently do not use the transfer offer workflow. -> - The `TransferPreapproval` contracts are expected to be created by the party’s crypto custodian, which pays the yearly maintenance fee. That fee is configurable via DSO vote and initially set to \$1 per year. The payment itself happens by burning the corresponding amount of Amulet on purchase. In return for paying that fee, the crypto custodian is recorded as the app provider and validator operator on all Amulet transfers executed via the `TransferPreapproval` maintained by them. -> - A helper workflow called an `ExternalPartySetupProposal` has been added for crypto custody providers to set up both the `TransferPreapproval` and the `ValidatorRight` for an external party. The latter is required for claiming validator activity records. That workflow is initiated by the crypto custody provider calling the `AmuletRules_CreateExternalPartySetupProposal` choice. -> - Parties can also directly purchase a `TransferPreapproval` using `AmuletRules_CreateTransferPreapproval` choice. -> - Furthermore, parties are given the ability to delegate executing a Amulet transfer to a party of their choosing using the `ExternalPartyAmuletRules_CreateTransferCommand`. We introduced this feature because the normal Amulet transfer transactions refer to the `OpenMiningRound` contracts, which are valid for at most 30 minutes (10 minutes of pre-announcement time, and 2 \* 10 minutes of active time). This time is too short to accommodate the human-in-the-loop confirmation workflows of crypto custody providers, which in turn would result in failed transactions due to referencing a stale round contract. -> - The typical choice for the delegate is a normal party on the crypto custodians node. That party is expected to be online and submit the actual transfer as soon as the `TransferCommand` is visible. The input amulets for the transfer are selected by the delegate; and they are expected to select inputs that cover the required amount provided they exist. In case there are not enough funds the `TransferCommand` gets archived and marked as failed. -> - External parties creating multiple `TransferCommands` are protected from executing the same transfer twice using an Ethereum style nonce tracked by the DSO, which must be sequentially increasing for a transfer command to be executed. We expect the wallet of these parties to select the right nonce using information available from Amulet scan. Having multiple transfer commands in-flight is supported. -> - All transactions involving `TransferCommands` and `TransferPreapprovals` have the `dso` party as a signatory and are thus always validated by ⅔ of the SV nodes. -> -> - The Daml changes in this release require a governance vote to upgrade the package configs to: -> -> | name | version | -> |--------------------|---------| -> | amulet | 0.1.6 | -> | amuletNameService | 0.1.6 | -> | dsoGovernance | 0.1.9 | -> | validatorLifecycle | 0.1.1 | -> | wallet | 0.1.6 | -> | walletPayments | 0.1.6 | - - -## 0.2.8 - -- SV App - - The query to fetch the vote results has been fixed for postgres 15. -- Sequencer - - Fix an inefficient query when querying the onboarding snapshot for a new SV that tries to onboard. - -## 0.2.7 - -- Scan - - Added new endpoints `/v1/updates` and `/v1/updates/{update_id}`. The updates endpoint returns all Daml transactions and also all contract reassignments. Both Daml transactions and contract reassignments can be made up of multiple smaller components: A single Daml transaction may be the top node of a tree of sub-transactions, and a contract reassignment may actually be a batch of many reassignments. - - Each Super Validator node assigns a unique counter, called an event ID, to each of the sub-transactions in the Daml transaction tree. Because there's not just one way to assign a counter to the elements of a tree, each Super Validator node gives different event IDs to the same elements of the transaction tree. - - This means that applications that want to compare updates from more than one Super Validator can't match their event IDs. So for the v1 version of these endpoints, we've added a method for tree node numbering in Scan, which consistently produces the same event ids on each tree node, when given the same tree structure. - - Applications that rely on an existing set of event IDs drawn from a single Super Validator may continue to use /v0/updates and /v0/updates/{update_id}. This will return the single-Super Validator set of event IDs that they've used up to now. Applications that want to compare the details of updates, including transaction trees and sub-transactions, across Super Validators can use the v1 version of these endpoints. - -## 0.2.6 - -Note: 0.2.5 was skipped as it introduced a regression where the splice apps hardcoded the wrong log level. - -- Docs - - Updated docs to include a section on how to create a standalone k8s-based Canton Network. This can be useful to test deployment changes, in particular for SVs. See `scratchnet`. -- SV UI - - Configuration changes for AmuletRules and DsoRules are diffed against the configuration it will replace and the in-flights proposals. This makes it easier to see what changes are being proposed and what the current configuration is. - - When creating validator onboarding secrets through the SV UI, they will now have an expiration time of 48 hours. -- Scan - - Added endpoint `/v0/validators/validator-faucets` to query the validator faucet by validator party Ids. - - Modified the `/v0/updates` and `/v0/updates/{update_id}` Scan API endpoints to make sure they consistently returns the same history across SVs: - - The `/v0/updates` endpoint now fails on scans that have not yet replicated history from before their SV node joined the network. - - The `/v0/updates` endpoint now excludes updates resulting from ACS imports (those with workflow id starting with `canton-network-acs-import`). - - Fix an issue where the ordering of stakeholders (signatories and observers) would be inconsistent across SVs when calling the `/v0/updates` and `/v0/updates/{update_id}` endpoints on the Scan API. - - Fix a bug in `/v0/domains/{domain_id}/members/{member_id}/traffic-status` that resulted in the returned total purchased traffic value being incorrect after a hard migration. -- Add a new index to Splice application databases. Scan and validator apps might take a while to start after the upgrade. -- Canton - - Enabled slow future logging for all components to better debug stuck nodes. - - Added a max time of 10 minutes for processing of a sequenced event before the node crashes to get restarted. This mitigates cases where nodes might get stuck due to a bug and a restart recovers them. -- Deployment - - **Breaking** Every Helm chart with a name starting with `cn-` has been renamed, now starting with `splice-` instead, except for `cn-docs`. - - **Breaking** The script token.py was renamed to get-token.py to avoid conflicting with some imported modules. - - `imagePullPolicy` is now unset by default corresponding to `IfNotPresent`. You can overwrite it using the helm value `imagePullPolicy` if needed. - - In `paused-triggers` settings, the trigger name prefix `com.daml.network` has been replaced by `org.lfdecentralizedtrust.splice`. This also applies to stacktraces you may see in logs. - - `domain.sequencerAddress`, `domain.mediatorAddress` and `participantAddress` in the SV and Scan helm values are now mandatory. The defaults did not include the migration id so are almost always incorrect which means this likely has no impact as SVs should already have this set explicitly. -- Bugfixes - - Fix an issue in the wallet app where the transactions from previous migration ids would not be listed when paginating. - -## 0.2.4 - -- Sequencer - - Fix a rare bug where a lagging participant trying to submit a topology transaction resulted in the sequencer deadlocking and not processing any new events. - -## 0.2.3 - -Note: 0.2.2 was skipped due to an error in the publishing process. - -- SV UI - - - The route to view the amulet price has been renamed from `/cc-price` to `/amulet-price` - -- The docker-compose validator now supports recovering from a node identities dump in case of a complete disaster. - -- Add new `initialPackageConfigJson` value to the SV helm chart to allow for setting the daml package version when bootstrapping a network. This is useful to ensure that the Daml versions do not change on a network reset. Only the first SV needs to set this. - -- SV app - - - Fix a bug where sequencer pruning treated nodes that have not joined after a synchronizer migration with downtime as lagging even when the pruning interval has not yet passed and disabled them preventing them from connecting to the sequencer. - -- Deployment - - - **Breaking**: The auth secrets `splice-app-{sv,validator}-ledger-api-auth` formerly had `audience` as an optional field. This is now required. The former implicit value was `https://canton.network.global`. If you have not overridden this value before, you should add it now explicitly. - - It used to be possible to override the ledger-api audience value through the helm value `auth.ledgerApiAudience` in the sv and validator charts. This has been removed -- use the secret mentioned in the previous point. - - **Breaking** The chart value `auth.audience` was formerly optional, and is now required for the following charts. The previous implicit value was `https://canton.network.global`. To continue using it, please provide it explicitly to your values. (See the sv-helm and validator-helm docs for more information on auth configuration.) - - `cn-sv-node` - - `cn-validator` - - **Breaking** The chart value `auth.jwksUrl` was formerly optional, and is now required for the same charts above. This should already be overridden in your values file for your particular auth setup, so likely no further action is required. - -- Bugfixes - - > - Fix an issue where validators that were already deployed with an invalid `validatorPartyHint` were failing to start after a hard domain migration, as the already existing hint was rejected by the validator app. - -- Sequencer - - - Fix an issue in sequencer traffic management that resulted in a deadlock after a synchronizer upgrade with downtime where lagging validators failed to submit a transaction due to lagging behind but also failed to catch up due to the submission failing. - -- Added support for a docker-compose based deployment of a single-SV network, for app developers to test against without needing to connect to DevNet. - -## 0.2.1 - -- Added support for a docker-compose based validator deployment. -- Scan - - Fix an issue in the holdings and holding summary endpoint where it failed to decode contracts when the splice-amulet version the contract was created in did not match the latest supported version by the Scan release. -- Sequencer - - Fix a bug that prevented initialization during a hard domain migration if there was a proposal in the topology state on the old migration id. - -## 0.2.0 - -Note: This release must be applied through the `Synchronizer Upgrades with Downtime` procedure. - -- Canton - - This release upgrades from Canton 3.0 to Canton 3.1. The primary change is a full redesign of the sequencer database to only store each sequenced messages once instead of duplicating it for each recipient. - -- Daml - - - Add a choice that allows merging duplicated validator licenses. On DevNet it is easy to get duplicates as secrets can be automatically generated - - - by querying the `/api/sv/v0/devnet/onboard/validator/prepare` endpoint. This is not an issue on Test/MainNet where secrets are explicitly provisioned by SV operators and are one-time use. - - - It is up to the SV operators to ensure that they only hand out one secret to each validator - - - Add a new template `ValidatorLivenessActivityRecord`. It is a copy of the `ValidatorFaucetCoupon` template with the only difference being that the validator is an observer instead of signatory. This is to allow to expire the coupon without the validator's involvement. - - - The Daml changes in this release require a governance vote to upgrade the package configs to: - - | name | version | - |--------------------|---------| - | amulet | 0.1.5 | - | amuletNameService | 0.1.5 | - | dsoGovernance | 0.1.8 | - | validatorLifecycle | 0.1.1 | - | wallet | 0.1.5 | - | walletPayments | 0.1.5 | - -- SV and validator apps - - - Add a note about avoiding installing third-party Daml apps on SV nodes in the SV operations documentation, as that may compromise the security of the SV node. - - Remove support for deprecated `bootstrapTXs` field on node identity dumps. Node identity dumps taken on a 0.1.2 snapshot or earlier version are no longer supported. - -- Metrics: All the histograms default to using [native histograms](https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/#exponential-histograms). - - > - Dashboards were also adjusted to use the PromQL functions for native histograms in all the queries - > - You can turn off this behavior for each component by adding the following env variable in the `additionalEnvVars` helm values: `ADDITIONAL_CONFIG_DISABLE_NATIVE_HISTOGRAMS="canton.monitoring.metrics.histograms=\[\]"` - -- Dashboards - - - Added a new "Synchronizer Fees (Validator View)" dashboard for validators to monitor their traffic purchases and consumption. - -- Wallet API - - - The `list` API in `wallet-internal.yaml` now exposes contracts as `ContractWithState` instead of just as a `Contract`. - -- Deployment - - - Removed the `disableAutoInit` value from the helm charts of Canton nodes. All Canton nodes will now always start with initialization disabled. SV and validator apps will take care of initializing the nodes as needed, using use the new `nodeIdentifier` helm chart value for the Canton node identifiers. The installing instructions for validators and SVs have been updated accordingly. - - - `spliceInstanceNames` values are now mandatory for all Helm charts that deploy a frontend (`cn-scan`, `cn-validator`, `cn-sv-node`, and `cn-splitwell-web-ui`). The correct values for them are published in the docs for validators and SVs. - - - The configuration variable `clusterUrl` was removed from all Helm charts except `splitwell-web-ui`. - - - Default Postgres PVC size for validators is configured as 50GiB in the new `postgres-values-validator-participant.yaml` examples file. Note also the change in the validator installation docs to use this file while installing the Postgres chart. - - - For the Docker images, these input environment variables have been renamed, replacing `CN` with `SPLICE`: - - > - `CN_APP_UI_HTTP_URL` - > - `CN_APP_UI_UNSAFE_SECRET` - > - `CN_APP_UI_UNSAFE` - > - `CN_APP_WALLET_REDIRECT` - - - The Kubernetes secrets below have been renamed, replacing `cn-` with `splice-`: - - > - `cn-app-*-ledger-api-auth` - > - `cn-app-cns-ui-auth` - > - `cn-app-sv-key` - > - `cn-app-sv-ui-auth` - > - `cn-app-validator-onboarding-validator` - > - `cn-app-wallet-ui-auth` - -- Documentation - - - Updated recommendations for checking synchronizer health after a Synchronizer Upgrade with Downtime to focus exclusively on monitoring signals. - - Simplified `jq`-based data dump post-processing examples in disaster recovery documentation for SVs and validators. - -- Metrics - - - Added `cn_wallet_unlocked_amulet_balance` and `cn_wallet_locked_amulet_balance` metrics to expose the effective per party balance of locked and unlocked amulets. - -## 0.1.19 - -- Fix the Docker image digest which was used for the `ans-web-ui` and accidentally was empty (thereby not pinning the image) in 0.1.18 due to a rename. -- `validatorPartyHint` is now mandatory for non-SV validators. For an existing validator, it must be set to the current party hint (otherwise, the app will fail to start). For new validators, it must be of format `--`, where `organization` and `function` are alphanumeric, and `enumerator` is a number starting from 1. -- Fix an issue in the scan ACS snapshot functionality added in 0.1.18 for network bootstrapped just before 0:00. -- Fix an issue in the ACS snapshot functionality added in 0.1.18 around hard domain migrations. This only affects a hard domain migration *to* 0.1.18 but not *from* 0.1.18. - -## 0.1.18 - -- SV apps - - Fix a rare race condition where the SV app uses the wrong timestamp to export the topology state on a hard domain migration resulting in the sequencer failing to initialize after the migration. We recommend upgrading before the next hard domain migration. - - Enable SV to retain pre-migration sequencer URLs in `SvNodeState`. This is done through a new `migration.legacyId` configuration in the SV values. If set, the SV will keep exposing its sequencer URL for that migration id. Once you undeploy the old sequencer node, remove this option as well to stop Scan from advertising your old sequencer. This allows validators that have been lagging behind to catchup easier. -- Dashboards - - Added a new CometBFT Network Status dashboard that displays how much data is being exchanged with each peer on the CometBFT P2P network. This should should make it easier to diagnose connectivity problems between network peers. -- Scan API - - Added the `getUpdateById` API in `scan-internal.yaml`. The `getUpdateById` API can be used to retrieve an update by its update ID. - - Added the `getAcsSnapshotAt`, `getHoldingsStateAt` and `getHoldingsSummaryAt` APIs in `scan-internal.yaml`. A snapshot of the active contract set (ACS) is now computed and stored periodically to serve these endpoints. - - Modified `listDsoSequencers` Scan API to also expose pre migration sequencer urls, allowing pre-migration validators to catch up. -- UI - - Gzip compression has been enabled for the Scan, Wallet, SV and CNS UIs. -- Deployment - - Updated the Cometbft Helm chart to not accept integer values for the `chainIdSuffix`. - - The `disableAutoInit` Helm value now defaults to `true` wherever it is used and must be explicitly set to `false` when onboarding fresh validators or SVs. The installing instructions for validators and SVs have been updated accordingly. - - Added `helm.sh/resource-policy: keep` to validator and SV app domain migration PVCs to ensure they don't accidentally get deleted by a `helm uninstall`. You can still fully delete them with a `kubectl delete pvc`. - - `validatorPartyHint` is now mandatory for non-SV validators. For an existing validator, it should be set to the current party hint (otherwise, the value will be ignored, and a warning will be printed to log). For new validators, it should be of format `\-\-\`. - - In `cometbft-values.yaml`, the top-level label `founder` is now `sv1`. The example has been updated to match, and this change must be made to your own copy. - - The download link for the release bundle has changed to a new URL format: `\\_splice-node.tar.gz`. Its content has been renamed accordingly as well. -- Documentation - - Simplified `jq`-based data dump post-processing examples in disaster recovery documentation for SVs and validators. - -## 0.1.17 - -- Wallet automation - - Fix an issue in the wallet sweep automation where it created additional transfer offers even if there were already sufficient transfer offers to cover the sweep. -- Deployment - - Image versions in Helm charts are now pinned to digests for extra security - -## 0.1.16 - -- CometBft - - The default cometbft persistent volume size was bumped from 1250Gi to 2500Gi. -- SV app - - Add automation to automatically call the Daml choice that prunes `futureValue` added in 0.1.15 -- Release - - HTML docs are now included in the release bundle, under `docs/html`. -- Documentation - - Added notes about configuring traffic top-ups for validators to `validator-values.yaml` -- Daml - - Fixed a bug in `AmuletRules_ComputeFees` where the fee computation for locks was too high as it did not do the same deduplication of lock-holders as is done by `AmuletRules_Transfer`. - - - Fixed ANS entry expiration so that it's robust to stakeholder participants being unavailable. - - - All Dars have been rebuilt from source files that include the same copyright prefix as in the Splice repository. This bumps dar versions in all packages. Incorporating that will require a governance vote to upgrade the package configs to: - - | name | version | - |--------------------|---------| - | amulet | 0.1.4 | - | amuletNameService | 0.1.4 | - | dsoGovernance | 0.1.6 | - | validatorLifecycle | 0.1.1 | - | wallet | 0.1.4 | - | walletPayments | 0.1.4 | -- Deployment - - Added an `livenessProbeInitialDelaySeconds` parameter to all helm charts. - - Helm charts that deploy a frontend (`cn-scan`, `cn-validator`, `cn-sv-node`, and `cn-splitwell-web-ui`) now accept a new parameter, `spliceInstanceNames`, to configure network-specific terminology. The correct values should be consumed from the [cn-svc-configs ui-config-values.yaml](https://github.com/DACH-NY/cn-svc-configs/blob/main/configs/ui-config-values.yaml) - - Docker environment variables of the form `CN_APP_*_UI_*` have been renamed to `CN_APP_UI_*`, dropping the app name prefix. For users of the Helm charts, no further action is needed. -- Sequencer - - Improve performance of sequencer startup and querying the sequencer onboarding snapshot when onboarding new SVs. This adds a new index to the sequencer database so can take a while depending on the size of the DB. - - Note: If you encounter issues with the migration taking too long and k8s killing your pod, bump the `livenessProbeInitialDelaySeconds` parameter in the sequencer helm chart. - - We have also seen some issues with istio cancelling the database connection before the migration can finish (on much larger scale clusters than what we expect to have on dev/test/mainnet). In that case, consider disabling the istio proxy through `annotations: traffic.sidecar.istio.io/excludeOutboundPorts: "YOURDATABASEPORT"` on the sequencer deployment. -- All helm charts now allow configuring the database port through `persistence.port`. Note that for the `cn-global-domain` chart, this is nested under `sequencer.persistence` and `mediator.persistence`. - -## 0.1.15 - -Note: 0.1.14 was skipped as it contained an issue related to logging. Upgrade directly from 0.1.13 to 0.1.15. - -- SV app - - Added a governance option to update the SV reward weight of a member SV. This is available in the Governance tab by selecting the action "Update SV Reward Weight". - - Added `consensus_state` to the list of CometBFT RPC endpoints exposed via the SV app at `/v0/admin/domain/cometbft/json-rpc`. -- Deployment - - Fix an issue in the validator and SV helm charts where setting `contactPoint` to an empty string produced an error. -- Daml - - Add a choice that allows pruning configs from the AmuletRules `futureValues` after the time has been reached to reduce the size of the config and reduce differences between the config schedule on different networks. - - - The Daml changes in this release require a governance vote to upgrade the package configs to: - - | name | version | - |--------------------|---------| - | amulet | 0.1.3 | - | amuletNameService | 0.1.3 | - | dsoGovernance | 0.1.5 | - | validatorLifecycle | 0.1.0 | - | wallet | 0.1.3 | - | walletPayments | 0.1.3 | - -## 0.1.13 - -- Docker - - - Switch to using `eclipse-temurin:17-jdk-jammy` as the base image as the `openjdk:17-jdk-slim` is no longer maintained. - -- Deployment - - - UI containers in the Helm charts now request only 0.1 CPU and 240Mi memory by default. - - Default participant CPU requests have been lowered from 2 to 1 CPU based on the observed usage under load tests. - - Validator and SV helm charts have a new required `contactPoint` field that must be set in `validator-values.yaml` and `sv-values.yaml`. This should point to a Slack username or email address that can be used by other node operators to contact you in case there are issues with your node. If you do not want to share this, set it to an empty string. - - Added support for k8s tolerations to all Helm charts. - -- SV app - - - `/v0/admin/domain/data-snapshot` now includes `created_at` and `migration_id` in the response payload, so these no longer need to be added manually when restoring an SV app from backup. `migration_id` is also an optional argument to set the latter, defaulting to 1 + the cluster's current migration ID. - - - The extra beneficiary config has been changed to specify weights in an ordered list instead of percentages. The weights are distributed in the order of the list until there is no weight remaining. Any remainder still goes to the SV operator party. This fixes two problems with the percentage-based beneficiary specification: - - > 1. it does not suffer from rounding errors - > 2. it allows changing the config ahead of time to account for a planned weight changes by adding additional entries at the end. - - This is a breaking config change, which requires you to adapt the SV app config as per this example: assuming a total weight of 10000 basis points, the previous config: - - extraBeneficiaries: - - partyId: "BENEFICIARY_1_PARTY_ID" - percentage: 10.0 - - partyId: "BENEFICIARY_2_PARTY_ID" - percentage: 33.33 - - changes to: - - extraBeneficiaries: - - beneficiary: "BENEFICIARY_1_PARTY_ID" - weight: 1000 - - beneficiary: "BENEFICIARY_2_PARTY_ID" - weight: 3333 - -- Validator app - - - `/v0/admin/domain/data-snapshot` now accepts `migration_id` as an argument, overriding `migrationId` in the response payload. The default `migrationId` is now 1 + the cluster's current migration ID, rather than only the current migration ID. - - The migration dump format has changed; the JSON keys `acsSnapshot`, `acsTimestamp`, `migrationId`, `domainId`, and `createdAt` have changed to `acs_snapshot`, `acs_timestamp`, `migration_id`, `domain_id`, and `created_at`, respectively. The format of `/v0/admin/domain/data-snapshot` has been fixed where it mismatched the migration dump import format so that backups do not need to be patched to be restored. Previous dumps can still be imported using the old format. - -- Scan app - - - Improved performance of the per-party ACS endpoint that is used when reonboarding a validator from the identity backup. - -- Daml - - - Extended the Daml models to report the version number and a periodic heartbeat of each validator to provide a better overview of the network state and detect potential issues from upgrades earlier. - - - The frequency of ACS commitments can now be modified via a "Set DsoRules configuration" governance by changing the newly added `acsCommitmentReconciliationInterval` configuration parameter in the DsoRules (set by default to 30 minutes). - - - Removed a special case for `SRARC_OffboardSv` in the `DsoRules_CloseVoteRequest` choice in `splice-dso-governance.dar`, so that offboarding an SV before the vote request expires is now only possible if **all** current SVs agree, **including** the SV that is being offboarded. Prior to this change, the offboarding would become effective before the set expiration time once all SVs except the SV to be offboarded had voted. This complicated the coordination around giving SVs sufficient time to address the offboarding reason and prevent the offboarding. - - - The Daml changes in this release require a governance vote to upgrade the package configs to: - - | name | version | - |--------------------|---------| - | amulet | 0.1.3 | - | amuletNameService | 0.1.3 | - | dsoGovernance | 0.1.4 | - | validatorLifecycle | 0.1.0 | - | wallet | 0.1.3 | - | walletPayments | 0.1.3 | - -- Dashboards - - Added a new Validator License dashboard that displays the version and contact point of all validators. This can be useful to judge the impact of an upgrade. - -## 0.1.12 - -Note: 0.1.11 was skipped as it contained some issues. Upgrade directly from 0.1.10 to 0.1.12. - -- SV and Validator app - - - Added a `disableIngestUpdateHistoryFromParticipantBegin` flag to the helm values of the SV and validator app. This was added to account for a change in 0.1.11 that stores more history as backfilling the history on the existing test/devnet clusters is too expensive. This should **only** be enabled on existing Dev/TestNet clusters to avoid issues when upgrading to 0.1.12. It **must not** be enabled on any new cluster or if a node is fully reset. - -- Scan - - - Fix a bug where the new update history API in scan was unable to serve data from before the upgrade. - -- Include Grafana dashboards and a README on network health in the release bundle. - -- Configuration - - - Add support in the Validator app Helm chart for configuring sweeps and auto-accepts of transfer offers. - - The `wallet-sweep` and `auto-accept` configuration values for a validator app were changed to map party-ids to configurations instead of mapping participant user-names to configurations. - -- Daml - - - The `WalletAppInstall_ExecuteBatch` choice in `splice-wallet.dar` was changed to also record the wallet user party when executing batches of operations on a user's coin holdings to improve disambuiguation of log entries in the wallet transaction log. - - - Fix an issue in the computation of transfer fees where the values of the steps were interpreted as the difference between steps as opposed to an absolute value so e.g. the fees were computed as `transferFee(2000) = 0.1 * 100 + 1000 * 0.01 + 900 * 0.001` instead of `transferFee(2000) = 0.1 * 100 + 900 * 0.01 + 1000 * 0.001` for the default config. - - This requires a governance vote to upgrade the package configs to: - - | name | version | - |--------------------|---------| - | amulet | 0.1.2 | - | amuletNameService | 0.1.2 | - | dsoGovernance | 0.1.3 | - | validatorLifecycle | 0.1.0 | - | wallet | 0.1.2 | - | walletPayments | 0.1.2 | - -- Validator admin API - - Simplified creating users that share the same party-id and wallet. For that purpose `POST /v0/admin/users` accepts an optional `party_id` field in its JSON body, which can be set to an already allocated party. - -- Bugfixes - - - The wallet automation for collecting rewards is started only once per Daml party instead of once per onboarded wallet user. This enables setups where multiple wallet users have access to the same coin holdings for the same Daml party. - - Fixed a bug where a user wallet wrongly attempted to use the featured app right of the validator admin party if that existed, which resulted in failed transactions. - -- The `approved-sv-id-values-\*.yaml` files have been removed from the release bundle. The approved SV identities for each network instance can now exclusively be obtained from the [cn-svc-configs repo](https://github.com/DACH-NY/cn-svc-configs) . - -- CC Scan - - Fix a bug in the balance API and UI where balances did not get tracked properly if the balance change for a given party was negative in one round, e.g., because it transferred away a large amount. - -## 0.1.10 - -- SV App - - The default transfer config set by the founding node has been changed from `"0.0000192901` to `0.0000190259` corresponding to changing the computation to be performaned in fixed point decimals and 365 days. This matches the change already applied to devnet through a governance vote. - -- Daml - - Fixed a bug that resulted in duplicate `SvRewardState` contracts when an SV got reonboarded which allowed them to receive rewards corresponding to a multiple of their actual weight. This requires upgrading `dso-governance` to `0.1.2` through a governance vote on `AmuletConfig`. - -- SV UI - - Fixed a bug in pretty printing of the JSON object in `DSO Info` that printed maps differently from the API response and some other parts of the UI. - -## 0.1.9 - -- Configuration - - > - Default `actionConfirmationTimeout` parameter in CoinRules was increased from 5 minutes to 1 hour. This increases robustness if some nodes are temporarily unavailable or slow. Note that this requires a governance vote to change the `DsoConfig` on existing clusters. - > - Default PVC sizes updated: 2800Gi for Postgres. - -- App Dev - - - DARs can no longer be uploaded through the Ledger API. Instead use the Canton admin API. This change was made as the ledger API upload breaks under hard domain migrations. - -- Documentation - - - Add notes about (Helm chart) version upgrades to the Synchronizer Upgrades with Downtime documentation sections for SVs and validators. - - Updated `Preparing for Validator Onboarding` sections to describe the steps a validator operator needs to take to onboard a new node. - - Removed Self-Hosted Validator documentation in favor of the Helm docs for validator deployments. - - Removed Splitwell-related documentation as Splitwell is not actively maintained as a production-ready app. - -- Deployment - - - The values `nodeId`, `publicKey` and `keyAddress` in the `founder` section of the cometbft helm chart are not set in the chart defaults but must be explicitly provided. See the comments in the example `cometbft-values.yaml` for the values to use for DevNet, TestNet or MainNet. - -- Daml - - Fixed a bug that prevented a round from moving to the issuing state if there are no unclaimed rewards for that round. This requires upgrading `splice-amulet`, `splice-amulet-name-service`, `splice-dso-governance` and `splice-wallet` to version `0.1.1` through a governance vote on AmuletConfig. - -## 0.1.8 - -- Deployment - - The URL for the Digital-Asset-2 node is now compliant with the agreed upon URL formats: `\*.sv-2.\.global.canton.network.digitalasset.com` - - All Digital-Asset-Eng-X nodes also change URLs with this release, from *.sv-x. to \`*.sv-x-eng.\.global.canton.network.digitalasset.com\`. -- Bugfixes - - Reduced the frequency of ACS commitments to every 30min to avoid issues with validators running out of traffic. -- Performance - - Sequencers now batch some of their writes which should improve performance. - -## 0.1.7 - -- Deployment - - Note change in urls in the Digital-Asset-2 node (which is used in several example and default configurations in the docs), from *.sv-1.svc. to*.sv-1., as a step towards making that node compliant with the agreed upon URL formats. Note that further changes to Digital Asset node URLs might become effective before the next release becomes available. -- Updated validator runbooks with instructions for re-onboarding a validator. -- Renamed `traffic-reserved-for-topups` in the validator app and SV app config to `reserved-traffic` to better reflect the fact that the "reserved" traffic amount is used for more than just traffic top-ups. No change is needed unless you explicitly set a value for this instead of just relying on the default. -- APIs - - The `admin/domain/data-snapshot` endpoints on the SV and validator app now require specifying the timestamp as a query parameter instead of in the payload body. This was changed since `GET` requests must not have request bodies. - -## 0.1.6 - -Note: 0.1.5 resulted in the issue mentioned below so both SVs and validators should directly upgrade from 0.1.4 to 0.1.6. - -- Security - - Fixed an issue where secrets in config files were logged on startup. This effects Auth0 secrets, SV onboarding and validator onboarding secrets. Please rotate all those secrets as soon as possible to reduce the impact. -- Bugfixes - - Fix a bug (triggered by some changes in 0.1.5) where automation could submit too many commands in parallel overloading the synchronizer. - -## 0.1.5 - -- Fixed the SV UI to show node status information in the DSO info tab and display AmuletConfigChange vote requests that were executed. -- Removed PVC size overrides in example `postgres-values-participant.yaml` and `postgres-values-sequencer.yaml` files. The Postgres instances used by the participant and sequencer should use the default size instead (1300Gi). -- Updated the scan UI to show recent activity in a way that is more consistent and matches the actual activity on the ledger. Note that all transfers recorded in the past will show as having no sv rewards. This limitation can be removed with a future update. -- Fix a bug where the namespace triggers did not get started on SV’s with `migrating: true` which prevented new SVs from being onboarded after domain migrations. -- Updated SV and validator runbooks with network-wide disaster recovery instructions. -- Introduced a `vpns` section in the IP whitelists json file, replacing the `infra.vpn` one. - -## 0.1.4 - -- Default PVC sizes updated: 640Gi for CometBFT and 1300Gi for Postgres. -- Bugfix in Total balance and Total rewards in USD in Scan UI. -- New value for `cometbft-values.yaml`: `genesis.chainIdSuffix`. Please explicitly set this to `"0"` as per the updated example. Note that this deprecates `genesis.chainIdVersion`, which can be removed for deployments that use this and later releases. -- By default, CometBFT deployments now use the `premium-rwo` storage class for increased performance. Please override `db.volumeStorageClass` in your `cometbft-values.yaml` if this storage class is not supported by your Kubernetes cluster provider. Please use an SSD storage class for the CometBFT PVC. -- Updated SV runbook for Re-onboarding an SV. - -## 0.1.3 - -- The Scan frontend shows information about currently open mining rounds in the current configuration box. -- Minor documentation improvements related to synchronizer upgrades with downtime. -- Fixed the initial validator rewards tranche to be 5% of the total issuance (it was wrongly set to 50%). Note that this only has an effect on newly bootstrapped clusters. Existing clusters need to be changed through a voting process. -- Set the `validatorFaucetCap` explicitly to 2.85 instead of leaving it unset to make reviewing the config easier. This has no effect since unset defaults to 2.85. Existing clusters need to be changed through a voting process. -- The resource requests for sequencers have been increased to match our target scale. If needed, they can be reduced using the `sequencer.resources` value of the `cn-global-domain` but please try to get them to a comparable value in time for mainnet. -- Fix a sequencer bug that resulted in it failing to process any further messages after a message with high traffic costs. -- If a tap fails in the wallet frontend, the error message includes extra technical details that may be useful for diagnosis. - -## 0.1.2 - -- Fixed a bug where coins with very large values broke ingestion in the SV and validator app due to an overflow. -- Updated SV runbook for correct recommendation on pruning intervals. - -## 2024-04-01 - -- Renamed the following terms in our underlying Daml models and the apps' APIs to prepare for open-sourcing their code in a form that does not use the term "Canton" or "collective": - - Coin -\> Amulet - - CNS -\> ANS (Amulet Name Service) - - SVC -\> DSO (Decentralized Synchronizer Operations) - - Domain -\> Synchronizer - - Global Domain (whenever it refers to the more generic concept) -\> Decentralized Synchronizer - - Note that for technical reasons the URLs for networks still include the term "svc" for now; e.g., `https://wallet.sv.svc.YOUR_HOSTNAME`. -- Added an option to disable the Validator apps' wallet. This can be done by setting `enableWallet` to `false` in the `validator-values.yaml` file. -- Added ANS name resolution (formally known as CNS) for `dso.ans` to the DSO party and `<sv-name>.sv.ans` to all SV members parties. -- CometBFT pruning duration has been increased to 30 days. No configuration changes are required. -- Sequencer pruning period has been adjusted to 30 days and pruning interval has been reduced to 1 hour. Adjust `sequencerPruningConfig.pruningInterval` and `sequencerPruningConfig.retentionPeriod` in your `sv-values.yaml` to match the example `sv-values.yaml`. -- The sequencer URL of the Digital Asset 2 node `https://sequencer.sv-1.svc.CLUSTER.network.canton.global` is no longer exposed. Instead use `https://sequencer-MIGRATION_ID.sv-1.svc.CLUSTER.network.canton.global` where `MIGRATION_ID` is the current migration id of the cluster. -- Round 0 now has a duration of 26h. The two extra hours are to allow for internal validation before the release is announced while still providing 24h for anyone else to validate the config. -- DevNet and TestNet are deployed on Monday instead of Sunday each week. - -## 2024-03-25 - -- Round 0 now has a duration of 24h. This removes the advantage of early joiners and allows for more time to validate that the configuration upon joining is the one an SV expected. -- Initial coin price is now \$0.005/CC. -- Subsequent round duration is now 10min. -- The initial holding fee is now \$0.0000192901/round (about 4× its prior value) to preserve an approximate fee of \$1/360 days given the round duration change. -- New `initial-holding-fee` setting for `"found-collective"` sv onboarding. -- Sequencer pruning is now enabled by default. This requires configuring a pruning interval and retention period in the SV app's configuration. -- Fix performance bottleneck while initializing new synchronizer after a hard synchronizer migration. -- Fix scan so that it functions as expected after a hard synchronizer migration. - -## 2024-03-18 - -- Deployment - - `participant-values.yaml` and `global-domain-values.yaml` now require specifying your SV name as `nodeIdentifier: YOUR_SV_NAME`. This is used to provide better names to Canton nodes. - - Multiple changes to the way (non-SV) validator nodes are deployed, to prepare for supporting Synchronizer Upgrades with Downtime. Please revisit the section on Helm-based validator deployment, paying attention to the new `MIGRATION_ID` variable (should be set to `0` until further notice). -- Documentation - - Added detailed instructions for (non-SV) validator node operators on participating in a synchronizer upgrade. Please see the new validator operations section on Synchronizer Upgrades with Downtime, as well as the updates in `k8s_validator`. - - SV Synchronizer Upgrades: Added more detailed instructions on testing, as well as various clarifications. - - Removed now-obsolete documentation about "Transitioning Across Network Resets" and "Restoring from an existing Particiant Identities Backup". - - Added backup and restore documentation for (non-SV) validator nodes. -- Configuration - - SV node renames: - - Digital-Asset is preparing to run two nodes, Digital-Asset-1 and Digital-Asset-2 - - Digital Asset engineering team's extra nodes on DevNet were renamed to Digital-Asset-Eng-X - - SV weights: The SV weights on DevNet have been updated - -## 2024-03-11 - -- Deployment - - Multiple changes to the way SV nodes are deployed, to prepare for supporting Synchronizer Upgrades with Downtime. Please revisit the section on Helm-based SV deployment, paying attention to the new `MIGRATION_ID` variable (should be set to `0` until further notice). - - `sv-values.yaml` now also requires you to specify an `internalUrl` for your scan instance that the SV app can use to query its status. - - In preparation for the mainnet deployment and testing real upgrades, testnet no longer preserves coin balances and validator licenses. No configuration changes are required for this. However, any validator secrets created through the UI or API now need to be regenerated on each reset. Validator secrets configured in `expected-validator-onboardings` will automatically be recreated. Note that this affects only testnet so will only take effect on March 18th. -- Documentation - - Added more detailed instructions for SV node operators on participating in a synchronizer upgrade. Please see the updated section on Synchronizer Upgrades with Downtime, as well as the updates in `sv-helm`. - - Added a section on how to configure the `extraBeneficiaries` to the SV rewards so that the SV can distribute its SV rewards to other parties. Please see the new section in `sv-helm`. -- The SV rewards are now issued in accordance to CIP-0001. - -## 2024-03-04 - -- Deployment - - It is no longer necessary to specify anything related to `globalDomain` in `participant-values.yaml`. -- Documentation - - Added section on Synchronizer Upgrades with Downtime. This section only contains a high-level overview for now and will be expanded in the upcoming weeks. - - Preliminary documentation of restoring from backups. Note that for now, only the case of restoring a full SV node from a backup is fully covered. -- SVs do not pay domain fees anymore for their nodes. Therefore, traffic top-ups do not need to be configured for SV validators. In keeping with this, `topup.enabled` in `sv-validator-values.yaml` is set to `false`. -- The `RemoveMember` action has been renamed to `OffboardMember` in the SV UI and SvcRules Daml model, including `SRARC_OffboardMember` and `SvcRules_OffboardMember`. - -## 2024-02-26 - -- Deployment - - Removed option to configure Kubernetes node affinity for PVCs due to a faulty implementation. For controlling the provisioning of PVCs, you can define custom storage classes and configure them via the respective `db.volumeStorageClass` Helm chart field. - - Fix the `affinity` and `nodeSelector` field on the `cn-postgres` Helm chart so they are applied as expected. - - The `scanAddress` in `validator-values.yaml` should be an address to a trusted Scan instance that is reachable by your Validator. -- Documentation - - Added instructions for fetching and backing up node identities from an SV node in the Backups section. - -## 2024-02-19 - -- The scan app is now initialized with last computed aggregates from other scans in the SVC. -- Deployment - - You can now configure Kubernetes affinity and node selection rules for pods deployed as part of CN helm charts. This is done by setting the `affinity` and `nodeSelector` fields in the Helm values files, respectively. For helm charts that deploy persistent volumes, you can additionally configure Kubernetes node affinity for those volumes. This is done by setting the `db.volumeNodeAffinity` field in the respective Helm values files. For all of these fields, the standard Kubernetes configuration syntax applies. See also the examples given (as commented-out lines) in `cometbft-values.yaml`. - -## 2024-02-12 - -- The JSON encoding of jsonb columns in the database has been changed. Please make sure to clean all the database before upgrading. Data with the old JSON encoding cannot be read by the new version of the software. - -## 2024-02-05 - -- The wallet of non-SV validators now execute all reads through a Scan proxy in the validator, thus executing them in a BFT fashion. -- You might see some `ACS_COMMITMENT_MISMATCH` warning logs in the participant. These can be ignored. -- Add `enableHealthProbes` to the global domain helm chart, providing the ability to disable gRPC readiness and liveness probes for the sequencer and mediator. -- Containers now use tini as the entrypoint to ensure proper signal handling. -- Fix for wallet balances incorrectly reporting as zero for rounds that have not been aggregated yet. An error will be returned instead. -- Deployment - - The postgres instance has been split into four different instances: sequencer-pg, mediator-pg, participant-pg, apps-pg. Please see the new section on installing and configuring Postgres: Installing Postgres instances - - postgres PVC size are new set to 480GB for the sequencer, and 48GB for each of the other three instances. - - The default database names for the different components have been changed to [cantonnet](). They are all created automatically in init containers attached to the respective app pods. - -## 2024-01-29 - -- The `/v0/wallet-balance` endpoint to query a party's CC balance is exposed through the Scan app. - -- Non-SV validators now connect to all registered Scans in the domain and read from them in a BFT fashion (safe as long as less than 1/3 of them are faulty). Scans are registered as part of the SV onboarding, using the public URL that was configured in the 2024-01-15 deployment (`scan.publicUrl` in SV-app's helm chart). SV validators still trust the Scan app of the SV. - -- Clean up our OpenAPI spec to use oneOf. This involves minor changes to the some of our API endpoints including: - - - getHealthStatus for all nodes - - getBuyTrafficRequestStatus and getTransferOfferStatus in the wallet API - - getCometBftNodeStatus and getCometBftNodeDebugDump in the SV app - - In almost all cases, the changes should only involve some fields that were optional now becoming required. - -## 2024-01-22 - -- Adjust traffic purchase rewards structure to CIP-2: - - Validator rewards are issued over the full amount of CC spent. - - No app rewards are issued for traffic purchases. - - Set the minimum traffic purchase amount to 1 USD to ensure coverage of execution cost. - - Issue an extra app reward over \$1 for CC transfers facilitated by featured apps. -- Deployment: - - Enabled pruning in sequencers of canton foundation - -## 2024-01-15 - -- Deployment: - - - The SV-app helm chart now expects `scan.publicUrl` to be set to the URL of the Scan app. - - - The syntax of the Helm charts configuring persistence has been standardized through the different images. The provided snippet highlights the optional fields and its syntax. To find the expected values for each image, refer to the \_[required.yaml]() Helm files.: - - sequencer: - driver: - type: - port: - host: - persistence: - databaseName: - host: - port: - user: - secretName: - mediator: - persistence: - databaseName: - host: - port: - user: - secretName: - -- Documentation: - - > - Removed the section `Renaming an SV` in the page "Kubernetes-Based Deployment of a Super Validator node". Not longer possible through the JSON API. - -## 2024-01-08 - -- Deployment: - - The global domain helm chart now supports separate Postgres instances for the sequencer and mediator. They can be configured in the `sequencerPostgres` and `mediatorPostgres` values. The single `postgres` value has been deprecated and is no longer supported. (It is still possible to use a shared postgres instance, by configuring it under both `sequencerPostgres` and `mediatorPostgres`.) - - The CometBFT egress ports have changed from `26656, 26666, 26676, 26686, 26696` to `26016, 26026, 26036, 26046, 26096` - - The CometBFT founder port was updated in the `cometbft-values.yaml` file to `26016` (from `26656`). This is found under the `founder.externalAddress` field. -- Bugfixes: - - CometBFT state sync has been fixed after the recent issues and can once again be used for fast CometBFT node bootstrapping. (It should not be necessary anymore to override `stateSync.enable` to `false` in `cometbft-values.yaml`.) - -## 2023-12-18 - -- Minor SV UI tweaks. Among other things, it is now mandatory to supply a textual proposal summary when submitting a vote request. -- Renamed `directory` to `CNS` across the system - - Renamed ingress rule from `https://directory.sv.svc.<YOUR_HOSTNAME>*` to `https://cns.sv.svc.<YOUR_HOSTNAME>*`. Please note that this is now a requirement for this UI to continue working properly. - -## 2023-12-11 - -- Deployment: - - The `https://directory.sv.svc.\/api/json-api/\*` ingress rule is no longer required for validators and super-validators - - The helm charts now allow configuring the secret in which the postgres password is stored. Default is `postgres-secrets`. -- Documentation: - - Added an ingress rule for `https://directory.sv.svc.\/api/validator`, which was accidentally omitted from the instructions. - -## 2023-12-04 - -- The party representing the supervalidator collective is renamed from `svc::...` to `SVC::...`, for consistency with SV party names. -- The password for the PostgreSQL database is now set in Kubernetes secrets as opposed to Helm values files. Please refer to the updated documentation on `Configuring PostgreSQL authentication` for SV operators and Validator operators. -- Documentation: - - Clarify that using custom auth audiences is recommended. - - Updated SV runbook to explain also ip white-listing. - - Updated SV runbook with a list of outbound traffic. -- The `/v0/activities` and `/v0/transactions` Scan APIs now include normalized balance changes per party. Please see the Scan OpenAPI specification. - -## 2023-11-27 - -- The `domain.sequencerPublicUrl` configuration in `cn-sv-node` helm chart is now mandatory. All SVs must specify the URL at which their sequencer can be reached. -- The Canton Name Service (CNS) application is now decentralized. Rather than the founder SV operating a backend service for CNS, the application is now a decentralized one, operated by the SVC with BFT guarantees. No deployment or configuration changes are required for this change. -- CNS entry name limit is changed from 40 to 60 (including suffix). -- The SV, Scan, directory and validator apps now require a PostgreSQL database to run. This can be configured in `sv-values.yaml`, `validator-values.yaml`, `scan-values.yaml`. - -## 2023-11-20 - -- The CometBft RPC endpoints required for state sync are now exposed through the SV App. Accordingly, the list of `rpcServers` in `cometbft-values.yaml` has been updated to reflect the new URL path. -- Documentation fixes - -## 2023-11-13 - -- CometBft pruning is now enabled, with approximately 7 days of history retained by default. -- Revised the SVC governance formula, so that we now need `ceil( (n + f + 1) / 2.0 )` SVs to form a quorum, where `f := floor ( (n - 1) / 3.0 )` is the maximum supported number of faulty SVs for safe operation. -- Removing the adjustment of SVC governance thresholds for DevNet, aligning it with the one used in TestNet. -- Deployment updates: - - The URL of the global domain sequencer hosted by the Canton Foundation has changed to `https://sequencer.sv-1.svc.\.network.canton.global`. This change is reflected in the values specified in `participant-values.yaml`, `validator-values.yaml` and `sv-values.yaml`. - - The requirement for URL rewriting in the rules for Scan and SV apps has been removed: `https://scan.sv.svc.<YOUR_HOSTNAME>/api/scan` and `https://sv.sv.svc.<YOUR_HOSTNAME>/api/sv` no longer requires rewriting (and also has been modified from `/api/v0/scan` to `/api/scan` and from `/api/v0/sv` to `/api/sv`). For example, `https://scan.sv.svc.<YOUR_HOSTNAME>/api/scan/foobar` should be forwarded to `http://validator-app:5012/api/scan/foobar`. Note that URL rewriting is now required only in the ingress rule of the JSON API used by the directory frontend. This rule will be completely removed in the future. - - Note that the readiness and liveness endpoints of Validator, Scan and SV apps have all been moved to `/api/\/readyz` and `/api/\/livez`, with `\` being `validator`, `scan` or `sv`, respectively. The corresponding Helm charts have been updated to reflect this change. - - The URL configuration for the foundation's Scan app in `validator-values.yaml` has been updated to be `https://scan.sv-1.svc.TARGET_CLUSTER.network.canton.global`. Similarly, in the config files in the self-hosted validator section. - - The `isDevNet` flag has been removed from the `cn-cometbft` helm chart in order to eliminate its potential for accidental misconfiguration. Instead, the chart now relies on the value of `genesis.chainId` in `cometbft-values.yaml` to determine whether it is a TestNet or DevNet deployment. - - The CNS UI now uses the validator API to manage user entries, instead of the JSON Ledger API. In order to authenticate to the validator-app correctly, the chart now uses the `auth.audience` value to specify JWT audience, instead of `auth.ledgerApiAudience` -- Documentation: - - Add documentation for configuring the SV node to publish the URL of its sequencer, so that other validators can subscribe to it. - - Add documentation for a new required ingress rule to expose `global-domain-sequencer` in Configuring the Cluster Ingress. - -## 2023-11-06 - -- Deployment updates: - - CometBFT state sync i.e. snapshot based syncing of CometBFT nodes is now enabled by default. This allows CometBFT nodes to catchup much quicker during initialization. `cometbft-values.yaml` is configured by default to fetch the snapshots from `https://sv.sv-1.svc.TARGET_CLUSTER.network.canton.global:443/cometbft-rpc/` which is the URL for the CometBFT RPC API of the Canton-Foundation SV. In order to disable state sync, set `stateSync.enable` to `false` in `cometbft-values.yaml`. Further details can be found in Configuring CometBft state sync. - - Added `useSequencerConnectionsFromScan`. For validator Helm charts, `useSequencerConnectionsFromScan` should be set to `false` for SV nodes. This value is in the `sv-validator-values.yaml` file. -- Documentation: - - Add brief overview about important Identities used by SV nodes on different layers. -- The Scan activity and transaction history API's now return the round for which transactions were registered. Please see the Scan OpenAPI specification. The `/coin-config-for-round` API can be used to lookup the holding fees for a specific round. - -## 2023-10-30 - -- Add a hidden page to the SV UI (`/leader`) that allows SVs to manually trigger a reelection of the SvcRules leader, as an additional safety mechanism and measure of last resort. -- Deployment updates: - - Add documentation for Kubernetes-Based Deployment of a Validator node - - The requirement for url rewriting in one of the rules has been removed: `https://wallet.sv.svc.<YOUR_HOSTNAME>/api/validator` no longer requires rewriting (and also has been modified from `/api/v0/validator` to `/api/validator`). For example, `https://wallet.sv.svc.<YOUR_HOSTNAME>/api/validator/foobar` should be forwarded to `http://validator-app:5003/api/validator/foobar`. In the future, the other rewrite requirements will also be removed. - - Renamed `SV_WALLET_USER_ID` placeholder in `validator-values.yaml` to `OPERATOR_WALLET_USER_ID` to better reflect that this value is the operator's user in the deployment for both SVs and standalone validator nodes -- Bugfixes: - - Fixed an issue with fees in Scan recent activity and transaction history API where some sender and receiver fees were not reported. If a party transfers to themself, it will now be included in the Transfer receivers property in API responses (this was previously filtered out). - -## 2023-10-23 - -- Improved BFT guarantees on SVC ledger actions and mediator verdicts. Both of these are now safe as long as less than 1/3 of SVs are faulty. -- Non-SV validators now connect to all reachable sequencers in the domain and read from them in a BFT fashion (safe as long as less than 1/3 of them are faulty). Note that for now, only the sequencers operated by the Canton Foundation are reachable and considered for that quorum. We will soon provide instructions for making the sequencers of all SV nodes reachable as well. -- Deployment updates - - Replaced `disableAllocateLedgerApiUserParty` with `svValidator`. For validator Helm charts, `svValidator` should be set to `true` for SV nodes. This value is in the `sv-validator-values.yaml` file. - - Default volume sizes for `cn-cometbft` and `cn-postgres` increased to `240Gi` each (from, respectively, `80Gi` and `160Gi`), as a conservative precaution. - - The global domain now uses CometBFT instead of a Postgres-backed domain on TestNet. - - Each global domain node now deploys both a sequencer and mediator on both DevNet and TestNet. The `domain.enable` flag in `sv-values.yaml` no longer needs to be explicitly set for DevNet (it is `true` by default). - - Added `scan-values.yaml`, please use that when deploying the `cn-scan` Helm chart. The `clusterUrl` value is used for looking up directory entries in the scan UI. -- Domain fees (and traffic top-ups) are now enabled on DevNet as well. This implies that explicitly setting `topup.enabled` to `false` in `validator-values.yaml` for DevNet is no longer required (it is always set to `true`). - -## 2023-10-16 - -- Frontend updates - - The recent activity tab in Scan now looks up CNS entries for party IDs. Party IDs are shown as-is if they are not found in CNS. -- Removed the unused "users" field from participant identities dumps. -- A transaction history API has been added to Scan. Please see the Scan OpenAPI specification. - -## 2023-10-09 - -- Deployment updates - - The URL of the global domain has changed to `http://sequencer.sv-1.svc.\.network.canton.global:5008`. This change is reflected in the values specified in `participant-values.yaml`, `validator-values.yaml` and `sv-values.yaml`. -- Frontend updates - - The "SVC Configuration" and "Canton Coin Configuration" tabs in the SV UI were renamed to, respectively, "SVC Info" and "Canton Coin Info", to reflect the fact that they also show non-configuration information. -- Bugfixes: - - Fixed broken Recent Activity tab link on the scan UI. - -## 2023-10-02 - -- Deployment updates: - - > - The SV name for the node operated by Digital Asset on DevNet has been updated. Note the updated SV name in `approved-sv-id-values-dev.yaml`: `Digital-Asset`. - > - The bucket configuration structure for the SV app and validator is now flattened. `projectId` and `bucketName` are now specified at the top level rather than in a `config` structure. - -- Frontend updates - - - The option to vote on enabled choices has been removed. This will be superseded by support for full Daml model upgrades. - -## 2023-09-25 - -- Frontend updates: - - > - New history view of past SVC governance votes and actions, listing separately "Action Needed", "In Progress", "Planned", "Executed" and "Rejected" votes. - > - Click on rows to review and vote on vote requests. - > - Filter vote requests by action name, requester and dates. - -- Bugfixes: - - > - When configured to operate a local domain node, the SV app now waits for the local CometBFT node to fully catch up before onboarding the local sequencer and mediator nodes. This leads to clearer log messages while the SV app is initializing and improves domain performance by avoiding spam caused by local sequencer nodes that are lagging behind during initialization. - -## 2023-09-11 - -- Deployment updates: - - > - Please note an SV rename from `sbi` to `SBI-Holdings`. - > - Please note an increase in database volume size from `80Gi` to `160Gi`. - -- Bugfixes: - - > - Fixed an issue where the UIs would incorrectly include an `undefined` scope to requests towards an OIDC provider. - -## 2023-09-04 - -- Deployment updates: - - > - Each SV node now participates in operating the global domain (`devnet` only) - > - A new helm chart was introduced, `global-domain` that will deploy a global domain node. This helm chart is currently required only on the `devnet` deployment. Follow the configuration instructions and the deployment instruction to also deploy the global-domain helm chart. Please note that the order of deployment of the helm charts has been updated and the helm charts must be applied in the new order. - > - Added a new value, `domain.enable` to the `sv-values.yaml`. This must be set to `true` only for the `devnet` deployment. The default value is `false`. Setting this to true will enable the usage of the components deployed as part of the global domain node and will make this SV node participate in operating the global domain. - -- Documentation: - - > - Configuring the SV node to participate in operating the global domain (`devnet` only) - > - Added new entry to Configuring the Helm Charts that details the changes required for the `global-domain-values.yaml` - > - Included the new helm chart `global-domain` in the Installing the Helm Charts section and updated the helm deploy ordering - > - Added new entry to Logging into the SV UI that explains how to check if the components of the `global-domain` helm chart were installed correctly. - -## 2023-08-28 - -- Frontend updates: - - > - The expiration of a vote request (VoteRequestTimeout) can be specified on the request level fulfilling the condition that the effective date of the coin configuration schedule change must be after the expiration. - > - Better vote requests concurrency management by preventing SVs to define coin configuration schedule effective at the same time. - -- Deployment updates: - - > - Introduced a new value, `isDevNet`, for the CometBFT Helm charts, which should be set to `true` only for the `devnet` deployment. This value is required to generate the proper CometBFT genesis file. The value has been added to the `cometbft-values.yaml` file, default to false. - > - The `foundingSvApiUrl` has been removed from `sv-values.yaml` and `validator-values.yaml`. - -- Jfrog Artifact API Keys will be deprecated during the second half of 2023. You will need to to update the passwords of both the helm repository and the k8s secret from an API key to an Identity Token. - - > - More information: [Introducing JFrog Access and Identity Tokens](https://jfrog.com/help/r/platform-api-key-deprecation-and-the-new-reference-tokens) - > - We suggest deleting the existing ones using `helm repo remove` and `kubectl delete secret` - -- Frontend updates: - - > - Retired the action to entirely replace the coin config schedule `SetConfigSchedule`. The governance actions to add/remove/modify individual scheduled coin config changes should be used instead. - > - Added the current CometBFT validator set to the CometBFT debug tab in the SV app - -- Documentation: - - > - Clarified under which conditions it is possible to recover from a participant identities backup, and that coin balances are only preserved across TestNet resets. - -## 2023-08-14 - -- SV and validator apps now fail earlier and with a more clear error message if the version of their node software mismatches the version on the cluster they are connecting to. - -- Deployment updates: - - > - The SV name for the node operated by Fiutur been updated. Note the updated SV name in `approved-sv-id-values-dev.yaml`: `Fiutur`. - -- Documentation: - - > - The list of approved SV members has been moved from the `sv-values.yaml` file into a separate config file. Two versions thereof exist now - one for TestNet-approved identities and the other for DevNet-approved ones. The instructions for deploying the `cn-sv-node` Helm chart have been updated to use this separate values file. - -- The validator service now automatically uploads the directory service Daml DAR package to its participant. End-users and bootstrap scripts no longer need to upload the directory app models explicitly. - -## 2023-08-07 - -- Frontend updates: - - > - Introduced new governance actions to add/remove/modify individual scheduled coin config changes. The existing UI for replacing the entire schedule will be deprecated in a coming release. - -- Deployment updates: - - > - Introduced a new value, `disableAllocateLedgerApiUserParty`, for validator Helm charts, which should be set to `true` for SV nodes. This prevents clashes between the Validator and SV apps. The runbook includes this value in a newly-introduced `sv-validator-values.yaml` file. - > - The SV name for the node operated by IEU on behalf of LCV has been updated. Note the updated SV name in `sv-values.yaml`: `Liberty-City-Ventures`. - > - Cumberland's name and public key have also been added in `sv-values.yaml`, to be included in the sv-app's configuration as another identity that should be approved to join the SVC on TestNet. - > - Removed the SV `cometbft.automationEnabled` option from `sv-values.yaml`. The automation is enabled by default and the CometBFT network is updated to reflect the current SV network. - -- Documentation: - - - Removed obsolete section on manually "Onboarding a SV". The subsections on generating SV and CometBFT identities have been moved into the Helm-based deployment section. - -- Bugfixes: - - > - Fix an issue where after a token refresh, ledger ingestion would not get restarted. - -## 2023-07-31 - -- Frontend updates: - - > - Enhanced the SetEnabledChoices Vote Request to modify the CoinRules Choices, providing increased configurability and control over the Coin. - > - Various Frontend improvements. - -- Bugfixes: - - > - Fixed issue where Scan UI showed future coin config changes as if they are current. - > - Fixed issue where Scan app did not aggregate the total coin balance correctly when balance was migrated across network upgrades. - > - Fixed issue where coin migrations were not appearing in the wallet transaction log. - > - Fixed issue where automation in SV app gets into a busy loop and the app becomes irresponsive. - > - Fixed issue where existing CometBFT nodes were breaking the creation of a new network. Nodes running an old version will not be able to join new networks until they are upgraded. Note that the CometBFT Helm chart now includes the version in the genesis chain ID in order to support that. - -- SV and validator apps will now exit with an error if the version of their node software mismatches the version on the cluster they are connecting to. - -- Documentation: - - > - Added a section `Renaming an SV` in the page "Kubernetes-Based Deployment of a Super Validator node" for step-by-step guide of renaming an SV. - -## 2023-07-16 - -- Deployment - - Ensured that both the `cn-cometbft` and `cn-postgres` charts support the `db.volumeSize` and `db.volumeStorageClass` values for configuring persistent storage. - - The three secrets, `cn-app-scan-ledger-api-auth`, `cn-app-directory-ledger-api-auth`, `cn-app-svc-ledger-api-auth` that were required before with dummy values, are no longer required. - - The `cn-postgres` and `cn-participant\`charts now require a non-empty \`postgresPassword` value to be set. The value templates includes a default value that you can modify to something more secure. - - The SV Helm runbook has been extended with a section that explains how to restore from a participant identities backup. - - The instructions for self hosted validators have been extended with a section that explains how to restore from a participant identities backup. - - The secrets `cn-app-sv1-validator-ledger-api-auth` and `cn-app-sv1-ledger-api-auth` are no longer required. - - The participant now requests 4 CPUs to improve behavior under load. - -- Frontend updates: - - Total coin balance in Scan UI now shows real data from the backend, and also reflects data from network inception and not only from the point the specific backend was created. Note that this holds only for total coin balance for now, not for all data in the Scan UI. - - Various SV UI improvements. - -## 2023-07-02 - -- The URL to scan in `validator-values.yaml` has changed to `https://scan.sv-1.svc.TARGET_CLUSTER.network.canton.global/api/v0/scan`. The `scanPort` field has been removed. - -- The `svSponsorAddress` from `validator-values.yaml` has been removed. The validator associated with an SV node is onboarded automatically through its SV node. - -- The request to the IAM to acquire a token is now made using content type `application/x-www-form-urlencoded` instead of `application/json`. This matches the OAuth standard and is compatible with a wider range of IAMs. No change is required if your IAM configuration was working previously. - -- The public keys of other super validators now need to be specified in the `approvedSvIdentities` section in `sv-values.yaml`. For TestNet launch these are: - - approvedSvIdentities: - - name: sbi - publicKey: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETM+CeyHvphl9RiPDKL3vVX7F+Qo4fIhJopmgU5B7IzkwSdFic20hFB6tnAuCTU+UBjqZgh8N/h9r+CTrXMPsRg== - - name: intellecteu-canton-da-test - publicKey: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr/iPpyuFu2U914tHyNUDuECT4/AYz9J+nLQRTC8m+95yQ6Y4Oah+Y3u3o5MK4a9D+qkoNGoG6ng0HcjA6TGKmw== - - name: Digital-Asset - publicKey: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsRRntNkOLF2Wh7JxV0rBQPgT+SendIjFLXKUXCrLbVHqomkypHQiZP8OgFMSlByOnr81fqiUt3G36LUpg/fmgA== - -- The SV node now supports domain fee top-ups in a network where domain fees are enabled. The `validator-values.yaml` file contains initial recommended values for those. - -- SV and validator operators are now asked to perform backups of participant identities data, to enable continuity across network resets. This is covered in a new section of the runbook. - -- The environment variable `CANTON_PARTICIPANT_USERS` defining the admin users to be allocated as part of participant bootstrapping is now a simple JSON array of strings, where each element is the name of another environment variable storing the name of the user to be allocated. - -- Frontend updates: - - - Coin configuration in Scan UI now shows real data from the backend. - - Domain Fees leaderboard in Scan UI now shows real data from the backend. - -## 2023-06-25 - -- Frontend updates: - - > - The SV web UI allows operators to create vote requests to propose future coin configurations. Others can vote on these. Once the majority is reached the new configurations will be applied at due times. - > - The SV web UI allows operators to create vote requests to propose a new SV Collective configuration. Others can vote on these. Once the majority is reached the new configuration is applied. - > - The SV web UI has a new tab to display the status of your sequencer and mediator. Note that the mediator and sequencer are not yet deployed as part of the runbook so you will see an error on the status page. - -- Deployment updates: - - > - The container for scan now accepts the address to the participant through the `CN_APP_SCAN_PARTICIPANT_ADDRESS` environment variable matching the SV app and the validator app. The helm charts set the right default so if you are using them, there is no need to configure anything. - > - The `audience` which defines the intended consumer of the token is now configurable in Participant, Validator app, Validator web UI, SV app, SV web UI and Directory web UI. - > - Validator apps and SV apps now configure the address of the founding SV app to allow for synchronization across nodes until all aspects of the BFT domain are robust under concurrent operations. - -- All CN apps now have `/readyz` and `/livez` endpoints which can be used for Kubernetes readiness and liveness probes. - -- Bugfixes - - - Fix a bug where the Directory UI does not connect correctly to the directory backend. - -## 2023-06-18 - -- Frontend updates: - - Super validators can now feature and unfeature an application provider in the governance tab. -- Deployment updates: - - The Canton Coin Scan app is now being deployed as part of the SV node in our runbook. See instructions for deploying the `cn-scan` Helm chart in Installing the Software, and two new required ingress rules in Configuring the Cluster Ingress. Section "Using the Canton Coin Scan UI" explains the UI. Note that not all fields in the Scan UI are hooked up to fetch data in the backend yet. Ones that should work at this point are the as-of round in the top-right corner, and the Validator and App leaderboards. - - A CometBft node is now being deployed as part of the SV node in our runbook. - - See instructions for generating a node identity in Generating the CometBft node identity. - - See instructions for configuring the required secrets with the node identity in Configuring your CometBft node keys - - See instructions for deploying the `cn-cometbft` Helm chart in Installing the Software, and the new required ingress rule in Configuring the Cluster Ingress. - - See instructions for verifying that your node is connected in Logging into the SV UI. - - NOTE: you now need to configure your ingress to accept connections from the other SVs, talk to your contact at DA for the current list of IPs to whitelist. - - The startup order for SV nodes has changed slightly: The SV app needs to be started before the validator app now. - - The Canton Name Service Directory UI is now being deployed as part of the SV node in our runbook. See instructions for deploying the `cn-validator` Helm chart in Installing the Software, and two new required ingress rules in Configuring the Cluster Ingress. Section Using the Canton Coin Directory UI explains the UI. By searching for a name in the UI, an SV operator can register the name on Canton name service if it is not yet registered. -- Removed the `svc-client` config parameter from the SV app. The SVC app is no longer used for SV onboarding and initialization. -- Auth0 tokens used in Ledger connections are renewed 2 minutes before they expire. -- The domain connection is now initiated by the validator and SV app instead of the participant bootstrap script which requires specifying it in the `globalDomainUrl` field in `sv-values.yaml` and `validator-values.yaml`. -- Bugfixes - - Fix a bug where the SV and validator app sometimes would stop observing ledger updates if the participant was down for a longer period of time and only recovered after a restart. - -## 2023-06-11 - -- Documentation: - - Fixed missing `service` level indentation in sample istio-gateway helm chart values in the ingress installation instructions - - Added `enableHealthProbes` to the participant Helm chart to allow operation on versions of Kubernetes \<1.24 that do not support gRPC readiness and liveness probes. - -## 2023-06-04 - -- Deployment updates: - - Docker images now use the same versioning scheme as helm charts: `..-snapshot.<commit_date>.<number_of_commits>.0.v<commit_sha_8>` -- Frontend updates: - - Reorganized the information tab in SV UI and included rules governing canton coin (e.g. fees) in SV UI. - - Added support for displaying details of governance vote requests, casting a vote, and updating a casted vote. -- Bugfixes - - Fixed the SV onboarding URL in the Helm runbook. It must be `https://sv.sv-1.svc.TARGET_CLUSTER.network.canton.global/api/v0/sv` rather than `https://sv-1.svc.TARGET_CLUSTER.network.canton.global/api/v0/sv`. - - Fixed an issue in last week’s release where the public/private SV keys were required in both the K8s secret and in `sv-values.yaml`. Now they only need to be specified through the secret. - - Fixed how the first round for which a new SV is eligible to receive SV rewards is determined. With the fix, SVs start receiving SV rewards starting from the next round that opens after that SV has joined, i.e., an SVs will not receive SV rewards for any of the rounds that have opened before the time it has joined. -- Deployment updates: - - The downloaded bundle now includes sample values files for the helm charts, and the instructions have been modified to list the required user-specific configuration changes required before using them. - - `auth.jwksEndpoint` value in the Helm values of the participant has been renamed to `auth.jwksUrl` to align with the other Helm charts, and the instructions for setting them have also been made more consistent. - -## 2023-05-28 - -- Deployment updates: - - `joinWithKeyOnboarding.keyName` in `sv-values.yaml` has been renamed to `onboardingName`. - - `svSponsorPort` in `validator-values.yaml` has been removed. The port is now included in `svSponsorAddress`. The default sponsor address has been changed to `https://sv.sv-1.svc.TARGET_CLUSTER.network.canton.global/api/v0/sv`. - - `sponsorApiPort` in `sv-values.yaml` has been removed. The port is now included in `sponsorApiUrl`. The default sponsor address has been changed to `https://sv.sv-1.svc.TARGET_CLUSTER.network.canton.global/api/v0/sv`. - - The SV private and public key are now stored in k8s secrets. - - Kubernetes [liveness](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-grpc-liveness-probe) and [readiness](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) probes are configured to probe the [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) of the participant node. - - The instructions for generating your SV keys now also work on MacOS. - - Ingress Helm charts and instructions have been rewritten to be simpler and are now based on Istio instead of Nginx. See Configuring the Cluster Ingress -- Add new `initial-coin-price-vote` config option to SV app - - for configuring an SV node to vote for a given coin price during initialization, if no coin price has been voted for by this SV node yet - - useful for persisting coin price vote preferences across cluster (re-)deployments -- SV UI: - - Added support for proposing a vote on an action, currently only on removing an SV member. -- Bugfixes - - DA's internal automated tests are now resilient to coin price changes allowing us to change coin price votes on DA’s SVs so votes from other SVs have an observable effect. - - Fix SV reward collection for cases in which an SV has been offline for an extended period of time. Previously, the collection of new rewards was blocked for a potentially very long time after restarting. - -## 2023-05-21 - -- Make the Kubernetes namespace for the SV node configurable in the Helm charts (now defaulting to `sv` in the runbook), see deployment using Helm. -- Features introduced to the SV UI: - - Set your desired coin price (price per round determined using median of all coin price votes by SVs) - - View currently open mining rounds, along with their coin prices -- Documentation improvements - - Extend and improve documentation for setting up authentication for SV nodes - - Add documentation for validator onboarding through SV UI -- Bugfixes - - Fix an issue where the validator and SV app were unable to pass the well known response from IAMs other than Auth0. - -## 2023-05-14 - -- Introduce a UI for the Super Validator operator, see SV Helm-Based Runbook. - - This UI currently allows the SV operator to see information about their SV party, and the rest of the SV collective. It allows allows the SV operator to onboard a validator by generating a validator onboarding secret (see the Self-Hosted Validator runbook for how that secret is then used by the validator operator). - -- Fix a bug where `cn-node` sometimes failed to start with a `ClassNotFoundException`. - -## 2023-05-07 - -- Add wallet UI for SV user to SV runbook. Instructions exist for deployment using Helm and local deployment (deprecated). This allows the SV operator to login to their wallet and e.g. observe SV rewards accumulating. -- Various simplifications and extensions of SV Helm-based runbook: - - Added instructions for setting up Auth0, and creating the corresponding k8s secrets. - - Consolidate namespaces. Everything other than docs now resides in the sv-1 namespace. - - Simplify the ingress setup. - -## 2023-04-30 - -- Helm chart deployment of a node connected to either `TestNet` or `DevNet`. Instructions here -- Helm chart deployment documentation online here. - -## 2023-04-23 - -- Initial Helm chart deployment of a standalone SV node. Instructions here - - -{/* COPIED_END */} \ No newline at end of file + - The default logger has been switched to use an asynchronous appender, for all the nodes, for better performance. The behavior can be switched back to synchronous logging by setting the environment variable `LOG_IMMEDIATE_FLUSH=true`. This now includes helm deployments \ No newline at end of file diff --git a/docs-main/reference-wallet.mdx b/docs-main/reference-wallet.mdx index e0641d8a..a1c5ae37 100644 --- a/docs-main/reference-wallet.mdx +++ b/docs-main/reference-wallet.mdx @@ -1,9 +1,3 @@ --- title: "Reference Wallet" ---- - -Release notes and version history for Reference Wallet. - -### 0.x.x - -- loreum ipsum \ No newline at end of file +--- \ No newline at end of file diff --git a/docs-main/splice-portfolio.mdx b/docs-main/splice-portfolio.mdx index fdc74b18..b01ac765 100644 --- a/docs-main/splice-portfolio.mdx +++ b/docs-main/splice-portfolio.mdx @@ -1,9 +1,3 @@ --- title: "Splice Portfolio" ---- - -Release notes and version history for Splice Portfolio. - -### 0.x.x - -- loreum ipsum \ No newline at end of file +--- \ No newline at end of file diff --git a/docs-main/wallet-gateway.mdx b/docs-main/wallet-gateway.mdx index b9f8bc4d..ae32efd0 100644 --- a/docs-main/wallet-gateway.mdx +++ b/docs-main/wallet-gateway.mdx @@ -1,13 +1,3 @@ --- -title: "Wallet Gateway " ---- - -Release notes and version history for Wallet Gateway. - -### 0.x.x - -- Added endpoint `POST /v0/wallet/development-fund-coupons/allocate` to allocate a development fund coupon for a given beneficiary, amount, expiration time, and reason. -- Added endpoint `GET /v0/wallet/development-fund-coupons` to retrieve all active DevelopmentFundCoupon contracts, sorted by expiration date. -- Added endpoint `POST /v0/wallet/development-fund-coupons/{contract_id}/withdraw` to withdraw a development fund coupon when the wallet user party is the development fund manager. -- Minting delegation management added to the wallet UI. -- Enhanced rewards collection automation to support collecting development fund coupons. \ No newline at end of file +title: "Wallet Gateway" +--- \ No newline at end of file diff --git a/docs-main/wallet-sdk.mdx b/docs-main/wallet-sdk.mdx new file mode 100644 index 00000000..c3e3daf7 --- /dev/null +++ b/docs-main/wallet-sdk.mdx @@ -0,0 +1,3 @@ +--- +title: "Wallet SDK" +--- \ No newline at end of file From d21b2422b582f8934ac3c39e2e62b1661edf9845 Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Wed, 13 May 2026 12:13:51 -0400 Subject: [PATCH 13/20] home page release notes --- docs-main/index.mdx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs-main/index.mdx b/docs-main/index.mdx index f45d73ed..9756f03e 100644 --- a/docs-main/index.mdx +++ b/docs-main/index.mdx @@ -32,16 +32,24 @@ mode: "center"
-### More Resources +### Release Notes - - - Review what you need to get started on a new project on DevNet. + + + Review the release details for the latest updates, enhancements, and bug fixes. - + Review the release details for the latest updates, enhancements, and bug fixes. + + +### More Resources + + + + Review what you need to get started on a new project on DevNet. + Getting help with Canton Network development and operations. From 030f100a86eea9107be9f6c83b28ff36551d01e6 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 16:16:23 +0000 Subject: [PATCH 14/20] Remove reference wallet and splice portfolio docs Mintlify-Source: dashboard-editor --- docs-main/docs.json | 2 -- docs-main/reference-wallet.mdx | 3 --- docs-main/splice-portfolio.mdx | 3 --- 3 files changed, 8 deletions(-) delete mode 100644 docs-main/reference-wallet.mdx delete mode 100644 docs-main/splice-portfolio.mdx diff --git a/docs-main/docs.json b/docs-main/docs.json index b2b85e8b..d88e34a7 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -1976,8 +1976,6 @@ "group": "Release Notes", "pages": [ "wallet-gateway", - "reference-wallet", - "splice-portfolio", "d-app-sdk", "wallet-sdk" ] diff --git a/docs-main/reference-wallet.mdx b/docs-main/reference-wallet.mdx deleted file mode 100644 index a1c5ae37..00000000 --- a/docs-main/reference-wallet.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: "Reference Wallet" ---- \ No newline at end of file diff --git a/docs-main/splice-portfolio.mdx b/docs-main/splice-portfolio.mdx deleted file mode 100644 index b01ac765..00000000 --- a/docs-main/splice-portfolio.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: "Splice Portfolio" ---- \ No newline at end of file From aeb814f2294636be7e1367d00ed979d6b2fc378c Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Wed, 13 May 2026 12:29:55 -0400 Subject: [PATCH 15/20] release notes structure --- docs-main/index.mdx | 4 ++-- .../release-notes/dapp-sdk.mdx} | 0 .../integrations/release-notes/wallet-gateway.mdx | 5 +++++ .../{ => integrations/release-notes}/wallet-sdk.mdx | 0 docs-main/release-notes.mdx | 13 ------------- docs-main/wallet-gateway.mdx | 3 --- 6 files changed, 7 insertions(+), 18 deletions(-) rename docs-main/{d-app-sdk.mdx => integrations/release-notes/dapp-sdk.mdx} (100%) create mode 100644 docs-main/integrations/release-notes/wallet-gateway.mdx rename docs-main/{ => integrations/release-notes}/wallet-sdk.mdx (100%) delete mode 100644 docs-main/release-notes.mdx delete mode 100644 docs-main/wallet-gateway.mdx diff --git a/docs-main/index.mdx b/docs-main/index.mdx index 9756f03e..363a7d76 100644 --- a/docs-main/index.mdx +++ b/docs-main/index.mdx @@ -35,11 +35,11 @@ mode: "center" ### Release Notes - + Review the release details for the latest updates, enhancements, and bug fixes. - + Review the release details for the latest updates, enhancements, and bug fixes. diff --git a/docs-main/d-app-sdk.mdx b/docs-main/integrations/release-notes/dapp-sdk.mdx similarity index 100% rename from docs-main/d-app-sdk.mdx rename to docs-main/integrations/release-notes/dapp-sdk.mdx diff --git a/docs-main/integrations/release-notes/wallet-gateway.mdx b/docs-main/integrations/release-notes/wallet-gateway.mdx new file mode 100644 index 00000000..9affe4e0 --- /dev/null +++ b/docs-main/integrations/release-notes/wallet-gateway.mdx @@ -0,0 +1,5 @@ +--- +title: "Wallet Gateway" +--- + +The current Wallet SDK Release Notes will be replaced to here instead. \ No newline at end of file diff --git a/docs-main/wallet-sdk.mdx b/docs-main/integrations/release-notes/wallet-sdk.mdx similarity index 100% rename from docs-main/wallet-sdk.mdx rename to docs-main/integrations/release-notes/wallet-sdk.mdx diff --git a/docs-main/release-notes.mdx b/docs-main/release-notes.mdx deleted file mode 100644 index 0bce9b98..00000000 --- a/docs-main/release-notes.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Release Notes" ---- - -hello - - -Review what you need to get started on a new project on DevNet. - - - -Review the release details for the latest updates, enhancements, and bug fixes. - diff --git a/docs-main/wallet-gateway.mdx b/docs-main/wallet-gateway.mdx deleted file mode 100644 index ae32efd0..00000000 --- a/docs-main/wallet-gateway.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: "Wallet Gateway" ---- \ No newline at end of file From 26619fa1fcf86330d03bc9173c46f09369dd3e4c Mon Sep 17 00:00:00 2001 From: katiepang-da Date: Wed, 13 May 2026 13:52:16 -0400 Subject: [PATCH 16/20] release notes page with proper routing url --- docs-main/docs.json | 9 ++++--- docs-main/index.mdx | 17 ++++--------- .../integrations/release-notes/dapp-sdk.mdx | 24 ++++++++++++++++-- .../release-notes/wallet-gateway.mdx | 20 ++++++++++++++- .../integrations/release-notes/wallet-sdk.mdx | 22 +++++++++++++++- docs-main/overview/release-notes.mdx | 25 +++++++++++++++++++ 6 files changed, 97 insertions(+), 20 deletions(-) create mode 100644 docs-main/overview/release-notes.mdx diff --git a/docs-main/docs.json b/docs-main/docs.json index d88e34a7..ab60dbff 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -135,7 +135,8 @@ "pages": [ "overview/understand/glossary", "shared/support-channels", - "shared/support-checklist" + "shared/support-checklist", + "overview/release-notes" ] } ] @@ -1975,9 +1976,9 @@ { "group": "Release Notes", "pages": [ - "wallet-gateway", - "d-app-sdk", - "wallet-sdk" + "integrations/release-notes/dapp-sdk", + "integrations/release-notes/wallet-gateway", + "integrations/release-notes/wallet-sdk" ] } ] diff --git a/docs-main/index.mdx b/docs-main/index.mdx index 363a7d76..7b293058 100644 --- a/docs-main/index.mdx +++ b/docs-main/index.mdx @@ -32,25 +32,18 @@ mode: "center" -### Release Notes - - - - Review the release details for the latest updates, enhancements, and bug fixes. - - - - Review the release details for the latest updates, enhancements, and bug fixes. - - ### More Resources - + Review what you need to get started on a new project on DevNet. + + Review the release details for the latest updates, enhancements, and bug fixes. + + Getting help with Canton Network development and operations. diff --git a/docs-main/integrations/release-notes/dapp-sdk.mdx b/docs-main/integrations/release-notes/dapp-sdk.mdx index e9f433a7..22b90a2f 100644 --- a/docs-main/integrations/release-notes/dapp-sdk.mdx +++ b/docs-main/integrations/release-notes/dapp-sdk.mdx @@ -1,3 +1,23 @@ --- -title: "dApp SDK" ---- \ No newline at end of file +title: "dAPP SDK" +--- + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \ No newline at end of file diff --git a/docs-main/integrations/release-notes/wallet-gateway.mdx b/docs-main/integrations/release-notes/wallet-gateway.mdx index 9affe4e0..decb115c 100644 --- a/docs-main/integrations/release-notes/wallet-gateway.mdx +++ b/docs-main/integrations/release-notes/wallet-gateway.mdx @@ -2,4 +2,22 @@ title: "Wallet Gateway" --- -The current Wallet SDK Release Notes will be replaced to here instead. \ No newline at end of file +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \ No newline at end of file diff --git a/docs-main/integrations/release-notes/wallet-sdk.mdx b/docs-main/integrations/release-notes/wallet-sdk.mdx index c3e3daf7..3b99e315 100644 --- a/docs-main/integrations/release-notes/wallet-sdk.mdx +++ b/docs-main/integrations/release-notes/wallet-sdk.mdx @@ -1,3 +1,23 @@ --- title: "Wallet SDK" ---- \ No newline at end of file +--- + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \ No newline at end of file diff --git a/docs-main/overview/release-notes.mdx b/docs-main/overview/release-notes.mdx new file mode 100644 index 00000000..cf5c3100 --- /dev/null +++ b/docs-main/overview/release-notes.mdx @@ -0,0 +1,25 @@ +--- +title: "Release Notes" +--- + +### Canton Network + + + Review the release details for the latest updates, enhancements, and bug fixes. + + + +### Wallet Integration + + + Review the release details for the latest updates, enhancements, and bug fixes. + + + + Review the release details for the latest updates, enhancements, and bug fixes. + + + + Review the release details for the latest updates, enhancements, and bug fixes. + + \ No newline at end of file From 8279f5c1d48349fe9a8d6a19e9d25c618a1ad6e1 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 19:04:11 +0000 Subject: [PATCH 17/20] Update release notes for Canton Network and Wallet Integration Mintlify-Source: dashboard-editor --- docs-main/overview/release-notes.mdx | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/docs-main/overview/release-notes.mdx b/docs-main/overview/release-notes.mdx index cf5c3100..d05a72ed 100644 --- a/docs-main/overview/release-notes.mdx +++ b/docs-main/overview/release-notes.mdx @@ -4,22 +4,31 @@ title: "Release Notes" ### Canton Network - - Review the release details for the latest updates, enhancements, and bug fixes. - - + + + + Review the release details for the latest updates, enhancements, and bug fixes. + + + + + Review the release details for Canton tools, including PQS, Daml Shell, Daml language, and more. + + + ### Wallet Integration + - Review the release details for the latest updates, enhancements, and bug fixes. + Review the release details for the latest updates, enhancements, and bug fixes. - Review the release details for the latest updates, enhancements, and bug fixes. + Review the release details for the latest updates, enhancements, and bug fixes. - Review the release details for the latest updates, enhancements, and bug fixes. + Review the release details for the latest updates, enhancements, and bug fixes. \ No newline at end of file From 2889b22159a53eff2163393df998b9dc18c1952e Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 19:06:21 +0000 Subject: [PATCH 18/20] Refactor Global Synchronizer release notes Mintlify-Source: dashboard-editor --- docs-main/docs.json | 3 ++- .../global-synchronizer/release-notes/canton.mdx | 11 +++++++++++ .../release-notes/{release-notes.mdx => splice.mdx} | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 docs-main/global-synchronizer/release-notes/canton.mdx rename docs-main/global-synchronizer/release-notes/{release-notes.mdx => splice.mdx} (99%) diff --git a/docs-main/docs.json b/docs-main/docs.json index 73d6fa40..98683c06 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -1931,7 +1931,8 @@ { "group": "Release Notes", "pages": [ - "global-synchronizer/release-notes/release-notes" + "global-synchronizer/release-notes/splice", + "global-synchronizer/release-notes/canton" ] } ] diff --git a/docs-main/global-synchronizer/release-notes/canton.mdx b/docs-main/global-synchronizer/release-notes/canton.mdx new file mode 100644 index 00000000..958a3b31 --- /dev/null +++ b/docs-main/global-synchronizer/release-notes/canton.mdx @@ -0,0 +1,11 @@ +--- +title: "Canton" +--- + +Release notes on all things Canton related including PQS, Daml Shell, Daml language, and more. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. + +Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \ No newline at end of file diff --git a/docs-main/global-synchronizer/release-notes/release-notes.mdx b/docs-main/global-synchronizer/release-notes/splice.mdx similarity index 99% rename from docs-main/global-synchronizer/release-notes/release-notes.mdx rename to docs-main/global-synchronizer/release-notes/splice.mdx index 006433ca..1dfb709d 100644 --- a/docs-main/global-synchronizer/release-notes/release-notes.mdx +++ b/docs-main/global-synchronizer/release-notes/splice.mdx @@ -1,5 +1,5 @@ --- -title: "Release Notes" +title: "Splice" description: "Release notes and version history for Global Synchronizer software" --- From 2a6ed51554cc9f610778a35cfaa96fd7436f220b Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 19:08:07 +0000 Subject: [PATCH 19/20] Update release notes links in overview Mintlify-Source: dashboard-editor --- docs-main/overview/release-notes.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-main/overview/release-notes.mdx b/docs-main/overview/release-notes.mdx index d05a72ed..762d5125 100644 --- a/docs-main/overview/release-notes.mdx +++ b/docs-main/overview/release-notes.mdx @@ -6,12 +6,12 @@ title: "Release Notes" - + Review the release details for the latest updates, enhancements, and bug fixes. - + Review the release details for Canton tools, including PQS, Daml Shell, Daml language, and more. From e6919ec146232c9b8320558b66e43f5f90b08c3c Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 19:09:02 +0000 Subject: [PATCH 20/20] Fix trailing slash in release notes description Mintlify-Source: dashboard-editor --- docs-main/overview/release-notes.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-main/overview/release-notes.mdx b/docs-main/overview/release-notes.mdx index 762d5125..f00bc07c 100644 --- a/docs-main/overview/release-notes.mdx +++ b/docs-main/overview/release-notes.mdx @@ -7,7 +7,7 @@ title: "Release Notes" - Review the release details for the latest updates, enhancements, and bug fixes. + Review the release details for the latest updates, enhancements, and bug fixes.\