Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
6c8b68a
WIP of user-of-allocations code
jonored Jul 14, 2026
63a9f45
WIP: Potentially fix some errors/imports
dbzguy56 Jul 14, 2026
082ca6f
WIP correct some more fields and functions
dbzguy56 Jul 14, 2026
dcd3af3
WIP fixing type errors in AggregageLock.daml
dbzguy56 Jul 14, 2026
5b42656
WIP: externally-defined governance lock implementation using V2 alloc…
jonored Jul 15, 2026
101c58b
WIP: Converting Vesting state to use the V2 Allocations
dbzguy56 Jul 15, 2026
cbf22de
WIP Fixing withdrawing from VestingLock choice
dbzguy56 Jul 16, 2026
fd4c8a7
WIP: Test for lock-to-aggregate and unlock, and bug fixes.
jonored Jul 20, 2026
9de20ca
Merge remote-tracking branch 'public/jg/cip-0105-externally-implement…
jonored Jul 20, 2026
29e569e
fix tests
jonored Jul 20, 2026
7e1be84
WIP Start adding VestingLock Testing
dbzguy56 Jul 20, 2026
661fbe5
WIP Flush out vestingUnlock tests more
dbzguy56 Jul 21, 2026
f722c80
Finish basic happy test for vestingUnlock
dbzguy56 Jul 21, 2026
457febe
Move passTime within vesting happy path test
dbzguy56 Jul 21, 2026
973c20c
Merge pull request #3 from obsidiansystems/dpak/cip-105-v2-vesting
dbzguy56 Jul 21, 2026
15dfa70
Add a script which constructs a fake single package for speeding up d…
cgibbard Jul 22, 2026
e4e35f7
Fix some issues related to PR comments for VestingLock
dbzguy56 Jul 22, 2026
2bd6b3d
Merge pull request #4 from obsidiansystems/dpak/cip-105-v2-vesting
dbzguy56 Jul 23, 2026
4b29e95
Address some CIP-0105 PR comments
dbzguy56 Jul 24, 2026
ab15810
Move LSU cancellation endpoint behind operator auth (#6555)
nicu-da Jul 27, 2026
0d4accf
Remove scan transactions endpoint (#6561)
moritzkiefer-da Jul 27, 2026
f1a3d4e
Add accept-language in pekko ignore-illegal-header (#6566)
julientinguely-da Jul 27, 2026
b5936f2
Add a script which constructs a fake single package for speeding up d…
cgibbard Jul 27, 2026
91bdc7a
Remove CC txlog parsing from Scan (#6551)
moritzkiefer-da Jul 27, 2026
3daaaa3
Disable transfer command support by default (#6567)
moritzkiefer-da Jul 27, 2026
cb4f83b
Update sbt to 1.12.14. (#6474)
mrdziuban Jul 27, 2026
63904cf
Specify set of valid response content types (#6535)
mrdziuban Jul 27, 2026
76bf6d1
Merge pull request #5 from obsidiansystems/dpak/cip-105-v2-vesting
cgibbard Jul 27, 2026
c0da78d
Revert "Add a script which constructs a fake single package for speed…
cgibbard Jul 27, 2026
b49c176
Merge remote-tracking branch 'origin/main' into jg/cip-0105-externall…
cgibbard Jul 27, 2026
bde618e
WIP: hook the withdraw-like operations to withdraw.
jonored Jul 28, 2026
0f752f1
Fixes to rebase and update tests
cgibbard Jul 28, 2026
f312c8a
Fix tests and a couple bugs in vesting withdraw.
jonored Jul 28, 2026
d601e0e
Fixes and test updates.
jonored Jul 28, 2026
6dd81b3
Check executors in isValid checks.
jonored Jul 29, 2026
7d5a0ea
Remove commented out AggregateLock template.
jonored Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.deployment_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Setup
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: deployment_test
with_sbt: false

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
id: setup
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: docs
save_nix_cache: true
save_nix_cache_to_gcp: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
Expand All @@ -48,7 +48,7 @@ jobs:
- name: Post-SBT job
uses: ./.github/actions/sbt/post_sbt
with:
cache_version: 8
cache_version: 9
setup_sbt_cache_hits: ${{ steps.setup.outputs.sbt_cache_hits }}

- name: Report Failures on Slack & Github
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.scala_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ jobs:
- name: Run Tests
uses: ./.github/actions/tests/scala_test
with:
cache_version: 8
cache_version: 9
with_canton: ${{ inputs.with_canton }}
start_canton_options: ${{ inputs.start_canton_options }}
test_suite_name: ${{ inputs.test_name }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.scala_test_for_compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
- name: Run Tests
uses: ./.github/actions/tests/scala_test
with:
cache_version: 8
cache_version: 9
start_canton_options: ${{ inputs.start_canton_options }}
test_suite_name: ${{ inputs.test_name }}
test_names: ${{ needs.split_tests.outputs.test_names }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.scala_test_with_cometbft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
- name: Run Tests
uses: ./.github/actions/tests/scala_test
with:
cache_version: 8
cache_version: 9
start_canton_options: -F -w
test_suite_name: ${{ inputs.test_name }}
test_names: ${{ needs.split_tests.outputs.test_names }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.static_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
- name: Setup Nix
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: canton_consistency
target: 'static_tests'

Expand Down Expand Up @@ -84,7 +84,7 @@ jobs:
id: setup
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: static_tests
target: 'static_tests'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.ts_cli_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
if: steps.skip.outputs.skip != 'true'
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: ts_cli

- name: Run Token Standard CLI tests
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.ui_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
if: steps.skip.outputs.skip != 'true'
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: ui_tests

- name: Run UI tests
Expand All @@ -62,7 +62,7 @@ jobs:
if: steps.skip.outputs.skip != 'true'
uses: ./.github/actions/sbt/post_sbt
with:
cache_version: 8
cache_version: 9
setup_sbt_cache_hits: ${{ steps.setup.outputs.sbt_cache_hits }}

- name: Upload logs
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/bump_gha_runner_version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
- name: Set up Nix (Self hosted)
uses: ./.github/actions/nix/setup_nix
with:
cache_version: 8
cache_version: 9
target: default

- name: Check for the latest version and create a PR to splice
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/performance_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
id: setup
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: ingestion_performance_tests

# Authenticate to GCP for read access to GCS
Expand Down Expand Up @@ -137,7 +137,7 @@ jobs:
id: setup
uses: ./.github/actions/tests/common_test_setup
with:
cache_version: 8
cache_version: 9
test_name: read_performance_tests

# Authenticate to GCP for read access to GCS
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr_check_github_scripts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- name: Set up Nix
uses: ./.github/actions/nix/setup_nix
with:
cache_version: 8
cache_version: 9
- name: Check github scripts
uses: ./.github/actions/nix/run_bash_command_in_nix
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ _build/
**/metals.sbt
**/.scala-build/*

daml/daml-ide-mono/daml/
daml/daml-ide-mono/.vscode/
.vscode/*
!.vscode/settings.json
# Make sure test files are checkedin
Expand Down
3 changes: 2 additions & 1 deletion apps/app/src/main/resources/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
pekko.http.server.request-timeout = 38 seconds
pekko.http.server.parsing.error-handler="org.lfdecentralizedtrust.splice.http.PekkoHttpParsingErrorHandler$"
pekko.http.server.parsing.ignore-illegal-header-for =
[ "authorization"
[ "accept-language"
"authorization"
"cookie"
"origin"
"proxy-authorization"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -368,20 +368,6 @@ abstract class ScanAppReference(
httpCommand(HttpScanAppClient.GetRewardAccountingBatch(roundNumber, batchHash))
}

import org.lfdecentralizedtrust.splice.http.v0.definitions.TransactionHistoryResponseItem
import org.lfdecentralizedtrust.splice.http.v0.definitions.TransactionHistoryRequest.SortOrder

def listTransactions(
pageEndEventId: Option[String],
sortOrder: SortOrder,
pageSize: Int,
): Seq[TransactionHistoryResponseItem] =
consoleEnvironment.run {
httpCommand(
HttpScanAppClient.ListTransactions(pageEndEventId, sortOrder, pageSize)
)
}

def getAcsSnapshot(party: PartyId, recordTime: Option[Instant]): ByteString =
consoleEnvironment.run {
httpCommand(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ abstract class SvAppReference(
@Help.Summary("Cancel a running logical synchronizer upgrade by removing its LSU announcement")
def cancelLogicalSynchronizerUpgrade(): Unit =
consoleEnvironment.run {
httpCommand(HttpSvAdminAppClient.CancelLogicalSynchronizerUpgrade())
httpCommand(HttpSvOperatorAppClient.CancelLogicalSynchronizerUpgrade())
}

@Help.Summary("Get identities of all domain node components")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,13 @@ case class EnvironmentDefinition(
)
}

def withTransferCommandSupport: EnvironmentDefinition =
this.addConfigTransform((_, conf) =>
ConfigTransforms.updateAllValidatorAppConfigs_(
_.copy(enableDeprecatedTransferCommandSupport = true)
)(conf)
)

def clearConfigTransforms(): EnvironmentDefinition =
copy(configTransformsWithContext = _ => Seq())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ class ExternalPartySetupProposalIntegrationTest
NonNegativeFiniteDuration.ofMillis(500)
)(config),
)
.withTransferCommandSupport

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ trait ExternallySignedTxTest

override def environmentDefinition: SpliceEnvironmentDefinition = {
EnvironmentDefinition.simpleTopology1Sv(this.getClass.getSimpleName)
}
}.withTransferCommandSupport

def prepareAndSubmitTransfer(keyName: String, sender: PartyId, receiver: PartyId)(implicit
env: SpliceTestConsoleEnvironment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class ExternallySignedTxsTimeBasedIntegrationTest
override def environmentDefinition: SpliceEnvironmentDefinition =
EnvironmentDefinition
.simpleTopology1SvWithSimTime(this.getClass.getSimpleName)
.withTransferCommandSupport

"Externally signed transactions can tolerate a preparation/submission skew larger than ledgerTimeRecordTimeTolerance" in {
implicit env =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import org.lfdecentralizedtrust.splice.environment.{
SequencerAdminConnection,
}
import org.lfdecentralizedtrust.splice.http.v0.definitions
import org.lfdecentralizedtrust.splice.http.v0.definitions.TransactionHistoryRequest
import org.lfdecentralizedtrust.splice.integration.EnvironmentDefinition
import org.lfdecentralizedtrust.splice.integration.tests.SpliceTests.{
IntegrationTest,
Expand Down Expand Up @@ -204,6 +203,7 @@ class LsuIntegrationTest
.withSvBftSequencerConnectionDisabled()
.withAmuletPrice(walletAmuletPrice)
.withManualStart
.withTransferCommandSupport

override def walletAmuletPrice: java.math.BigDecimal = SpliceUtil.damlDecimal(1.0)

Expand Down Expand Up @@ -373,14 +373,13 @@ class LsuIntegrationTest
initDso(includeLocal = false)
startAllSync(aliceValidatorBackend, splitwellValidatorBackend)
actAndCheck("Create some transaction history", sv1WalletClient.tap(1337))(
"Scan transaction history is recorded and wallet balance is updated",
"Wallet balance is updated",
_ => {
// buffer to account for domain fee payments
assertInRange(
sv1WalletClient.balance().unlockedQty,
(walletUsdToAmulet(1000), walletUsdToAmulet(2000)),
)
countTapsFromScan(sv1ScanBackend, walletUsdToAmulet(1337)) shouldBe 1
},
)

Expand Down Expand Up @@ -962,16 +961,6 @@ class LsuIntegrationTest
retryProvider,
)

private def countTapsFromScan(scan: ScanAppBackendReference, tapAmount: BigDecimal) = {
listTransactionsFromScan(scan).count(
_.tap.map(a => BigDecimal(a.amuletAmount)).contains(tapAmount)
)
}

private def listTransactionsFromScan(scan: ScanAppBackendReference) = {
scan.listTransactions(None, TransactionHistoryRequest.SortOrder.Asc, 100)
}

private def getSequencerUrlsConfiguredForTheSync(
participantConnection: ParticipantClientReference,
synchronizerAlias: SynchronizerAlias,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package org.lfdecentralizedtrust.splice.integration.tests

import com.digitalasset.canton.topology.transaction.*
import org.lfdecentralizedtrust.splice.http.v0.definitions.TransactionHistoryRequest
import org.lfdecentralizedtrust.splice.integration.EnvironmentDefinition
import org.lfdecentralizedtrust.splice.integration.tests.SpliceTests.IntegrationTest
import org.lfdecentralizedtrust.splice.util.WalletTestUtil
import org.lfdecentralizedtrust.splice.store.Limit

import java.nio.file.Files
import java.util.UUID
Expand Down Expand Up @@ -212,19 +210,8 @@ class MultiHostValidatorOperatorIntegrationTest extends IntegrationTest with Wal
)(
"The send succeeds despite alice's validator being disconnected and stopped",
_ => {
// Fees eat up quite a bit
splitwellWalletClient.balance().unlockedQty should be(60)
// Alice's wallet is stopped, so we confirm the transaction via scan
sv1ScanBackend
.listTransactions(
None,
TransactionHistoryRequest.SortOrder.Desc,
Limit.DefaultMaxPageSize,
)
.flatMap(_.transfer)
.filter(tf =>
tf.description == transferDescription
) should not be empty withClue "transfers splitwell to alice"
// don't check on alice's wallet as it's stopped. the transaction going through on splitwell is enough signal.
},
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class RecoverExternalPartyIntegrationTest
with WalletTestUtil {

override def environmentDefinition: EnvironmentDefinition =
EnvironmentDefinition.simpleTopology1Sv(this.getClass.getSimpleName)
EnvironmentDefinition.simpleTopology1Sv(this.getClass.getSimpleName).withTransferCommandSupport

override protected lazy val sanityChecksIgnoredRootCreates = Seq(
ValidatorRewardCoupon.TEMPLATE_ID_WITH_PACKAGE_ID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import org.lfdecentralizedtrust.splice.environment.{
MediatorAdminConnection,
SequencerAdminConnection,
}
import org.lfdecentralizedtrust.splice.http.v0.definitions.TransactionHistoryRequest
import monocle.macros.syntax.lens.*
import org.lfdecentralizedtrust.splice.integration.EnvironmentDefinition
import org.lfdecentralizedtrust.splice.integration.tests.SpliceTests.IntegrationTest
Expand Down Expand Up @@ -164,14 +163,13 @@ class RollForwardLsuIntegrationTest
startAllSync(allNodes*)

actAndCheck("Create some transaction history", sv1WalletClient.tap(1337))(
"Scan transaction history is recorded and wallet balance is updated",
"Wallet balance is updated",
_ => {
// buffer to account for domain fee payments
assertInRange(
sv1WalletClient.balance().unlockedQty,
(walletUsdToAmulet(1000), walletUsdToAmulet(2000)),
)
countTapsFromScan(sv1ScanBackend, walletUsdToAmulet(1337)) shouldBe 1
},
)

Expand Down Expand Up @@ -429,16 +427,6 @@ class RollForwardLsuIntegrationTest
retryProvider,
)

private def countTapsFromScan(scan: ScanAppBackendReference, tapAmount: BigDecimal) = {
listTransactionsFromScan(scan).count(
_.tap.map(a => BigDecimal(a.amuletAmount)).contains(tapAmount)
)
}

private def listTransactionsFromScan(scan: ScanAppBackendReference) = {
scan.listTransactions(None, TransactionHistoryRequest.SortOrder.Asc, 100)
}

private def getSequencerUrlSet(
participantConnection: ParticipantClientReference,
synchronizerAlias: SynchronizerAlias,
Expand Down
Loading
Loading