Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.canton.network/llms.txt

Use this file to discover all available pages before exploring further.

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:
      nameversion
      amulet0.1.15
      amuletNameService0.1.16
      dsoGovernance0.1.21
      validatorLifecycle0.1.6
      wallet0.1.15
      walletPayments0.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.

0.6.2

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
      • /v0/synchronizer-identities/{domain_id_prefix}
      • /v0/synchronizer-bootstrapping-transactions/{domain_id_prefix}
      • /v0/aggregated-rounds
      • /v0/round-totals
      • /v0/round-party-totals
      • /v0/amulet-config-for-round
      • /v0/round-of-latest-data
      • /v0/rewards-collected
      • /v0/top-providers-by-app-rewards
      • /v0/top-validators-by-validator-rewards
      • /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.
    • 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

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 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.
  • 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_InsufficientFundsFailureStatus with error_id = splice.lfdecentralizedtrust.org/insufficient-funds
        • ITR_UnknownSynchronizerFailureStatus with error_id = splice.lfdecentralizedtrust.org/unknown-synchronizer
        • ITR_InsufficientTopupAmountFailureStatus 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:
      nameversion
      amulet0.1.18
      amuletNameService0.1.19
      dsoGovernance0.1.24
      validatorLifecycle0.1.7
      wallet0.1.19
      walletPayments0.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 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. The responses from the /v0/events and /v0/events/{update_id} endpoints now include the traffic_summary (schema) and app_activity_records (schema) fields.
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.
  • 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:
      nameversion
      amulet0.1.14
      amuletNameService0.1.14
      dsoGovernance0.1.19
      validatorLifecycle0.1.5
      wallet0.1.14
      walletPayments0.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. This has no functional effect as CIP 78 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.
    • 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:
nameversion
amulet0.1.17
amuletNameService0.1.18
dsoGovernance0.1.23
validatorLifecycle0.1.6
wallet0.1.18
walletPayments0.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.
  • 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, which caused incorrect detection of cgroup controllers on cgroupv2 hosts, potentially leading to the JVM ignoring container memory and CPU limits.

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 and CIP-0100 for context).
    • The panel includes:
      • Display of total available Development Fund balance
      • Allocation form for Development Fund coupons (Development Fund Manager only)
      • Unclaimed allocations table with withdrawal support
      • Coupon history with lifecycle event tracking (claimed, withdrawn, rejected, expired)
    • Role-based behavior is enforced:
      • 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

  • Participant
    • Increase default retention parameters of the session encryption keys cache. Most notably, increase the lifetime of session encryption keys from 10 minutes to 1 hour, to improve performance and reduce (KMS) costs throughout the network. This change has no practical security implication for participants that are not using an external KMS: in this case the main (asymmetric) encryption keys are usually already available in memory (in addition to being stored inside the participant database). We encourage operators of KMS-enabled participants to review the updated sections on KMS usage for validator participants and SV participants for more pointers about the security impact of session key caching and ways to tweak the relevant parameters to individual needs.
  • SV app
    • Improve the automation for converting featured app activity markers to handle batches of markers for nodes that have not vetted the same version of the amulet package.
  • Validator app
    • Prevent secrets from being logged at DEBUG level when the environment variable SPLICE_APP_DARS or .appDars in Helm were set.
  • Canton
    • Fix issue where sequencer startup could take more than 10 minutes.
    • APIs:
      • 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

  • 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.
  • 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).
      • 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 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 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.
ConfigDefaultValue
keep-alive-without-callsfalse
idle-timeout30 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, AWS NLB, GCP. Example: Participant config:
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:
# 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
  • 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 <node>.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) 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
    • The wallet UI transaction history now uses the current amulet conversion rate to convert amounts instead of the historic one to reduce maintenance overhead.
  • Scan UI
    • The scan UI transaction history now uses the current amulet conversion rate to convert amounts instead of the historic one to reduce maintenance overhead.
  • SV UI
    • Complete overhaul of the governance UI (formerly /governance-beta, now /governance). The old UI is still accessible under /governance-old.

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.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.
  • 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.
  • 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
      nameversion
      amulet0.1.16
      amuletNameService0.1.17
      dsoGovernance0.1.22
      validatorLifecycle0.1.6
      wallet0.1.17
      walletPayments0.1.16

0.5.10

  • Deployment
    • postgres-exporter: disabled exporting the settings table, to workaround an issue of postgres-exporter.
    • Splice apps and Canton components deployed via Docker compose now log at INFO level by default instead of DEBUG. In case you do want to change this, export the LOG_LEVEL environment variable before running ./start.sh. e.g., export LOG_LEVEL="DEBUG"; ./start.sh.
  • SV app
    • Add a new trigger, ExpiredDevelopmentFundCouponTrigger for expiring development fund coupons.
  • Wallet UI
    • Remove the provider field from transaction history.
  • Scan UI
    • Remove the provider field from transaction history. The updates API continues to expose it.
  • Daml
    • Add a splice-util-batched-markers package that provides support for creating a batch of FeaturedAppActivityMarkers in a transaction with a single view, which is more efficient to process. Note that this package is not yet uploaded automatically to validator (or super validator) nodes. See the package docs for more details.

0.5.9

  • Scan
    • canton.scan-apps.scan-app.acs-store-descriptor-user-version and canton.scan-apps.scan-app.tx-log-store-descriptor-user-version configuration settings have been added to set a user-version, respectively for the ACS and TxLog store. Modifying the user-version wipes the respective store and triggers re-ingestion. See the SV Operations docs for more details.
    • 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. 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 |
  • 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.
    • Added a new internal 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.
    • Support for managing minting delegation has been added to the wallet UI. See the minting delegations section for details.
    • Enhanced the rewards collection automation to support collecting development fund coupons.
  • Validator
    • Automation has been added to perform minting for hosted external-parties if they have an active MintingDelegation contract with an internal party.

0.5.8

Note: 0.5.7 introduced a significant performance regression related to the processing of topology transactions on participants, mediators, and sequencers. Please skip 0.5.7 and upgrade directly to 0.5.8.
  • Canton
    • Fix performance regression related to the processing of topology transactions.
    • Improve performance of some queries that are used in participant pruning. The fix includes a database migration which can take up to 2min but should be faster on most participants.
  • Scan
    • deprecated /v0/total-amulet-balance and /v0/wallet-balance endpoints have been removed in favor of using /registry/metadata/v1/instruments/ 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