From 81f734abc688eb0bbb0aae800a3af91aa717e67e Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Mon, 11 May 2026 15:41:15 +0200 Subject: [PATCH 1/9] feat: multi-sync example (example 15) Signed-off-by: vkalashnykov --- .github/actions/setup_canton/action.yml | 13 +- .github/workflows/build.yml | 68 +- .github/workflows/examples-under-stress.yml | 2 +- .github/workflows/stress-tests.yml | 2 +- canton/multi-sync/app-synchronizer.sc | 76 +-- .../examples/package.json | 2 + .../examples/scripts/15-multi-sync/README.md | 246 +++++++ .../examples/scripts/15-multi-sync/_config.ts | 18 + .../examples/scripts/15-multi-sync/_setup.ts | 259 +++++++ .../scripts/15-multi-sync/_trade_ops.ts | 640 ++++++++++++++++++ .../examples/scripts/15-multi-sync/index.ts | 110 +++ .../splice-test-token-v1-1.0.0.dar | Bin 0 -> 488833 bytes .../examples/scripts/utils/acs-logger.ts | 162 +++++ .../examples/scripts/utils/dar.ts | 22 + .../examples/scripts/utils/index.ts | 5 + package.json | 1 + scripts/src/start-localnet.ts | 50 +- scripts/src/test-example-scripts.ts | 6 +- scripts/src/test-multi-sync-scripts.ts | 112 +++ sdk/wallet-sdk/src/wallet/common.ts | 34 + .../src/wallet/namespace/ledger/dar/client.ts | 1 + .../wallet/namespace/ledger/dar/vetting.ts | 46 ++ .../wallet/namespace/ledger/internal/index.ts | 92 +++ .../src/wallet/namespace/ledger/namespace.ts | 4 +- .../namespace/party/external/service.ts | 21 +- .../wallet/namespace/party/external/signed.ts | 37 +- .../src/wallet/namespace/state/client.ts | 61 ++ .../src/wallet/namespace/state/index.ts | 4 + sdk/wallet-sdk/src/wallet/sdk.ts | 10 +- yarn.lock | 1 + 30 files changed, 2018 insertions(+), 87 deletions(-) create mode 100644 docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md create mode 100644 docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts create mode 100644 docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts create mode 100644 docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts create mode 100644 docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts create mode 100644 docs/wallet-integration-guide/examples/scripts/15-multi-sync/splice-test-token-v1-1.0.0.dar create mode 100644 docs/wallet-integration-guide/examples/scripts/utils/acs-logger.ts create mode 100644 docs/wallet-integration-guide/examples/scripts/utils/dar.ts create mode 100644 scripts/src/test-multi-sync-scripts.ts create mode 100644 sdk/wallet-sdk/src/wallet/namespace/ledger/dar/vetting.ts create mode 100644 sdk/wallet-sdk/src/wallet/namespace/state/client.ts create mode 100644 sdk/wallet-sdk/src/wallet/namespace/state/index.ts diff --git a/.github/actions/setup_canton/action.yml b/.github/actions/setup_canton/action.yml index 2b684e3ce..ad5318889 100644 --- a/.github/actions/setup_canton/action.yml +++ b/.github/actions/setup_canton/action.yml @@ -7,6 +7,10 @@ inputs: instance: description: 'Instance type: canton or localnet' required: true + multi-sync: + description: 'Start localnet with --profile multi-sync' + required: false + default: 'false' runs: using: 'composite' steps: @@ -101,11 +105,16 @@ runs: cat "$LOGFILE" exit 1 ' - + # TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well - name: Start Localnet if: inputs.instance == 'localnet' shell: bash - run: yarn start:localnet -- --network=${{ inputs.network }} + run: | + MULTI_SYNC_FLAG="" + if [ "${{ inputs.multi-sync }}" = "true" ]; then + MULTI_SYNC_FLAG="--multi-sync" + fi + yarn start:localnet -- --network=${{ inputs.network }} $MULTI_SYNC_FLAG - name: Save Docker images to cache if: ${{ inputs.instance == 'localnet' && steps.localnet-cache.outputs.cache-hit != 'true' }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d8c1aabfa..23199b8dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -474,7 +474,7 @@ jobs: run: yarn nx snippets docs-wallet-integration-guide-examples - uses: ./.github/actions/check_resources - + # TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well - name: Stop Localnet (${{ matrix.network }}) if: always() run: yarn stop:localnet -- --network=${{ matrix.network }} @@ -525,7 +525,7 @@ jobs: run: yarn script:test:examples - uses: ./.github/actions/check_resources - + # TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well - name: Stop Localnet (${{ matrix.network }}) if: always() run: yarn stop:localnet -- --network=${{ matrix.network }} @@ -547,14 +547,70 @@ jobs: name: docker-logs-scripts-${{ matrix.network }} path: logs/ + # TODO (#1721): remove multi-sync scripts e2e tests once multi-sync is fully supported and tested in the main scripts e2e tests + wallet-sdk-scripts-e2e-multi-sync: + name: wallet-sdk-scripts-e2e-multi-sync (${{ matrix.network }}) + runs-on: ubuntu-latest + needs: [build, e2e-affected] + if: needs.e2e-affected.outputs.affected_wallet_sdk == 'true' + strategy: + fail-fast: false + matrix: + network: [devnet, mainnet] + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - uses: ./.github/actions/setup_yarn + + - uses: ./.github/actions/setup_canton + with: + network: ${{ matrix.network }} + instance: localnet + multi-sync: 'true' + + - uses: ./.github/actions/check_resources + + - name: Build project + run: yarn build:all + + - name: Test multi-sync example script (${{ matrix.network }}) + env: + MAX_IO_LISTENERS: '50' + run: yarn script:test:examples:multi-sync + + - uses: ./.github/actions/check_resources + # TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well + - name: Stop Localnet (${{ matrix.network }}) + if: always() + run: yarn stop:localnet -- --network=${{ matrix.network }} --multi-sync + + - name: Save container logs + if: failure() + run: | + #!/usr/bin/env bash + set -euo pipefail + mkdir -p logs + for c in $(docker ps -a --format '{{.Names}}'); do + docker logs "$c" &> "logs/$c.log" || true + done + + - name: Upload logs as artifacts + if: failure() + uses: actions/upload-artifact@v7 + with: + name: docker-logs-scripts-multi-sync-${{ matrix.network }} + path: logs/ + test-wallet-sdk-e2e: name: test-wallet-sdk-e2e runs-on: ubuntu-latest - needs: - [ + needs: [ e2e-affected, wallet-sdk-snippets-e2e, wallet-sdk-scripts-e2e, + wallet-sdk-scripts-e2e-multi-sync, # TODO (#1721): remove multi-sync scripts e2e tests once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as a gate to ensure multi-sync e2e tests are not accidentally skipped without updating the main scripts e2e tests to cover multi-sync as well wallet-sdk-pkg, ] if: always() @@ -577,6 +633,10 @@ jobs: echo "wallet-sdk scripts e2e was scheduled but did not succeed" exit 1 fi + if [ "${{ needs.wallet-sdk-scripts-e2e-multi-sync.result }}" != "success" ]; then + echo "wallet-sdk scripts e2e (multi-sync) was scheduled but did not succeed" + exit 1 + fi echo "all wallet-sdk-e2e jobs passed" else echo "wallet-sdk e2e skipped (no affected wallet-sdk dependencies)" diff --git a/.github/workflows/examples-under-stress.yml b/.github/workflows/examples-under-stress.yml index 7b5c8a83e..6c6770284 100644 --- a/.github/workflows/examples-under-stress.yml +++ b/.github/workflows/examples-under-stress.yml @@ -66,7 +66,7 @@ jobs: run: yarn script:test:examples-stress - uses: ./.github/actions/check_resources - + # TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well - name: Stop localnet (${{ github.event.inputs.network || 'devnet' }}) if: always() run: yarn stop:localnet -- --network=${{ github.event.inputs.network || 'devnet' }} diff --git a/.github/workflows/stress-tests.yml b/.github/workflows/stress-tests.yml index a627cbb27..dc0cd63ab 100644 --- a/.github/workflows/stress-tests.yml +++ b/.github/workflows/stress-tests.yml @@ -42,7 +42,7 @@ jobs: run: yarn script:test:stress-scripts - uses: ./.github/actions/check_resources - + # TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well - name: Stop localnet (${{ github.event.inputs.network || 'devnet' }}) if: always() run: yarn stop:localnet -- --network=${{ github.event.inputs.network || 'devnet' }} diff --git a/canton/multi-sync/app-synchronizer.sc b/canton/multi-sync/app-synchronizer.sc index d3731c3c1..5a9f45411 100644 --- a/canton/multi-sync/app-synchronizer.sc +++ b/canton/multi-sync/app-synchronizer.sc @@ -10,60 +10,60 @@ bootstrap.synchronizer( staticSynchronizerParameters = StaticSynchronizerParameters.defaultsWithoutKMS(ProtocolVersion.latest), ) -// Connect app-provider to the new synchronizer. -// TODO: app-user is intentionally NOT connected to app-synchronizer so that -// the SDK (which picks connectedSynchronizers[0]) always selects the global synchronizer. -// This is a temporary workaround until we have a better way to select synchronizers in the SDK. +// Connect app-user and app-provider to the new synchronizer. +// app-user — global + app-synchronizer +// app-provider — global + app-synchronizer +// sv — global only (TradingApp is only an observer of Token Allocations; +// it learns about them when they are reassigned to global before settlement) +// +// The global domain is connected first (before this bootstrap script runs), +// so connectedSynchronizers[0] remains global for all participants — the +// default synchronizer selection is unaffected. `app-provider`.synchronizers.connect_local(`app-sequencer`, "app-synchronizer") +`app-user`.synchronizers.connect_local(`app-sequencer`, "app-synchronizer") -// Wait for app-provider to be active on app-synchronizer +// Wait for both participants to be active on app-synchronizer utils.retry_until_true { `app-provider`.synchronizers.active("app-synchronizer") } +utils.retry_until_true { + `app-user`.synchronizers.active("app-synchronizer") +} -// Replicate package vetting from the global synchronizer to app-synchronizer so that -// the new synchronizer is fully functional for app-provider. -// -// Splice connects app-provider to the global synchronizer under the alias "global". -// We read vetting from its per-synchronizer store rather than the authorized store -// because we want to replicate exactly what is active on the global synchronizer. -// We wait until the global-synchronizer view is non-empty to avoid a topology- -// propagation race (which caused `multi-sync-startup` to fail in CI). -val connectedSynchronizers = `app-provider`.synchronizers.list_connected() -val appSyncId = connectedSynchronizers +// Vet packages on app-synchronizer for all three participants. +// The Splice app already uploaded DARs and vetted them on global-domain. +// We replicate the vetting from the authorized store to app-synchronizer +// so that the synchronizer is fully functional. +val appSyncId = `app-provider`.synchronizers.list_connected() .find(_.synchronizerAlias.unwrap == "app-synchronizer") .getOrElse(throw new RuntimeException("app-synchronizer not found in connected synchronizers")) .synchronizerId -val globalSyncId = connectedSynchronizers - .find(_.synchronizerAlias.unwrap == "global") - .getOrElse(throw new RuntimeException( - s"'global' synchronizer not found. Connected: ${connectedSynchronizers.map(_.synchronizerAlias.unwrap).mkString(", ")}" - )) - .synchronizerId -utils.retry_until_true { - `app-provider`.topology.vetted_packages - .list(store = Some(TopologyStoreId.Synchronizer(globalSyncId)), filterParticipant = `app-provider`.id.filterString) +for (participant <- Seq(`app-provider`, `app-user`)) { + val vettedFromAuthorized = participant.topology.vetted_packages + .list(store = Some(TopologyStoreId.Authorized), filterParticipant = participant.id.filterString) .flatMap(_.item.packages) - .nonEmpty -} - -val vettedPackages = `app-provider`.topology.vetted_packages - .list(store = Some(TopologyStoreId.Synchronizer(globalSyncId)), filterParticipant = `app-provider`.id.filterString) - .flatMap(_.item.packages) -logger.info(s"Vetting ${vettedPackages.size} packages on app-synchronizer for app-provider") -`app-provider`.topology.vetted_packages.propose_delta( - participant = `app-provider`.id, - store = appSyncId, - adds = vettedPackages.toSeq, -) + if (vettedFromAuthorized.nonEmpty) { + logger.info(s"Vetting ${vettedFromAuthorized.size} packages on app-synchronizer for ${participant.name}") + participant.topology.vetted_packages.propose_delta( + participant = participant.id, + store = appSyncId, + adds = vettedFromAuthorized.toSeq, + ) + } +} -// Wait for vetting to propagate on app-synchronizer +// Wait for vetting topology to propagate for app-provider and app-user utils.retry_until_true { val providerVetted = `app-provider`.topology.vetted_packages .list(store = Some(appSyncId), filterParticipant = `app-provider`.id.filterString) providerVetted.nonEmpty && providerVetted.head.item.packages.nonEmpty } +utils.retry_until_true { + val userVetted = `app-user`.topology.vetted_packages + .list(store = Some(appSyncId), filterParticipant = `app-user`.id.filterString) + userVetted.nonEmpty && userVetted.head.item.packages.nonEmpty +} -logger.info("app-synchronizer bootstrap with package vetting completed successfully") +logger.info("app-synchronizer bootstrap with package vetting completed successfully for app-provider and app-user") diff --git a/docs/wallet-integration-guide/examples/package.json b/docs/wallet-integration-guide/examples/package.json index 7dd63abc3..f717e663e 100644 --- a/docs/wallet-integration-guide/examples/package.json +++ b/docs/wallet-integration-guide/examples/package.json @@ -26,6 +26,7 @@ "run-12": "tsx ./scripts/12-subscribe-to-events.ts | pino-pretty", "run-13": "tsx ./scripts/13-rewards-for-deposits/index.ts | pino-pretty", "run-14": "tsx ./scripts/14-offline-signing.ts | pino-pretty", + "run-15": "tsx ./scripts/15-multi-sync/index.ts | pino-pretty", "stress-run-01": "tsx ./scripts/stress/01-merge-utxos.ts | pino-pretty", "stress-run-02": "tsx ./scripts/stress/02-merge-utxos-delegate.ts | pino-pretty" }, @@ -43,6 +44,7 @@ "@canton-network/core-ledger-client-types": "workspace:^", "@canton-network/core-ledger-proto": "workspace:^", "@canton-network/core-signing-lib": "workspace:^", + "@canton-network/core-splice-client": "workspace:^", "@canton-network/core-tx-parser": "workspace:^", "@canton-network/core-types": "workspace:^", "@canton-network/core-wallet-auth": "workspace:^", diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md new file mode 100644 index 000000000..54617ddf3 --- /dev/null +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md @@ -0,0 +1,246 @@ +# Example 15: Multi-Synchronizer DvP Trade + +## Overview + +This example implements a Delivery vs Payment (DvP) flow across multiple +synchronizers. It demonstrates how to orchestrate a trade between Amulet +(on a global synchronizer) and a Token instrument (on a private/app +synchronizer) using the OTC Trading App. + +Complete workflow covered: + +- SDK initialization with multiple synchronizers +- Party allocation and registration across synchronizers +- Parallel asset minting (Amulet on global, Token on private) +- Multi-synchronizer trade settlement with multi-party signing +- Cross-synchronizer contract reassignment + +## Prerequisites + +### 1. Download the localnet bundle (first time only) + +If you have never run localnet before, or after a Splice version update: + +```bash +yarn script:fetch:localnet +``` + +For mainnet network variant: + +```bash +yarn script:fetch:localnet -- --network=mainnet +``` + +This populates `.localnet/docker-compose/` and `.localnet/dars/`. + +The DARs required by this example come from two locations: + +| DAR file | Location | Purpose | +| ----------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------- | +| `splice-token-test-trading-app-1.0.0.dar` | `.localnet/dars/` | `OTCTrade` and `OTCTradeAllocationRequest` templates for orchestrating the trade | +| `splice-test-token-v1-1.0.0.dar` | `scripts/15-multi-sync/` | `Token` and `TokenRules` templates — the custom instrument on the app-synchronizer | + +`splice-token-test-trading-app-1.0.0.dar` is fetched by `yarn script:fetch:localnet`. +`splice-test-token-v1-1.0.0.dar` is bundled directly in the script directory. + +## Running Locally + +All commands are run from the **repository root** unless noted otherwise. + +### Full end-to-end (start → run → stop) + +All `yarn start:localnet`, `yarn stop:localnet`, `yarn script:*` commands must be +run from the **repository root** (`splice-wallet-kernel/`). +The example script itself (`yarn run-15`) must be run from the +`docs/wallet-integration-guide/examples/` subdirectory. + +```bash +# ── From the repository root ────────────────────────────────────────────────── + +# Step 1: Fetch localnet bundle (first time or after a Splice version update) +yarn script:fetch:localnet +# For mainnet variant: +# yarn script:fetch:localnet -- --network=mainnet + +# Step 2: Start localnet in multi-sync mode +# This spins up 16 containers: the standard 14 localnet containers plus +# multi-sync-startup (runs the app-synchronizer.sc bootstrap script, then exits) +# and multi-sync-ready (health-gate container). +yarn start:localnet -- --multi-sync +# For mainnet variant: +# yarn start:localnet -- --network=mainnet --multi-sync + +# Step 3: Wait until all containers are healthy +# multi-sync-startup will appear as "Exited (0)" — that is expected and correct. +# All other containers should show "(healthy)" before you proceed. +docker ps --format "table {{.Names}}\t{{.Status}}" + +# ── From docs/wallet-integration-guide/examples/ ────────────────────────────── + +# Step 4: Run the example +cd docs/wallet-integration-guide/examples +yarn run-15 + +# ── From the repository root ────────────────────────────────────────────────── + +# Step 5: Stop the multi-sync localnet when done +cd - # return to repository root +yarn stop:localnet -- --multi-sync +# For mainnet variant: +# yarn stop:localnet -- --network=mainnet --multi-sync +``` + +Alternatively, run the example from the repository root using the workspace shorthand: + +```bash +yarn workspace docs-wallet-integration-guide-examples run-15 +``` + +### Quick run (multi-sync localnet already running) + +From `docs/wallet-integration-guide/examples/`: + +```bash +cd docs/wallet-integration-guide/examples +yarn run-15 +``` + +Or from the repository root: + +```bash +yarn workspace docs-wallet-integration-guide-examples run-15 +``` + +### Run via the dedicated multi-sync test suite + +This is the same flow used in CI for the `wallet-sdk-scripts-e2e-multi-sync` job. +All commands run from the **repository root**. + +```bash +# Step 1: Start multi-sync localnet +yarn start:localnet -- --multi-sync +# For mainnet variant: +# yarn start:localnet -- --network=mainnet --multi-sync + +# Step 2: Run the multi-sync test suite (runs example 15 only) +yarn script:test:examples:multi-sync + +# Step 3: Stop when done +yarn stop:localnet -- --multi-sync +``` + +### Run as part of the full example test suite + +All commands run from the **repository root**. + +```bash +# Ensure DARs are downloaded and multi-sync localnet is running (steps 1–3 above), +# then run the full suite (examples 01–14 + 15): +yarn script:test:examples +``` + +If `splice-token-test-trading-app-1.0.0.dar` is missing from `.localnet/dars/`, run +`yarn script:fetch:localnet` from the repository root. +If `splice-test-token-v1-1.0.0.dar` is missing from the script directory, it has been +accidentally deleted — restore it from version control. + +### Expected output + +``` +[v1-15-multi-sync-trade] Connected synchronizers: global-synchronizer, app-synchronizer +[v1-15-multi-sync-trade] Synchronizer IDs — global: ..., app: ... +[v1-15-multi-sync-trade] DARs vetted: P1+P2 on both synchronizers, P3 on global only +[v1-15-multi-sync-trade] Parties allocated — alice: ... (P1), bob: ... (P2), tradingApp: ... (P3) +[v1-15-multi-sync-trade] Alice and Bob registered on app-synchronizer +[v1-15-multi-sync-trade] Amulet asset discovered — admin: ... +[v1-15-multi-sync-trade] Alice: Amulet minted (2000000) on global synchronizer +[v1-15-multi-sync-trade] Bob: TokenRules created + Token minted (500 TestToken) on app-synchronizer +[v1-15-multi-sync-trade] Alice: OTCTradeProposal created (leg-0: 100 Amulet → Bob, leg-1: 20 TestToken → Alice) +[v1-15-multi-sync-trade] Bob: OTCTradeProposal_Accept executed +[v1-15-multi-sync-trade] TradingApp: OTCTradeProposal_InitiateSettlement executed → OTCTrade created +[v1-15-multi-sync-trade] Alice: Amulet allocated for leg-0 (global synchronizer) +[v1-15-multi-sync-trade] Bob: TestToken allocated for leg-1 (global) +[v1-15-multi-sync-trade] TradingApp: OTCTrade settled — 100 Amulet transferred to Bob, 20 TestToken transferred to Alice +[v1-15-multi-sync-trade] Bob: TokenRules + Token explicitly reassigned global → app-synchronizer +[v1-15-multi-sync-trade] Alice: 20 TestToken self-transferred on app-synchronizer (Canton auto-reassigned Alice's Token from global → app) +[v1-15-multi-sync-trade] Final contract state: +``` + +## How it Works + +| Step | Who | What | Synchronizer | +| ---- | ----------- | --------------------------------------------------------------------------------------------------- | ------------------- | +| 1 | — | Create SDKs (P1, P2, P3) and discover synchronizers | global + app | +| 2 | — | Vet DARs: P1+P2 on both synchronizers, P3 on global only | global + app | +| 3 | — | Allocate parties (Alice/P1, Bob/P2, TradingApp/P3) | global | +| 4 | — | Discover Token interface on app synchronizer | app | +| 5 | Alice | Mint 2,000,000 Amulet for Alice | global | +| 6a | Bob | Create `TokenRules` contract | app | +| 6b | Bob | Mint 500 `TestToken` holding | app | +| 7a | Alice | Create `OTCTradeProposal` (2 legs) | global | +| 7b | Bob | `OTCTradeProposal_Accept` | global | +| 7c | Trading App | `OTCTradeProposal_InitiateSettlement` → `OTCTrade` created | global | +| 8 | — | Read `OTCTrade` contract ID | global | +| 9 | Alice | `AllocationFactory_Allocate` (Amulet, leg-0) | global | +| 10 | Bob | `AllocationFactory_Allocate` (TestToken, leg-1); Canton auto-reassigns `Token` + `TokenRules` | app → global (auto) | +| 11a | — | Locate Bob's TestToken allocation | global | +| 11b | Trading App | `OTCTrade_Settle` (multi-party signing) | global | +| 12 | Bob | Explicitly reassign `TokenRules` + `Token` to app-synchronizer (two-phase Unassign → Assign) | global → app | +| 13 | Alice | `TransferFactory_Transfer` self-transfer; Canton auto-reassigns Alice's `Token` to app-synchronizer | global → app (auto) | + +## Troubleshooting + +### `Required DAR not found` + +Verify the DAR files are present in their expected locations: + +```bash +# Trading-app DAR — fetched into .localnet/dars/ by yarn script:fetch:localnet +ls -la .localnet/dars/splice-token-test-trading-app-1.0.0.dar + +# Test-token DAR — bundled in the script directory +ls -la docs/wallet-integration-guide/examples/scripts/15-multi-sync/splice-test-token-v1-1.0.0.dar +``` + +### `App synchronizer not found (alias: app-synchronizer)` + +This error means the `app-user` participant is not connected to the app-synchronizer. +The `scripts/localnet/app-synchronizer.sc` bootstrap script must connect **both** +`app-provider` and `app-user` to the app-synchronizer. Check that you are using +the current version of that file (it should reference both participants). + +Check that the `multi-sync-startup` bootstrap container ran to completion: + +```bash +docker logs $(docker ps -a --filter name=multi-sync-startup --format "{{.ID}}") +``` + +The last line should read: + +``` +app-synchronizer bootstrap with package vetting completed successfully for app-provider and app-user +``` + +If localnet was started with an older version of the bootstrap script, restart it: + +```bash +yarn stop:localnet -- --multi-sync +yarn start:localnet -- --multi-sync +``` + +### `No connected synchronizers found` + +Localnet may still be initialising. Wait until all containers show `(healthy)`: + +```bash +docker ps --format "table {{.Names}}\t{{.Status}}" +``` + +### Docker containers not starting + +Ensure Docker Desktop has enough resources (≥ 8 GB RAM, ≥ 4 CPUs recommended). +Check current usage: + +```bash +docker stats --no-stream +``` diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts new file mode 100644 index 000000000..1319ad226 --- /dev/null +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts @@ -0,0 +1,18 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +/** + * Multi-synchronizer localnet participant configuration. + * + * Port layout (PARTICIPANT_JSON_API_PORT_SUFFIX = 975): + * 2975 — app-user (P1): global + app-synchronizer + * 3975 — app-provider (P2): global + app-synchronizer + * 4975 — sv (P3): global + app-synchronizer + * + */ + +// bob-participant JSON API (3 + PARTICIPANT_JSON_API_PORT_SUFFIX 975) +export const LOCALNET_BOB_LEDGER_URL = new URL('http://localhost:3975') + +// trading-app-participant JSON API (4 + PARTICIPANT_JSON_API_PORT_SUFFIX 975) +export const LOCALNET_TRADING_APP_LEDGER_URL = new URL('http://localhost:4975') diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts new file mode 100644 index 000000000..7fe4b629e --- /dev/null +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts @@ -0,0 +1,259 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import path from 'path' +import { fileURLToPath } from 'url' +import fs from 'fs/promises' +import type { Logger } from 'pino' +import { + localNetStaticConfig, + SDK, + type SDKInterface, + type SDKContext, + type TokenNamespace, +} from '@canton-network/wallet-sdk' +import type { KeyPair } from '@canton-network/core-signing-lib' +import type { GenerateTransactionResponse } from '@canton-network/core-ledger-client' +import { ScanProxyClient } from '@canton-network/core-splice-client' +import { AuthTokenProvider } from '@canton-network/core-wallet-auth' +import { + TOKEN_NAMESPACE_CONFIG, + TOKEN_PROVIDER_CONFIG_DEFAULT, + resolveGlobalSynchronizerId, + vetDar, +} from '../utils/index.js' +import type { SynchronizerMap } from '../utils/index.js' +import { + LOCALNET_BOB_LEDGER_URL, + LOCALNET_TRADING_APP_LEDGER_URL, +} from './_config.js' + +export type PartyInfo = Omit< + GenerateTransactionResponse, + 'topologyTransactions' +> & { + topologyTransactions?: string[] | undefined + keyPair: KeyPair +} + +const DARS_PATH = '../../../../../.localnet/dars' +const TRADING_APP_DAR = 'splice-token-test-trading-app-1.0.0.dar' +const TEST_TOKEN_V1_DAR = 'splice-test-token-v1-1.0.0.dar' + +export interface MultiSyncSetup { + p1Sdk: SDKInterface<'token'> + p2Sdk: SDKInterface<'token'> + p3Sdk: SDKInterface<'token'> + p1SdkCtx: SDKContext + p2SdkCtx: SDKContext + p3SdkCtx: SDKContext + tokenP1: TokenNamespace + tokenP2: TokenNamespace + alice: PartyInfo + bob: PartyInfo + tradingApp: PartyInfo + globalSynchronizerId: string + appSynchronizerId: string + synchronizers: SynchronizerMap + scanProxy: ScanProxyClient + amuletAdmin: string +} + +/** + * Bootstraps a fresh multi-synchronizer environment: + * - Creates SDK instances for P1 (app-user), P2 (app-provider), P3 (sv) + * - Discovers global + app synchronizer IDs from P1 + * - Allocates alice (P1), bob (P2), tradingApp (P3) on global synchronizer + * - Registers alice and bob on app-synchronizer; tradingApp is global-only + * - Connects the scan proxy and returns the Amulet admin party ID + */ +export async function setupMultiSyncTrade( + logger: Logger +): Promise { + // Create three SDK instances — one per participant node + const [p1Sdk, p2Sdk, p3Sdk] = await Promise.all([ + SDK.create({ + auth: TOKEN_PROVIDER_CONFIG_DEFAULT, + ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, + token: TOKEN_NAMESPACE_CONFIG, + }), + SDK.create({ + auth: TOKEN_PROVIDER_CONFIG_DEFAULT, + ledgerClientUrl: LOCALNET_BOB_LEDGER_URL, + token: TOKEN_NAMESPACE_CONFIG, + }), + SDK.create({ + auth: TOKEN_PROVIDER_CONFIG_DEFAULT, + ledgerClientUrl: LOCALNET_TRADING_APP_LEDGER_URL, + token: TOKEN_NAMESPACE_CONFIG, + }), + ]) + + const p1SdkCtx = (p1Sdk.ledger as unknown as { sdkContext: SDKContext }) + .sdkContext + const p2SdkCtx = (p2Sdk.ledger as unknown as { sdkContext: SDKContext }) + .sdkContext + const p3SdkCtx = (p3Sdk.ledger as unknown as { sdkContext: SDKContext }) + .sdkContext + + // Discover synchronizer IDs from P1 (they are topology-wide, not per-participant) + const connectedSyncResponse = + await p1Sdk.ledger.state.connectedSynchronizers({}) + const allSynchronizers = connectedSyncResponse.connectedSynchronizers ?? [] + if (allSynchronizers.length < 2) + throw new Error( + `Expected at least 2 connected synchronizers (global + app), found ${allSynchronizers.length}` + ) + + const globalSynchronizerId = resolveGlobalSynchronizerId(allSynchronizers) + const appSynchronizerId = allSynchronizers.find( + (s) => s.synchronizerAlias === 'app-synchronizer' + )?.synchronizerId + + if (!globalSynchronizerId) throw new Error('Global synchronizer not found') + if (!appSynchronizerId) + throw new Error( + 'App synchronizer not found — start localnet with --multi-sync to enable it.' + ) + + logger.info( + `Connected synchronizers: ${allSynchronizers.map((s) => s.synchronizerAlias).join(', ')}` + ) + logger.info( + `Synchronizer IDs — global: ${globalSynchronizerId}, app: ${appSynchronizerId}` + ) + + const synchronizers: SynchronizerMap = { + globalSynchronizerId, + appSynchronizerId, + } + + // Load DARs bundled alongside this script and vet on all participants × both synchronizers. + const here = path.dirname(fileURLToPath(import.meta.url)) + const darsDir = path.join(here, DARS_PATH) + for (const [darPath, darName] of [ + [path.join(darsDir, TRADING_APP_DAR), TRADING_APP_DAR], + [path.join(here, TEST_TOKEN_V1_DAR), TEST_TOKEN_V1_DAR], + ] as [string, string][]) { + try { + await fs.stat(darPath) + } catch { + throw new Error( + `Required DAR not found: ${darPath}\n` + + ` "${darName}" must be present in .localnet/dars/.` + ) + } + } + + const [tradingAppDar, testTokenV1Dar] = await Promise.all([ + fs.readFile(path.join(darsDir, TRADING_APP_DAR)), + fs.readFile(path.join(here, TEST_TOKEN_V1_DAR)), + ]) + + // P1 and P2 vet DARs on both synchronizers; P3 vets on global only + await Promise.all([ + ...[p1SdkCtx, p2SdkCtx].flatMap((ctx) => + [globalSynchronizerId, appSynchronizerId].flatMap((sid) => + [tradingAppDar, testTokenV1Dar].map((dar) => + vetDar(ctx.ledgerProvider, dar, sid) + ) + ) + ), + ...[tradingAppDar, testTokenV1Dar].map((dar) => + vetDar(p3SdkCtx.ledgerProvider, dar, globalSynchronizerId) + ), + ]) + logger.info('DARs vetted: P1+P2 on both synchronizers, P3 on global only') + + // Allocate parties: alice on P1, bob on P2, tradingApp on P3 (all on global synchronizer) + const aliceKey = p1Sdk.keys.generate() + const bobKey = p1Sdk.keys.generate() + const tradingAppKey = p1Sdk.keys.generate() + + const [allocatedAlice, allocatedBob, allocatedTradingApp] = + await Promise.all([ + p1Sdk.party.external + .create(aliceKey.publicKey, { + partyHint: 'v1-15-alice', + synchronizerId: globalSynchronizerId, + }) + .sign(aliceKey.privateKey) + .execute(), + p2Sdk.party.external + .create(bobKey.publicKey, { + partyHint: 'v1-15-bob', + synchronizerId: globalSynchronizerId, + }) + .sign(bobKey.privateKey) + .execute(), + p3Sdk.party.external + .create(tradingAppKey.publicKey, { + partyHint: 'v1-15-trading-app', + synchronizerId: globalSynchronizerId, + }) + .sign(tradingAppKey.privateKey) + .execute(), + ]) + + const alice: PartyInfo = { ...allocatedAlice, keyPair: aliceKey } + const bob: PartyInfo = { ...allocatedBob, keyPair: bobKey } + const tradingApp: PartyInfo = { + ...allocatedTradingApp, + keyPair: tradingAppKey, + } + + logger.info( + `Parties allocated — alice: ${alice.partyId} (P1), bob: ${bob.partyId} (P2), tradingApp: ${tradingApp.partyId} (P3)` + ) + + // Register Alice and Bob on app-synchronizer so they can transact there. + await Promise.all([ + p1Sdk.party.external + .create(alice.keyPair.publicKey, { + partyHint: alice.partyId.split('::')[0], + synchronizerId: appSynchronizerId, + }) + .sign(alice.keyPair.privateKey) + .execute({ grantUserRights: false }), + p2Sdk.party.external + .create(bob.keyPair.publicKey, { + partyHint: bob.partyId.split('::')[0], + synchronizerId: appSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ grantUserRights: false }), + ]) + logger.info('Alice and Bob registered on app-synchronizer') + + // Connect scan proxy and discover Amulet admin + const auth = new AuthTokenProvider(TOKEN_PROVIDER_CONFIG_DEFAULT, logger) + const scanProxy = new ScanProxyClient( + localNetStaticConfig.LOCALNET_APP_VALIDATOR_URL, + logger, + auth + ) + const amuletRules = await scanProxy.getAmuletRules() + const amuletAdmin = (amuletRules.payload as Record)[ + 'dso' + ] as string + logger.info(`Amulet asset discovered — admin: ${amuletAdmin}`) + + return { + p1Sdk, + p2Sdk, + p3Sdk, + p1SdkCtx, + p2SdkCtx, + p3SdkCtx, + tokenP1: p1Sdk.token, + tokenP2: p2Sdk.token, + alice, + bob, + tradingApp, + globalSynchronizerId, + appSynchronizerId, + synchronizers, + scanProxy, + amuletAdmin, + } +} diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts new file mode 100644 index 000000000..a2b2b44fb --- /dev/null +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts @@ -0,0 +1,640 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import type { Logger } from 'pino' +import { localNetStaticConfig } from '@canton-network/wallet-sdk' +import type { ContractSpec } from '../utils/index.js' +import type { MultiSyncSetup } from './_setup.js' + +// ── ACS contract entry (as returned by ledger.acs.read) ─────────────────────── + +interface AcsContractEntry { + contractId: string + templateId: string + createdEventBlob?: string + synchronizerId: string +} + +// ── Template / interface identifiers ───────────────────────────────────────── + +export const AMULET_TEMPLATE_ID = '#splice-amulet:Splice.Amulet:Amulet' +export const TEST_TOKEN_PREFIX = + '#splice-test-token-v1:Splice.Testing.Tokens.TestTokenV1' +export const TRADING_APP_PREFIX = + '#splice-token-test-trading-app:Splice.Testing.Apps.TradingApp' + +const ALLOCATION_FACTORY_IFACE = + '#splice-api-token-allocation-instruction-v1:Splice.Api.Token.AllocationInstructionV1:AllocationFactory' +const TRANSFER_FACTORY_IFACE = + '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferFactory' + +export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { + const { p1Sdk, p2Sdk, p3Sdk, alice, bob, tradingApp } = setup + return [ + { + label: 'Alice', + sdk: p1Sdk, + templateIds: [ + AMULET_TEMPLATE_ID, + `${TEST_TOKEN_PREFIX}:Token`, + `${TRADING_APP_PREFIX}:OTCTradeProposal`, + `${TRADING_APP_PREFIX}:OTCTrade`, + ], + parties: [alice.partyId], + }, + { + label: 'Bob', + sdk: p2Sdk, + templateIds: [ + AMULET_TEMPLATE_ID, + `${TEST_TOKEN_PREFIX}:TokenRules`, + `${TEST_TOKEN_PREFIX}:Token`, + ], + parties: [bob.partyId], + }, + { + label: 'TradingApp', + sdk: p3Sdk, + templateIds: [ + `${TRADING_APP_PREFIX}:OTCTradeProposal`, + `${TRADING_APP_PREFIX}:OTCTrade`, + ], + parties: [tradingApp.partyId], + }, + ] +} + +export const ALICE_AMULET_TAP_AMOUNT = '2000000' +export const BOB_TOKEN_MINT_AMOUNT = '500' +export const TRADE_AMULET_AMOUNT = '100' +export const TRADE_TOKEN_AMOUNT = '20' + +export async function mintAmuletForAlice( + setup: MultiSyncSetup, + logger: Logger +): Promise { + const { p1Sdk, alice, globalSynchronizerId, scanProxy } = setup + const [amuletRulesContract, activeRoundContract] = await Promise.all([ + scanProxy.getAmuletRules(), + scanProxy.getActiveOpenMiningRound(), + ]) + if (!activeRoundContract) throw new Error('No active OpenMiningRound found') + const amuletRulesCid = amuletRulesContract.contract_id + const openMiningRoundCid = activeRoundContract.contract_id + + await p1Sdk.ledger + .prepare({ + partyId: alice.partyId, + commands: [ + { + ExerciseCommand: { + templateId: + '#splice-amulet:Splice.AmuletRules:AmuletRules', + contractId: amuletRulesCid, + choice: 'AmuletRules_DevNet_Tap', + choiceArgument: { + receiver: alice.partyId, + amount: ALICE_AMULET_TAP_AMOUNT, + openRound: openMiningRoundCid, + }, + }, + }, + ], + disclosedContracts: [ + { + templateId: amuletRulesContract.template_id, + contractId: amuletRulesCid, + createdEventBlob: amuletRulesContract.created_event_blob, + synchronizerId: globalSynchronizerId, + }, + { + templateId: activeRoundContract.template_id, + contractId: openMiningRoundCid, + createdEventBlob: activeRoundContract.created_event_blob, + synchronizerId: globalSynchronizerId, + }, + ], + synchronizerId: globalSynchronizerId, + }) + .sign(alice.keyPair.privateKey) + .execute({ partyId: alice.partyId }) + + logger.info( + `Alice: Amulet minted (${ALICE_AMULET_TAP_AMOUNT}) on global synchronizer` + ) +} + +export async function createTokenRulesAndMintForBob( + setup: MultiSyncSetup, + logger: Logger +): Promise { + const { p2Sdk, bob, appSynchronizerId } = setup + + await Promise.all([ + p2Sdk.ledger + .prepare({ + partyId: bob.partyId, + commands: { + CreateCommand: { + templateId: `${TEST_TOKEN_PREFIX}:TokenRules`, + createArguments: { admin: bob.partyId }, + }, + }, + disclosedContracts: [], + synchronizerId: appSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ partyId: bob.partyId }), + + p2Sdk.ledger + .prepare({ + partyId: bob.partyId, + commands: { + CreateCommand: { + templateId: `${TEST_TOKEN_PREFIX}:Token`, + createArguments: { + holding: { + owner: bob.partyId, + instrumentId: { + admin: bob.partyId, + id: 'TestToken', + }, + amount: BOB_TOKEN_MINT_AMOUNT, + lock: null, + meta: { values: {} }, + }, + }, + }, + }, + disclosedContracts: [], + synchronizerId: appSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ partyId: bob.partyId }), + ]) + + logger.info( + `Bob: TokenRules created + Token minted (${BOB_TOKEN_MINT_AMOUNT} TestToken) on app-synchronizer` + ) +} + +export async function createAndInitiateOtcTrade( + setup: MultiSyncSetup, + transferLegs: Record, + logger: Logger +): Promise { + const { + p1Sdk, + p2Sdk, + p3Sdk, + alice, + bob, + tradingApp, + globalSynchronizerId, + } = setup + + const readProposalCid = async ( + sdk: typeof p1Sdk, + party: string + ): Promise => { + const contracts = await sdk.ledger.acs.read({ + templateIds: [`${TRADING_APP_PREFIX}:OTCTradeProposal`], + parties: [party], + filterByParty: true, + }) + if (!contracts.length) throw new Error('OTCTradeProposal not found') + return contracts[0].contractId + } + + await p1Sdk.ledger + .prepare({ + partyId: alice.partyId, + commands: { + CreateCommand: { + templateId: `${TRADING_APP_PREFIX}:OTCTradeProposal`, + createArguments: { + venue: tradingApp.partyId, + tradeCid: null, + transferLegs, + approvers: [alice.partyId], + }, + }, + }, + disclosedContracts: [], + synchronizerId: globalSynchronizerId, + }) + .sign(alice.keyPair.privateKey) + .execute({ partyId: alice.partyId }) + logger.info( + `Alice: OTCTradeProposal created (leg-0: ${TRADE_AMULET_AMOUNT} Amulet → Bob, leg-1: ${TRADE_TOKEN_AMOUNT} TestToken → Alice)` + ) + + await p2Sdk.ledger + .prepare({ + partyId: bob.partyId, + commands: [ + { + ExerciseCommand: { + templateId: `${TRADING_APP_PREFIX}:OTCTradeProposal`, + contractId: await readProposalCid(p2Sdk, bob.partyId), + choice: 'OTCTradeProposal_Accept', + choiceArgument: { approver: bob.partyId }, + }, + }, + ], + disclosedContracts: [], + synchronizerId: globalSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ partyId: bob.partyId }) + logger.info('Bob: OTCTradeProposal_Accept executed') + + const prepareUntil = new Date(Date.now() + 1800 * 1000).toISOString() + const settleBefore = new Date(Date.now() + 3600 * 1000).toISOString() + + await p3Sdk.ledger + .prepare({ + partyId: tradingApp.partyId, + commands: [ + { + ExerciseCommand: { + templateId: `${TRADING_APP_PREFIX}:OTCTradeProposal`, + contractId: await readProposalCid( + p3Sdk, + tradingApp.partyId + ), + choice: 'OTCTradeProposal_InitiateSettlement', + choiceArgument: { prepareUntil, settleBefore }, + }, + }, + ], + disclosedContracts: [], + synchronizerId: globalSynchronizerId, + }) + .sign(tradingApp.keyPair.privateKey) + .execute({ partyId: tradingApp.partyId }) + logger.info( + 'TradingApp: OTCTradeProposal_InitiateSettlement executed → OTCTrade created' + ) + + const otcTradeContracts = await p3Sdk.ledger.acs.read({ + templateIds: [`${TRADING_APP_PREFIX}:OTCTrade`], + parties: [tradingApp.partyId], + filterByParty: true, + }) + const otcTradeCid = otcTradeContracts[0]?.contractId + if (!otcTradeCid) + throw new Error('OTCTrade contract not found after initiation') + return otcTradeCid +} + +export async function allocateAmuletForAlice( + setup: MultiSyncSetup, + logger: Logger +): Promise { + const { p1Sdk, tokenP1, alice, globalSynchronizerId, amuletAdmin } = setup + + const pendingRequests = await tokenP1.allocation.request.pending( + alice.partyId + ) + const requestView = pendingRequests[0].interfaceViewValue! + const legId = Object.keys(requestView.transferLegs).find( + (key) => requestView.transferLegs[key].sender === alice.partyId + )! + if (!legId) throw new Error('No transfer leg found for Alice') + + const amuletHoldings = await p1Sdk.ledger.acs.read({ + templateIds: [AMULET_TEMPLATE_ID], + parties: [alice.partyId], + filterByParty: true, + }) + const amuletHoldingCid = amuletHoldings[0]?.contractId + if (!amuletHoldingCid) throw new Error('Amulet holding not found for Alice') + + const [command, disclosedContracts] = + await tokenP1.allocation.instruction.create({ + allocationSpecification: { + settlement: requestView.settlement, + transferLegId: legId, + transferLeg: requestView.transferLegs[legId], + }, + asset: { + id: 'Amulet', + displayName: 'Amulet', + symbol: 'CC', + registryUrl: + localNetStaticConfig.LOCALNET_REGISTRY_API_URL.href, + admin: amuletAdmin, + }, + inputUtxos: [amuletHoldingCid], + requestedAt: new Date().toISOString(), + }) + + await p1Sdk.ledger + .prepare({ + partyId: alice.partyId, + commands: [command], + disclosedContracts, + synchronizerId: globalSynchronizerId, + }) + .sign(alice.keyPair.privateKey) + .execute({ partyId: alice.partyId }) + + logger.info('Alice: Amulet allocated for leg-0 (global synchronizer)') + return legId +} + +export async function allocateTokenForBob( + setup: MultiSyncSetup, + logger: Logger +): Promise<{ + legId: string + tokenRulesCid: string + tokenRulesContract: AcsContractEntry +}> { + const { p2Sdk, tokenP2, bob, globalSynchronizerId } = setup + + const pendingRequests = await tokenP2.allocation.request.pending( + bob.partyId + ) + const requestView = pendingRequests[0].interfaceViewValue! + const legId = Object.keys(requestView.transferLegs).find( + (key) => requestView.transferLegs[key].sender === bob.partyId + )! + if (!legId) throw new Error('No transfer leg found for Bob') + + const [tokenHoldings, tokenRulesContracts] = await Promise.all([ + p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:Token`], + parties: [bob.partyId], + filterByParty: true, + }), + p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], + parties: [bob.partyId], + filterByParty: true, + }), + ]) + + const tokenHoldingCid = tokenHoldings[0]?.contractId + if (!tokenHoldingCid) throw new Error('Token holding not found for Bob') + const tokenRulesCid = tokenRulesContracts[0]?.contractId + if (!tokenRulesCid) throw new Error('TokenRules contract not found') + const tokenRulesContract = tokenRulesContracts[0] + + await p2Sdk.ledger + .prepare({ + partyId: bob.partyId, + commands: [ + { + ExerciseCommand: { + templateId: ALLOCATION_FACTORY_IFACE, + contractId: tokenRulesCid, + choice: 'AllocationFactory_Allocate', + choiceArgument: { + expectedAdmin: bob.partyId, + allocation: { + settlement: requestView.settlement, + transferLegId: legId, + transferLeg: requestView.transferLegs[legId], + }, + requestedAt: new Date( + Date.now() - 60_000 + ).toISOString(), + inputHoldingCids: [tokenHoldingCid], + extraArgs: { + context: { values: {} }, + meta: { values: {} }, + }, + }, + }, + }, + ], + disclosedContracts: [], + synchronizerId: globalSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ partyId: bob.partyId }) + + logger.info('Bob: TestToken allocated for leg-1 (global)') + return { legId, tokenRulesCid, tokenRulesContract } +} + +export interface SettleParams { + otcTradeCid: string + legIdAlice: string + legIdBob: string + testTokenAllocationCid: string +} + +export async function settleOtcTrade( + setup: MultiSyncSetup, + params: SettleParams, + logger: Logger +): Promise { + const { p3Sdk, tokenP1, alice, tradingApp, globalSynchronizerId } = setup + const { otcTradeCid, legIdAlice, legIdBob, testTokenAllocationCid } = params + + const allocationsAlice = await tokenP1.allocation.pending(alice.partyId) + const amuletAllocation = allocationsAlice.find( + (a) => a.interfaceViewValue.allocation.transferLegId === legIdAlice + ) + if (!amuletAllocation) throw new Error('Amulet allocation not found') + + const amuletExecCtx = await tokenP1.allocation.context.execute({ + allocationCid: amuletAllocation.contractId, + registryUrl: localNetStaticConfig.LOCALNET_REGISTRY_API_URL, + }) + + const allocationsWithContext = { + [legIdAlice]: { + _1: amuletAllocation.contractId, + _2: { + context: { + ...(amuletExecCtx.choiceContextData ?? {}), + values: + (amuletExecCtx.choiceContextData?.values as Record< + string, + unknown + >) ?? {}, + }, + meta: { values: {} }, + }, + }, + [legIdBob]: { + _1: testTokenAllocationCid, + _2: { context: { values: {} }, meta: { values: {} } }, + }, + } + + // Amulet system contracts from registry; synchronizerId='' → Canton infers from blob + const disclosedContracts = (amuletExecCtx.disclosedContracts ?? []).map( + (c) => ({ ...c, synchronizerId: '' }) + ) + + await p3Sdk.ledger + .prepare({ + partyId: tradingApp.partyId, + commands: [ + { + ExerciseCommand: { + templateId: `${TRADING_APP_PREFIX}:OTCTrade`, + contractId: otcTradeCid, + choice: 'OTCTrade_Settle', + choiceArgument: { allocationsWithContext }, + }, + }, + ], + disclosedContracts, + synchronizerId: globalSynchronizerId, + }) + .sign(tradingApp.keyPair.privateKey) + .execute({ partyId: tradingApp.partyId }) + + logger.info( + `TradingApp: OTCTrade settled — ${TRADE_AMULET_AMOUNT} Amulet transferred to Bob, ${TRADE_TOKEN_AMOUNT} TestToken transferred to Alice` + ) +} + +export interface TransferParams { + tokenRulesCid: string +} + +/** + * Explicitly reassigns Bob's TestToken holding and TokenRules from global back + * to app-synchronizer using the two-phase Canton reassignment (Unassign → Assign). + * After OTC settlement, both contracts live on global. Bob is signatory of both + * (Token: owner+admin; TokenRules: admin) and is hosted on P2 which is connected + * to both synchronizers, so he can initiate reassignment from global → app directly. + * + * This is simpler and more direct than the self-transfer workaround: no new Daml + * contracts are created or archived — the existing contracts just move synchronizers. + */ +export async function reassignBobTokensToApp( + setup: MultiSyncSetup, + params: TransferParams, + logger: Logger +): Promise { + const { p2Sdk, bob, globalSynchronizerId, appSynchronizerId } = setup + const { tokenRulesCid } = params + + const bobTokens = await p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:Token`], + parties: [bob.partyId], + filterByParty: true, + }) + const bobTokenCid = bobTokens[0]?.contractId + if (!bobTokenCid) + throw new Error( + 'Bob: remainder Token holding not found after settlement' + ) + + // Reassign both contracts in parallel — they are independent. + await Promise.all([ + p2Sdk.ledger.internal.reassign({ + submitter: bob.partyId, + contractId: tokenRulesCid, + source: globalSynchronizerId, + target: appSynchronizerId, + }), + p2Sdk.ledger.internal.reassign({ + submitter: bob.partyId, + contractId: bobTokenCid, + source: globalSynchronizerId, + target: appSynchronizerId, + }), + ]) + + logger.info( + 'Bob: TokenRules + Token explicitly reassigned global → app-synchronizer' + ) +} + +/** + * Alice self-transfers her TestToken (received from the OTC settlement) from + * global back to app-synchronizer. After Bob's self-transfer, TokenRules already + * lives on app-synchronizer; Alice's Token is still on global. P1 hosts Alice, + * who is the owner (and a signatory) of her Token, so Canton can auto-reassign + * her Token global → app as part of this command. TokenRules is disclosed since + * P1 does not host Bob. + */ +export async function aliceSelfTransferToApp( + setup: MultiSyncSetup, + logger: Logger +): Promise { + const { p1Sdk, p2Sdk, alice, bob, appSynchronizerId } = setup + + const [aliceTokens, tokenRulesContracts] = await Promise.all([ + p1Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:Token`], + parties: [alice.partyId], + filterByParty: true, + }), + p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], + parties: [bob.partyId], + filterByParty: true, + }), + ]) + const aliceTokenCid = aliceTokens[0]?.contractId + if (!aliceTokenCid) + throw new Error('Alice: Token holding not found after settlement') + const tokenRules = tokenRulesContracts[0] + if (!tokenRules) throw new Error('TokenRules not found') + + await p1Sdk.ledger + .prepare({ + partyId: alice.partyId, + commands: [ + { + ExerciseCommand: { + templateId: TRANSFER_FACTORY_IFACE, + contractId: tokenRules.contractId, + choice: 'TransferFactory_Transfer', + choiceArgument: { + expectedAdmin: bob.partyId, + transfer: { + sender: alice.partyId, + receiver: alice.partyId, + amount: TRADE_TOKEN_AMOUNT, + instrumentId: { + admin: bob.partyId, + id: 'TestToken', + }, + requestedAt: new Date( + Date.now() - 60_000 + ).toISOString(), + executeBefore: new Date( + Date.now() + 86_400_000 + ).toISOString(), + inputHoldingCids: [aliceTokenCid], + meta: { values: {} }, + }, + extraArgs: { + context: { values: {} }, + meta: { values: {} }, + }, + }, + }, + }, + ], + // TokenRules is disclosed (P1 doesn't host Bob); Alice's Token is + // auto-reassigned global → app by Canton because P1 hosts Alice. + disclosedContracts: [ + { + templateId: tokenRules.templateId, + contractId: tokenRules.contractId, + createdEventBlob: tokenRules.createdEventBlob!, + synchronizerId: tokenRules.synchronizerId, + }, + ], + synchronizerId: appSynchronizerId, + }) + .sign(alice.keyPair.privateKey) + .execute({ partyId: alice.partyId }) + + logger.info( + `Alice: ${TRADE_TOKEN_AMOUNT} TestToken self-transferred on app-synchronizer ` + + `(Canton auto-reassigned Alice's Token from global → app)` + ) +} diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts new file mode 100644 index 000000000..943524999 --- /dev/null +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts @@ -0,0 +1,110 @@ +import pino from 'pino' +import { logAllContracts } from '../utils/index.js' +import { setupMultiSyncTrade } from './_setup.js' +import { + TRADE_AMULET_AMOUNT, + TRADE_TOKEN_AMOUNT, + mintAmuletForAlice, + createTokenRulesAndMintForBob, + createAndInitiateOtcTrade, + allocateAmuletForAlice, + allocateTokenForBob, + settleOtcTrade, + reassignBobTokensToApp, + aliceSelfTransferToApp, + buildContractReadSpec, +} from './_trade_ops.js' + +// Multi-Synchronizer DvP: Alice pays 100 Amulet on global; Bob delivers 20 TestToken from app-sync. +// P1 = app-user (Alice), P2 = app-provider (Bob), P3 = sv (TradingApp). +// See index.md for the full flow description. + +const logger = pino({ name: 'v1-15-multi-sync-trade', level: 'info' }) + +// ── Setup: create SDKs, discover synchronizers, vet DARs, allocate parties ─── +// Step 1: Create SDKs for all 3 participants (P1, P2, P3) and discover global + app synchronizers +// Step 2: Vet DARs on all synchronizers (global + app) and all participants (P1, P2, P3) +// Step 3: Allocate parties for Alice (P1), Bob (P2), and TradingApp (P3) +// Step 4: Discover Token interface on app synchronizer for Bob's token (used in Steps 6b and 10) +const setup = await setupMultiSyncTrade(logger) +const { tokenP2, alice, bob, synchronizers, amuletAdmin } = setup + +const allPartySpecs = buildContractReadSpec(setup) + +// ── Steps 5–6: Init holdings ──────────────────────────────────────────────── +// Step 5: Mint Amulet for Alice (global synchronizer) +// Steps 6a+6b: TokenRules + Token for Bob (app-synchronizer) +await Promise.all([ + mintAmuletForAlice(setup, logger), + createTokenRulesAndMintForBob(setup, logger), +]) + +logger.info('Contracts after setup:') +await logAllContracts(logger, synchronizers, allPartySpecs) + +// ── OTC trade terms ─────────────────────────────────────────────────────────── +const transferLegs = { + 'leg-0': { + sender: alice.partyId, + receiver: bob.partyId, + amount: TRADE_AMULET_AMOUNT, + instrumentId: { admin: amuletAdmin, id: 'Amulet' }, + meta: { values: {} }, + }, + 'leg-1': { + sender: bob.partyId, + receiver: alice.partyId, + amount: TRADE_TOKEN_AMOUNT, + instrumentId: { admin: bob.partyId, id: 'TestToken' }, + meta: { values: {} }, + }, +} + +// ── Steps 7a–7c + 8: Propose → Accept → Initiate settlement → Read OTCTrade ─ +const otcTradeCid = await createAndInitiateOtcTrade(setup, transferLegs, logger) +logger.info('Contracts after trade initiation:') +await logAllContracts(logger, synchronizers, allPartySpecs) + +// ── Steps 9–10: Allocate in parallel ──────────────────────────────────────── +// Step 9: Alice allocates Amulet for leg-0 (global synchronizer) +// Step 10: Bob allocates Token for leg-1 (global — Canton auto-reassigns from app-synchronizer) +const [legIdAlice, { legId: legIdBob, tokenRulesCid }] = await Promise.all([ + allocateAmuletForAlice(setup, logger), + allocateTokenForBob(setup, logger), +]) +logger.info('Contracts after allocations:') +await logAllContracts(logger, synchronizers, allPartySpecs) + +// ── Step 11a: Locate Bob's TestToken allocation ──────────────────────────────────── +const allocationsBob = await tokenP2.allocation.pending(bob.partyId) +const testTokenAllocation = allocationsBob.find( + (a) => a.interfaceViewValue.allocation.transferLegId === legIdBob +) +if (!testTokenAllocation) throw new Error('TestToken allocation not found') +const testTokenAllocationCid = testTokenAllocation.contractId + +// ── Step 11b: TradingApp settles the OTCTrade ───────────────────────────────── +await settleOtcTrade( + setup, + { otcTradeCid, legIdAlice, legIdBob, testTokenAllocationCid }, + logger +) +logger.info('Contracts after settlement:') +await logAllContracts(logger, synchronizers, allPartySpecs) + +// ── Step 12: Bob explicitly reassigns TokenRules + Token back to app-sync ──── +// After settlement, both contracts live on global. Bob is signatory of both and +// P2 is connected to both synchronizers, so he can initiate the two-phase Canton +// reassignment (Unassign → Assign) directly — no Daml transaction needed. +await reassignBobTokensToApp(setup, { tokenRulesCid }, logger) +logger.info('Contracts after Bob reassignment (TokenRules + Bob Token on app):') +await logAllContracts(logger, synchronizers, allPartySpecs) + +// ── Step 13: Alice self-transfers her TestToken back to app-synchronizer ───── +// TokenRules now lives on app-synchronizer (after step 12). Alice's Token is +// still on global. P1 hosts Alice (signatory of her Token), so Canton auto- +// reassigns Alice's Token global → app as part of this command. TokenRules is +// disclosed because P1 doesn't host Bob. +await aliceSelfTransferToApp(setup, logger) +logger.info('Final contract state:') +await logAllContracts(logger, synchronizers, allPartySpecs) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/splice-test-token-v1-1.0.0.dar b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/splice-test-token-v1-1.0.0.dar new file mode 100644 index 0000000000000000000000000000000000000000..8aea10a1a381d9ed9abc59e4798686df0993c043 GIT binary patch literal 488833 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

!q_MFUG%%*G;mLz2xJ?OXg|j#zOzd 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%0A;Vtg(}Phuab}1*4TBeTK`CoKPl$iW7{ngdS+R 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 e{7 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�WjCt( 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

wa*61XV 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

w2%1G9a_5ylq6hf4d z7M=_rC=4z)&vq}7>-x6%qOknw9n7xAoaYIeYE*WHtS|dC$dm9vTuA_ojf#4Xm+ZJu z^|l5o=|QbgU!}d50~(LokWPB!$~JZc)1Uunn`(yWjyYYD_BijVK?ErC*Sr^7%C9Epua0dmuwxKr}6x9GITY;+)@Ud4dq5YpOA8%R329$tQCmvt_f22H+3ITF(s! zuCmV-$#V!f^T*&>^2a#i$F`7+^m=xv2;H1lfJ<>#Ndg0tbeEks0&#<%ihHr#^Gx8^ zD0EGr>Ntvf7Q@?3W#5)NO!os%8ZI|u&n_3_d?RL}_hPj@2I>J*dIr9O+Q1r$Oicbu zwmXYp=OICzCKrp~Ai_#-5Z&g+XGYJjp7!maL!>MVzv-|w5Wa?~!RvsLIH3{&Qvwqx z!#G=nweiIR+$NGfjsabdzMe|&FsqadE(3l?7>+BW!mgN7DzT+(LwCE*mBxpTxvK6Y z!t5)ZSok`hC7GBi3CL3&9R^zk?0cKdPO0h6v&iQ6oj~2sk`=n&hf>iY$kTL>Z^crn z?lHehdv}WPXo$oj@Y7zw`!A==&#fnx7j6|(32Tx%dv9m(kG~&lkY?tW>sNvu2`B`I z&nQ|awq0bz?32WBFRRmg-rvt8-JmbB6@^AZ2tk28S_hrUw>fvthbfm1gAnP$TW#O#H& z+E>b{(|NzSj*5NqgwMk{t#24D%D7MIwI|yq2ux)`Bn9MDgQN&3MyB*hZEfv@*`< zs)VqJsb$jXAp=LYOoARIsg-Aa*UpPVtRU~zjK3xt%aL*=njy{s_3!_q7^qr@)t|Dt zgyL5X=`SbL5_Zj6z!NJyIAql*Bc01xB7ExhXKQF4_5&ehlj>g8_e12d2z&Cg=3dYU zP!6gmzs-f>(+#;<)y>5VU2b_WEVG|&ga-qHlK>FbU7a+I2K!of7XP|nDeK!mc zLY9F!3&@uW*FQmoYyjXOND%lW51atvx}K>s5*NS_$n$UXb&zc+=QlzKhx#5SQY{*g zSg7kr$`+^|4p%HMY#_4kcFM!kFDfn2>oH0#&>GR?EwO7dtY>wIG01Hr5WfWo7Z8`z zvM1E{5=cLNe|cAc4d{CtED_T74zM=v6$BWoz0F0@7U>F*0)3W8=SS%28@>&N@mmM$ zuIz^80}}K&$gVgw(vxUQbA zp6Qvl`mLGinR@%_=SeDkY@k}idWm*AN0H28h;PdO&6;pCkn4ZL{ipym*1J`p3KVdp z(rI>;lb{~(X;^Z-o;}!*FmG?|^ebVAm%k@d4}O_m(ffJi>h|yeQ1*$O?VL?HKy=b@ z19$xlm9^3{kZ?(;jj;GVf)oh@j8~ZRc zge3Qfo|un_8K3F&evEiLD1r|c)AP{{J?fM#FJ!3;r9N_YI}7&+?~bb8oJl8c3SzdV z+(@xODo&)EaknPViWnR?DN%Kz{3+k`uR$)}on$uSm#tk)>8_kyx;uMj1nZ#4%3_J> zU#ev3W`K@~1N}tigv_4`=a-?TZHG4C1vHNg8lTTkVoRD;TOknzOt<^fn5$gPu`qM) zrAOPw{<*~rB#PZSP4Z2&Sg}myl|@V1pFr`3d`)Z4)r3D{#&kE9%n6pTA^kIol$Z(> zvt^3qO>8MrtlvLM`Y{edhswr>Sp>$x!}3|nnOZCkdXyM)$9;=)DL<9lQx)zN(aMIF z8*3{bRJ#*P+ZVl}QykcBO`Ka%%u~%?F`Z2pi|XjnfIL{?X|m=h?~I(xe0q%3qe!Dg z?OwC%_JJNcBsdW*rX(wil9c$P!Mih>PS#E;)CqrvNPvgGo5@xZ!pTj5vXnm~Owmpj zHE9#10m^baq6NjpZRr|xCnuNZmt#f0Xj58#f@@sbT(L#hy6Qv4XSMR%@RIWK8o~!( zXG~DqG~$d&{)3DDF*y4TPhx=v@o@GRL#63mZ67dK!9)0bRQ1&~eUiGTzY0z7z!Trb zO$&W|=(oqbjetCBS3VYD(8z+Rc5ZHYf+hRpXITi`IhSi%qdnPNJ|Dl7s=Cz7B`(#G zY;F!SN-)b12~RO?q{5RP9++535#_{<4K7@;|Y3MG^dAjbWR9%s+_fZqOTx4%KAz# z>4=anbhN)6Z<6t)W6(dz)!E3Xkf+PBl{SRSwvw%7*&&H#?m#Rg$ro?`Sz5;h4(;$R zBuVx=F#d=nW0s3o<;{fSC?%O-y3}d?{^h7g;B1Q;AA9xWZdZ43&FTQcFr+6QhfD-$ zgX&}v+-&O$xqVoErs4C3YOI{Ozx)gT#jG36!weXgFK;~H3L@2E9;ZQpK9c8b-Fvl) ze?}aIDVfbq+h>E?MuPHz=J@-sTJ!p` z5Y_=qcBT^XaX#t;W$a8Ju6Q6;t(1-avIrfLJ=-@#-$Uj(0G^v;j zy<~lKzlj6)&Sa)#$j;S_Aka2NdFzyFBCtbx-Q#b9d3H~Lm`6VjE8-|L8Z^YN4TR`?;`g#K77OE3zd2 za800k2?|s@_6@E_g7Nq*XVEdDzO{1MtOqn?U)X5FT(sUy`864gR?FAa7|b$p0_b#R zEk)0FM?V*3dQO#REj0$JQYXri?JTf>)l`=O&h=LoZ5p`_Cstq^z9q=lV`8P{c3dFz+BZIp{5XP4u9I+wdD z8<)=5N@=HdVnFr37q&ut8TDEm5t_OBh9vKGJKJM>3PjUiS*%*Gl(hCX)FHB zcx$i>K1vz)I|WG2z4+V1Cr9=a4y%!IluPN)SPzSHU0^~jDz|mI3tHF<VT+5`f5AQ6Zz8O6EepzIjxQ!G}0P z6vkbhPqf@$+rQs#koE9nPp}AUJo-6l1yXuH14f5k=?c(;lkP{+R%=lCz~tsL3+hWd zW^{+nF3po4IwHU5adoI3EBgos)QpQg<|?sV?P}rfGP3cPXJ~9SX2f4?Zr9qm*`<$+ zL^W`i2E|uC$?5PBqxya1#5z$pMi1P70R5 zehz!Ad~WD5k`ZqpeCfCkwpTlougxS&omF_4gZtLb%y9SxUH+9Zq9H7&z;rR|&@jwW z2Y4b$I-9R2>8!(LdZ^_Xz3A%K@v^zeF(^F~kHAVx{XTr!S=kILb;C+&)iFxcF&eL8 zgsaivJJZdMY5mduiW2xV^1h&JZ!VV-ds-YDT0*wyDtk7799rUni*B;|%E*AIfGmex zX66V)A%9WL9hX*2DxehEkx&XKKpRxVSg3&m{RhXM&VU#O?6~hyQk5K>Sl=nmIxN5^Pe-vlZ3A+eCX`?(W)cj*i zi1Ajij67(J0iDN*GAKlulK&hoUk5fvql6c+TT1C0T7W+|uW0sN$Hc@wby{{Q&?W@e4MP zLXuy~kq1~R$uD<{lQ5Ow9kUM)Fd%th25LxlOW(33)FgTb?dt%x$X*D5Pg1^uw;~CI z@$X6db)<^E)lYM&s`o#DHB!DJw;TXJnOir&m*8zI;7jy&3h*U-TLbtKzr6x{3Ek!b zzT|EN#FxJ!9lt9O;X|;%M9Cc4Tjzuiz!bm(6WAb?Llb{@q-4$lgqQq`*dGM6#C0a^ zn*kUoJRpHIQu<=IRtY*%`Xaa52}|*v@%s}1dom9mAdl3h*sWc{Q(R~2z7ODv;)Mtp zCdDs(>yV(3;2p8g0>~wO0RyH=b_;(yV;|=oxz7XWA%8&x+Dm{xRjpBRczTmA(~Acm#hyCR{B`qeSM%b+R~{`_{B{IOf79 zl_>0@8Y=KnmB%bTD^V|6ad?P)7fSOZLbli}I4-OL3u}th-ncfQ0&gqVpU`Cnr zuzQnse;HwDHeOzZ5gaWWzOb-sEByY^42ROn-lSAmd!=CbbyJ+mRByfxbCx205ezP65~?vN0xX?~e|j7Vk%z0((oLH@I3~RZAAKFJvl{Cc;HA zOQGe-;*(3RU~{MDjw_F54yTXG&>w^2F3QZecGz?r@uG!L6M&3Ssp2yZabDL>-j`%9oSbg_Rn)x3`7>!@z>b1iA z#AYB|Q~1i}@SUHe9UT*t$31aSxNoKti3R;3FMlA3yin&ttzGH~dy=lKJJN(s@%Rp` zI@X(1XST=jT1986=N&l%URLQ%R2|FpcZV4!nT@Isd~Ssf)Gmj-tBVsDrEWzZ1f8pR zl)4zfZ{xK6*SC?%T=1(Bru)8g3!~BIe$}>r+r);nZ*LN2?GhYuyG)kO3uZF>*@B{x z3>B*5f^fC?NHUgLoBi_^X`War28O5L zvOeKuu|{Jvqx)z&f70n}38(lijs=={pT}>voyLL~#!;?n6Qf+%-)JKDtxKX8#KE`q zz|sZ{wAZ(Kck_Vc*GuM?OKEFHLoR_W0b3X>*E)T@R}kPm9GQ1KUQVIhRUb3;kEOZc>K8lKQrlues1v-<11@?dg`oW}iA#ji+U zCb&$%=+t|IY+yH+E)r`yR#RZwqJaOxPsXoe$i}SfNw(*&CJjT%`hW^Xt5`jQWGY;> z0ZIC6YFmeI+lgmW%b5n|-8MDyQY2W*cMEB&Z_~kR(`B`RMZ5m)#Vg_!SmkY%Cl zww&dOkKV$>{zM5-+CH%blf@%bqA>#O3Z=lM^h754V)o%b6}a{0(2BQp zS@!0jMe)-e3s{{97@Y`^LY!;O0pYIv`3%N^SiE5B7|#jYZ(}74^|p<2H%Ob-gU1F~ zfj8wc*PD!TDQmKqhqkvD#^hV5vfT&9w|c~y_S(2tup?Miw;HtjZ^BbPhVA-?8%~5j zoSsZ#b77G+yky0}*CKgUk)BjXSIoVk`8BI7?SeU*+JRD3$Y)l-? zoJ{`*y7QlJ|E2%@{4Z^EeM5H!Uj;6+8Zzr4G?B>8qz!}eYGKap*rToUVKi&>A0n1? z965mEdys)rwdZt%5Ew8-aFnyed6aTOVuE#s&@>T{gY=J^@UNLiT(*Zalp7udUYcDSV{hjn#tWbo@#w$>Dze@d>M$zYy7AsEg%c7P{m zjHbMQe9Wot-!GV#6wF{r;#Wc~A*@PS+CU2ryaA=+ROTXI?_&%SH?maC8)GCxVVva_ zizz9IR_3OZfB-Y%Ym#v03{->k$uE~ASbz@D#3Yy&Ey(CrChM>No#zpcgyC%JjNy4I zgf|jxXYj2on2_Nn%>}BS=O$ z{v*+&9H~>iM5dLL1fS95jH`~P1fR`uY?P3BRc_nULXrBPM=K@$po(Y?j&V;Uh4R#L ziNIzwX^EI10u1}@1mR0|8h67aVjSU1)DIx-;Oi-a!^6Ao&B<+P5 z#hPwii$YHR^f_lG&aq<3c*L@d!f$BhsBhkt*&a!>wqm>JZX)%8>3Hynd%}$J2+~{$YNrKY1A_iW5En?!Y0}0o#=<7}DaQDT_G3V_U*;F2 zEoss+5gH597vN!uIa0#hzYT~I;YLCNB0;5;V*r7@c}%*hc+rE(S+pe#%Mz4h{DF*O zs<)=i41a$41oZs_MV-v(PAX>T2bAr@C^3G=It`75xK&~%xEODs*r{~}}aRf<) z(5{qZs&+{*q9%3z0PLReuuFUXzRkQO>74#oGK0IwZ(|4Ife6#o+gin7$x16KT6tiI zBZj;Fj+}Wby(~JA)TQ;Mb%G(dao=Y`a^_L>vWP+A%9<%y1iV@beycdo$AGVb^75$W z2`H|xi0=LAGsTh6%=^*X5Gcy6l($!Qo=!rDBa2DsV(#AzGKGnDA{!u|SMP_RWy+{U zYc&jV0g;nUJsqz4NQ-G12W86WAjpp>i8zE3-H3vD4k%?3GpU0x$pSqQ<>EFPW(yw8 zru$#srIB2OhMQ(b7wi` zV)5tSA_v?~a~8LT11Lqa*=-4H^_73~f@KSPe6FMAePR;z zKpv}(erv8M#uSPfAsw@h-f3{;$>S=HfX%aEANb3c@_zjW=N1M}pcT~W`^1~ZNuoG_ znx8k4BHkXNdA`Yaz2AxGl?B+auOwbvLNb-tGJSH9+=7N;U#4ULa=YhBGks3oViE5q>y@6I{J|B z$fjyX02`Jm$#2$?ZfLT&d`q=95nL_S;6z_wb0_7#jW;VW&D5Ad>8ua&NOR3FFWRoW z!#(N*KEbpY$~N<uwunO36Ye}iXOhMs>_neG4)5*+=j;S0>+~tM zg4wi~B{QAH#OhJk!u2KWG^Bh;*2xvp&J|L^wMV&DznH;-IT5gbuz46I;xwdk_@k4{ z$JyyM?NC>GMZI}3>&8-^Pfq{9cCvWJgvtrrtUDyQgCm|4oXaqVH#p(ZONz)}Ayg=J zCQC=hS`i%AnMqZ7E6^_7?NrF7V#T_I5w@>K|Q^E!JmXiTF| zB^M^LA>Q$I8ewu3%g&UXuC)6a4t6z}0aZPxMp={Y4@u?&hs>AwW0g={q{peD!W^HM z0_^p*hi|N0XuKDpQxQDpx2H>#x`!C`WvjKP*l|C|>-C>b6g^oJeP#SOm2VPI&nS*L zEa9nI%`SgdMd{fR=_F*xv5!yyzkznXvA}DpLAACAyMgBW_ja?J@hG5pgG2O*0*hRZ zhjL8l89+JA8ef=hB=@m7{VQ=kKnaQGi^!V}=IS@re5~rbXUimYy4CKaC=Yd&2OSDeqBll49iwev z21>BU+nMKO#0~dP&^2F&oQAKm5Wb6KkCVg56TwW1!k4%7|v@i{(UJ|f){+o zu`jeEnPDF7Mp@1!+u5To4Cu~(3U_oy566ya);iIsf&dQ2-RVY>y_F?w{~?QOSOb28 znn+WGCnKw>vdPLxQv$9DHc)dpxsA)L=HU$eR)BxO=Kh+Gcr-PMS1Cqo!}fc1MO&#y zYeSyb@ZhLf;)aku{j6fMO17G(BYH1sQR1i&uY!7P$&NZT!F8e8?_AR^RId=q5gJPdCGi&K&GNANjm?L}FB`xR)> z8;boAb}CO?vp1AwyTpD9^BCm&EYWtBPQv)@VZ{j7ApwfY3pDvC{+ZecW(Rv(q$8EU zA@4=ZA>Ja)^SkC=PtC#C0=ilPwYqK__{w3m%9>TMGpQeEXU)B<#l}8!n3@U|np@3~ ziw(-(>Ycn%Xo!a)1@S~auSot&QagNY6Z!3Lcu8nKwwWe)>LH_&#_+%ce&4 zj|dGD7A@2d0IN7%01N#%oeD6h1|r02NXJ9*$O!BGaZ~p2$LuZ1 zbcW)^a{qir$pNQ^q&AgZwaO&svG1!E3@FUZ@w4D?w;AHT^{F*(h=4X0iN_<2Ii`y! z_CFxg3&8?p9340P^NR5!=AU3(R7+|at8}xHKmgg!wTYYnJ~`_`Dj~f8;{>nYt|< zFAl8qY~ukx!BP1zxK}Ar^3O@KA8Fqf>|@TkF1XiOIGVsytF-c>jNJaWH)^B{F+4o? z@xc^bM^cqP;DH!aM9{zVLEV-+yeu(Pa2jpi{#-CV%g@RZkec`8mi~zi<47E5Har zt^AB*z_M~;9RxeE&`s``JjI@`l%!y${vdqY9;HF_h_VJ*fX{kHc* zOt1!ZZ@~EUXN`9Yr)z(soI+6#j5W||#bLXh-g8S~^R*yQeP@T=#oFNNpj&^*#3&{u z%F54`|LazQ?tF~kzey4zP=MsKbvZ2@B45pkjjPR_H2rdy@$I z%1_mqJ}Jfl3{dtd+MuWUVEM=rUnRA zuGbTm>5`g}%T!hPovr@yTxe%6NM3}pF67IxE)@CGlnPPD-a@y#hs(Bj*aW%A`r|CL zxz{S8aBjZUCkvt@gn%NRGsO2N@;|AaDa&;q)7TE7(MU9gIayc9NiVfk7v`fb>I?Z~ zM}JdaJF}jKL{kEbpeWA+f`qn6xdM3uF=m>PzRO$p;I;K2I1V4bVN5%YX0fJ8RS{EP z9Ya0q;E~K=`TZ?G>mPSQ1v>6fNm*o6ks&_O#xoD|KPWp(^X#zkFOMi~H`k#f#OI5e zBBp=L++N9lzaderb2vpA@@f(74AqC%Dn{tr32DN>Aj|ATjP^jo2{(?paHiei=dU=K z4mU)gP2`-VbxGEzcf()^oSMEG2b_fbW<)Jol-{XMp9EdxH20`$r0f4AZ-S+>hOZ29 zbS^>89MGFK*%TuIr@D9a_tk~-BjbplGSxvpt?4AWW1iS&T4{rQsp_f(@Kz3ZqsE08 zbV^X$OQri%;e9U2q_dr?)3~e&Q?VHAcI=cXn@2d;+K#VA{i11L-z$b*iAuFJ`P#|U z?4-3BI;=i``}<0vo9Te$b+2kaL@vxi#Cx(4h1|-q_v3QHz1Wn+hm3ObU^R-aM1(~j zQu$})#52fRl)YVKNsF-UP)j4^qVx}I7ahY5T8XXeLJI3L3hSA~7O?9%77LO5o zyKz3!<+Kh?_e>1kLc3%xoAH-q10T74iMJu$vfJv|@6lfWI{ibs`5G@(rYFJTLc=k* z^gWFsTGUr_4s!;w!*wNZ*S^0Bta7>9UzA~= zTMF9UsLswBbUxl^_n#-Xrr^llfa~g_<4#1h8g`cWb}Qf5_WQFZ=jdFsI+vuVkdjBi z0eT&&{7n2kjBH{W5c(F)mD*p-mB!tcjF;PyPcbJ_h`BE(pX_tPD&VqY z%pO}DZ%sd(<$UbFi;BlQem(nX*J!^{TJr}f%kAhShOur>wZJZ~ z*0JwR=ZZjf&@Es$RoAN-#cQ}P<~IjX=k97B4C?sRk4(@VHI1LIj4)5fT@~TKk%`V9 zT(_DoFW1g5yXjo#TKspH^x*B8e9|t?`qg`vkF?)~p-eI{x@JS`5E(bGU3(GSplw{- zdb>#Ot{@le+uD1LKN;7S{NF(KY&Ed7d8DP&3jeRz|tHiG}aR5gM-O!Sqs-8$8Om)MB>YTdXW7P?8T4rxi_A8+>ff-v+x(0&&}7)tc~Xuwtg8(P{# za$oDha_`>&_x4-+ef|r|*59T!3VP+N0Wlq#aW6zv*g$-*j{9qj$sNrDOj3 zrT9@;0Z)54oOGUL@mv4rWg-_hN{;Al^c>dpm`rYR!r`G8a2nFSSZ zbGWW>X*0v_dMbY>5$V$lJg^OvOLFVekY{c7D$6AOg+UJf2>Eg}$5yFcq-(*$PT~N@ zoc<{)SY!G3>Q|(1h;3G4WKJT2iCfUWn$9|{%^`7!A#vIv*McE}3*&S6yjTCyx{if* z!7)ePQ<7nAtZyEIEAN}z``rUh3VHqXK0^} zp&S7|8F>8k=uHGN*;0Y_QZPtgvOpi_5&x?OA}$dmicHD%)=^oFUc%ASE2z`%Xgm)o z{=15PjzmVy6&WO7N{Oi%>ARRv=F0FaQ6>HqI?9>v83e_@@?$p+njcEU|AKdW;N4js zcKr@D-`$EVLA`~N6y;jywqpVw16&*T9gpqMY!KxC

SO5^9c~99Mg8zpIM;jF@??X(_|aivCS5Ep6nT! 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 z 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 Y{{^~9Q)s*t&hXy0Cv5x;HiK9H4ayl { + const results = await Promise.all( + specs.map(({ sdk, templateIds, parties }) => + sdk.ledger.acs.read({ templateIds, parties, filterByParty: true }) + ) + ) + + type Row = { + label: string + template: string + amount: string + cid: string + sync: string + } + const rows: Row[] = [] + const seenCids = new Set() + + const isHolding = (template: string): boolean => + template === 'Token' || template === 'Amulet' + + for (let i = 0; i < specs.length; i++) { + const { label } = specs[i] + const contracts = results[i] + if (contracts.length === 0) { + rows.push({ + label, + template: '(none)', + amount: '-', + cid: '-', + sync: '-', + }) + continue + } + for (const c of contracts) { + // De-duplicate: a contract can appear in multiple participants' ACS + // streams (e.g. Alice's Token where Bob is the admin/signatory). + if (seenCids.has(c.contractId)) continue + seenCids.add(c.contractId) + + const tplParts = (c.templateId ?? '').split(':') + const template = tplParts[tplParts.length - 1] || c.templateId + const amount = extractAmount(c.createArgument) + // For Token/Amulet rows, replace the participant label with the + // holding owner so the table reflects who actually owns the asset + // (not just whose ACS the contract appears in via signatory rules). + const rowLabel = isHolding(template) + ? shortenParty(extractOwner(c.createArgument)) || label + : label + rows.push({ + label: rowLabel, + template, + amount, + cid: `${c.contractId.substring(0, 16)}...`, + sync: syncAlias(c.synchronizerId, synchronizers), + }) + } + } + + const HEADERS = [ + 'Party / Owner', + 'Template', + 'Amount', + 'Contract ID', + 'Synchronizer', + ] as const + const KEYS = ['label', 'template', 'amount', 'cid', 'sync'] as const + + const colWidths = HEADERS.map((h, i) => + Math.max(h.length, ...rows.map((r) => r[KEYS[i]].length)) + ) + + const pad = (s: string, w: number) => s.padEnd(w) + const sep = '+' + colWidths.map((w) => '-'.repeat(w + 2)).join('+') + '+' + const headerRow = + '|' + HEADERS.map((h, i) => ` ${pad(h, colWidths[i])} `).join('|') + '|' + + logger.info(sep) + logger.info(headerRow) + logger.info(sep) + for (const r of rows) { + const line = + '|' + + KEYS.map((k, i) => ` ${pad(r[k], colWidths[i])} `).join('|') + + '|' + logger.info(line) + } + logger.info(sep) +} + +/** Extract a human-readable amount from a contract's createArgument */ +function extractAmount(createArgument: unknown): string { + if (!createArgument || typeof createArgument !== 'object') return '' + const arg = createArgument as Record + // Token: { holding: { amount } } + if (arg.holding && typeof arg.holding === 'object') { + const amount = (arg.holding as Record).amount + if (amount != null) return String(amount) + } + // Amulet: { amount: { initialAmount } } + if (arg.amount && typeof arg.amount === 'object') { + const initial = (arg.amount as Record).initialAmount + if (initial != null) return String(initial) + } + return '' +} + +/** Extract the owner (or admin for rules contracts) from a createArgument */ +function extractOwner(createArgument: unknown): string { + if (!createArgument || typeof createArgument !== 'object') return '' + const arg = createArgument as Record + // Token: { holding: { owner } } + if (arg.holding && typeof arg.holding === 'object') { + const owner = (arg.holding as Record).owner + if (typeof owner === 'string') return owner + } + // Amulet: { owner } + if (typeof arg.owner === 'string') return arg.owner + // TokenRules / TradingApp: { admin } / { venue } + if (typeof arg.admin === 'string') return arg.admin + if (typeof arg.venue === 'string') return arg.venue + return '' +} + +/** Shorten a party id "name::1220abcd..." → "name" for compact display */ +function shortenParty(p: string): string { + if (!p) return '' + const idx = p.indexOf('::') + return idx > 0 ? p.substring(0, idx) : p +} diff --git a/docs/wallet-integration-guide/examples/scripts/utils/dar.ts b/docs/wallet-integration-guide/examples/scripts/utils/dar.ts new file mode 100644 index 000000000..cb4b38007 --- /dev/null +++ b/docs/wallet-integration-guide/examples/scripts/utils/dar.ts @@ -0,0 +1,22 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +// TODO: replace this function with the usage of built-in upload() function after the latter one +// is fixed to support vetting of uploaded package on multiple synchronizers (currently it only vets on the default synchronizer, which is not sufficient for multi-synchronizer setups) +export async function vetDar( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ledgerProvider: any, + darBytes: Uint8Array | Buffer, + synchronizerId: string +): Promise { + await ledgerProvider.request({ + method: 'ledgerApi', + params: { + resource: '/v2/packages', + requestMethod: 'post', + query: { synchronizerId, vetAllPackages: true }, + body: darBytes, + headers: { 'Content-Type': 'application/octet-stream' }, + }, + }) +} diff --git a/docs/wallet-integration-guide/examples/scripts/utils/index.ts b/docs/wallet-integration-guide/examples/scripts/utils/index.ts index 1e15c1eee..5af2ac38a 100644 --- a/docs/wallet-integration-guide/examples/scripts/utils/index.ts +++ b/docs/wallet-integration-guide/examples/scripts/utils/index.ts @@ -9,6 +9,11 @@ import { AssetConfig, } from '@canton-network/wallet-sdk' +export { resolveGlobalSynchronizerId } from '@canton-network/wallet-sdk' +export type { SynchronizerMap } from '@canton-network/wallet-sdk' +export { vetDar } from './dar.js' +export { syncAlias, logAllContracts } from './acs-logger.js' +export type { ContractReadSpec as ContractSpec } from './acs-logger.js' export function getActiveContractCid(entry: JSContractEntry) { if ('JsActiveContract' in entry) { return entry.JsActiveContract.createdEvent.contractId diff --git a/package.json b/package.json index 62493b550..443c65638 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "script:openrpc:titles": "tsx ./scripts/src/schema-title-validation.ts", "script:validate:package": "tsx ./scripts/src/package-and-verify-wallet-sdk.ts", "script:test:examples": "yarn node --trace-uncaught --enable-source-maps --import tsx ./scripts/src/test-example-scripts.ts", + "script:test:examples:multi-sync": "yarn node --trace-uncaught --enable-source-maps --import tsx ./scripts/src/test-multi-sync-scripts.ts", "script:test:examples-stress": "tsx ./scripts/src/test-examples-scripts-under-stress.ts", "script:test:stress-scripts": "tsx ./scripts/src/test-stress-scripts.ts", "script:release": "tsx ./scripts/src/release.ts", diff --git a/scripts/src/start-localnet.ts b/scripts/src/start-localnet.ts index 4fffdeec9..b706489cb 100644 --- a/scripts/src/start-localnet.ts +++ b/scripts/src/start-localnet.ts @@ -4,10 +4,16 @@ import { execFileSync } from 'child_process' import fs from 'fs' import path from 'path' -import { getRepoRoot, getNetworkArg, SUPPORTED_VERSIONS } from './lib/utils.js' +import { + getRepoRoot, + getNetworkArg, + hasFlag, + SUPPORTED_VERSIONS, +} from './lib/utils.js' const args = process.argv.slice(2) const command = args[0] +const multiSync = hasFlag('multi-sync') const rootDir = getRepoRoot() const LOCALNET_DIR = path.join(rootDir, '.localnet/docker-compose/localnet') @@ -17,32 +23,31 @@ const GENERATED_COMPOSE_OVERRIDE = path.join( ) const CANTON_MAX_COMMANDS_IN_FLIGHT = 256 -const CUSTOM_APP_SYNCHRONIZER_SC = path.join( - rootDir, - 'canton/multi-sync/app-synchronizer.sc' -) - +const LOCALNET_DARS_DIR = path.join(rootDir, '.localnet/dars') +// TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well function ensureComposeOverride() { fs.mkdirSync(path.dirname(GENERATED_COMPOSE_OVERRIDE), { recursive: true }) - fs.writeFileSync( - GENERATED_COMPOSE_OVERRIDE, - [ - 'services:', - ' canton:', - ' environment:', - ' ADDITIONAL_CONFIG_MAX_COMMANDS_IN_FLIGHT: |-', - ` canton.participants.app-provider.ledger-api.command-service.max-commands-in-flight = ${CANTON_MAX_COMMANDS_IN_FLIGHT}`, - ` canton.participants.app-user.ledger-api.command-service.max-commands-in-flight = ${CANTON_MAX_COMMANDS_IN_FLIGHT}`, - ` canton.participants.sv.ledger-api.command-service.max-commands-in-flight = ${CANTON_MAX_COMMANDS_IN_FLIGHT}`, + const lines = [ + 'services:', + ' canton:', + ' environment:', + ' ADDITIONAL_CONFIG_MAX_COMMANDS_IN_FLIGHT: |-', + ` canton.participants.app-provider.ledger-api.command-service.max-commands-in-flight = ${CANTON_MAX_COMMANDS_IN_FLIGHT}`, + ` canton.participants.app-user.ledger-api.command-service.max-commands-in-flight = ${CANTON_MAX_COMMANDS_IN_FLIGHT}`, + ` canton.participants.sv.ledger-api.command-service.max-commands-in-flight = ${CANTON_MAX_COMMANDS_IN_FLIGHT}`, + ] + if (multiSync) { + lines.push( ' multi-sync-startup:', ' volumes:', - ` - ${CUSTOM_APP_SYNCHRONIZER_SC}:/app/app-synchronizer.sc`, - '', - ].join('\n'), - 'utf8' - ) + ` - ${LOCALNET_DARS_DIR}:/app/dars:ro` + ) + } + lines.push('') + fs.writeFileSync(GENERATED_COMPOSE_OVERRIDE, lines.join('\n'), 'utf8') } +// TODO (#1721): make multi-sync the default and remove the flag once multi-sync is fully supported and tested in the main scripts e2e tests, but for now we want to keep it as an option to avoid accidentally running multi-sync e2e tests without updating the main scripts e2e tests to cover multi-sync as well const composeBase = [ 'docker', 'compose', @@ -62,8 +67,7 @@ const composeBase = [ 'app-provider', '--profile', 'app-user', - '--profile', - 'multi-sync', + ...(multiSync ? ['--profile', 'multi-sync'] : []), ] const network = getNetworkArg() diff --git a/scripts/src/test-example-scripts.ts b/scripts/src/test-example-scripts.ts index 7da10e586..2f4a12b75 100644 --- a/scripts/src/test-example-scripts.ts +++ b/scripts/src/test-example-scripts.ts @@ -18,7 +18,11 @@ const dir = path.join( ) // do not run tests from these directory names; full name match -const EXCEPTIONS_DIR_NAMES = ['stress', '13-rewards-for-deposits'] +const EXCEPTIONS_DIR_NAMES = [ + 'stress', + '13-rewards-for-deposits', + '15-multi-sync', +] // do not run these tests; exceptions can be full filename or just any length subset of its starting characters const EXCEPTIONS_FILE_NAMES = ['_', 'utils', 'types.ts', 'upload-dars.ts'] diff --git a/scripts/src/test-multi-sync-scripts.ts b/scripts/src/test-multi-sync-scripts.ts new file mode 100644 index 000000000..1420069df --- /dev/null +++ b/scripts/src/test-multi-sync-scripts.ts @@ -0,0 +1,112 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import fs from 'fs' +import path from 'path' +import { error, getRepoRoot, success } from './lib/utils.js' +import child_process from 'child_process' + +const maxIoListeners = Number.parseInt(process.env.MAX_IO_LISTENERS ?? '', 10) +if (Number.isFinite(maxIoListeners) && maxIoListeners > 0) { + process.stdout.setMaxListeners(maxIoListeners) + process.stderr.setMaxListeners(maxIoListeners) +} + +const dir = path.join( + getRepoRoot(), + 'docs/wallet-integration-guide/examples/scripts' +) + +// do not run these tests; exceptions can be full filename or just any length subset of its starting characters +const EXCEPTIONS_FILE_NAMES = ['_', 'utils', 'types.ts', 'upload-dars.ts'] + +function getMultiSyncScripts(): string[] { + const multiSyncDir = path.join(dir, '15-multi-sync') + return fs.readdirSync(multiSyncDir).flatMap((f) => { + if (!f.endsWith('.ts')) return [] + if (EXCEPTIONS_FILE_NAMES.find((e) => f.startsWith(e))) return [] + return [path.relative(dir, path.join(multiSyncDir, f))] + }) +} + +const scripts = getMultiSyncScripts() + +async function executeScript(name: string) { + console.log(success(`\n=== Executing script: ${name} ===`)) + await cmd('yarn', ['tsx', path.join(dir, name)]).then(() => { + console.log(success(`Script ${name} executed successfully`)) + }) + console.log(success(`=== Finished script: ${name} ===\n`)) +} + +async function cmd(bin: string, args: string[]): Promise { + const child = child_process.spawn(bin, args, { + stdio: ['ignore', 'pipe', 'pipe'], + }) + + const pretty = child_process.spawn('yarn', ['pino-pretty'], { + stdio: ['pipe', 'pipe', 'pipe'], + }) + + child.stdout.pipe(pretty.stdin) + + let logs = '' + child.stderr.on('data', (data: Buffer) => { + logs += data.toString() + }) + pretty.stdout.on('data', (data: Buffer) => { + logs += data.toString() + }) + pretty.stderr.on('data', (data: Buffer) => { + logs += data.toString() + }) + + const childCode = await new Promise((resolve) => { + child.on('close', (code) => resolve(code ?? 1)) + }) + pretty.stdin.end() + + await new Promise((resolve) => { + pretty.on('close', resolve) + }) + + if (childCode !== 0) { + throw Object.assign( + new Error(`Command failed: ${bin} ${args.join(' ')}`), + { logs } + ) + } + return logs +} + +const results: Array<{ + script: string + result: PromiseSettledResult +}> = [] + +for (const script of scripts) { + const result = await executeScript(script).then( + () => ({ + script, + result: { status: 'fulfilled', value: undefined } as const, + }), + (reason) => ({ + script, + result: { status: 'rejected', reason } as const, + }) + ) + results.push(result) +} + +const failedScripts = results.flatMap(({ script, result }) => + result.status === 'rejected' ? [{ script, result } as const] : [] +) + +if (failedScripts.length > 0) { + for (const { script, result } of failedScripts) { + const logs = (result.reason as { logs?: string }).logs ?? '' + if (logs) process.stdout.write(logs) + console.log(error(`=== Failed running script: ${script} ===\n`)) + } + process.exit(1) +} diff --git a/sdk/wallet-sdk/src/wallet/common.ts b/sdk/wallet-sdk/src/wallet/common.ts index 196edce93..0062a5089 100644 --- a/sdk/wallet-sdk/src/wallet/common.ts +++ b/sdk/wallet-sdk/src/wallet/common.ts @@ -3,6 +3,40 @@ import { SDKErrorHandler } from './error/index.js' +/** Maps the two synchronizer roles used in multi-synchronizer setups. */ +export type SynchronizerMap = { + globalSynchronizerId: string + appSynchronizerId: string +} + +/** + * Resolve the global synchronizer ID from the list returned by the ledger API. + * + * When a participant is connected to multiple synchronizers the ledger API may + * return them in any order. This helper ensures the global synchronizer is + * always selected — regardless of position — by looking for the entry whose + * alias is `'global'`. If no such entry exists (e.g. single-synchronizer + * setups) the first entry is returned as the default. + * + * Pass the returned ID as the explicit `synchronizerId` on `ledger.prepare()` + * and `ledger.internal.prepare()` calls that must route to the global + * synchronizer. + * + * @param synchronizers - Raw array from `GET /v2/state/connected-synchronizers`. + * @returns The `synchronizerId` of the entry aliased `'global'`, or the first + * entry's `synchronizerId` when no global alias is present. + * @throws {Error} When the array is empty. + */ +export function resolveGlobalSynchronizerId( + synchronizers: Array<{ synchronizerAlias: string; synchronizerId: string }> +): string { + const global = + synchronizers.find((s) => s.synchronizerAlias === 'global') ?? + synchronizers[0] + if (!global) throw new Error('No connected synchronizers found') + return global.synchronizerId +} + export function toURL(input: string | URL, error: SDKErrorHandler): URL { let parsedUrl: URL try { diff --git a/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/client.ts b/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/client.ts index c35d271ab..bdf020635 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/client.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/client.ts @@ -7,6 +7,7 @@ import { Ops } from '@canton-network/core-provider-ledger' export class DarNamespace { constructor(private readonly sdkContext: SDKContext) {} + // TODO (#1712): add checking of vetting state also for vetting on provided sync async upload( darBytes: Uint8Array | Buffer, packageId: string, diff --git a/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/vetting.ts b/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/vetting.ts new file mode 100644 index 000000000..6dd518c50 --- /dev/null +++ b/sdk/wallet-sdk/src/wallet/namespace/ledger/dar/vetting.ts @@ -0,0 +1,46 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + AbstractLedgerProvider, + Ops, +} from '@canton-network/core-provider-ledger' + +/** + * Vet a DAR package on a specific synchronizer. + * + * Unlike {@link DarNamespace.upload}, this function always POSTs the DAR to + * the ledger API regardless of whether the package bytes have already been + * uploaded on another synchronizer. The server deduplicates the binary + * payload, but a POST is required for each synchronizer that should have the + * package vetted. Use this when the same package must be available on multiple + * synchronizers (e.g. global + app-synchronizer in a multi-synchronizer setup). + * + * Typical usage pattern: + * 1. Upload the DAR on the primary synchronizer with `sdk.ledger.dar.upload`. + * 2. Call `vetPackage` for each additional synchronizer that needs vetting. + * + * @param ledgerProvider - The ledger provider for the target participant node. + * Obtain via `(sdk.ledger as any).sdkContext.ledgerProvider`. + * @param darBytes - Raw DAR file bytes. + * @param synchronizerId - The synchronizer on which the package should be vetted. + * @param vetAllPackages - When true (default) all packages inside the DAR are + * vetted, not only the main dalf. Matches the behaviour of `dar.upload`. + */ +export async function vetPackage( + ledgerProvider: AbstractLedgerProvider, + darBytes: Uint8Array | Buffer, + synchronizerId: string, + vetAllPackages = true +): Promise { + await ledgerProvider.request({ + method: 'ledgerApi', + params: { + resource: '/v2/packages', + requestMethod: 'post', + query: { synchronizerId, vetAllPackages }, + body: darBytes as never, + headers: { 'Content-Type': 'application/octet-stream' }, + }, + }) +} diff --git a/sdk/wallet-sdk/src/wallet/namespace/ledger/internal/index.ts b/sdk/wallet-sdk/src/wallet/namespace/ledger/internal/index.ts index 851febd11..49cc502fb 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/ledger/internal/index.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/ledger/internal/index.ts @@ -22,9 +22,101 @@ type InternalOperationParams = Required< Omit, UnusedParams | RequiredParams> > +export interface ReassignParams { + submitter: string + contractId: string + source: string + target: string +} + export class InternalLedgerNamespace { constructor(private readonly ctx: SDKContext) {} + /** + * Reassigns a contract from one synchronizer to another. + * Performs the two-phase Canton reassignment (Unassign → Assign) via + * `/v2/commands/submit-and-wait-for-reassignment`. + */ + async reassign(params: ReassignParams): Promise { + const { submitter, contractId, source, target } = params + + // Phase 1: Unassign + const unassignResponse = + await this.ctx.ledgerProvider.request( + { + method: 'ledgerApi', + params: { + resource: + '/v2/commands/submit-and-wait-for-reassignment', + requestMethod: 'post', + body: { + reassignmentCommands: { + commandId: v4(), + submitter, + commands: [ + { + command: { + UnassignCommand: { + value: { + contractId, + source, + target, + }, + }, + }, + }, + ], + }, + eventFormat: { + filtersByParty: { [submitter]: {} }, + verbose: false, + }, + }, + }, + } + ) + + const events = unassignResponse.reassignment?.events ?? [] + const unassignedEvent = events.find((e) => 'JsUnassignedEvent' in e) + if (!unassignedEvent || !('JsUnassignedEvent' in unassignedEvent)) { + throw new Error( + `No unassigned event returned for contract ${contractId} reassignment` + ) + } + const reassignmentId = + unassignedEvent.JsUnassignedEvent.value.reassignmentId + + // Phase 2: Assign + await this.ctx.ledgerProvider.request( + { + method: 'ledgerApi', + params: { + resource: '/v2/commands/submit-and-wait-for-reassignment', + requestMethod: 'post', + body: { + reassignmentCommands: { + commandId: v4(), + submitter, + commands: [ + { + command: { + AssignCommand: { + value: { + reassignmentId, + source, + target, + }, + }, + }, + }, + ], + }, + }, + }, + } + ) + } + async submit( args: InternalOperationParams ) { diff --git a/sdk/wallet-sdk/src/wallet/namespace/ledger/namespace.ts b/sdk/wallet-sdk/src/wallet/namespace/ledger/namespace.ts index d6b7bd904..8683bd5f4 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/ledger/namespace.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/ledger/namespace.ts @@ -9,6 +9,7 @@ import { SignedTransaction } from '../transactions/signed.js' import { Ops } from '@canton-network/core-provider-ledger' import { DarNamespace } from './dar/client.js' import { AcsOptions } from '@canton-network/core-acs-reader' +import { State } from '../state/index.js' import { InternalLedgerNamespace } from './internal/index.js' import { PreparedTransactionNamespace } from './hash/namespace.js' @@ -16,11 +17,12 @@ export class LedgerNamespace { public readonly dar: DarNamespace public readonly internal: InternalLedgerNamespace public readonly preparedTransaction: PreparedTransactionNamespace - + public readonly state: State constructor(private readonly sdkContext: SDKContext) { this.dar = new DarNamespace(sdkContext) this.internal = new InternalLedgerNamespace(sdkContext) this.preparedTransaction = new PreparedTransactionNamespace(sdkContext) + this.state = new State(sdkContext) } public async ledgerEnd() { diff --git a/sdk/wallet-sdk/src/wallet/namespace/party/external/service.ts b/sdk/wallet-sdk/src/wallet/namespace/party/external/service.ts index 8475e2207..8f6dcf688 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/party/external/service.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/party/external/service.ts @@ -32,7 +32,7 @@ export class ExternalPartyNamespace { this.resolveParticipantUids( options?.confirmingParticipantEndpoints ?? [] ), - options?.synchronizerId || this.resolveSynchronizerId(), + options?.synchronizerId || this.findGlobalSynchronizer(), ]).then( ([ observingParticipantUids, @@ -79,7 +79,7 @@ export class ExternalPartyNamespace { ) } - private async resolveSynchronizerId() { + private async findGlobalSynchronizer() { const connectedSynchronizers = await this.ctx.ledgerProvider.request( { @@ -92,19 +92,16 @@ export class ExternalPartyNamespace { } ) - if (!connectedSynchronizers.connectedSynchronizers?.[0]) { - throw new Error('No connected synchronizers found') - } - - const synchronizerId = - connectedSynchronizers.connectedSynchronizers[0].synchronizerId - if (connectedSynchronizers.connectedSynchronizers.length > 1) { - this.logger.warn( - `Found ${connectedSynchronizers.connectedSynchronizers.length} synchronizers, defaulting to ${synchronizerId}` + const global = connectedSynchronizers.connectedSynchronizers?.find( + (s) => s.synchronizerAlias === 'global' + ) + if (!global) { + throw new Error( + 'Global synchronizer not found among connected synchronizers' ) } - return synchronizerId + return global.synchronizerId } /** diff --git a/sdk/wallet-sdk/src/wallet/namespace/party/external/signed.ts b/sdk/wallet-sdk/src/wallet/namespace/party/external/signed.ts index ab98168bc..89af34335 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/party/external/signed.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/party/external/signed.ts @@ -50,7 +50,14 @@ export class SignedPartyCreationService { type: 'SDKOperationUnsupported', }) - if (await this.checkIfPartyExists(party.partyId)) { + // When a specific synchronizerId is provided, check whether the party + // is already registered on that synchronizer (not just on the participant). + if ( + await this.checkIfPartyExists( + party.partyId, + this.createPartyOptions?.synchronizerId + ) + ) { this.ctx.logger.info('Party already created.') return party } @@ -144,7 +151,9 @@ export class SignedPartyCreationService { } = options const ledgerProvider = defaultLedgerProvider ?? this.ctx.ledgerProvider try { - const synchronizerId = this.ctx.defaultSynchronizerId + const synchronizerId = + this.createPartyOptions?.synchronizerId ?? + this.ctx.defaultSynchronizerId await this.allocate( ledgerProvider, @@ -185,8 +194,30 @@ export class SignedPartyCreationService { } } - private async checkIfPartyExists(partyId: PartyId): Promise { + private async checkIfPartyExists( + partyId: PartyId, + synchronizerId?: string + ): Promise { try { + if (synchronizerId) { + const response = + await this.ctx.ledgerProvider.request( + { + method: 'ledgerApi', + params: { + resource: '/v2/state/connected-synchronizers', + requestMethod: 'get', + query: { party: partyId }, + }, + } + ) + return ( + response.connectedSynchronizers?.some( + (s) => s.synchronizerId === synchronizerId + ) ?? false + ) + } + const party = await this.ctx.ledgerProvider.request({ method: 'ledgerApi', diff --git a/sdk/wallet-sdk/src/wallet/namespace/state/client.ts b/sdk/wallet-sdk/src/wallet/namespace/state/client.ts new file mode 100644 index 000000000..9828db764 --- /dev/null +++ b/sdk/wallet-sdk/src/wallet/namespace/state/client.ts @@ -0,0 +1,61 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SDKContext } from '../../sdk.js' +import { Ops } from '@canton-network/core-provider-ledger' +import { SDKLogger } from '../../logger/index.js' +import { v3_4 } from '@canton-network/core-ledger-client-types' + +export type ConnectedSynchronizersOptions = { + party?: string + participantId?: string + identityProviderId?: string +} + +export type ConnectedSynchronizer = + v3_4.components['schemas']['ConnectedSynchronizer'] + +export class State { + private readonly logger: SDKLogger + + constructor(private readonly ctx: SDKContext) { + this.logger = ctx.logger.child({ namespace: 'State' }) + } + + /** + * Returns the list of connected synchronizers for the given party / participant. + * + * Calls GET /v2/state/connected-synchronizers with optional query parameters. + * + * @param options - Optional filters: party, participantId, identityProviderId. + */ + public async connectedSynchronizers( + options?: ConnectedSynchronizersOptions + ) { + this.logger.debug({ options }, 'Fetching connected synchronizers') + + const result = + await this.ctx.ledgerProvider.request( + { + method: 'ledgerApi', + params: { + resource: '/v2/state/connected-synchronizers', + requestMethod: 'get', + query: { + ...(options?.party !== undefined && { + party: options.party, + }), + ...(options?.participantId !== undefined && { + participantId: options.participantId, + }), + ...(options?.identityProviderId !== undefined && { + identityProviderId: options.identityProviderId, + }), + }, + }, + } + ) + + return result + } +} diff --git a/sdk/wallet-sdk/src/wallet/namespace/state/index.ts b/sdk/wallet-sdk/src/wallet/namespace/state/index.ts new file mode 100644 index 000000000..ccb7adf4e --- /dev/null +++ b/sdk/wallet-sdk/src/wallet/namespace/state/index.ts @@ -0,0 +1,4 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +export * from './client.js' diff --git a/sdk/wallet-sdk/src/wallet/sdk.ts b/sdk/wallet-sdk/src/wallet/sdk.ts index 102f45c28..b3972bbe4 100644 --- a/sdk/wallet-sdk/src/wallet/sdk.ts +++ b/sdk/wallet-sdk/src/wallet/sdk.ts @@ -17,7 +17,11 @@ import { OfflineSDKInterface, } from './init/types/sdk.js' import { AuthTokenProvider } from '@canton-network/core-wallet-auth' -import { toURL } from './common.js' +import { + toURL, + SynchronizerMap, + resolveGlobalSynchronizerId, +} from './common.js' import { ExtendedInitializedSDK, OfflineInitializedSDK, @@ -57,6 +61,7 @@ export type * from './init/index.js' export { PrepareOptions, ExecuteOptions } from './namespace/ledger/index.js' export * from './namespace/transactions/prepared.js' export * from './namespace/transactions/signed.js' +export { vetPackage } from './namespace/ledger/dar/vetting.js' export class SDK { static async create( @@ -145,6 +150,9 @@ export class SDK { } } +export type { SynchronizerMap } +export { resolveGlobalSynchronizerId } + async function getDefaultSynchronizerId( provider: AbstractLedgerProvider, logger: SDKLogger diff --git a/yarn.lock b/yarn.lock index e71c8acfd..4366d5ea9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11524,6 +11524,7 @@ __metadata: "@canton-network/core-ledger-client-types": "workspace:^" "@canton-network/core-ledger-proto": "workspace:^" "@canton-network/core-signing-lib": "workspace:^" + "@canton-network/core-splice-client": "workspace:^" "@canton-network/core-tx-parser": "workspace:^" "@canton-network/core-types": "workspace:^" "@canton-network/core-wallet-auth": "workspace:^" From dae0c0501d6f8284f5076b8e4f2333df44021983 Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Mon, 11 May 2026 15:59:05 +0200 Subject: [PATCH 2/9] Code Review: removed dependency on @canton-network/core-splice-client from docs/wallet-integration-guide/examples/package.json Signed-off-by: vkalashnykov --- docs/wallet-integration-guide/examples/package.json | 1 - .../examples/scripts/15-multi-sync/_setup.ts | 2 +- sdk/wallet-sdk/src/wallet/sdk.ts | 1 + yarn.lock | 1 - 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/wallet-integration-guide/examples/package.json b/docs/wallet-integration-guide/examples/package.json index f717e663e..1abae4c6a 100644 --- a/docs/wallet-integration-guide/examples/package.json +++ b/docs/wallet-integration-guide/examples/package.json @@ -44,7 +44,6 @@ "@canton-network/core-ledger-client-types": "workspace:^", "@canton-network/core-ledger-proto": "workspace:^", "@canton-network/core-signing-lib": "workspace:^", - "@canton-network/core-splice-client": "workspace:^", "@canton-network/core-tx-parser": "workspace:^", "@canton-network/core-types": "workspace:^", "@canton-network/core-wallet-auth": "workspace:^", diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts index 7fe4b629e..8d25ddfd8 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts @@ -14,7 +14,7 @@ import { } from '@canton-network/wallet-sdk' import type { KeyPair } from '@canton-network/core-signing-lib' import type { GenerateTransactionResponse } from '@canton-network/core-ledger-client' -import { ScanProxyClient } from '@canton-network/core-splice-client' +import { ScanProxyClient } from '@canton-network/wallet-sdk' import { AuthTokenProvider } from '@canton-network/core-wallet-auth' import { TOKEN_NAMESPACE_CONFIG, diff --git a/sdk/wallet-sdk/src/wallet/sdk.ts b/sdk/wallet-sdk/src/wallet/sdk.ts index b3972bbe4..03b1ca4b6 100644 --- a/sdk/wallet-sdk/src/wallet/sdk.ts +++ b/sdk/wallet-sdk/src/wallet/sdk.ts @@ -62,6 +62,7 @@ export { PrepareOptions, ExecuteOptions } from './namespace/ledger/index.js' export * from './namespace/transactions/prepared.js' export * from './namespace/transactions/signed.js' export { vetPackage } from './namespace/ledger/dar/vetting.js' +export { ScanProxyClient } from '@canton-network/core-splice-client' export class SDK { static async create( diff --git a/yarn.lock b/yarn.lock index 4366d5ea9..e71c8acfd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11524,7 +11524,6 @@ __metadata: "@canton-network/core-ledger-client-types": "workspace:^" "@canton-network/core-ledger-proto": "workspace:^" "@canton-network/core-signing-lib": "workspace:^" - "@canton-network/core-splice-client": "workspace:^" "@canton-network/core-tx-parser": "workspace:^" "@canton-network/core-types": "workspace:^" "@canton-network/core-wallet-auth": "workspace:^" From 4862bad55ddddbb349b7dd56bb76118b7fb0226a Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Tue, 12 May 2026 09:33:47 +0200 Subject: [PATCH 3/9] Code Review: refactored names of parties in logs Signed-off-by: vkalashnykov --- .../examples/scripts/15-multi-sync/_config.ts | 5 +++++ .../examples/scripts/15-multi-sync/_setup.ts | 9 ++++++--- .../examples/scripts/15-multi-sync/_trade_ops.ts | 11 ++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts index 1319ad226..6ecb38b75 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts @@ -16,3 +16,8 @@ export const LOCALNET_BOB_LEDGER_URL = new URL('http://localhost:3975') // trading-app-participant JSON API (4 + PARTICIPANT_JSON_API_PORT_SUFFIX 975) export const LOCALNET_TRADING_APP_LEDGER_URL = new URL('http://localhost:4975') + +// Party hint labels used when allocating parties +export const PARTY_HINT_ALICE = 'Alice' +export const PARTY_HINT_BOB = 'Bob' +export const PARTY_HINT_TRADING_APP = 'TradingApp' diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts index 8d25ddfd8..8919e4a65 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts @@ -26,6 +26,9 @@ import type { SynchronizerMap } from '../utils/index.js' import { LOCALNET_BOB_LEDGER_URL, LOCALNET_TRADING_APP_LEDGER_URL, + PARTY_HINT_ALICE, + PARTY_HINT_BOB, + PARTY_HINT_TRADING_APP, } from './_config.js' export type PartyInfo = Omit< @@ -174,21 +177,21 @@ export async function setupMultiSyncTrade( await Promise.all([ p1Sdk.party.external .create(aliceKey.publicKey, { - partyHint: 'v1-15-alice', + partyHint: PARTY_HINT_ALICE, synchronizerId: globalSynchronizerId, }) .sign(aliceKey.privateKey) .execute(), p2Sdk.party.external .create(bobKey.publicKey, { - partyHint: 'v1-15-bob', + partyHint: PARTY_HINT_BOB, synchronizerId: globalSynchronizerId, }) .sign(bobKey.privateKey) .execute(), p3Sdk.party.external .create(tradingAppKey.publicKey, { - partyHint: 'v1-15-trading-app', + partyHint: PARTY_HINT_TRADING_APP, synchronizerId: globalSynchronizerId, }) .sign(tradingAppKey.privateKey) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts index a2b2b44fb..8d3e5c656 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts @@ -5,6 +5,11 @@ import type { Logger } from 'pino' import { localNetStaticConfig } from '@canton-network/wallet-sdk' import type { ContractSpec } from '../utils/index.js' import type { MultiSyncSetup } from './_setup.js' +import { + PARTY_HINT_ALICE, + PARTY_HINT_BOB, + PARTY_HINT_TRADING_APP, +} from './_config.js' // ── ACS contract entry (as returned by ledger.acs.read) ─────────────────────── @@ -32,7 +37,7 @@ export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { const { p1Sdk, p2Sdk, p3Sdk, alice, bob, tradingApp } = setup return [ { - label: 'Alice', + label: PARTY_HINT_ALICE, sdk: p1Sdk, templateIds: [ AMULET_TEMPLATE_ID, @@ -43,7 +48,7 @@ export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { parties: [alice.partyId], }, { - label: 'Bob', + label: PARTY_HINT_BOB, sdk: p2Sdk, templateIds: [ AMULET_TEMPLATE_ID, @@ -53,7 +58,7 @@ export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { parties: [bob.partyId], }, { - label: 'TradingApp', + label: PARTY_HINT_TRADING_APP, sdk: p3Sdk, templateIds: [ `${TRADING_APP_PREFIX}:OTCTradeProposal`, From b143830c5b7d0fd11883b54a92afa6155331cab8 Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Tue, 12 May 2026 23:05:36 +0200 Subject: [PATCH 4/9] Code Review: added TokenAdmin party and replaced reassignment of TokenRules Contract to usage of 2 contracts of the same type but on different synchronizers Signed-off-by: vkalashnykov --- .../examples/scripts/15-multi-sync/README.md | 57 +-- .../examples/scripts/15-multi-sync/_config.ts | 1 + .../examples/scripts/15-multi-sync/_setup.ts | 90 ++-- .../scripts/15-multi-sync/_trade_ops.ts | 405 ++++++++++++------ .../examples/scripts/15-multi-sync/index.ts | 38 +- 5 files changed, 371 insertions(+), 220 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md index 54617ddf3..3af50cb6a 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md @@ -11,9 +11,10 @@ Complete workflow covered: - SDK initialization with multiple synchronizers - Party allocation and registration across synchronizers -- Parallel asset minting (Amulet on global, Token on private) -- Multi-synchronizer trade settlement with multi-party signing -- Cross-synchronizer contract reassignment +- Parallel asset minting (Amulet on global, Token on app-synchronizer) +- Multi-synchronizer trade settlement using only single-party submissions +- Cross-synchronizer contract reassignment via `ledger.internal.reassign` +- Canton disclosure-based authorization for cross-signatory contract creation ## Prerequisites @@ -154,39 +155,45 @@ accidentally deleted — restore it from version control. [v1-15-multi-sync-trade] Alice and Bob registered on app-synchronizer [v1-15-multi-sync-trade] Amulet asset discovered — admin: ... [v1-15-multi-sync-trade] Alice: Amulet minted (2000000) on global synchronizer -[v1-15-multi-sync-trade] Bob: TokenRules created + Token minted (500 TestToken) on app-synchronizer +[v1-15-multi-sync-trade] TokenAdmin: TokenRules created on global + app synchronizers; Bob: 500 TestToken minted on app-synchronizer [v1-15-multi-sync-trade] Alice: OTCTradeProposal created (leg-0: 100 Amulet → Bob, leg-1: 20 TestToken → Alice) [v1-15-multi-sync-trade] Bob: OTCTradeProposal_Accept executed [v1-15-multi-sync-trade] TradingApp: OTCTradeProposal_InitiateSettlement executed → OTCTrade created [v1-15-multi-sync-trade] Alice: Amulet allocated for leg-0 (global synchronizer) -[v1-15-multi-sync-trade] Bob: TestToken allocated for leg-1 (global) +[v1-15-multi-sync-trade] Bob: TestToken allocated for leg-1 (global synchronizer, single-party) [v1-15-multi-sync-trade] TradingApp: OTCTrade settled — 100 Amulet transferred to Bob, 20 TestToken transferred to Alice -[v1-15-multi-sync-trade] Bob: TokenRules + Token explicitly reassigned global → app-synchronizer [v1-15-multi-sync-trade] Alice: 20 TestToken self-transferred on app-synchronizer (Canton auto-reassigned Alice's Token from global → app) +[v1-15-multi-sync-trade] Bob: 1 TestToken holding(s) reassigned to app-synchronizer [v1-15-multi-sync-trade] Final contract state: ``` +> **Note:** Steps 9 (Alice allocates Amulet) and 10 (Bob allocates TestToken) run in parallel, +> as do the two self-transfers in step 12, so those log lines may appear in either order. + ## How it Works -| Step | Who | What | Synchronizer | -| ---- | ----------- | --------------------------------------------------------------------------------------------------- | ------------------- | -| 1 | — | Create SDKs (P1, P2, P3) and discover synchronizers | global + app | -| 2 | — | Vet DARs: P1+P2 on both synchronizers, P3 on global only | global + app | -| 3 | — | Allocate parties (Alice/P1, Bob/P2, TradingApp/P3) | global | -| 4 | — | Discover Token interface on app synchronizer | app | -| 5 | Alice | Mint 2,000,000 Amulet for Alice | global | -| 6a | Bob | Create `TokenRules` contract | app | -| 6b | Bob | Mint 500 `TestToken` holding | app | -| 7a | Alice | Create `OTCTradeProposal` (2 legs) | global | -| 7b | Bob | `OTCTradeProposal_Accept` | global | -| 7c | Trading App | `OTCTradeProposal_InitiateSettlement` → `OTCTrade` created | global | -| 8 | — | Read `OTCTrade` contract ID | global | -| 9 | Alice | `AllocationFactory_Allocate` (Amulet, leg-0) | global | -| 10 | Bob | `AllocationFactory_Allocate` (TestToken, leg-1); Canton auto-reassigns `Token` + `TokenRules` | app → global (auto) | -| 11a | — | Locate Bob's TestToken allocation | global | -| 11b | Trading App | `OTCTrade_Settle` (multi-party signing) | global | -| 12 | Bob | Explicitly reassign `TokenRules` + `Token` to app-synchronizer (two-phase Unassign → Assign) | global → app | -| 13 | Alice | `TransferFactory_Transfer` self-transfer; Canton auto-reassigns Alice's `Token` to app-synchronizer | global → app (auto) | +| Step | Who | What | Synchronizer | +| ---- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| 1 | — | Create SDKs (P1, P2, P3) and discover synchronizers | global + app | +| 2 | — | Vet DARs: P1+P2 on both synchronizers, P3 on global only | global + app | +| 3 | — | Allocate parties (Alice/P1, Bob/P2, TradingApp/P3) | global | +| 4 | — | Discover Token interface on app synchronizer | app | +| 5 | Alice | Mint 2,000,000 Amulet for Alice | global | +| 6a | TokenAdmin | Create `TokenRules` on global synchronizer (single-party) | global | +| 6b | TokenAdmin | Create `TokenRules` on app-synchronizer (single-party, parallel with 6a) | app | +| 6c | TokenAdmin | Create `Token` (owner=TokenAdmin) on app-synchronizer — single-party because owner=admin=TokenAdmin | app | +| 6d | TokenAdmin | `TransferFactory_Transfer` on app `TokenRules` → `TokenTransferOffer` to Bob — single-party (sender=TokenAdmin) | app | +| 6e | Bob | `TransferInstruction_Accept` → `Token` (owner=Bob, admin=TokenAdmin) on app-synchronizer — single-party (Bob is receiver/controller) | app | +| 7a | Alice | Create `OTCTradeProposal` (2 legs) | global | +| 7b | Bob | `OTCTradeProposal_Accept` | global | +| 7c | Trading App | `OTCTradeProposal_InitiateSettlement` → `OTCTrade` created | global | +| 8 | — | Read `OTCTrade` contract ID | global | +| 9 | Alice | `AllocationFactory_Allocate` (Amulet, leg-0) — single-party | global | +| 10 | Bob | `ledger.internal.reassign` Bob's `Token` app→global (interactive submission cannot auto-reassign multi-signatory contracts with single `actAs`), then `AllocationFactory_Allocate` (TestToken, leg-1), disclosing global `TokenRules` | app → global (explicit) | +| 11a | — | Locate Bob's TestToken allocation | global | +| 11b | Trading App | `OTCTrade_Settle` — single-party TradingApp submission | global | +| 12 | Alice | `TransferFactory_Transfer` self-transfer; Canton auto-reassigns Alice's `Token` to app-synchronizer | global → app (auto) | +| 12 | Bob | `ledger.internal.reassign` — reassign remaining `Token` holding(s) to app-synchronizer (parallel with Alice's step 12) | global → app | ## Troubleshooting diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts index 6ecb38b75..4bbb9e456 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_config.ts @@ -21,3 +21,4 @@ export const LOCALNET_TRADING_APP_LEDGER_URL = new URL('http://localhost:4975') export const PARTY_HINT_ALICE = 'Alice' export const PARTY_HINT_BOB = 'Bob' export const PARTY_HINT_TRADING_APP = 'TradingApp' +export const PARTY_HINT_TOKEN_ADMIN = 'TokenAdmin' diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts index 8919e4a65..6c17c552a 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts @@ -29,6 +29,7 @@ import { PARTY_HINT_ALICE, PARTY_HINT_BOB, PARTY_HINT_TRADING_APP, + PARTY_HINT_TOKEN_ADMIN, } from './_config.js' export type PartyInfo = Omit< @@ -50,11 +51,12 @@ export interface MultiSyncSetup { p1SdkCtx: SDKContext p2SdkCtx: SDKContext p3SdkCtx: SDKContext - tokenP1: TokenNamespace - tokenP2: TokenNamespace + tokenNamespaceP1: TokenNamespace + tokenNamespaceP2: TokenNamespace alice: PartyInfo bob: PartyInfo tradingApp: PartyInfo + tokenAdmin: PartyInfo globalSynchronizerId: string appSynchronizerId: string synchronizers: SynchronizerMap @@ -168,35 +170,47 @@ export async function setupMultiSyncTrade( ]) logger.info('DARs vetted: P1+P2 on both synchronizers, P3 on global only') - // Allocate parties: alice on P1, bob on P2, tradingApp on P3 (all on global synchronizer) + // Allocate parties: alice on P1, bob on P2, tradingApp on P3, tokenAdmin on P2 (all on global synchronizer) const aliceKey = p1Sdk.keys.generate() const bobKey = p1Sdk.keys.generate() const tradingAppKey = p1Sdk.keys.generate() + const tokenAdminKey = p2Sdk.keys.generate() - const [allocatedAlice, allocatedBob, allocatedTradingApp] = - await Promise.all([ - p1Sdk.party.external - .create(aliceKey.publicKey, { - partyHint: PARTY_HINT_ALICE, - synchronizerId: globalSynchronizerId, - }) - .sign(aliceKey.privateKey) - .execute(), - p2Sdk.party.external - .create(bobKey.publicKey, { - partyHint: PARTY_HINT_BOB, - synchronizerId: globalSynchronizerId, - }) - .sign(bobKey.privateKey) - .execute(), - p3Sdk.party.external - .create(tradingAppKey.publicKey, { - partyHint: PARTY_HINT_TRADING_APP, - synchronizerId: globalSynchronizerId, - }) - .sign(tradingAppKey.privateKey) - .execute(), - ]) + const [ + allocatedAlice, + allocatedBob, + allocatedTradingApp, + allocatedTokenAdmin, + ] = await Promise.all([ + p1Sdk.party.external + .create(aliceKey.publicKey, { + partyHint: PARTY_HINT_ALICE, + synchronizerId: globalSynchronizerId, + }) + .sign(aliceKey.privateKey) + .execute(), + p2Sdk.party.external + .create(bobKey.publicKey, { + partyHint: PARTY_HINT_BOB, + synchronizerId: globalSynchronizerId, + }) + .sign(bobKey.privateKey) + .execute(), + p3Sdk.party.external + .create(tradingAppKey.publicKey, { + partyHint: PARTY_HINT_TRADING_APP, + synchronizerId: globalSynchronizerId, + }) + .sign(tradingAppKey.privateKey) + .execute(), + p2Sdk.party.external + .create(tokenAdminKey.publicKey, { + partyHint: PARTY_HINT_TOKEN_ADMIN, + synchronizerId: globalSynchronizerId, + }) + .sign(tokenAdminKey.privateKey) + .execute(), + ]) const alice: PartyInfo = { ...allocatedAlice, keyPair: aliceKey } const bob: PartyInfo = { ...allocatedBob, keyPair: bobKey } @@ -204,12 +218,16 @@ export async function setupMultiSyncTrade( ...allocatedTradingApp, keyPair: tradingAppKey, } + const tokenAdmin: PartyInfo = { + ...allocatedTokenAdmin, + keyPair: tokenAdminKey, + } logger.info( - `Parties allocated — alice: ${alice.partyId} (P1), bob: ${bob.partyId} (P2), tradingApp: ${tradingApp.partyId} (P3)` + `Parties allocated — alice: ${alice.partyId} (P1), bob: ${bob.partyId} (P2), tradingApp: ${tradingApp.partyId} (P3), tokenAdmin: ${tokenAdmin.partyId} (P2)` ) - // Register Alice and Bob on app-synchronizer so they can transact there. + // Register Alice, Bob, and TokenAdmin on app-synchronizer so they can transact there. await Promise.all([ p1Sdk.party.external .create(alice.keyPair.publicKey, { @@ -225,8 +243,15 @@ export async function setupMultiSyncTrade( }) .sign(bob.keyPair.privateKey) .execute({ grantUserRights: false }), + p2Sdk.party.external + .create(tokenAdmin.keyPair.publicKey, { + partyHint: tokenAdmin.partyId.split('::')[0], + synchronizerId: appSynchronizerId, + }) + .sign(tokenAdmin.keyPair.privateKey) + .execute({ grantUserRights: false }), ]) - logger.info('Alice and Bob registered on app-synchronizer') + logger.info('Alice, Bob, and TokenAdmin registered on app-synchronizer') // Connect scan proxy and discover Amulet admin const auth = new AuthTokenProvider(TOKEN_PROVIDER_CONFIG_DEFAULT, logger) @@ -248,11 +273,12 @@ export async function setupMultiSyncTrade( p1SdkCtx, p2SdkCtx, p3SdkCtx, - tokenP1: p1Sdk.token, - tokenP2: p2Sdk.token, + tokenNamespaceP1: p1Sdk.token, + tokenNamespaceP2: p2Sdk.token, alice, bob, tradingApp, + tokenAdmin, globalSynchronizerId, appSynchronizerId, synchronizers, diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts index 8d3e5c656..2a1c20f0d 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts @@ -9,6 +9,7 @@ import { PARTY_HINT_ALICE, PARTY_HINT_BOB, PARTY_HINT_TRADING_APP, + PARTY_HINT_TOKEN_ADMIN, } from './_config.js' // ── ACS contract entry (as returned by ledger.acs.read) ─────────────────────── @@ -28,13 +29,10 @@ export const TEST_TOKEN_PREFIX = export const TRADING_APP_PREFIX = '#splice-token-test-trading-app:Splice.Testing.Apps.TradingApp' -const ALLOCATION_FACTORY_IFACE = - '#splice-api-token-allocation-instruction-v1:Splice.Api.Token.AllocationInstructionV1:AllocationFactory' const TRANSFER_FACTORY_IFACE = '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferFactory' - export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { - const { p1Sdk, p2Sdk, p3Sdk, alice, bob, tradingApp } = setup + const { p1Sdk, p2Sdk, p3Sdk, alice, bob, tradingApp, tokenAdmin } = setup return [ { label: PARTY_HINT_ALICE, @@ -50,13 +48,15 @@ export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { { label: PARTY_HINT_BOB, sdk: p2Sdk, - templateIds: [ - AMULET_TEMPLATE_ID, - `${TEST_TOKEN_PREFIX}:TokenRules`, - `${TEST_TOKEN_PREFIX}:Token`, - ], + templateIds: [AMULET_TEMPLATE_ID, `${TEST_TOKEN_PREFIX}:Token`], parties: [bob.partyId], }, + { + label: PARTY_HINT_TOKEN_ADMIN, + sdk: p2Sdk, + templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], + parties: [tokenAdmin.partyId], + }, { label: PARTY_HINT_TRADING_APP, sdk: p3Sdk, @@ -133,35 +133,52 @@ export async function createTokenRulesAndMintForBob( setup: MultiSyncSetup, logger: Logger ): Promise { - const { p2Sdk, bob, appSynchronizerId } = setup + const { p2Sdk, bob, tokenAdmin, globalSynchronizerId, appSynchronizerId } = + setup await Promise.all([ p2Sdk.ledger .prepare({ - partyId: bob.partyId, + partyId: tokenAdmin.partyId, commands: { CreateCommand: { templateId: `${TEST_TOKEN_PREFIX}:TokenRules`, - createArguments: { admin: bob.partyId }, + createArguments: { admin: tokenAdmin.partyId }, }, }, disclosedContracts: [], - synchronizerId: appSynchronizerId, + synchronizerId: globalSynchronizerId, }) - .sign(bob.keyPair.privateKey) - .execute({ partyId: bob.partyId }), - + .sign(tokenAdmin.keyPair.privateKey) + .execute({ partyId: tokenAdmin.partyId }), p2Sdk.ledger .prepare({ - partyId: bob.partyId, + partyId: tokenAdmin.partyId, commands: { + CreateCommand: { + templateId: `${TEST_TOKEN_PREFIX}:TokenRules`, + createArguments: { admin: tokenAdmin.partyId }, + }, + }, + disclosedContracts: [], + synchronizerId: appSynchronizerId, + }) + .sign(tokenAdmin.keyPair.privateKey) + .execute({ partyId: tokenAdmin.partyId }), + ]) + + await p2Sdk.ledger + .prepare({ + partyId: tokenAdmin.partyId, + commands: [ + { CreateCommand: { templateId: `${TEST_TOKEN_PREFIX}:Token`, createArguments: { holding: { - owner: bob.partyId, + owner: tokenAdmin.partyId, instrumentId: { - admin: bob.partyId, + admin: tokenAdmin.partyId, id: 'TestToken', }, amount: BOB_TOKEN_MINT_AMOUNT, @@ -171,15 +188,115 @@ export async function createTokenRulesAndMintForBob( }, }, }, - disclosedContracts: [], - synchronizerId: appSynchronizerId, - }) - .sign(bob.keyPair.privateKey) - .execute({ partyId: bob.partyId }), + ], + disclosedContracts: [], + synchronizerId: appSynchronizerId, + }) + .sign(tokenAdmin.keyPair.privateKey) + .execute({ partyId: tokenAdmin.partyId }) + + const [tokenRulesContracts, adminTokenHoldings] = await Promise.all([ + p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], + parties: [tokenAdmin.partyId], + filterByParty: true, + }), + p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:Token`], + parties: [tokenAdmin.partyId], + filterByParty: true, + }), ]) + const appTokenRules = tokenRulesContracts.find( + (c) => c.synchronizerId === appSynchronizerId + ) + if (!appTokenRules) + throw new Error( + 'TokenRules not found on app synchronizer after creation' + ) + const adminTokenCid = adminTokenHoldings[0]?.contractId + if (!adminTokenCid) + throw new Error('TokenAdmin Token holding not found after mint') + + await p2Sdk.ledger + .prepare({ + partyId: tokenAdmin.partyId, + commands: [ + { + ExerciseCommand: { + templateId: TRANSFER_FACTORY_IFACE, + contractId: appTokenRules.contractId, + choice: 'TransferFactory_Transfer', + choiceArgument: { + expectedAdmin: tokenAdmin.partyId, + transfer: { + sender: tokenAdmin.partyId, + receiver: bob.partyId, + amount: BOB_TOKEN_MINT_AMOUNT, + instrumentId: { + admin: tokenAdmin.partyId, + id: 'TestToken', + }, + requestedAt: new Date( + Date.now() - 60_000 + ).toISOString(), + executeBefore: new Date( + Date.now() + 86_400_000 + ).toISOString(), + inputHoldingCids: [adminTokenCid], + meta: { values: {} }, + }, + extraArgs: { + context: { values: {} }, + meta: { values: {} }, + }, + }, + }, + }, + ], + disclosedContracts: [], + synchronizerId: appSynchronizerId, + }) + .sign(tokenAdmin.keyPair.privateKey) + .execute({ partyId: tokenAdmin.partyId }) + + const transferOffers = await p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:TokenTransferOffer`], + parties: [bob.partyId], + filterByParty: true, + }) + const transferOfferCid = transferOffers[0]?.contractId + if (!transferOfferCid) + throw new Error('TokenTransferOffer not found for Bob') + + const transferInstructionIface = + '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferInstruction' + await p2Sdk.ledger + .prepare({ + partyId: bob.partyId, + commands: [ + { + ExerciseCommand: { + templateId: transferInstructionIface, + contractId: transferOfferCid, + choice: 'TransferInstruction_Accept', + choiceArgument: { + extraArgs: { + context: { values: {} }, + meta: { values: {} }, + }, + }, + }, + }, + ], + disclosedContracts: [], + synchronizerId: appSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ partyId: bob.partyId }) logger.info( - `Bob: TokenRules created + Token minted (${BOB_TOKEN_MINT_AMOUNT} TestToken) on app-synchronizer` + `TokenAdmin: TokenRules created on global + app synchronizers; Bob: ${BOB_TOKEN_MINT_AMOUNT} TestToken minted on app-synchronizer` ) } @@ -297,9 +414,15 @@ export async function allocateAmuletForAlice( setup: MultiSyncSetup, logger: Logger ): Promise { - const { p1Sdk, tokenP1, alice, globalSynchronizerId, amuletAdmin } = setup + const { + p1Sdk, + tokenNamespaceP1: tokenNamespaceP1, + alice, + globalSynchronizerId, + amuletAdmin, + } = setup - const pendingRequests = await tokenP1.allocation.request.pending( + const pendingRequests = await tokenNamespaceP1.allocation.request.pending( alice.partyId ) const requestView = pendingRequests[0].interfaceViewValue! @@ -317,7 +440,7 @@ export async function allocateAmuletForAlice( if (!amuletHoldingCid) throw new Error('Amulet holding not found for Alice') const [command, disclosedContracts] = - await tokenP1.allocation.instruction.create({ + await tokenNamespaceP1.allocation.instruction.create({ allocationSpecification: { settlement: requestView.settlement, transferLegId: legId, @@ -352,14 +475,11 @@ export async function allocateAmuletForAlice( export async function allocateTokenForBob( setup: MultiSyncSetup, logger: Logger -): Promise<{ - legId: string - tokenRulesCid: string - tokenRulesContract: AcsContractEntry -}> { - const { p2Sdk, tokenP2, bob, globalSynchronizerId } = setup - - const pendingRequests = await tokenP2.allocation.request.pending( +): Promise<{ legId: string }> { + const { p2Sdk, tokenNamespaceP2, bob, tokenAdmin, globalSynchronizerId } = + setup + + const pendingRequests = await tokenNamespaceP2.allocation.request.pending( bob.partyId ) const requestView = pendingRequests[0].interfaceViewValue! @@ -376,53 +496,75 @@ export async function allocateTokenForBob( }), p2Sdk.ledger.acs.read({ templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], - parties: [bob.partyId], + parties: [tokenAdmin.partyId], filterByParty: true, }), ]) - const tokenHoldingCid = tokenHoldings[0]?.contractId - if (!tokenHoldingCid) throw new Error('Token holding not found for Bob') - const tokenRulesCid = tokenRulesContracts[0]?.contractId - if (!tokenRulesCid) throw new Error('TokenRules contract not found') - const tokenRulesContract = tokenRulesContracts[0] + const tokenHolding = tokenHoldings[0] + if (!tokenHolding) throw new Error('Token holding not found for Bob') + const tokenRulesOnGlobal = tokenRulesContracts.find( + (c) => c.synchronizerId === globalSynchronizerId + ) + if (!tokenRulesOnGlobal) + throw new Error('TokenRules not found on global synchronizer') + + if (tokenHolding.synchronizerId !== globalSynchronizerId) { + await p2Sdk.ledger.internal.reassign({ + submitter: bob.partyId, + contractId: tokenHolding.contractId, + source: tokenHolding.synchronizerId, + target: globalSynchronizerId, + }) + } + + const [command, disclosedFromHelper] = + await tokenNamespaceP2.allocation.instruction.create({ + allocationSpecification: { + settlement: requestView.settlement, + transferLegId: legId, + transferLeg: requestView.transferLegs[legId], + }, + asset: { + id: 'TestToken', + displayName: 'TestToken', + symbol: 'TT', + registryUrl: 'http://unused.invalid', + admin: tokenAdmin.partyId, + }, + inputUtxos: [tokenHolding.contractId], + requestedAt: new Date(Date.now() - 60_000).toISOString(), + prefetchedRegistryChoiceContext: { + factoryId: tokenRulesOnGlobal.contractId, + choiceContext: { + choiceContextData: {} as Record, + disclosedContracts: [], + }, + }, + }) await p2Sdk.ledger .prepare({ partyId: bob.partyId, - commands: [ + commands: [command], + disclosedContracts: [ + ...disclosedFromHelper, { - ExerciseCommand: { - templateId: ALLOCATION_FACTORY_IFACE, - contractId: tokenRulesCid, - choice: 'AllocationFactory_Allocate', - choiceArgument: { - expectedAdmin: bob.partyId, - allocation: { - settlement: requestView.settlement, - transferLegId: legId, - transferLeg: requestView.transferLegs[legId], - }, - requestedAt: new Date( - Date.now() - 60_000 - ).toISOString(), - inputHoldingCids: [tokenHoldingCid], - extraArgs: { - context: { values: {} }, - meta: { values: {} }, - }, - }, - }, + templateId: tokenRulesOnGlobal.templateId, + contractId: tokenRulesOnGlobal.contractId, + createdEventBlob: tokenRulesOnGlobal.createdEventBlob!, + synchronizerId: tokenRulesOnGlobal.synchronizerId, }, ], - disclosedContracts: [], synchronizerId: globalSynchronizerId, }) .sign(bob.keyPair.privateKey) .execute({ partyId: bob.partyId }) - logger.info('Bob: TestToken allocated for leg-1 (global)') - return { legId, tokenRulesCid, tokenRulesContract } + logger.info( + 'Bob: TestToken allocated for leg-1 (global synchronizer, single-party)' + ) + return { legId } } export interface SettleParams { @@ -437,16 +579,24 @@ export async function settleOtcTrade( params: SettleParams, logger: Logger ): Promise { - const { p3Sdk, tokenP1, alice, tradingApp, globalSynchronizerId } = setup + const { + p3Sdk, + tokenNamespaceP1: tokenNamespaceP1, + alice, + tradingApp, + globalSynchronizerId, + } = setup const { otcTradeCid, legIdAlice, legIdBob, testTokenAllocationCid } = params - const allocationsAlice = await tokenP1.allocation.pending(alice.partyId) + const allocationsAlice = await tokenNamespaceP1.allocation.pending( + alice.partyId + ) const amuletAllocation = allocationsAlice.find( (a) => a.interfaceViewValue.allocation.transferLegId === legIdAlice ) if (!amuletAllocation) throw new Error('Amulet allocation not found') - const amuletExecCtx = await tokenP1.allocation.context.execute({ + const amuletExecCtx = await tokenNamespaceP1.allocation.context.execute({ allocationCid: amuletAllocation.contractId, registryUrl: localNetStaticConfig.LOCALNET_REGISTRY_API_URL, }) @@ -472,7 +622,6 @@ export async function settleOtcTrade( }, } - // Amulet system contracts from registry; synchronizerId='' → Canton infers from blob const disclosedContracts = (amuletExecCtx.disclosedContracts ?? []).map( (c) => ({ ...c, synchronizerId: '' }) ) @@ -501,73 +650,11 @@ export async function settleOtcTrade( ) } -export interface TransferParams { - tokenRulesCid: string -} - -/** - * Explicitly reassigns Bob's TestToken holding and TokenRules from global back - * to app-synchronizer using the two-phase Canton reassignment (Unassign → Assign). - * After OTC settlement, both contracts live on global. Bob is signatory of both - * (Token: owner+admin; TokenRules: admin) and is hosted on P2 which is connected - * to both synchronizers, so he can initiate reassignment from global → app directly. - * - * This is simpler and more direct than the self-transfer workaround: no new Daml - * contracts are created or archived — the existing contracts just move synchronizers. - */ -export async function reassignBobTokensToApp( - setup: MultiSyncSetup, - params: TransferParams, - logger: Logger -): Promise { - const { p2Sdk, bob, globalSynchronizerId, appSynchronizerId } = setup - const { tokenRulesCid } = params - - const bobTokens = await p2Sdk.ledger.acs.read({ - templateIds: [`${TEST_TOKEN_PREFIX}:Token`], - parties: [bob.partyId], - filterByParty: true, - }) - const bobTokenCid = bobTokens[0]?.contractId - if (!bobTokenCid) - throw new Error( - 'Bob: remainder Token holding not found after settlement' - ) - - // Reassign both contracts in parallel — they are independent. - await Promise.all([ - p2Sdk.ledger.internal.reassign({ - submitter: bob.partyId, - contractId: tokenRulesCid, - source: globalSynchronizerId, - target: appSynchronizerId, - }), - p2Sdk.ledger.internal.reassign({ - submitter: bob.partyId, - contractId: bobTokenCid, - source: globalSynchronizerId, - target: appSynchronizerId, - }), - ]) - - logger.info( - 'Bob: TokenRules + Token explicitly reassigned global → app-synchronizer' - ) -} - -/** - * Alice self-transfers her TestToken (received from the OTC settlement) from - * global back to app-synchronizer. After Bob's self-transfer, TokenRules already - * lives on app-synchronizer; Alice's Token is still on global. P1 hosts Alice, - * who is the owner (and a signatory) of her Token, so Canton can auto-reassign - * her Token global → app as part of this command. TokenRules is disclosed since - * P1 does not host Bob. - */ export async function aliceSelfTransferToApp( setup: MultiSyncSetup, logger: Logger ): Promise { - const { p1Sdk, p2Sdk, alice, bob, appSynchronizerId } = setup + const { p1Sdk, p2Sdk, alice, tokenAdmin, appSynchronizerId } = setup const [aliceTokens, tokenRulesContracts] = await Promise.all([ p1Sdk.ledger.acs.read({ @@ -577,15 +664,17 @@ export async function aliceSelfTransferToApp( }), p2Sdk.ledger.acs.read({ templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], - parties: [bob.partyId], + parties: [tokenAdmin.partyId], filterByParty: true, }), ]) const aliceTokenCid = aliceTokens[0]?.contractId if (!aliceTokenCid) throw new Error('Alice: Token holding not found after settlement') - const tokenRules = tokenRulesContracts[0] - if (!tokenRules) throw new Error('TokenRules not found') + const tokenRules = tokenRulesContracts.find( + (c) => c.synchronizerId === appSynchronizerId + ) + if (!tokenRules) throw new Error('TokenRules not found on app-synchronizer') await p1Sdk.ledger .prepare({ @@ -597,13 +686,13 @@ export async function aliceSelfTransferToApp( contractId: tokenRules.contractId, choice: 'TransferFactory_Transfer', choiceArgument: { - expectedAdmin: bob.partyId, + expectedAdmin: tokenAdmin.partyId, transfer: { sender: alice.partyId, receiver: alice.partyId, amount: TRADE_TOKEN_AMOUNT, instrumentId: { - admin: bob.partyId, + admin: tokenAdmin.partyId, id: 'TestToken', }, requestedAt: new Date( @@ -623,8 +712,6 @@ export async function aliceSelfTransferToApp( }, }, ], - // TokenRules is disclosed (P1 doesn't host Bob); Alice's Token is - // auto-reassigned global → app by Canton because P1 hosts Alice. disclosedContracts: [ { templateId: tokenRules.templateId, @@ -643,3 +730,39 @@ export async function aliceSelfTransferToApp( `(Canton auto-reassigned Alice's Token from global → app)` ) } + +export async function bobReassignTokensToApp( + setup: MultiSyncSetup, + logger: Logger +): Promise { + const { p2Sdk, bob, globalSynchronizerId, appSynchronizerId } = setup + + const bobTokens = await p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:Token`], + parties: [bob.partyId], + filterByParty: true, + }) + + const globalTokens = bobTokens.filter( + (c) => c.synchronizerId === globalSynchronizerId + ) + if (globalTokens.length === 0) { + logger.info( + 'Bob: no TestToken holdings on global synchronizer to reassign' + ) + return + } + + for (const token of globalTokens) { + await p2Sdk.ledger.internal.reassign({ + submitter: bob.partyId, + contractId: token.contractId, + source: globalSynchronizerId, + target: appSynchronizerId, + }) + } + + logger.info( + `Bob: ${globalTokens.length} TestToken holding(s) reassigned to app-synchronizer` + ) +} diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts index 943524999..a2ce951ef 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts @@ -10,14 +10,14 @@ import { allocateAmuletForAlice, allocateTokenForBob, settleOtcTrade, - reassignBobTokensToApp, aliceSelfTransferToApp, + bobReassignTokensToApp, buildContractReadSpec, } from './_trade_ops.js' // Multi-Synchronizer DvP: Alice pays 100 Amulet on global; Bob delivers 20 TestToken from app-sync. // P1 = app-user (Alice), P2 = app-provider (Bob), P3 = sv (TradingApp). -// See index.md for the full flow description. +// See README.md for the full flow description. const logger = pino({ name: 'v1-15-multi-sync-trade', level: 'info' }) @@ -27,13 +27,16 @@ const logger = pino({ name: 'v1-15-multi-sync-trade', level: 'info' }) // Step 3: Allocate parties for Alice (P1), Bob (P2), and TradingApp (P3) // Step 4: Discover Token interface on app synchronizer for Bob's token (used in Steps 6b and 10) const setup = await setupMultiSyncTrade(logger) -const { tokenP2, alice, bob, synchronizers, amuletAdmin } = setup +const { tokenNamespaceP2, alice, bob, tokenAdmin, synchronizers, amuletAdmin } = + setup const allPartySpecs = buildContractReadSpec(setup) // ── Steps 5–6: Init holdings ──────────────────────────────────────────────── // Step 5: Mint Amulet for Alice (global synchronizer) -// Steps 6a+6b: TokenRules + Token for Bob (app-synchronizer) +// Steps 6a–6e: TokenAdmin creates TokenRules on global + app, self-mints Token, +// offers to Bob via TransferFactory_Transfer; Bob accepts via +// TransferInstruction_Accept — all single-party submissions await Promise.all([ mintAmuletForAlice(setup, logger), createTokenRulesAndMintForBob(setup, logger), @@ -55,7 +58,7 @@ const transferLegs = { sender: bob.partyId, receiver: alice.partyId, amount: TRADE_TOKEN_AMOUNT, - instrumentId: { admin: bob.partyId, id: 'TestToken' }, + instrumentId: { admin: tokenAdmin.partyId, id: 'TestToken' }, meta: { values: {} }, }, } @@ -67,8 +70,8 @@ await logAllContracts(logger, synchronizers, allPartySpecs) // ── Steps 9–10: Allocate in parallel ──────────────────────────────────────── // Step 9: Alice allocates Amulet for leg-0 (global synchronizer) -// Step 10: Bob allocates Token for leg-1 (global — Canton auto-reassigns from app-synchronizer) -const [legIdAlice, { legId: legIdBob, tokenRulesCid }] = await Promise.all([ +// Step 10: Bob allocates TestToken for leg-1 (global synchronizer) +const [legIdAlice, { legId: legIdBob }] = await Promise.all([ allocateAmuletForAlice(setup, logger), allocateTokenForBob(setup, logger), ]) @@ -76,7 +79,7 @@ logger.info('Contracts after allocations:') await logAllContracts(logger, synchronizers, allPartySpecs) // ── Step 11a: Locate Bob's TestToken allocation ──────────────────────────────────── -const allocationsBob = await tokenP2.allocation.pending(bob.partyId) +const allocationsBob = await tokenNamespaceP2.allocation.pending(bob.partyId) const testTokenAllocation = allocationsBob.find( (a) => a.interfaceViewValue.allocation.transferLegId === legIdBob ) @@ -92,19 +95,10 @@ await settleOtcTrade( logger.info('Contracts after settlement:') await logAllContracts(logger, synchronizers, allPartySpecs) -// ── Step 12: Bob explicitly reassigns TokenRules + Token back to app-sync ──── -// After settlement, both contracts live on global. Bob is signatory of both and -// P2 is connected to both synchronizers, so he can initiate the two-phase Canton -// reassignment (Unassign → Assign) directly — no Daml transaction needed. -await reassignBobTokensToApp(setup, { tokenRulesCid }, logger) -logger.info('Contracts after Bob reassignment (TokenRules + Bob Token on app):') -await logAllContracts(logger, synchronizers, allPartySpecs) - -// ── Step 13: Alice self-transfers her TestToken back to app-synchronizer ───── -// TokenRules now lives on app-synchronizer (after step 12). Alice's Token is -// still on global. P1 hosts Alice (signatory of her Token), so Canton auto- -// reassigns Alice's Token global → app as part of this command. TokenRules is -// disclosed because P1 doesn't host Bob. -await aliceSelfTransferToApp(setup, logger) +// ── Step 12: Self-transfer TestTokens back to app-synchronizer ───────────────── +await Promise.all([ + aliceSelfTransferToApp(setup, logger), + bobReassignTokensToApp(setup, logger), +]) logger.info('Final contract state:') await logAllContracts(logger, synchronizers, allPartySpecs) From 320cad2ef3812a7dfa8546740592c3d0ee37799f Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Wed, 13 May 2026 16:23:24 +0200 Subject: [PATCH 5/9] Code Review: removed usage of hardcoded values for adding for requestedBefore and validUntil fields Signed-off-by: vkalashnykov --- .../scripts/15-multi-sync/_trade_ops.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts index 2a1c20f0d..a74c5baa1 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts @@ -74,6 +74,10 @@ export const BOB_TOKEN_MINT_AMOUNT = '500' export const TRADE_AMULET_AMOUNT = '100' export const TRADE_TOKEN_AMOUNT = '20' +const MS_30_MIN = 30 * 60 * 1000 +const MS_1_HOUR = 60 * 60 * 1000 +const MS_24_HOURS = 24 * 60 * 60 * 1000 + export async function mintAmuletForAlice( setup: MultiSyncSetup, logger: Logger @@ -237,11 +241,9 @@ export async function createTokenRulesAndMintForBob( admin: tokenAdmin.partyId, id: 'TestToken', }, - requestedAt: new Date( - Date.now() - 60_000 - ).toISOString(), + requestedAt: new Date(Date.now()).toISOString(), executeBefore: new Date( - Date.now() + 86_400_000 + Date.now() + MS_24_HOURS ).toISOString(), inputHoldingCids: [adminTokenCid], meta: { values: {} }, @@ -371,8 +373,8 @@ export async function createAndInitiateOtcTrade( .execute({ partyId: bob.partyId }) logger.info('Bob: OTCTradeProposal_Accept executed') - const prepareUntil = new Date(Date.now() + 1800 * 1000).toISOString() - const settleBefore = new Date(Date.now() + 3600 * 1000).toISOString() + const prepareUntil = new Date(Date.now() + MS_30_MIN).toISOString() + const settleBefore = new Date(Date.now() + MS_1_HOUR).toISOString() await p3Sdk.ledger .prepare({ @@ -533,7 +535,7 @@ export async function allocateTokenForBob( admin: tokenAdmin.partyId, }, inputUtxos: [tokenHolding.contractId], - requestedAt: new Date(Date.now() - 60_000).toISOString(), + requestedAt: new Date(Date.now()).toISOString(), prefetchedRegistryChoiceContext: { factoryId: tokenRulesOnGlobal.contractId, choiceContext: { @@ -695,11 +697,9 @@ export async function aliceSelfTransferToApp( admin: tokenAdmin.partyId, id: 'TestToken', }, - requestedAt: new Date( - Date.now() - 60_000 - ).toISOString(), + requestedAt: new Date(Date.now()).toISOString(), executeBefore: new Date( - Date.now() + 86_400_000 + Date.now() + MS_24_HOURS ).toISOString(), inputHoldingCids: [aliceTokenCid], meta: { values: {} }, From 5c92e064d45ee8e10e249ed1eafb77228715a946 Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Wed, 13 May 2026 19:39:15 +0200 Subject: [PATCH 6/9] Code Review: replaced the reassignment of Bob's Token to self-transfer in the final step Signed-off-by: vkalashnykov --- .../examples/scripts/15-multi-sync/_setup.ts | 23 ++- .../scripts/15-multi-sync/_trade_ops.ts | 141 +++++++++++++----- .../examples/scripts/15-multi-sync/index.ts | 4 +- 3 files changed, 117 insertions(+), 51 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts index 6c17c552a..a4569b55a 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts @@ -155,26 +155,23 @@ export async function setupMultiSyncTrade( fs.readFile(path.join(here, TEST_TOKEN_V1_DAR)), ]) - // P1 and P2 vet DARs on both synchronizers; P3 vets on global only - await Promise.all([ - ...[p1SdkCtx, p2SdkCtx].flatMap((ctx) => + // P1, P2 and P3 vet DARs on both synchronizers + await Promise.all( + [p1SdkCtx, p2SdkCtx, p3SdkCtx].flatMap((ctx) => [globalSynchronizerId, appSynchronizerId].flatMap((sid) => [tradingAppDar, testTokenV1Dar].map((dar) => vetDar(ctx.ledgerProvider, dar, sid) ) ) - ), - ...[tradingAppDar, testTokenV1Dar].map((dar) => - vetDar(p3SdkCtx.ledgerProvider, dar, globalSynchronizerId) - ), - ]) - logger.info('DARs vetted: P1+P2 on both synchronizers, P3 on global only') + ) + ) + logger.info('DARs vetted: P1+P2+P3 on both synchronizers') // Allocate parties: alice on P1, bob on P2, tradingApp on P3, tokenAdmin on P2 (all on global synchronizer) const aliceKey = p1Sdk.keys.generate() const bobKey = p1Sdk.keys.generate() const tradingAppKey = p1Sdk.keys.generate() - const tokenAdminKey = p2Sdk.keys.generate() + const tokenAdminKey = p3Sdk.keys.generate() const [ allocatedAlice, @@ -203,7 +200,7 @@ export async function setupMultiSyncTrade( }) .sign(tradingAppKey.privateKey) .execute(), - p2Sdk.party.external + p3Sdk.party.external .create(tokenAdminKey.publicKey, { partyHint: PARTY_HINT_TOKEN_ADMIN, synchronizerId: globalSynchronizerId, @@ -224,7 +221,7 @@ export async function setupMultiSyncTrade( } logger.info( - `Parties allocated — alice: ${alice.partyId} (P1), bob: ${bob.partyId} (P2), tradingApp: ${tradingApp.partyId} (P3), tokenAdmin: ${tokenAdmin.partyId} (P2)` + `Parties allocated — alice: ${alice.partyId} (P1), bob: ${bob.partyId} (P2), tradingApp: ${tradingApp.partyId} (P3), tokenAdmin: ${tokenAdmin.partyId} (P3)` ) // Register Alice, Bob, and TokenAdmin on app-synchronizer so they can transact there. @@ -243,7 +240,7 @@ export async function setupMultiSyncTrade( }) .sign(bob.keyPair.privateKey) .execute({ grantUserRights: false }), - p2Sdk.party.external + p3Sdk.party.external .create(tokenAdmin.keyPair.publicKey, { partyHint: tokenAdmin.partyId.split('::')[0], synchronizerId: appSynchronizerId, diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts index a74c5baa1..02d6e5cff 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_trade_ops.ts @@ -53,7 +53,7 @@ export function buildContractReadSpec(setup: MultiSyncSetup): ContractSpec[] { }, { label: PARTY_HINT_TOKEN_ADMIN, - sdk: p2Sdk, + sdk: p3Sdk, templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], parties: [tokenAdmin.partyId], }, @@ -137,11 +137,17 @@ export async function createTokenRulesAndMintForBob( setup: MultiSyncSetup, logger: Logger ): Promise { - const { p2Sdk, bob, tokenAdmin, globalSynchronizerId, appSynchronizerId } = - setup + const { + p2Sdk, + p3Sdk, + bob, + tokenAdmin, + globalSynchronizerId, + appSynchronizerId, + } = setup await Promise.all([ - p2Sdk.ledger + p3Sdk.ledger .prepare({ partyId: tokenAdmin.partyId, commands: { @@ -155,7 +161,7 @@ export async function createTokenRulesAndMintForBob( }) .sign(tokenAdmin.keyPair.privateKey) .execute({ partyId: tokenAdmin.partyId }), - p2Sdk.ledger + p3Sdk.ledger .prepare({ partyId: tokenAdmin.partyId, commands: { @@ -171,7 +177,7 @@ export async function createTokenRulesAndMintForBob( .execute({ partyId: tokenAdmin.partyId }), ]) - await p2Sdk.ledger + await p3Sdk.ledger .prepare({ partyId: tokenAdmin.partyId, commands: [ @@ -200,12 +206,12 @@ export async function createTokenRulesAndMintForBob( .execute({ partyId: tokenAdmin.partyId }) const [tokenRulesContracts, adminTokenHoldings] = await Promise.all([ - p2Sdk.ledger.acs.read({ + p3Sdk.ledger.acs.read({ templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], parties: [tokenAdmin.partyId], filterByParty: true, }), - p2Sdk.ledger.acs.read({ + p3Sdk.ledger.acs.read({ templateIds: [`${TEST_TOKEN_PREFIX}:Token`], parties: [tokenAdmin.partyId], filterByParty: true, @@ -222,7 +228,7 @@ export async function createTokenRulesAndMintForBob( if (!adminTokenCid) throw new Error('TokenAdmin Token holding not found after mint') - await p2Sdk.ledger + await p3Sdk.ledger .prepare({ partyId: tokenAdmin.partyId, commands: [ @@ -478,8 +484,14 @@ export async function allocateTokenForBob( setup: MultiSyncSetup, logger: Logger ): Promise<{ legId: string }> { - const { p2Sdk, tokenNamespaceP2, bob, tokenAdmin, globalSynchronizerId } = - setup + const { + p2Sdk, + p3Sdk, + tokenNamespaceP2, + bob, + tokenAdmin, + globalSynchronizerId, + } = setup const pendingRequests = await tokenNamespaceP2.allocation.request.pending( bob.partyId @@ -496,7 +508,7 @@ export async function allocateTokenForBob( parties: [bob.partyId], filterByParty: true, }), - p2Sdk.ledger.acs.read({ + p3Sdk.ledger.acs.read({ templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], parties: [tokenAdmin.partyId], filterByParty: true, @@ -656,7 +668,7 @@ export async function aliceSelfTransferToApp( setup: MultiSyncSetup, logger: Logger ): Promise { - const { p1Sdk, p2Sdk, alice, tokenAdmin, appSynchronizerId } = setup + const { p1Sdk, p3Sdk, alice, tokenAdmin, appSynchronizerId } = setup const [aliceTokens, tokenRulesContracts] = await Promise.all([ p1Sdk.ledger.acs.read({ @@ -664,7 +676,7 @@ export async function aliceSelfTransferToApp( parties: [alice.partyId], filterByParty: true, }), - p2Sdk.ledger.acs.read({ + p3Sdk.ledger.acs.read({ templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], parties: [tokenAdmin.partyId], filterByParty: true, @@ -731,38 +743,95 @@ export async function aliceSelfTransferToApp( ) } -export async function bobReassignTokensToApp( +export async function bobSelfTransferToApp( setup: MultiSyncSetup, logger: Logger ): Promise { - const { p2Sdk, bob, globalSynchronizerId, appSynchronizerId } = setup + const { p2Sdk, p3Sdk, bob, tokenAdmin, appSynchronizerId } = setup - const bobTokens = await p2Sdk.ledger.acs.read({ - templateIds: [`${TEST_TOKEN_PREFIX}:Token`], - parties: [bob.partyId], - filterByParty: true, - }) + const [bobTokens, tokenRulesContracts] = await Promise.all([ + p2Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:Token`], + parties: [bob.partyId], + filterByParty: true, + }), + p3Sdk.ledger.acs.read({ + templateIds: [`${TEST_TOKEN_PREFIX}:TokenRules`], + parties: [tokenAdmin.partyId], + filterByParty: true, + }), + ]) - const globalTokens = bobTokens.filter( - (c) => c.synchronizerId === globalSynchronizerId - ) - if (globalTokens.length === 0) { - logger.info( - 'Bob: no TestToken holdings on global synchronizer to reassign' - ) + if (bobTokens.length === 0) { + logger.info('Bob: no TestToken holdings to self-transfer') return } + const tokenRules = tokenRulesContracts.find( + (c) => c.synchronizerId === appSynchronizerId + ) + if (!tokenRules) throw new Error('TokenRules not found on app-synchronizer') - for (const token of globalTokens) { - await p2Sdk.ledger.internal.reassign({ - submitter: bob.partyId, - contractId: token.contractId, - source: globalSynchronizerId, - target: appSynchronizerId, - }) + for (const token of bobTokens) { + const holdingAmount = ( + token as unknown as { + createArgument: { holding: { amount: string } } + } + ).createArgument?.holding?.amount + if (!holdingAmount) + throw new Error('Cannot read amount from Bob Token holding') + + await p2Sdk.ledger + .prepare({ + partyId: bob.partyId, + commands: [ + { + ExerciseCommand: { + templateId: TRANSFER_FACTORY_IFACE, + contractId: tokenRules.contractId, + choice: 'TransferFactory_Transfer', + choiceArgument: { + expectedAdmin: tokenAdmin.partyId, + transfer: { + sender: bob.partyId, + receiver: bob.partyId, + amount: holdingAmount, + instrumentId: { + admin: tokenAdmin.partyId, + id: 'TestToken', + }, + requestedAt: new Date( + Date.now() + ).toISOString(), + executeBefore: new Date( + Date.now() + MS_24_HOURS + ).toISOString(), + inputHoldingCids: [token.contractId], + meta: { values: {} }, + }, + extraArgs: { + context: { values: {} }, + meta: { values: {} }, + }, + }, + }, + }, + ], + disclosedContracts: [ + { + templateId: tokenRules.templateId, + contractId: tokenRules.contractId, + createdEventBlob: tokenRules.createdEventBlob!, + synchronizerId: tokenRules.synchronizerId, + }, + ], + synchronizerId: appSynchronizerId, + }) + .sign(bob.keyPair.privateKey) + .execute({ partyId: bob.partyId }) } logger.info( - `Bob: ${globalTokens.length} TestToken holding(s) reassigned to app-synchronizer` + `Bob: TestToken self-transferred on app-synchronizer ` + + `(Canton auto-reassigned Bob's Token from global → app)` ) } diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts index a2ce951ef..6135e694d 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts @@ -11,7 +11,7 @@ import { allocateTokenForBob, settleOtcTrade, aliceSelfTransferToApp, - bobReassignTokensToApp, + bobSelfTransferToApp, buildContractReadSpec, } from './_trade_ops.js' @@ -98,7 +98,7 @@ await logAllContracts(logger, synchronizers, allPartySpecs) // ── Step 12: Self-transfer TestTokens back to app-synchronizer ───────────────── await Promise.all([ aliceSelfTransferToApp(setup, logger), - bobReassignTokensToApp(setup, logger), + bobSelfTransferToApp(setup, logger), ]) logger.info('Final contract state:') await logAllContracts(logger, synchronizers, allPartySpecs) From 53d15924375665969f833fdfd3d4d4b3590d9acc Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Wed, 13 May 2026 19:56:15 +0200 Subject: [PATCH 7/9] Code Review: removed Token interface disovery description from documentation for example #15 Signed-off-by: vkalashnykov --- .../examples/scripts/15-multi-sync/README.md | 65 +++++++++---------- .../examples/scripts/15-multi-sync/index.ts | 23 ++++--- 2 files changed, 43 insertions(+), 45 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md index 3af50cb6a..f5a9ad429 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md @@ -13,7 +13,7 @@ Complete workflow covered: - Party allocation and registration across synchronizers - Parallel asset minting (Amulet on global, Token on app-synchronizer) - Multi-synchronizer trade settlement using only single-party submissions -- Cross-synchronizer contract reassignment via `ledger.internal.reassign` +- Canton auto-reassignment via disclosed contracts (no explicit `ledger.internal.reassign`) - Canton disclosure-based authorization for cross-signatory contract creation ## Prerequisites @@ -150,9 +150,9 @@ accidentally deleted — restore it from version control. ``` [v1-15-multi-sync-trade] Connected synchronizers: global-synchronizer, app-synchronizer [v1-15-multi-sync-trade] Synchronizer IDs — global: ..., app: ... -[v1-15-multi-sync-trade] DARs vetted: P1+P2 on both synchronizers, P3 on global only -[v1-15-multi-sync-trade] Parties allocated — alice: ... (P1), bob: ... (P2), tradingApp: ... (P3) -[v1-15-multi-sync-trade] Alice and Bob registered on app-synchronizer +[v1-15-multi-sync-trade] DARs vetted: P1+P2+P3 on both synchronizers +[v1-15-multi-sync-trade] Parties allocated — alice: ... (P1), bob: ... (P2), tradingApp: ... (P3), tokenAdmin: ... (P3) +[v1-15-multi-sync-trade] Alice, Bob, and TokenAdmin registered on app-synchronizer [v1-15-multi-sync-trade] Amulet asset discovered — admin: ... [v1-15-multi-sync-trade] Alice: Amulet minted (2000000) on global synchronizer [v1-15-multi-sync-trade] TokenAdmin: TokenRules created on global + app synchronizers; Bob: 500 TestToken minted on app-synchronizer @@ -162,38 +162,37 @@ accidentally deleted — restore it from version control. [v1-15-multi-sync-trade] Alice: Amulet allocated for leg-0 (global synchronizer) [v1-15-multi-sync-trade] Bob: TestToken allocated for leg-1 (global synchronizer, single-party) [v1-15-multi-sync-trade] TradingApp: OTCTrade settled — 100 Amulet transferred to Bob, 20 TestToken transferred to Alice +[v1-15-multi-sync-trade] Bob: TestToken self-transferred on app-synchronizer (Canton auto-reassigned Bob's Token from global → app) [v1-15-multi-sync-trade] Alice: 20 TestToken self-transferred on app-synchronizer (Canton auto-reassigned Alice's Token from global → app) -[v1-15-multi-sync-trade] Bob: 1 TestToken holding(s) reassigned to app-synchronizer [v1-15-multi-sync-trade] Final contract state: ``` -> **Note:** Steps 9 (Alice allocates Amulet) and 10 (Bob allocates TestToken) run in parallel, -> as do the two self-transfers in step 12, so those log lines may appear in either order. +> **Note:** Steps 8 (Alice allocates Amulet) and 9 (Bob allocates TestToken) run in parallel, +> as do Alice's and Bob's self-transfers in step 11, so those log lines may appear in either order. ## How it Works -| Step | Who | What | Synchronizer | -| ---- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | -| 1 | — | Create SDKs (P1, P2, P3) and discover synchronizers | global + app | -| 2 | — | Vet DARs: P1+P2 on both synchronizers, P3 on global only | global + app | -| 3 | — | Allocate parties (Alice/P1, Bob/P2, TradingApp/P3) | global | -| 4 | — | Discover Token interface on app synchronizer | app | -| 5 | Alice | Mint 2,000,000 Amulet for Alice | global | -| 6a | TokenAdmin | Create `TokenRules` on global synchronizer (single-party) | global | -| 6b | TokenAdmin | Create `TokenRules` on app-synchronizer (single-party, parallel with 6a) | app | -| 6c | TokenAdmin | Create `Token` (owner=TokenAdmin) on app-synchronizer — single-party because owner=admin=TokenAdmin | app | -| 6d | TokenAdmin | `TransferFactory_Transfer` on app `TokenRules` → `TokenTransferOffer` to Bob — single-party (sender=TokenAdmin) | app | -| 6e | Bob | `TransferInstruction_Accept` → `Token` (owner=Bob, admin=TokenAdmin) on app-synchronizer — single-party (Bob is receiver/controller) | app | -| 7a | Alice | Create `OTCTradeProposal` (2 legs) | global | -| 7b | Bob | `OTCTradeProposal_Accept` | global | -| 7c | Trading App | `OTCTradeProposal_InitiateSettlement` → `OTCTrade` created | global | -| 8 | — | Read `OTCTrade` contract ID | global | -| 9 | Alice | `AllocationFactory_Allocate` (Amulet, leg-0) — single-party | global | -| 10 | Bob | `ledger.internal.reassign` Bob's `Token` app→global (interactive submission cannot auto-reassign multi-signatory contracts with single `actAs`), then `AllocationFactory_Allocate` (TestToken, leg-1), disclosing global `TokenRules` | app → global (explicit) | -| 11a | — | Locate Bob's TestToken allocation | global | -| 11b | Trading App | `OTCTrade_Settle` — single-party TradingApp submission | global | -| 12 | Alice | `TransferFactory_Transfer` self-transfer; Canton auto-reassigns Alice's `Token` to app-synchronizer | global → app (auto) | -| 12 | Bob | `ledger.internal.reassign` — reassign remaining `Token` holding(s) to app-synchronizer (parallel with Alice's step 12) | global → app | +| Step | Who | What | Synchronizer | +| ---- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | +| 1 | — | Create SDKs (P1, P2, P3) and discover synchronizers | global + app | +| 2 | — | Vet DARs: P1+P2+P3 on both synchronizers | global + app | +| 3 | — | Allocate parties (Alice/P1, Bob/P2, TradingApp/P3, TokenAdmin/P3) | global | +| 4 | Alice | Mint 2,000,000 Amulet for Alice | global | +| 5a | TokenAdmin | Create `TokenRules` on global synchronizer (single-party) | global | +| 5b | TokenAdmin | Create `TokenRules` on app-synchronizer (single-party, parallel with 5a) | app | +| 5c | TokenAdmin | Create `Token` (owner=TokenAdmin) on app-synchronizer — single-party because owner=admin=TokenAdmin | app | +| 5d | TokenAdmin | `TransferFactory_Transfer` on app `TokenRules` → `TokenTransferOffer` to Bob — single-party (sender=TokenAdmin) | app | +| 5e | Bob | `TransferInstruction_Accept` → `Token` (owner=Bob, admin=TokenAdmin) on app-synchronizer — single-party (Bob is receiver/controller) | app | +| 6a | Alice | Create `OTCTradeProposal` (2 legs) | global | +| 6b | Bob | `OTCTradeProposal_Accept` | global | +| 6c | Trading App | `OTCTradeProposal_InitiateSettlement` → `OTCTrade` created | global | +| 7 | — | Read `OTCTrade` contract ID | global | +| 8 | Alice | `AllocationFactory_Allocate` (Amulet, leg-0) — single-party | global | +| 9 | Bob | `AllocationFactory_Allocate` (TestToken, leg-1), disclosing global `TokenRules`; Canton auto-reassigns Bob's `Token` from app→global because P2 lacks TokenAdmin's authorization locally (TokenAdmin is on P3) | app → global (auto) | +| 10a | — | Locate Bob's TestToken allocation | global | +| 10b | Trading App | `OTCTrade_Settle` — single-party TradingApp submission | global | +| 11 | Alice | `TransferFactory_Transfer` self-transfer; Canton auto-reassigns Alice's `Token` to app-synchronizer (parallel with Bob's step 11) | global → app (auto) | +| 11 | Bob | `TransferFactory_Transfer` self-transfer; Canton auto-reassigns Bob's `Token` to app-synchronizer (parallel with Alice's step 11) | global → app (auto) | ## Troubleshooting @@ -212,9 +211,9 @@ ls -la docs/wallet-integration-guide/examples/scripts/15-multi-sync/splice-test- ### `App synchronizer not found (alias: app-synchronizer)` This error means the `app-user` participant is not connected to the app-synchronizer. -The `scripts/localnet/app-synchronizer.sc` bootstrap script must connect **both** -`app-provider` and `app-user` to the app-synchronizer. Check that you are using -the current version of that file (it should reference both participants). +The `app-synchronizer.sc` bootstrap script must connect `app-provider`, `app-user`, +and `sv` to the app-synchronizer. Check that you are using the current version of +that file (it should reference all three participants). Check that the `multi-sync-startup` bootstrap container ran to completion: @@ -225,7 +224,7 @@ docker logs $(docker ps -a --filter name=multi-sync-startup --format "{{.ID}}") The last line should read: ``` -app-synchronizer bootstrap with package vetting completed successfully for app-provider and app-user +app-synchronizer bootstrap with package vetting completed successfully for app-provider, app-user and sv ``` If localnet was started with an older version of the bootstrap script, restart it: diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts index 6135e694d..fa44c1a16 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/index.ts @@ -24,17 +24,16 @@ const logger = pino({ name: 'v1-15-multi-sync-trade', level: 'info' }) // ── Setup: create SDKs, discover synchronizers, vet DARs, allocate parties ─── // Step 1: Create SDKs for all 3 participants (P1, P2, P3) and discover global + app synchronizers // Step 2: Vet DARs on all synchronizers (global + app) and all participants (P1, P2, P3) -// Step 3: Allocate parties for Alice (P1), Bob (P2), and TradingApp (P3) -// Step 4: Discover Token interface on app synchronizer for Bob's token (used in Steps 6b and 10) +// Step 3: Allocate parties for Alice (P1), Bob (P2), TradingApp (P3), and TokenAdmin (P3) const setup = await setupMultiSyncTrade(logger) const { tokenNamespaceP2, alice, bob, tokenAdmin, synchronizers, amuletAdmin } = setup const allPartySpecs = buildContractReadSpec(setup) -// ── Steps 5–6: Init holdings ──────────────────────────────────────────────── -// Step 5: Mint Amulet for Alice (global synchronizer) -// Steps 6a–6e: TokenAdmin creates TokenRules on global + app, self-mints Token, +// ── Steps 4–5: Init holdings ──────────────────────────────────────────────── +// Step 4: Mint Amulet for Alice (global synchronizer) +// Steps 5a–5e: TokenAdmin creates TokenRules on global + app, self-mints Token, // offers to Bob via TransferFactory_Transfer; Bob accepts via // TransferInstruction_Accept — all single-party submissions await Promise.all([ @@ -63,14 +62,14 @@ const transferLegs = { }, } -// ── Steps 7a–7c + 8: Propose → Accept → Initiate settlement → Read OTCTrade ─ +// ── Steps 6a–6c + 7: Propose → Accept → Initiate settlement → Read OTCTrade ─ const otcTradeCid = await createAndInitiateOtcTrade(setup, transferLegs, logger) logger.info('Contracts after trade initiation:') await logAllContracts(logger, synchronizers, allPartySpecs) -// ── Steps 9–10: Allocate in parallel ──────────────────────────────────────── -// Step 9: Alice allocates Amulet for leg-0 (global synchronizer) -// Step 10: Bob allocates TestToken for leg-1 (global synchronizer) +// ── Steps 8–9: Allocate in parallel ──────────────────────────────────────── +// Step 8: Alice allocates Amulet for leg-0 (global synchronizer) +// Step 9: Bob allocates TestToken for leg-1 (global synchronizer) const [legIdAlice, { legId: legIdBob }] = await Promise.all([ allocateAmuletForAlice(setup, logger), allocateTokenForBob(setup, logger), @@ -78,7 +77,7 @@ const [legIdAlice, { legId: legIdBob }] = await Promise.all([ logger.info('Contracts after allocations:') await logAllContracts(logger, synchronizers, allPartySpecs) -// ── Step 11a: Locate Bob's TestToken allocation ──────────────────────────────────── +// ── Step 10a: Locate Bob's TestToken allocation ──────────────────────────────────── const allocationsBob = await tokenNamespaceP2.allocation.pending(bob.partyId) const testTokenAllocation = allocationsBob.find( (a) => a.interfaceViewValue.allocation.transferLegId === legIdBob @@ -86,7 +85,7 @@ const testTokenAllocation = allocationsBob.find( if (!testTokenAllocation) throw new Error('TestToken allocation not found') const testTokenAllocationCid = testTokenAllocation.contractId -// ── Step 11b: TradingApp settles the OTCTrade ───────────────────────────────── +// ── Step 10b: TradingApp settles the OTCTrade ───────────────────────────────── await settleOtcTrade( setup, { otcTradeCid, legIdAlice, legIdBob, testTokenAllocationCid }, @@ -95,7 +94,7 @@ await settleOtcTrade( logger.info('Contracts after settlement:') await logAllContracts(logger, synchronizers, allPartySpecs) -// ── Step 12: Self-transfer TestTokens back to app-synchronizer ───────────────── +// ── Step 11: Self-transfer TestTokens back to app-synchronizer ───────────────── await Promise.all([ aliceSelfTransferToApp(setup, logger), bobSelfTransferToApp(setup, logger), From 13e99aa5f58ed86fd47e8a479116bdff822d1841 Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Wed, 13 May 2026 19:59:43 +0200 Subject: [PATCH 8/9] Code Review: removed reference to token dars Troubleshooting section Signed-off-by: vkalashnykov --- .../examples/scripts/15-multi-sync/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md index f5a9ad429..309f0e62c 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/README.md @@ -142,8 +142,6 @@ yarn script:test:examples If `splice-token-test-trading-app-1.0.0.dar` is missing from `.localnet/dars/`, run `yarn script:fetch:localnet` from the repository root. -If `splice-test-token-v1-1.0.0.dar` is missing from the script directory, it has been -accidentally deleted — restore it from version control. ### Expected output From c76aa8b45da603d834f73af38635d0e2bd0af6bf Mon Sep 17 00:00:00 2001 From: vkalashnykov Date: Wed, 13 May 2026 20:17:05 +0200 Subject: [PATCH 9/9] Code Review: moved globalSynchronizerId() method from common.ts to namespace/state/client (and utility type as well) Signed-off-by: vkalashnykov --- .../examples/scripts/15-multi-sync/_setup.ts | 3 +- .../examples/scripts/utils/index.ts | 1 - sdk/wallet-sdk/src/wallet/common.ts | 34 ------------------- .../src/wallet/namespace/state/client.ts | 26 ++++++++++++++ sdk/wallet-sdk/src/wallet/sdk.ts | 8 ++--- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts index a4569b55a..5e7b4e4db 100644 --- a/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts +++ b/docs/wallet-integration-guide/examples/scripts/15-multi-sync/_setup.ts @@ -19,7 +19,6 @@ import { AuthTokenProvider } from '@canton-network/core-wallet-auth' import { TOKEN_NAMESPACE_CONFIG, TOKEN_PROVIDER_CONFIG_DEFAULT, - resolveGlobalSynchronizerId, vetDar, } from '../utils/index.js' import type { SynchronizerMap } from '../utils/index.js' @@ -110,7 +109,7 @@ export async function setupMultiSyncTrade( `Expected at least 2 connected synchronizers (global + app), found ${allSynchronizers.length}` ) - const globalSynchronizerId = resolveGlobalSynchronizerId(allSynchronizers) + const globalSynchronizerId = await p1Sdk.ledger.state.globalSynchronizerId() const appSynchronizerId = allSynchronizers.find( (s) => s.synchronizerAlias === 'app-synchronizer' )?.synchronizerId diff --git a/docs/wallet-integration-guide/examples/scripts/utils/index.ts b/docs/wallet-integration-guide/examples/scripts/utils/index.ts index 5af2ac38a..fe1bba20d 100644 --- a/docs/wallet-integration-guide/examples/scripts/utils/index.ts +++ b/docs/wallet-integration-guide/examples/scripts/utils/index.ts @@ -9,7 +9,6 @@ import { AssetConfig, } from '@canton-network/wallet-sdk' -export { resolveGlobalSynchronizerId } from '@canton-network/wallet-sdk' export type { SynchronizerMap } from '@canton-network/wallet-sdk' export { vetDar } from './dar.js' export { syncAlias, logAllContracts } from './acs-logger.js' diff --git a/sdk/wallet-sdk/src/wallet/common.ts b/sdk/wallet-sdk/src/wallet/common.ts index 0062a5089..196edce93 100644 --- a/sdk/wallet-sdk/src/wallet/common.ts +++ b/sdk/wallet-sdk/src/wallet/common.ts @@ -3,40 +3,6 @@ import { SDKErrorHandler } from './error/index.js' -/** Maps the two synchronizer roles used in multi-synchronizer setups. */ -export type SynchronizerMap = { - globalSynchronizerId: string - appSynchronizerId: string -} - -/** - * Resolve the global synchronizer ID from the list returned by the ledger API. - * - * When a participant is connected to multiple synchronizers the ledger API may - * return them in any order. This helper ensures the global synchronizer is - * always selected — regardless of position — by looking for the entry whose - * alias is `'global'`. If no such entry exists (e.g. single-synchronizer - * setups) the first entry is returned as the default. - * - * Pass the returned ID as the explicit `synchronizerId` on `ledger.prepare()` - * and `ledger.internal.prepare()` calls that must route to the global - * synchronizer. - * - * @param synchronizers - Raw array from `GET /v2/state/connected-synchronizers`. - * @returns The `synchronizerId` of the entry aliased `'global'`, or the first - * entry's `synchronizerId` when no global alias is present. - * @throws {Error} When the array is empty. - */ -export function resolveGlobalSynchronizerId( - synchronizers: Array<{ synchronizerAlias: string; synchronizerId: string }> -): string { - const global = - synchronizers.find((s) => s.synchronizerAlias === 'global') ?? - synchronizers[0] - if (!global) throw new Error('No connected synchronizers found') - return global.synchronizerId -} - export function toURL(input: string | URL, error: SDKErrorHandler): URL { let parsedUrl: URL try { diff --git a/sdk/wallet-sdk/src/wallet/namespace/state/client.ts b/sdk/wallet-sdk/src/wallet/namespace/state/client.ts index 9828db764..2cdcc20fc 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/state/client.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/state/client.ts @@ -6,6 +6,12 @@ import { Ops } from '@canton-network/core-provider-ledger' import { SDKLogger } from '../../logger/index.js' import { v3_4 } from '@canton-network/core-ledger-client-types' +/** Maps the two synchronizer roles used in multi-synchronizer setups. */ +export type SynchronizerMap = { + globalSynchronizerId: string + appSynchronizerId: string +} + export type ConnectedSynchronizersOptions = { party?: string participantId?: string @@ -22,6 +28,26 @@ export class State { this.logger = ctx.logger.child({ namespace: 'State' }) } + /** + * Returns the ID of the global synchronizer for this participant. + * + * Fetches the connected synchronizers list and selects the entry whose alias + * is `'global'`. Falls back to the first entry when no alias matches (e.g. + * single-synchronizer setups). + * + * @returns The `synchronizerId` of the global synchronizer. + * @throws {Error} When no synchronizers are connected. + */ + public async globalSynchronizerId(): Promise { + const result = await this.connectedSynchronizers() + const synchronizers = result.connectedSynchronizers ?? [] + const global = + synchronizers.find((s) => s.synchronizerAlias === 'global') ?? + synchronizers[0] + if (!global) throw new Error('No connected synchronizers found') + return global.synchronizerId + } + /** * Returns the list of connected synchronizers for the given party / participant. * diff --git a/sdk/wallet-sdk/src/wallet/sdk.ts b/sdk/wallet-sdk/src/wallet/sdk.ts index 91ec9877c..3b9b6ea28 100644 --- a/sdk/wallet-sdk/src/wallet/sdk.ts +++ b/sdk/wallet-sdk/src/wallet/sdk.ts @@ -18,11 +18,8 @@ import { SDKInterface, } from './init/types/sdk.js' import { AuthTokenProvider } from '@canton-network/core-wallet-auth' -import { - toURL, - SynchronizerMap, - resolveGlobalSynchronizerId, -} from './common.js' +import { toURL } from './common.js' +import { SynchronizerMap } from './namespace/state/index.js' import { ExtendedInitializedSDK, OfflineInitializedSDK, @@ -175,7 +172,6 @@ export class SDK { } export type { SynchronizerMap } -export { resolveGlobalSynchronizerId } async function getDefaultSynchronizerId( provider: AbstractLedgerProvider,