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.
0.6.3
- Scan app
- The
app_activity_record_storetable 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 the0.5.18release will be deleted in order to support that. This impacts the data being served via the experimental fieldapp_activity_recordson the/v0/eventsand/v0/events/{update_id}endpoints. Specifically theapp_activity_recordsfield will not contain the data which has been provided for the events which happened between the0.5.18and this release. Note that theapp_activity_recordsdata 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/summaryendpoint that drops theaccumulated_holding_fees_unlocked,accumulated_holding_fees_locked,accumulated_holding_fees_total, andtotal_available_coinresponse fields and theas_of_roundrequest parameter, as those values are not meaningful aggregates. The same endpoint is also exposed on the validator scan-proxy. The/v0/holdings/summaryendpoint is now deprecated but remains available.
- The
- 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 - Fix an issue where onboarding a new SV could fail when importing the ACS snapshot due to a vetting issue.
- 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:
- SV deployment
- Update
participantAddressinscan-values.yamlandsv-validator-values.yamlto 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.
- Update
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
- 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:
- SV / Validator apps
- Hard Domain Migrations (HDMs) and HDM-based disaster recovery are no longer supported. In particular:
- the validator configuration
domain-migration-dump-pathwas 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.
- the validator configuration
- Updated the documentation to clarify that the
MIGRATION_IDwill 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.
- Hard Domain Migrations (HDMs) and HDM-based disaster recovery are no longer supported. In particular:
- 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.idfield 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 useSERIAL_IDfor addressing andMIGRATION_IDfor migration-specific configuration. For existing networks,SERIAL_IDmust initially be set to the current value ofMIGRATION_ID. Newly initialized networks start withSERIAL_ID=0. This also changed the name of the participant helm installation in the documentation, along with theparticipantAddressinsv-values.yaml. You can either reinstall the helm chart with the new name or ensure theparticipantAddressreflects the name of your helm chart installation. - Fixed a regression introduced in 0.6.1 where the
reloader.stakater.com/autoannotation was silently dropped from all Deployments rendered by the Splice helm charts, disabling the auto-reload behaviour regardless of theenableReloadervalue.
- 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
- 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-fromsetting 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
synchronizersvalue that replaces the previousdomainvalue. The new structure allows configuringcurrent,successor, andlegacysynchronizer nodes, each withsequencerPublicUrl,sequencerAddress,mediatorAddress, optionalsequencerPruningConfig,enableBftSequencer, and inlinecometBFT. Thesynchronizers.skipInitializationfield replacesdomain.skipInitialization. The previousdomainvalue is still accepted for backwards compatibility but cannot be combined withsynchronizers. We strongly recommend updating yoursv-values.yamlto use the newsynchronizersstructure, as thedomainvalue will be removed in a future release. Seehelm-sv-installfor the updated configuration instructions. - The Scan helm chart now supports a new
synchronizersvalue that replaces the previous top-levelsequencerAddress,mediatorAddress, andbftSequencersvalues. The new structure requiressynchronizers.current.sequencerandsynchronizers.current.mediator, and optionally supportssuccessorandlegacyentries with the same fields, as well as per-synchronizerbftSequencerConfig.p2pUrl. The previoussequencerAddressandmediatorAddressvalues are still accepted for backwards compatibility but cannot be combined withsynchronizers. We strongly recommend updating yourscan-values.yamlto use the newsynchronizersstructure, as the previous values will be removed in a future release. Seehelm-sv-installfor the updated configuration instructions.
- SV apps now support a
- 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/acshas been labeled as deprecated, and replaced by a newerPOST /v1/state/acs. The new/v1endpoint replaces the event ID in the response from/v0by 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.
- Added a new
- Validator
- The HTTP client used by the CN apps (Validator, Scan, SV, Wallet) now honours the standard
http.nonProxyHostsJava system property to bypass a configured HTTP forward proxy for specific hosts. This matches the JDK’s own defaultProxySelectorbehaviour, so the same property also applies to other JVM egress components. Seevalidator-http-proxy-composeandvalidator-http-proxy-helmfor configuration examples.
- The HTTP client used by the CN apps (Validator, Scan, SV, Wallet) now honours the standard
- LocalNet
- Added support for configuring the protocol version used in LocalNet.
- Participant
- Set
commitment-use-db-snapshot-for-participant-lookup = trueby default. If you manually set this, you can remove your overwrite.
- Set
- Daml
- Remove use of rollback nodes to support protocol version 35
AmuletRules. ReplaceInvalidTransferexceptions withfailWithStatus:ITR_InsufficientFunds→FailureStatuswith error_id =splice.lfdecentralizedtrust.org/insufficient-fundsITR_UnknownSynchronizer→FailureStatuswith error_id =splice.lfdecentralizedtrust.org/unknown-synchronizerITR_InsufficientTopupAmount→FailureStatuswith error_id =splice.lfdecentralizedtrust.org/insufficient-topup-amountITR_Other ("More than the maximum number of inputs")→FailureStatuswith error_id =splice.lfdecentralizedtrust.org/maximum-inputs-exceededITR_Other ("More than the maximum number of outputs")→FailureStatuswith error_id =splice.lfdecentralizedtrust.org/maximum-outputs-exceeded
WalletAppInstall_ExecuteBatch. No longer catches exceptions and returns them asAmuletOperationOutcome/COO_Error. Instead, the transaction is aborted.TransferCommand_Send. No longer catches exceptions and returns them asTransferCommandResultFailure. Instead, the transaction is aborted without merging inputs.DsoRules_CloseVoteRequestno longer catches exceptions. Previously, it would close the vote request with outcomeVRO_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
- Remove use of rollback nodes to support protocol version 35
0.5.18
- SV App
- A new optional configuration map
additionalPackagesToUnvetto 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.
- A new optional configuration map
- 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
enableReloadertofalsein 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.
- 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
- 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
- Canton Coin Activity
- 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/eventsand/v0/events/{update_id}endpoints now include thetraffic_summary(schema) andapp_activity_records(schema) fields.
- 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.
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_REFUSEDerrors when using BFT sequencer connections and request amplification has been addressed. Setcanton.sequencers.sequencer.sequencer-client.amplify-on-max-sequencing-time-too-fartofalseto restore previous behavior.- The
SequencerService.sendAsyncgRPC service will now returnSEQUENCER_MAX_SEQUENCING_TIME_TOO_FARinstead ofSEQUENCER_SUBMISSION_REQUEST_REFUSEDfor transactions with amaxSequencingTimetoo 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
- The Ledger JSON API
v2/package-vettingendpoint has been deprecated in favor of two new endpoints:v2/package-vetting/listandv2/package-vetting/update. These new endpoints are equivalent in functionality, but more compliant with HTTP specifications and tools.
- A cause of frequent
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
- 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:
- Scan
- Added a new
/v1/domains/{domain_id}/parties/{party_id}/participant-idendpoint that returns all participant IDs hosting a given party, supporting parties hosted on multiple participants. The previous/v0endpoint only supported single-participant hosting. - Added an optional
external_transaction_hashfield to the response ofGET /v1/updates/{update-id},GET /v2/updates/{update-id}, GET/v1/updates, and GET/v2/updatesendpoints. While currently not set, this field will eventually include the transaction hashes signed by external parties. - Experimental: Added an optional
app_activity_recordsfield to the response ofGET /v0/events/{update-id}andPOST /v0/eventsendpoints. 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.
- Added a new
- 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
globalsynchronizer is active. To enable the second synchronizer calledapp-synchronizer, start LocalNet with themulti-syncDocker Compose profile (--profile multi-sync). Theapp-providerandapp-userparticipant nodes are cross-connected to both synchronizers. Seemulti-sync-localnetfor details.
- LocalNet now supports running multiple synchronizers side by side for testing multi-synchronizer scenarios. By default, only the
0.5.16
- Daml
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
AmuletConfigto 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 choiceAmuletRules_ComputeFeesas it always returned 0. Application providers that statically link againstsplice-amuletwill need to remove usages of this choice when recompiling against the newsplice-amuletversion. - 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.
extraFeaturedAppRewardAmountcan no longer be set to a different value thanfeaturedAppActivityMarkerAmount. Both of those are currently set to $1.- The config schedule on
AmuletRulescan no longer containfutureValues. 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_Transferis 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.
TransferCommandis 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-sendand/v0/admin/external-party/transfer-preapproval/submit-sendwhich should be replaced by the Token Standard APIs.- Add missing validation of
svparty toDsoRules_ClaimExpiredRewards. - Add missing TransferInstruction_Update choice for AmuletTransferInstruction to support expiry.
- Add AmuletAllocation_DsoExpire choice to support expiry of expired allocations.
| 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
/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.seedUrlswere 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-fundpage to make active coupons visible to beneficiaries. Note: Beneficiaries cannot withdraw coupons. - Update
/development-fundpage warning messages to reflect beneficiary visibility on active and historical coupons.
- Extend the
- 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-poolflag 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.
- Remove the
- Scan
- Experimental: Add an optional
traffic_summaryfield to the response ofGET /v0/events/{update-id}andPOST /v0/eventsendpoints. 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.
- Experimental: Add an optional
- Wallet UI
- Introduce a new
/development-fundpanel 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
- Introduce a new
- Docs
- Add a new
development_fundpage documenting the Development Fund.
- Add a new
- Canton
- Fix the bug in the new topology client cache. It is recommended to remove the temporary additional flags
ADDITIONAL_CONFIG_DISABLE_NEW_TOPOLOGY_CLIENTset in your participants and mediators configurations.- JSON API: Synthetic
valuefields 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.
- JSON API: Synthetic
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_DARSor.appDarsin Helm were set.
- Prevent secrets from being logged at DEBUG level when the environment variable
- Canton
- Fix issue where sequencer startup could take more than 10 minutes.
- APIs:
- BREAKING The
/v2/updatesHTTP POST and websocket GET endpoints/v2/updates/flatsHTTP POST and websocket GET endpoints were incorrectly retuning LedgerEffects events (i.e.,CreatedEventandExercisedEvent). They are now corrected to return AcsDelta (flat) events (i.e.,CreatedEventandArchivedEvent).
GetUpdatesRequest.updateFormatnow 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.
- BREAKING The
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
.protofiles. 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).
- 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:
- 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-improvementsflag now defaults totrue - 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
maxInboundMessageSizeset toMaxIntinstead of the default 4MB (this will be improved in the future to use the dynamic synchronizer parametermaxRequestSize).
- Added
keep-alive-without-callsandidle-timeoutconfig values in the keep alive gRPC client configuration. See https://grpc.io/docs/guides/keepalive/#keepalive-configuration-specification for details. Note that whenkeep-alive-without-callsis enabled,permit-keep-alive-without-callsmust be enabled on the server side, andpermit-keep-alive-timeadjusted to allow for a potentially higher frequency of keep alives coming from the client.
- The
- 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
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 |
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:
- 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.subscribeandSequencerService.downloadTopologyStateForInitto manual control flow, so that the sequencer doesn’t crash with anOutOfMemoryErrorwhen 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.
- Switched the gRPC service
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
scanClientandsynchronizeras the new recommended way to configure scan and sequencer connections. Existing configuration optionsscanAddress,nonSvValidatorTrustSingleScan,decentralizedSynchronizerUrl,useSequencerConnectionsFromScanare still supported, but will be deprecated in a future release. We recommend migrating to the newscanClientandsynchronizerconfiguration options as soon as possible. Docker Compose-based deployments do not currently support the new custom configuration options.
- 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
- 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.
- Complete overhaul of the governance UI (formerly
0.5.11
- 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
trueby 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.
- 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
- Validator and SV app
- The
splice-util-batched-markersdar is now uploaded automatically.
- The
- Daml
- Optimize the number of views in the automation run by the SV app to convert
FeaturedAppActivityMarkercontracts intoAppRewardCouponcontracts. - Support weighting of featured app markers. This can be used through the new
BatchedMarkersProxy_CreateMarkersV2orFeaturedAppRight_CreateActivityMarkerV2choice in the newsplice-api-featured-app-v2package. 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 toname 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
- Optimize the number of views in the automation run by the SV app to convert
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
INFOlevel by default instead ofDEBUG. In case you do want to change this, export theLOG_LEVELenvironment variable before running./start.sh. e.g.,export LOG_LEVEL="DEBUG"; ./start.sh.
- SV app
- Add a new trigger,
ExpiredDevelopmentFundCouponTriggerfor expiring development fund coupons.
- Add a new trigger,
- 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-markerspackage that provides support for creating a batch ofFeaturedAppActivityMarkersin 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.
- Add a
0.5.9
- Scan
canton.scan-apps.scan-app.acs-store-descriptor-user-versionandcanton.scan-apps.scan-app.tx-log-store-descriptor-user-versionconfiguration settings have been added to set auser-version, respectively for the ACS and TxLog store. Modifying theuser-versionwipes 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-couponsto 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-walletpackage:- 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 |
- MintingDelegationProposal: Represents a proposal from beneficiary to the delegate to create a
- New templates have been added in the
- Implement minting delegation described as part of CIP-0073 - Weighted Validator Liveness Rewards for SV-Chosen Parties. See the minting delegations section for details.
- Wallet
- Added a new internal endpoint
POST /v0/wallet/development-fund-coupons/allocateto allocate a development fund coupon for a given beneficiary, amount, expiration time, and reason. - Added a new internal endpoint
GET /v0/wallet/development-fund-couponsto 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}/withdrawto 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.
- Added a new internal endpoint
- Validator
- Automation has been added to perform minting for hosted external-parties if they have an active
MintingDelegationcontract with an internal party.
- Automation has been added to perform minting for hosted external-parties if they have an active
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-balanceand/v0/wallet-balanceendpoints have been removed in favor of using /registry/metadata/v1/instruments/ and /v0/holdings/summary, respectively.
- deprecated
- 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
- 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