Splice 0.4.4
This release contains two sets of Daml changes that build upon each other: Implement CIP-0064 - Delegateless Automation. These Daml changes requires an upgrade to the following Daml versions: Implement CIP-0066 - Mint…
- A newer release in the 0.4 line: Splice 0.4.25
- Newest Splice: Splice 0.9.4
Open the release notes (opens in a new tab)docs.canton.network
-
Daml
This release contains two sets of Daml changes that build upon each other:
-
Implement CIP-0064 - Delegateless Automation
These Daml changes requires an upgrade to the following Daml versions:
-
Implement CIP-0066 - Mint Canton Coin from Unminted/Unclaimed Pool and fix security issues and suggestions raised by Quantstamp as part of their audit of the Splice codebase. Note that the backend and frontend changes from CIP-0066 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
VoteRequestand updating theirAmuletPriceVoteto 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 valuevoteCooldownTimein theDsoRulesconfiguration 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
expiresAtis in the future in the choice body ofDsoRules_ExecuteConfirmedAction,DsoRules_AddConfirmedSv, andValidatorOnboarding_Match.
- checking that
-
CC-5 (low severity): addressed by
- requiring steps of a valid
SteppedRateto be strictly ascending - enforcing this validation on the
transferFeeinAmuletConfig - failing
chargeSteppedRateif a negative step is found
- requiring steps of a valid
-
S-2 (auditor suggestion): addressed by
- adding basic validation for all fields of
AmuletConfigto reduce the risk of misconfigurations - restricting the choice
AmuletRules_Mintto 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
doesLockExpireBeforeAmuletfunction - checking that
createdAtandratePerRoundof anExpiringAmountare positive; and enforcing that check in theexpiringAmountsmart constructor - checking that the
validatorRewardPercentageand theappRewardPercentagein a validIssuanceConfigare non-negative and do not exceed 100% - changing the
ensureclause ofMemberTrafficto enforce non-emptymemberIdandsynchronizerIdfields - enforcing a length limit of 280 characters on the
trackingIdofTransferOfferas a prudent engineering measure
- adding basic validation for all fields of
-
S-3 (auditor suggestion): addressed by
- calling
FeaturedAppRight_Withdrawin the implementation ofDsoRules_RevokeFeaturedAppRight - calling
Confirmation_Expirein the implementation ofDsoRules_ExpireStaleConfirmation
- calling
-
S-7 (auditor suggestion): addressed by checking the
dsoparty whenever executing a confirmed action. -
S-8 (auditor suggestion): addressed by
-
checking the expected
dsoparty on all calls to the helper methodsexerciseAppTransfer,exercisePaymentTransfer, andexerciseComputeFeesto safe-guard against a delegee providing an unexpectedAmuletRulescontract from anAmuletRulescontract with adsoparty under their control -
adding deprecation markers to the
ValidatorFaucetCoupontemplateAmuletRules_AddFutureAmuletConfigSchedule,AmuletRules_RemoveFutureAmuletConfigSchedule,AmuletRules_UpdateFutureAmuletConfigSchedulechoices that are deprecated in favor using aCRARC_SetConfiggovernance vote with effective datingDsoRules_RequestElection,DsoRules_ElectDsoDelegate, andDsoRules_ArchiveOutdatedElectionRequestchoices that are deprecated in favor of delegateless automation
-
clarifying that the
amuletRulesCidparameter ofDsoRules_AddConfirmedSvis a historical artifact
-
checking the expected
-
CC-1 (low severity): addressed by rate limiting every SV wrt casting votes on a
-
Implement CIP-0064 - Delegateless Automation
These Daml changes requires an upgrade to the following Daml versions:
-
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) where the token metadata name and acronym for Amulet were not populated based on the
splice-instance-namesconfig.
- Fix a bug (#1254) where the token metadata name and acronym for Amulet were not populated based on the
-
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/.
- 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.