@@ -732,7 +673,7 @@ This will automatically pick up the conversion rate from `#splice-amulet-name-se
Note that SVs must wait `voteCooldownTime` (a governance parameter that defaults to 1min) between updates to their rate. Therefore updates made by the publisher will not propagate immediately.
-
+
[^1]: The URL must be reachable from the Canton participant, validator app and SV app running in your cluster, as well as from all web browsers that should be able to interact with the SV and wallet UIs.
diff --git a/docs-main/global-synchronizer/deployment/onboarding-process.mdx b/docs-main/global-synchronizer/deployment/onboarding-process.mdx
index f0b38bce8..529dab2e3 100644
--- a/docs-main/global-synchronizer/deployment/onboarding-process.mdx
+++ b/docs-main/global-synchronizer/deployment/onboarding-process.mdx
@@ -8,6 +8,9 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorOnboardin
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorOnboardingParsedLiteral126 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-126.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorOnboardingParsedLiteral95 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-95.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorOnboardingParsedLiteral86 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-86.mdx";
{/* COPIED_START source="splice:docs/src/validator_operator/validator_onboarding.rst" hash="a1a3ab0c" */}
@@ -45,22 +48,13 @@ To validate that the SVs have added you to their respective IP allowlists, you c
First, please confirm that your egress IP in the terminal in which you are running the command is indeed the one you provided for whitelisting by running:
-```bash
-curl -sSL http://checkip.amazonaws.com
-```
+
and confirming that the IP matches what you have provided for whitelisting. If it does, run the following command to check to which instance of Scan you can connect.
Note that the following snippet requires installing [jq](https://jqlang.org/).
-```bash
-(set -o pipefail
-CURL='curl -fsS -m 5 --connect-timeout 5'
-for url in $($CURL |gsf_scan_url|/api/scan/v0/scans | jq -r '.scans[].scans[].publicUrl'); do
- echo -n "$url: "
- $CURL "$url"/api/scan/version | jq -r '.version'
-done)
-```
+
You should see output in the form shown below, where each line indicates one SV and the version it is on. If you see timeouts that SV has not yet added you to their allowlist, if you do not get any errors, then all SVs have added you. Note that the URLs and versions will vary over time so don't try to compare exactly.
@@ -68,13 +62,7 @@ You should see output in the form shown below, where each line indicates one SV
Apart from connectivity to Scan, your validator must also be able to connect to the sequencer endpoints of the SVs. If you are encountering issues related to connecting to the synchronizer, you can use the following snippet to confirm that you are able to reach those endpoints (i.e., that SVs have whitelisted your IP for those endpoints as well). Note that the following snippet requires installing [jq](https://jqlang.org/) and [grpcurl](https://github.com/fullstorydev/grpcurl).
-```bash
-(set -o pipefail
-for url in $(curl -fsS -m 5 --connect-timeout 5 |gsf_scan_url|/api/scan/v0/dso-sequencers | jq -r '.domainSequencers[].sequencers[].url | sub("https://"; "")'); do
- echo -n "$url: "
- grpcurl --max-time 10 "$url":443 grpc.health.v1.Health/Check
-done)
-```
+
Sequencers that are functional and have whitelisted your IP correctly will return `"status": "SERVING"` in the `grpcurl` output.
diff --git a/docs-main/global-synchronizer/deployment/sv-operations.mdx b/docs-main/global-synchronizer/deployment/sv-operations.mdx
index eeb7899d9..aec472d84 100644
--- a/docs-main/global-synchronizer/deployment/sv-operations.mdx
+++ b/docs-main/global-synchronizer/deployment/sv-operations.mdx
@@ -12,11 +12,24 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsBash507 from
import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsBash538 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-538.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsBash564 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-564.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsBash683 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-683.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsParsedLiteral222 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-222.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsParsedLiteral204 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-204.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsParsedLiteral193 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-193.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsParsedLiteral171 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-171.mdx";
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonSvExtraDarsNotice from '/snippets/external/splice/main/splice-rst-full-docs-src-common-sv-extra-dars-notice.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsYaml821 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-821.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsYaml829 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-829.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsYaml838 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-838.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsYaml846 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-846.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsYaml865 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-865.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvOperationsYaml889 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-889.mdx";
{/* COPIED_START source="splice:docs/src/sv_operator/sv_operations.rst" hash="cbceece9" */}
These sections give an overview of some of the functionalities enabled through your SV node as well as general information useful to SV node operators.
+
+
## Security Notice
For more information on hardening your SV node, see `sv-security`.
@@ -96,42 +109,23 @@ One way to determine the current traffic consumption (in bytes) of a CC transfer
\(b\) had a single coin input. You can confirm both of these conditions by looking at the matching log entry of the form:
- ```bash
- executing batch AmuletOperationBatch(
- nonMergeOperations = AmuletOperation(
- from = tid:80afc8ae63defcb7a636d2cd23e38c0d,
- op = CO_CompleteAcceptedTransfer(ContractId(00ebc78671f4b5f688d8245a1e0c6c72f378c0c90c7ca574a3c3a615489f3ca15dca1012208d8f9eb3ffe0d0a05b207e2bc3fb3f3e7d31c0b594eaefcfd486411386de775c)),
- priority = Low
- ),
- priority = Low
- ) with inputs Vector(InputAmulet(ContractId(002ace5687dc7f82cb0ca80d2b349a39b1127ffd01db2cd7172053fef88308e6faca1012202646cd3cbb31c78314c3ef22657d4ba6f7f096e90167dcd0d71eba565fa35844)))
- ```
+
Use the `trace-id` from this log enty's metadata (**not** the `tid` in view here but from the dedicated `trace-id` field on the log entry JSON) to confirm that this log entry matches your transfer (by searching your logs by the `trace-id` to find for entries that contain the full `AcceptedTransferOffer`, for example). Note in this example that (a) there is a single operation in the executed bach and (b) the operation has a single input. If this is not true for the transfer you initiated, go back to step 2 and initiate a new transfer, as batching or multi-input transfers will skew the measurement results.
4. Search your `validator-app` logs on the `sender` for the `trace-id` visible in the previous step. The goal is to tie the action here to a `trace-id` on the Canton side. Search for a log entry of the following form:
- ```bash
- Request (tid:43fd8ad332ca637b0c7c1509b2bdf715) com.daml.ledger.api.v2.CommandService/SubmitAndWaitForTransactionTree to participant-1:5001: sending request
- ```
+
The `tid` in this log entry is the `trace-id` that you're looking for. It will be different from the `trace-id` in the log entry metadata (that you used to link this log entry to the transfer operation visible above).
5. Search your SV's `sequencer` logs for the `trace-id` from the previous step. You want to use a log filter along the lines of (all rules here should be concatenated with logical "AND"s):
- ```bash
- resource.labels.container_name="sequencer"
- jsonPayload.logger_name="c.d.c.s.t.TrafficConsumedManager:sequencer=sequencer"
- jsonPayload."trace-id"="43fd8ad332ca637b0c7c1509b2bdf715"
- ```
+
6. The resulting log lines contain traffic consumption information about the sender and receiver participants, but also about all SV participants. (SV participants are stakeholders to all CC transfers.) To determine only the traffic consumption of the sender and receiver participants, you must filter for the participant IDs of the sender and receiver. A simple approach to achieve the correct filtering is to filter for parts of the party suffixes of the sender and receiver parties, as the suffix (namespace) of a party will typically be identical to that of the participants hosting the party. Filtering the resulting log lines for the participant IDs corresponding to the sender and receiver, you should get log lines similar to the following:
- ```bash
- Consumed 16147 for PAR::sender::...
- Consumed 711 for PAR::receiver::...
- Consumed 1450 for PAR::sender::...
- ```
+
7. Sum up the numbers in the log lines to get the total traffic consumed for the last leg of a CC transfer. In this example, the total traffic consumed would be 17597 bytes for the sender and 711 bytes for the receiver.
@@ -346,17 +340,17 @@ t0 t1 t2 t3
- For `(t0, t1]` remaining portion:
- > ```bash
- > --begin-record-time=t0 --end-record-time=t1 \
- > --weight=10000 --already-minted-weight=10000
- > ```
+ ```bash
+ --begin-record-time=t0 --end-record-time=t1 \
+ --weight=10000 --already-minted-weight=10000
+ ```
- For `(t1, t2]`:
- > ```bash
- > --begin-record-time=t1 --end-record-time=t2 \
- > --weight=10000 --already-minted-weight=0
- > ```
+ ```bash
+ --begin-record-time=t1 --end-record-time=t2 \
+ --weight=10000 --already-minted-weight=0
+ ```
- A vote is initiated for **m₂**.
@@ -368,24 +362,24 @@ t0 t1 t2 t3
- For `(t0, t1]` remaining portion:
- > ```bash
- > --begin-record-time=t0 --end-record-time=t1 \
- > --weight=20000 --already-minted-weight=20000
- > ```
+ ```bash
+ --begin-record-time=t0 --end-record-time=t1 \
+ --weight=20000 --already-minted-weight=20000
+ ```
- For `(t1, t2]` remaining portion:
- > ```bash
- > --begin-record-time=t1 --end-record-time=t2 \
- > --weight=20000 --already-minted-weight=10000
- > ```
+ ```bash
+ --begin-record-time=t1 --end-record-time=t2 \
+ --weight=20000 --already-minted-weight=10000
+ ```
- For `(t2, t3]`:
- > ```bash
- > --begin-record-time=t2 --end-record-time=t3 \
- > --weight=20000 --already-minted-weight=0
- > ```
+ ```bash
+ --begin-record-time=t2 --end-record-time=t3 \
+ --weight=20000 --already-minted-weight=0
+ ```
- A vote is initiated for **m₃**.
@@ -418,35 +412,34 @@ The `ScanAppBackendConfig` has a field for both the ACS store and the TxLog stor
The helm chart value `acsStoreDescriptorUserVersion` sets the `user version` of the ACS store, which is shown in the example below:
-> ```yaml
-> # Example to trigger re-ingestion of the ACS store for the first time
-> persistence:
-> acsStoreDescriptorUserVersion: 1
-> ```
+
A subsequent re-ingestion can be triggered by incrementing the value, as shown in the example below:
-> ```yaml
-> # Example to trigger re-ingestion of the ACS store for the second time
-> persistence:
-> acsStoreDescriptorUserVersion: 2
-> ```
+
The helm chart value `txLogStoreDescriptorUserVersion` sets the `user version` of the TxLog store, which is shown in the example below:
-> ```yaml
-> # Example to trigger re-ingestion of the TxLog store for the first time
-> persistence:
-> txLogStoreDescriptorUserVersion: 1
-> ```
+
A subsequent re-ingestion can be triggered by incrementing the value, as shown in the example below:
-> ```yaml
-> # Example to trigger re-ingestion of the TxLog store for the second time
-> persistence:
-> txLogStoreDescriptorUserVersion: 2
-> ```
+
+
+The `activityIngestionUserVersion` field controls the activity record ingestion version. Incrementing this value causes the scan app to record a new app activity record completeness lower bound. Reward accounting excludes rounds before this boundary, even though their activity records are retained. Thus bumping the user version has the same effect as reinitializing the app activity record computation from the time of the bump onwards.
+
+Consequences of incrementing the user version:
+
+- Reward accounting excludes rounds before the new boundary, which may result in the SV node participating in reward computation by asking other SV nodes for the data for the rounds for which the SV node does not have complete activity records.
+- Scan will not serve activity records ingested before bumping the user version. The results of this SV node's `v0/events` Scan API may therefore miss some activity records compared to the responses from other Scan APIs.
+
+This is useful for recovering from unexpected ingestion or reward processing errors without reprocessing historical data.
+
+The user version must never decrease. A lower value than previously stored will cause the scan app to shut down to prevent data corruption.
+
+The HOCON configuration key is `canton.scan-apps.scan-app.activity-ingestion-user-version`. It can be set via an `ADDITIONAL_CONFIG` environment variable:
+
+
## Unvet insecure package versions
@@ -460,13 +453,7 @@ To unvet supported packages, SVs (but not regular validators) must set the follo
Here an example of how to unvet specific versions of a package:
-> ```yaml
-> additionalEnvVars:
-> - name: ADDITIONAL_CONFIG_ADDITIONAL_PACKAGES_TO_UNVET
-> value: |
-> canton.sv-apps.sv.additional-packages-to-unvet.splice-wallet = ["0.1.16"]
-> canton.sv-apps.sv.additional-packages-to-unvet.splice-amulet = ["0.1.16", "0.1.17"]
-> ```
+
Unvetting is only supported for SVs and SV validators and does not unvet dependencies for now.
diff --git a/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx b/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx
index 0216ffe58..e1da6e780 100644
--- a/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx
+++ b/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx
@@ -7,6 +7,8 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentTrafficJson94 from "/snip
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentTrafficParsedLiteral129 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-129.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentTrafficParsedLiteral88 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-88.mdx";
{/* COPIED_START source="splice:docs/src/deployment/traffic.rst" hash="0e110a7b" */}
@@ -45,9 +47,7 @@ Traffic accounting is "by participant"; all parties hosted on the same participa
The current synchronizer traffic parameters are recorded on the global `AmuletRules` contract and can be obtained from Scan. You can obtain them via the Scan UI or by querying the Scan API using, for example, this command (requires installing [jq](https://jqlang.org/)):
-```bash
-curl -X POST --header "Content-Type: application/json" -d "{}" |gsf_scan_url|/api/scan/v0/amulet-rules | jq ".amulet_rules_update.contract.payload.configSchedule.initialValue.decentralizedSynchronizer.fees"
-```
+
Above command will return a JSON object similar to the following:
@@ -59,9 +59,7 @@ This represents an encoded instance of the `SynchronizerFeesConfig` Daml data ty
- `extraTrafficPrice`: the price of extra traffic beyond the free tier, denominated in USD per MB. The price is charged in `CC` as per the current USD exchange rate. The exchange rate is determined by SVs via median voting and recorded on current `OpenMiningRound` contracts obtainable from Scan. For querying the current CC price in USD as per the currently open mining round, you can check the Scan UI or use the following command (requires installing [jq](https://jqlang.org/)):
- ```bash
- curl -X POST --header "Content-Type: application/json" -d "{\"cached_open_mining_round_contract_ids\":[], \"cached_issuing_round_contract_ids\":[]}" |gsf_scan_url|/api/scan/v0/open-and-issuing-mining-rounds | jq ".open_mining_rounds | values[] | .contract.payload | {round, amuletPrice}"
- ```
+
- `readVsWriteScalingFactor`: specifies the weight of additional traffic balance subtractions (from a sender's balance) for delivering a synchronizer message to each of its recipients. Delivering messages incurs actual costs for the SVs, even if this cost is much smaller than the cost of ordering and persisting messages. The `readVsWriteScalingFactor` is specified in basis points (parts per 10,000), i.e., a value of 1 means that for each 1000 bytes that need to be delivered to a recipient, 0.1 bytes of traffic will be charged. So for example: At a factor of 4, a 1 MB message with 10 recipients will draw `1,000,000 * (1 + 10 * 0.004) = 1,040,000` bytes from the sending participant's traffic balance.
diff --git a/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx b/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx
index 9c557865a..7d9a71680 100644
--- a/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx
+++ b/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx
@@ -6,11 +6,19 @@ description: "Deploy a Canton Network validator using Docker Compose"
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash58 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-58.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeYaml96 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-96.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeYaml105 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-105.mdx";
-import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash123 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-123.mdx";
-import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash262 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-262.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash167 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-167.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash306 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-306.mdx";
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonTrafficTopups from '/snippets/external/splice/main/splice-rst-full-docs-src-common-traffic-topups.mdx';
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonWalletSweeps from '/snippets/external/splice/main/splice-rst-full-docs-src-common-wallet-sweeps.mdx';
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonBackupSuggestion from '/snippets/external/splice/main/splice-rst-full-docs-src-common-backup-suggestion.mdx';
+import ExternalSpliceMainSpliceRstPartialDocsSrcValidatorOperatorRequiredNetworkParameters9 from '/snippets/external/splice/main/splice-rst-partial-docs-src-validator-operator-required-network-parameters-9.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeYaml347 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-347.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash281 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-281.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeYaml152 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-152.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorComposeBash175 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-175.mdx";
{/* COPIED_START source="splice:docs/src/validator_operator/validator_compose.rst" hash="074ae45b" */}
@@ -49,6 +57,12 @@ To validate that the dependencies are set up correctly, run the following comman
tar xzvf |version|_splice-node.tar.gz
```
+
+
+### Required Network Parameters
+
+
+
Additional parameters describing your own setup as opposed to the connection to the network are described below.
@@ -84,15 +98,7 @@ The value is a `|`-separated list of patterns that follows the standard Java `no
Example that proxies external traffic from the `validator` service but bypasses the proxy for `localhost` / `127.0.0.1`, any host in the `.internal` domain, and any IPv4 address whose literal string representation starts with `10.`:
-```yaml
-services:
- validator:
- environment:
- JAVA_TOOL_OPTIONS: >-
- -Dhttps.proxyHost=your.proxy.host
- -Dhttps.proxyPort=your_proxy_port
- -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.internal|10.*
-```
+
## Deployment
@@ -100,14 +106,12 @@ services:
1) Change to the `docker-compose` directory inside the extracted bundle:
-
+
2) Export the current version to an environment variable: |image_tag_set|
3) Run the following command to start the validator node, and wait for it to become ready (could take a few minutes):
-> ```bash
-> ./start.sh -s "" -o "" -p "" -m "" -w
-> ```
+>
>
> Where:
>
@@ -221,9 +225,7 @@ Once you have set up your OAuth provider, you need to configure it by setting th
In order to enable auth in the deployment, add the `-a` flag to the `start.sh` command, as follows:
-```bash
-./start.sh -s "" -o "" -p "" -m "" -w -a
-```
+
If you have already deployed a non-authenticated validator on your machine, you can migrate it to an authenticated one by stopping the validator with `./stop.sh` and restarting it with the `-a` flag as above. The validator operator user will be automatically migrated, and the user indicated by the `WALLET_ADMIN_USER` variable will be associated with the validator operator party. If you have also onboarded other users onto your validator, those will not be automatically migrated, and you need to manually associate the OAuth users with their corresponding parties. In order to do that, first take note of the party IDs of all relevant users (do this before stopping the unauthenticated validator), e.g. by copying them from the top-right corner of their wallet UIs. Now for every user that you wish to migrate, follow the instructions for associating a user with a party in the Users, Parties and Wallets in the Splice Wallet section, but replace the admin party ID with the party ID which you wish to associate with each user.
@@ -231,10 +233,14 @@ If you have already deployed a non-authenticated validator on your machine, you
Your node is configured to automatically purchase traffic on a pay-as-you-go basis (see automatically purchase traffic). To tune to your needs, you can set environment variables, for example:
-
+
+
+
## Configuring sweeps and auto-accepts of transfer offers
+
+
To do so, fill the following section and add the following additional config to your validator environment:
```yaml
@@ -261,18 +267,7 @@ services:
Similarly, you can configure the validator to automatically accept transfer offers from certain parties on the network. To do so, add the following additional config:
-```yaml
-services:
- validator:
- environment:
- - |
- ADDITIONAL_CONFIG_AUTO_ACCEPT_TRANSFERS=
- canton.validator-apps.validator_backend.auto-accept-transfers {
- "" {
- from-parties = ["", ""]
- }
- }
-```
+
## Integration with systemd and other init systems
diff --git a/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx b/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx
index 5f3d33c56..34fde34c8 100644
--- a/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx
+++ b/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx
@@ -19,9 +19,22 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmYaml5
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmBash611 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-611.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmYaml771 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-771.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmYaml797 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-797.mdx";
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonBackupSuggestion from '/snippets/external/splice/main/splice-rst-full-docs-src-common-backup-suggestion.mdx';
+import ExternalSpliceMainSpliceRstPartialDocsSrcValidatorOperatorRequiredNetworkParameters9 from '/snippets/external/splice/main/splice-rst-partial-docs-src-validator-operator-required-network-parameters-9.mdx';
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonReloaderRecommendation from '/snippets/external/splice/main/splice-rst-full-docs-src-common-reloader-recommendation.mdx';
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonTrafficTopups from '/snippets/external/splice/main/splice-rst-full-docs-src-common-traffic-topups.mdx';
+import ExternalSpliceMainSpliceRstFullDocsSrcCommonWalletSweeps from '/snippets/external/splice/main/splice-rst-full-docs-src-common-wallet-sweeps.mdx';
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmStandaloneValidatorValuesConfiguringTopupStart from '/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-configuring-topup-start.mdx';
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmStandaloneValidatorValuesScanClientConfigurationStart from '/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-scan-client-configuration-start.mdx';
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmStandaloneValidatorValuesSynchronizerConfigurationStart from '/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-synchronizer-configuration-start.mdx';
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmValidatorValuesAutoAcceptStart from '/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-auto-accept-start.mdx';
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmValidatorValuesParticipantPruningScheduleStart from '/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-participant-pruning-schedule-start.mdx';
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmParsedLiteral657 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-657.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmParsedLiteral472 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-472.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorHelmYaml127 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-127.mdx";
{/* COPIED_START source="splice:docs/src/validator_operator/validator_helm.rst" hash="b0bc851d" */}
@@ -46,6 +59,10 @@ This section describes how to deploy a standalone validator node in Kubernetes u
tar xzvf |version|_splice-node.tar.gz
```
+
+
+
+
- **TRUSTED_SCAN_URL** — The scan URL of an SV that you trust and that is reachable by your validator, often your SV sponsor. This should be of the form |generic_scan_url|, e.g., for the Global Synchronizer Foundation SV it is |gsf_scan_url|.
Additional parameters describing your own setup as opposed to the connection to the network are described below.
@@ -95,12 +112,7 @@ The value is a `|`-separated list of patterns that follows the standard Java `no
Example `additionalJvmOptions` for the validator helm chart that proxies external traffic but bypasses the proxy for `localhost` / `127.0.0.1`, any host in the `.internal` domain, and any IPv4 address whose literal string representation starts with `10.`:
-```yaml
-additionalJvmOptions: |
- -Dhttps.proxyHost=your.proxy.host
- -Dhttps.proxyPort=your_proxy_port
- -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.internal|10.*
-```
+
## Configuring PostgreSQL authentication
@@ -258,6 +270,8 @@ When running without authentication, the username of the validator administrator
## Installing the Software
+
+
### Configuring the Helm Charts
@@ -284,41 +298,7 @@ Additionally, please modify the file `splice-node/examples/sv-helm/standalone-pa
You need to configure how your validator connects to the network's **scan** services by defining a `scanClient` block in your `standalone-validator-values.yaml`.
-```yaml
-scanClient:
- scanType: "bft"
- seedUrls: ["TRUSTED_SCAN_URL"] # replace with scan seed url. Supports multiple urls, separated by comma.
-
-# scanClient denotes how the validator makes connections to scan service and supports three modes of operation.
-
-# Mode 1: bft (Byzantine Fault Tolerance)
-# Connects to all available scans in the network. It validates responses by ensuring
-# at least f+1 matching responses are received.
-
-# scanClient:
-# scanType: "bft"
-# seedUrls: ["TRUSTED_SCAN_URL"] # replace with scan seed url(s). Supports multiple urls, separated by comma.
-
-# Mode 2: bft-custom
-# A specialized version of bft where you specify a subset of trusted SVs.
-# The validator connects only to the scans of the SVs listed in 'svNames'.
-# Optional param 'threshold' defines how many identical responses are required to consider the scan responses valid.
-
-# scanClient:
-# scanType: "bft-custom"
-# svNames: ["TRUSTED_SV"] # replace with trusted SV names(s)
-# seedUrls: ["TRUSTED_SCAN_URL"] # replace with actual scan seed urls(s)
-# threshold: # optional integer indicating the number of matching responses required for validation
-
-# Mode 3: trust-single
-# Connects to a single trusted scan address.
-# This means that you depend on that single SV and if it is broken or malicious you will be unable to use the network.
-# Hence, usually you want to default to not enabling this
-
-# scanClient:
-# scanType: "trust-single"
-# scanAddress: "TRUSTED_SCAN_URL" # replace with the trusted scan url
-```
+
For your selected `scanClient` type, replace `TRUSTED_SCAN_URL` with a URL of a Scan you host or trust that is reachable by your Validator. For example, the GSF scan URL, |gsf_scan_url|. For `bft-custom` and `bft` modes of `scanClient`, you can specify more than one scan seed URL by separating them with commas.
@@ -330,37 +310,7 @@ For your selected `scanClient` type, replace `TRUSTED_SCAN_URL` with a URL of a
You need to configure how your validator's participant connects to **sequencers** by defining a `synchronizer` config in your `standalone-validator-values.yaml`.
-```yaml
-synchronizer:
- connectionType: "bft"
-
-# synchronizer configuration enables to configure how the validator's participant connects to the synchronizer.
-# synchronizer configuration has three modes of operation.
-
-# Mode 1: bft (Byzantine Fault Tolerance)
-# Uses all available synchronizer connections provided by the scan service.
-# Responses are validated against the network's f+1 fault tolerance logic.
-
-# synchronizer:
-# connectionType: "bft"
-
-# Mode 2: bft-custom
-# Connects only to sequencers operated by the specific SVs listed in 'svNames'.
-# optional param 'threshold' defines the minimum number of matching responses required for validation.
-
-# synchronizer:
-# connectionType: "bft-custom"
-# svNames: ["TRUSTED_SV"] # replace with trusted SV name(s)
-# threshold: # optional integer indicating the number of matching responses required for validation
-
-# Mode 3: trust-Single
-# Connects to a single specified sequencer URL.
-# trust-single makes you dependent on a single SV; if it is malicious or down, you will be unable to use the network.
-
-#synchronizer:
-# connectionType: "trust-single"
-# url: "TRUSTED_SYNCHRONIZER_SEQUENCER_URL" # replace with the trusted synchronizer sequencer url
-```
+
Additionally, please modify the file `splice-node/examples/sv-helm/standalone-validator-values.yaml` as follows:
@@ -379,11 +329,7 @@ Finally, please download the UI config values file from [https://github.com/glob
With these files in place, you can execute the following helm commands in sequence. It's generally a good idea to wait until each deployment reaches a stable state prior to moving on to the next step.
-```bash
-helm install postgres |helm_repo_prefix|/splice-postgres -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/postgres-values-validator-participant.yaml --wait
-helm install participant |helm_repo_prefix|/splice-participant -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/participant-values.yaml -f splice-node/examples/sv-helm/standalone-participant-values.yaml --wait
-helm install validator |helm_repo_prefix|/splice-validator -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/validator-values.yaml -f splice-node/examples/sv-helm/standalone-validator-values.yaml --wait
-```
+
Once this is running, you should be able to inspect the state of the cluster and observe pods running in the new namespace. A typical query might look as follows:
@@ -463,9 +409,7 @@ This gateway terminates tls using the secret that you configured above, and expo
using:
-```bash
-helm install cluster-ingress-validator |helm_repo_prefix|/splice-cluster-ingress-runbook -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/validator-cluster-ingress-values.yaml
-```
+
@@ -485,17 +429,9 @@ explain the config sections below in a way that makes them also accessible to th
By default your node will be configured to automatically purchase traffic on a pay-as-you-go basis (see automatically purchase traffic). To disable or tune to your needs, edit the following section in the validator-values.yaml file:
-```yaml
-# Configuring a validator's traffic top-up loop;
-# see documentation for more detailed information.
-topup:
- # set to false in order to disable automatic traffic top-ups
- enabled: true
- # target throughput in bytes / second of sequenced traffic; targetThroughput=0 <=> enabled=false
- targetThroughput: 20000
- # minTopupInterval - minimum time interval that must elapse before the next top-up
- minTopupInterval: "1m"
-```
+
+
+
@@ -505,6 +441,8 @@ topup:
## Configuring sweeps and auto-accepts of transfer offers
+
+
To do so, uncomment and fill in the following section in the `validator-values.yaml` file:
```yaml
@@ -524,13 +462,7 @@ To do so, uncomment and fill in the following section in the `validator-values.y
Similarly, you can configure the validator to automatically accept transfer offers from certain parties on the network. To do so, uncomment and fill in the following section in the `validator-values.yaml` file:
-```yaml
-# To configure the validator to auto-accept transfer offers from specific parties, uncomment and fill in the following:
-#autoAcceptTransfers:
-# "
":
-# fromParties:
-# - ""
-```
+
## Logging into the CNS UI
@@ -552,14 +484,7 @@ Note that if your node is down for longer than the pruning window (48 hours in t
Refer to the [pruning guide](/global-synchronizer/production-operations/pruning) for more details on participant pruning.
-```yaml
-# To configure participant pruning uncomment the following section.
-# Refer to the documentation for more details.
-# participantPruningSchedule:
-# cron: 0 /10 * * * ? # Run every 10min
-# maxDuration: 5m # Run for a max of 5min per iteration
-# retention: 48h # Retain history that is newer than 48h.
-```
+
## Configuring init containers
diff --git a/docs-main/global-synchronizer/deployment/validator-users.mdx b/docs-main/global-synchronizer/deployment/validator-users.mdx
index 6e9678d06..a59a57be5 100644
--- a/docs-main/global-synchronizer/deployment/validator-users.mdx
+++ b/docs-main/global-synchronizer/deployment/validator-users.mdx
@@ -5,6 +5,7 @@ description: "Manage users, parties, and wallets on a validator node"
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorUsersBash48 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-users-bash-48.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorUsersBash66 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-users-bash-66.mdx";
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmValidatorValuesEnablewalletStart from "/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-enablewallet-start.mdx";
{/* COPIED_START source="splice:docs/src/validator_operator/validator_users.rst" hash="b6c1f50f" */}
@@ -43,10 +44,7 @@ Custom Party Hint: This mode allows providing a human-readable Party hint when c
To disable the wallet HTTP server and the wallet automation, update the `validator-values.yaml` file with `enableWallet: false`
-```yaml
-# This will disable the wallet HTTP server and wallet automations when set to false
-enableWallet: true
-```
+
Since your wallet is disabled, your validator will not have funds to pay for traffic. You should therefore remove the validator top-up config to prevent its automation from trying to top up the traffic. See `helm_validator_topup` for more details.
diff --git a/docs-main/global-synchronizer/production-operations/disaster-recovery.mdx b/docs-main/global-synchronizer/production-operations/disaster-recovery.mdx
index 39cf4597c..e02098948 100644
--- a/docs-main/global-synchronizer/production-operations/disaster-recovery.mdx
+++ b/docs-main/global-synchronizer/production-operations/disaster-recovery.mdx
@@ -3,7 +3,9 @@ title: "Disaster Recovery"
description: "Recovery procedures for data corruption, SV re-onboarding, and CometBFT layer loss"
---
-import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvRestoreBash104 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-104.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvRestoreBash102 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-102.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvRestoreBash74 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-74.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvRestoreBash57 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-57.mdx";
{/* COPIED_START source="splice:docs/src/sv_operator/sv_restore.rst" hash="9e120ae8" */}
@@ -28,31 +30,13 @@ Assuming such a consistent set of backups is available, the following steps can
Scale down all components in the SV node to 0 replicas (replace `-0` with the correct serial ID in case a logical synchronizer upgrade has already been performed):
-```bash
-kubectl scale deployment --replicas=0 -n sv \
- global-domain-0-cometbft \
- global-domain-0-mediator \
- global-domain-0-sequencer \
- participant \
- scan-app \
- sv-app \
- validator-app
-```
+
Restore the storage and DBs of all components from the backups. The exact process for this depends on the storage and DBs used by the components, and is not documented here.
Once all storage has been restored, scale up all components in the SV node back to 1 replica (replace `-0` with the correct serial ID in case a logical synchronizer upgrade has already been performed):
-```bash
-kubectl scale deployment --replicas=1 -n sv \
- global-domain-0-cometbft \
- global-domain-0-mediator \
- global-domain-0-sequencer \
- participant \
- scan-app \
- sv-app \
- validator-app
-```
+
Once all components are healthy again, they should start catching up their state from peer SVs, and eventually become functional again.
@@ -64,7 +48,7 @@ In order to be able to recover the amulet, the backup of the identities of your
From the backup of Node Identities, copy the content of the field `identities.participant` and save it as a separate JSON file. This file will be used as identities bootstrap dump for the validator runbook.
-
+
Once the failed SV node is offboarded by a majority of SVs (via a governance vote on a `OffboardMember` action), we can deploy a standalone validator node for recovering the SV's amulets.
diff --git a/docs-main/global-synchronizer/production-operations/logical-synchronizer-upgrade.mdx b/docs-main/global-synchronizer/production-operations/logical-synchronizer-upgrade.mdx
index 292f71e04..1450363d9 100644
--- a/docs-main/global-synchronizer/production-operations/logical-synchronizer-upgrade.mdx
+++ b/docs-main/global-synchronizer/production-operations/logical-synchronizer-upgrade.mdx
@@ -5,6 +5,9 @@ description: "Upgrade the protocol version of a Global Synchronizer with very li
import { Version, VersionOption } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvLogicalSynchronizerUpgradeNone87 from '/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-87.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvLogicalSynchronizerUpgradeNone118 from '/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-118.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvLogicalSynchronizerUpgradeNone142 from '/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-142.mdx';
{/* COPIED_START source="splice:docs/src/sv_operator/sv_logical_synchronizer_upgrade.rst" hash="687d5313" */}
@@ -79,11 +82,7 @@ Concretely, the procedure is as follows:
1. The old physical synchronizer is deemed broken and the last sequenced message was at record time R.
2. Super validators configure this as the max sequencing time on the old sequencer to guarantee that nothing accidentally gets sequenced after that time. This is done by applying the following environment variable to the existing sequencer:
-```
-- name: ADDITIONAL_CONFIG_SEQUENCER_LSU_MAX_SEQUENCING_TIME
- value: |
- canton.sequencers.sequencer.parameters.lsu-repair.global-max-sequencing-time-exclusive=MAX_SEQUENCING_TIME
-```
+
2. Super validators deploy successor nodes. Depending on the issue,
the successor nodes may be configured with older image and protocol
@@ -105,7 +104,7 @@ Concretely, the procedure is as follows:
+ canton.sequencers.sequencer.parameters.parameters.lsu-repair.lsu-sequencing-bounds-override.upgrade-time=UPGRADE_TIME`} />
5. Validators initiate the *procedure* on their side.
@@ -140,11 +131,7 @@ To do so, use the following steps:
1. Super validators configure the manual LSU in their scan.
-```
-rollForwardLsu:
- enabled: true
- upgradeTime: UPGRADE_TIME # Must be agreed between SVs, optional, if not specified it is taken from an existing LSU announcement which should usually be sufficient.
-```
+
2. Validator app automation picks up that configuration and initiates a manual roll-forward LSU to the new synchronizer.
diff --git a/docs-main/global-synchronizer/production-operations/sv-pruning.mdx b/docs-main/global-synchronizer/production-operations/sv-pruning.mdx
index a82d5e228..4193efab7 100644
--- a/docs-main/global-synchronizer/production-operations/sv-pruning.mdx
+++ b/docs-main/global-synchronizer/production-operations/sv-pruning.mdx
@@ -3,6 +3,11 @@ title: "SV Pruning"
description: "Sequencer and CometBFT pruning on Super Validator nodes"
---
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvPruningYaml62 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-pruning-yaml-62.mdx";
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmSvValuesDocsPruningStart from "/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-docs-pruning-start.mdx";
+import ExternalSpliceMainSpliceRstLiteralMarkerClusterHelmSpliceCometbftValuesTemplateDocsCometbftPruningStart from "/snippets/external/splice/main/splice-literal-marker-cluster-helm-splice-cometbft-values-template-docs-cometbft-pruning-start.mdx";
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmSvValidatorValuesSvParticipantPruningScheduleStart from "/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-validator-values-sv-participant-pruning-schedule-start.mdx";
+
{/* COPIED_START source="splice:docs/src/sv_operator/sv_pruning.rst" hash="07e081c3" */}
The sequencer, participant and CometBFT have pruning options that can be used to ensure storage use is kept within reasonable bounds.
@@ -11,17 +16,7 @@ The sequencer, participant and CometBFT have pruning options that can be used to
Can be enabled in helm through the following config:
-```yaml
-synchronizers:
- current:
- sequencerPruningConfig:
- # Enable or disable sequencer pruning
- enabled: true
- # The pruning interval is the time between two consecutive prunings.
- pruningInterval: "1 hour"
- # The retention period is the time for which the sequencer will retain the data.
- retentionPeriod: "30 days"
-```
+
It is recommended that sequencer pruning is enabled and the `pruningInterval` is set to `1 hour` and the `retentionPeriod` to `30 days`.
@@ -33,31 +28,17 @@ It is enabled by default. Pruning is defined as the number of blocks to keep. Ol
The number of blocks to keep can be configured under the `node` helm values key.
-```yaml
-# Number of blocks to keep, used for pruning. 0 -> keep all blocks.
-# Number of blocks to keep for 30 days with an upper bound of 7k blocks/h.
-retainBlocks: 5040000
-```
+
## Participant pruning
Participant pruning is also supported and recommend. To enable it, set the following helm value on your validator chart:
-```yaml
-participantPruningSchedule:
- cron: 0 /10 * * * ? # Run every 10min
- maxDuration: 5m # Run for a max of 5min per iteration
- retention: 30d # Retain history that is newer than 30d.
-```
+
You also need to tell the participant to continue pruning even if it has not received an ACS commitment from one of its counter participant in the last 30 days. Without this pruning will essentially never run on mainnet as validators get shut down relatively frequently: To do so, set the following through the `additionalEnvVars` on your participant:
-```yaml
-additionalEnvVars:
- - name: ADDITIONAL_CONFIG_PRUNING_ACS_COMMITMENTS
- value: |
- canton.participants.participant.parameters.stores.safe-to-prune-commitment-state = "all"
-```
+
{/* COPIED_END */}
\ No newline at end of file
diff --git a/docs-main/global-synchronizer/production-operations/sv-security.mdx b/docs-main/global-synchronizer/production-operations/sv-security.mdx
index 80b007305..b44dece32 100644
--- a/docs-main/global-synchronizer/production-operations/sv-security.mdx
+++ b/docs-main/global-synchronizer/production-operations/sv-security.mdx
@@ -10,6 +10,9 @@ import KmsMigrationContext from "/snippets/external/splice/main/common/kms-migra
import KmsConfigGeneral from "/snippets/external/splice/main/common/kms-config-general.mdx";
import KmsConfigGcp from "/snippets/external/splice/main/common/kms-config-gcp.mdx";
import KmsConfigAws from "/snippets/external/splice/main/common/kms-config-aws.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvSecurityBash110 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-110.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvSecurityJson94 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-json-94.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcSvOperatorSvSecurityBash73 from "/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-73.mdx";
{/* COPIED_START source="splice:docs/src/sv_operator/sv_security.rst" hash="ae70b7be" */}
@@ -54,32 +57,11 @@ This involves the following steps:
Use the following shell commands to generate a keypair in the expected format:
-```bash
-# Generate the private key
-openssl genpkey -algorithm ed25519 -out cometbft-governance-keys.pem
-
-# Extract and encode the keys
-public_key_base64=$(openssl pkey -in cometbft-governance-keys.pem -pubout -outform DER | tail -c 32 | base64 | tr -d "\n")
-private_key_base64=$(openssl pkey -in cometbft-governance-keys.pem -outform DER | tail -c 32 | base64 | tr -d "\n")
-
-echo "{"
-# Output the keys
-echo " \"publicKey\": \"$public_key_base64\","
-echo " \"privateKey\": \"$private_key_base64\""
-echo "}"
-
-# Clean up
-rm cometbft-governance-keys.pem
-```
+
These commands should result in an output similar to:
-```json
-{
- "public": "A9tWyYq/HIJ3B73ym1eIUV8yqnDBligGJUE8463CBUM=",
- "private": "FDG16PaSh9hGLu2fXzEHmTECMjSyQuZnEg+w5HKCEtg="
-}
-```
+
Save this output to a file, e.g., `cometbft-governance-keys.json`.
@@ -89,11 +71,7 @@ You inject the externally generated CometBFT governance key into the SV app via
Assuming that your SV deployment resides in the `sv` namespace, use the following command to create the secret from the JSON file generated above:
-```bash
-kubectl create secret --namespace sv generic splice-app-sv-cometbft-governance-key \
- --from-literal=publicKey="$(jq -r .public cometbft-governance-keys.json)" \
- --from-literal=privateKey="$(jq -r .private cometbft-governance-keys.json)"
-```
+
To instruct the SV app to use the externally managed CometBFT governance key instead of generating a fresh one itself, set the `cometBFT.externalGovernanceKey` value in the `splice-sv-node` Helm chart to `true`. (You can comment out the respective line in `splice-node/examples/sv-helm/sv-values.yaml`.)
diff --git a/docs-main/global-synchronizer/production-operations/validator-disaster-recovery.mdx b/docs-main/global-synchronizer/production-operations/validator-disaster-recovery.mdx
index cd6dd4d67..6f1d50455 100644
--- a/docs-main/global-synchronizer/production-operations/validator-disaster-recovery.mdx
+++ b/docs-main/global-synchronizer/production-operations/validator-disaster-recovery.mdx
@@ -4,8 +4,14 @@ description: "Disaster recovery and restore procedures for validator nodes"
---
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryBash137 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-137.mdx";
-import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone230 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-230.mdx";
-import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone250 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-250.mdx";
+import ExternalSpliceMainSpliceRstLiteralMarkerAppsAppSrcPackExamplesSvHelmStandaloneValidatorValuesParticipantBootstrapMigrateToNewParticipantStart from "/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-participant-bootstrap-migrate-to-new-participant-start.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryYaml185 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-185.mdx";
+import ExternalSpliceMainSpliceRstLiteralFullAppsAppSrcPackExamplesRecoveryManualIdentitiesDump from "/snippets/external/splice/main/splice-literal-full-apps-app-src-pack-examples-recovery-manual-identities-dump.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone240 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-240.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone248 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-248.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone260 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-260.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone299 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-299.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone314 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-314.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone264 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-264.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone309 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-309.mdx";
import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone351 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-351.mdx";
@@ -14,6 +20,9 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterR
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryNone485 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-485.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryParsedLiteral443 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-443.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDisasterRecoveryParsedLiteral268 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-268.mdx";
{/* COPIED_START source="splice:docs/src/validator_operator/validator_disaster_recovery.rst" hash="48572fc5" */}
@@ -85,13 +94,7 @@ To re-onboard a validator in a Kubernetes deployment and recover the balances of
- Uncomment the following lines in the `standalone-validator-values.yaml` file. This will specify a new participant ID for the validator. Replace `put-some-new-string-never-used-before` with a string that was never used before. Make sure to also adjust `nodeIdentifier` to match the same value.
-```yaml
-# participantIdentitiesDumpImport:
-# secretName: participant-bootstrap-dump
-# # Make sure to also adjust nodeIdentifier to the same value
-# newParticipantIdentifier: put-some-new-string-never-used-before
-# migrateValidatorParty: true
-```
+
### Docker-Compose Deployment
@@ -113,35 +116,13 @@ In case you do not have a usable identities backup but instead have a backup of
- You only need to restore and scale up the participant, i.e., you can ignore the validator app and its database.
- In case the restored participant shuts down immediately due to failures, add the following additional configuration:
- > ```yaml
- > additionalEnvVars:
- > - name: ADDITIONAL_CONFIG_EXIT_ON_FATAL_FAILURES
- > value: canton.parameters.exit-on-fatal-failures = false
- > ```
+
2. Open a Canton console to the temporary participant.
3. Run below commands in the opened console. This will store the backup into a *local* file (relative to the local directory from which you opened the console) called `identities-dump.json`.
- > ``` text
- > import com.digitalasset.canton.topology.transaction.TopologyMapping
- > import com.digitalasset.canton.topology.store.TimeQuery
- > import java.util.Base64
- >
- > val id = participant.id.toProtoPrimitive
- >
- > // This line needs to be adapted if your participant stores keys in an external KMS
- > val keys = "[" + participant.keys.secret.list().filter(k => k.name.get.unwrap != "cometbft-governance-keys").map(key => s"{\"keyPair\": \"${Base64.getEncoder.encodeToString(participant.keys.secret.download(key.publicKey.fingerprint).toByteArray)}\", \"name\": \"${key.name.get.unwrap}\"}") .mkString(",") + "]"
- >
- > val authorizedStoreSnapshot = Base64.getEncoder.encodeToString(participant.topology.transactions.export_topology_snapshot(timeQuery = TimeQuery.Range(from = None, until = None), filterMappings = Seq(TopologyMapping.Code.NamespaceDelegation, TopologyMapping.Code.OwnerToKeyMapping, TopologyMapping.Code.VettedPackages), filterNamespace = participant.id.namespace.toProtoPrimitive).toByteArray)
- >
- > val combinedJson = s"""{ "id" : "$id", "keys" : $keys, "authorizedStoreSnapshot" : "$authorizedStoreSnapshot" }"""
- >
- > // Write to file
- > import java.nio.file.{Files, Paths}
- > val dumpPath = Paths.get("identities-dump.json")
- > Files.writeString(dumpPath, combinedJson)
- > ```
+
Note that above commands need to be adapted if your participant is configured to store keys in an external KMS.
@@ -166,14 +147,11 @@ If you still observe issues, in particular you observe `ACS_COMMITMENT_MISMATCH`
1. First make sure all parties are hosted on the same node. The most common case is that either the parties are still on the old node with the old participant ID or they have been migrated to the new node. You can check by opening a Canton console to any participant on the network (i.e., you can also ask another validator or SV operator for this information) and running the following query where \ is the part after the `::` in, for example, your validator party ID.
-
+
If all parties are on the same node, proceed to the next step. If some are on the old node and some are on the new node, migrate the ones on the old node to the new node by opening a console to the new node and running the following command (adjust the parameters as required for your parties):
- ```
- val participantId = participant.id // ID of the new participant
- participant.topology.party_to_participant_mappings.propose(<party-id>, Seq((participantId, <participant-permission>)), store = syncId)
- ```
+
2. If all parties are on the new node already, you can attempt to (re-)import the ACS for those parties manually. The following steps concern your new validator node:
@@ -183,15 +161,13 @@ If you still observe issues, in particular you observe `ACS_COMMITMENT_MISMATCH`
3. From the Canton console, run:
-
+
4. For each `PARTY_ID` you want to migrate / re-import the ACS for:
Run from a regular shell (same working directory like the one you started your Canton console from):
- ```bash
- curl -sSL --fail-with-body '|gsf_scan_url|/api/scan/v0/acs/YOUR_PARTY_ID' -H 'Content-Type: application/json' | jq -r .acs_snapshot | base64 -d > acs_snapshot
- ```
+
From the Canton console:
@@ -209,10 +185,7 @@ If you still observe issues, in particular you observe `ACS_COMMITMENT_MISMATCH`
In rare cases, the re-onboarding process may fail at the `ImportTopologySnapshot` step because an `OwnerToKeyMapping` for the old participant ID has an insufficient number of signatures in the topology snapshot. This only affects validators that were originally onboarded on Splice 0.4.1 or earlier, which used a Canton version that did not require the mapped keys to co-sign `OwnerToKeyMapping` transactions. You can identify this issue by looking for the following messages in your participant logs:
-```
-Missing authorizers: ReferencedAuthorizations(extraKeys = <key-id>...)
-Rejected transaction ... OwnerToKeyMapping(...) ... due to Not authorized
-```
+
To work around this, follow these steps:
@@ -220,14 +193,7 @@ To work around this, follow these steps:
2. Open a Canton console to the new participant and run the following commands to propose the corrected `OwnerToKeyMapping`. Replace the key ID prefixes with those from the rejected `OwnerToKeyMapping` in your participant logs, and replace the old participant ID with your actual old participant ID:
- ```
- val keys = Seq("<signing-key-id-prefix>", "<encryption-key-id-prefix>").map(prefix =>
- participant.keys.public.list().filter(_.publicKey.id.toProtoPrimitive.startsWith(prefix)).head.publicKey)
-
- val oldParticipantId = ParticipantId.fromProtoPrimitive("<old-participant-id>", "participant").toOption.get
- val otk = OwnerToKeyMapping(member = oldParticipantId, keys = NonEmpty.from(keys).get)
- participant.topology.owner_to_key_mappings.propose(otk, force = ForceFlag.AlienMember)
- ```
+
3. Start the validator app using your original identities dump configuration.
@@ -267,10 +233,7 @@ In this example, the validFrom time is `2025-05-14T10:19:33.534074Z`.
We can now query CC Scan to get the active contract set (ACS) for a party and write it to the file `acs_snapshot`:
-```bash
-// Make sure to adjust YOUR_VALID_FROM to the time you got from the previous query and YOUR_PARY_ID
-curl -sSL --fail-with-body '|gsf_scan_url|/api/scan/v0/acs/YOUR_PARTY_ID?record_time=YOUR_VALID_FROM' -H 'Content-Type: application/json' | jq -r .acs_snapshot | base64 -d > acs_snapshot
-```
+
Lastly, we can import the ACS:
@@ -289,15 +252,7 @@ Validators then need to:
1. Wait for their node to finish catching up to the latest transaction on the existing synchronizer. A good indicator for that is that you don't see any new logs containing `Processing event at` in your participant INFO logs.
2. Initiate the roll forward LSU through a Canton console:
-```
-val existingPhysicalSynchronizerId = participant.synchronizers.list_connected().find(_.synchronizerAlias == "global").head.physicalSynchronizerId
-participant.synchronizers.perform_manual_lsu(
- existingPhysicalSynchronizerId,
- newPhysicalSynchronizerId,
- upgradeTime = None,
- sequencerSuccessors,
-)
-```
+
### Resolving ACS mismatches
diff --git a/docs-main/global-synchronizer/reference/canton-console-reference.mdx b/docs-main/global-synchronizer/reference/canton-console-reference.mdx
index 0c1614e65..3708b71a7 100644
--- a/docs-main/global-synchronizer/reference/canton-console-reference.mdx
+++ b/docs-main/global-synchronizer/reference/canton-console-reference.mdx
@@ -9,6 +9,11 @@ import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentConsoleAccessBash174 from
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentConsoleAccessNone136 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-136.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentConsoleAccessNone104 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-104.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentConsoleAccessParsedLiteral94 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-94.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentConsoleAccessNone71 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-71.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcDeploymentConsoleAccessParsedLiteral63 from "/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-63.mdx";
{/* COPIED_START source="splice:docs/src/deployment/console_access.rst" hash="bccf3653" */}
@@ -45,9 +50,7 @@ Welcome to Canton!
-```bash
-docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
-```
+
@@ -55,34 +58,13 @@ docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_
If you run the participant using the docker compose setup the docker command must be run with the docker network used by the participant. Adjust the configuration to connect to the participant container:
-```text
-canton {
- remote-participants {
- participant {
- admin-api {
- port = 5002
- address = participant
- }
- ledger-api {
- port = 5001
- address = participant
- }
- token = ""
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
-}
-```
+
Running docker with the default network (`splice-validator`):
-```bash
-docker run -it --rm --network splice-validator -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
-```
+
@@ -94,31 +76,11 @@ docker run -it --rm --network splice-validator -v $(pwd)/console.conf:/app/app.c
2. Add the configuration to a local file `console.conf`
-```
-canton {
- remote-sequencers {
- sequencer {
- public-api {
- port = 5008
- address = localhost
- }
- admin-api {
- port = 5009
- address = localhost
- }
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
-}
-```
+
3. Run the docker command
-```bash
-docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
-```
+
@@ -130,27 +92,11 @@ docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_
2. Add the configuration to a local file `console.conf`
-```
-canton {
- remote-mediators {
- mediator {
- admin-api {
- port = 5007
- address = localhost
- }
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
-}
-```
+
3. Run the docker command
-```bash
-docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
-```
+
diff --git a/docs-main/global-synchronizer/release-notes/splice.mdx b/docs-main/global-synchronizer/release-notes/splice.mdx
index 71d0550a0..02a9b886e 100644
--- a/docs-main/global-synchronizer/release-notes/splice.mdx
+++ b/docs-main/global-synchronizer/release-notes/splice.mdx
@@ -3,8 +3,6 @@ title: "Splice"
description: "Release notes and version history for Global Synchronizer software"
---
-import ExternalSpliceMainSpliceRstCodeDocsSrcReleaseNotesYaml192 from "/snippets/external/splice/main/splice-rst-code-docs-src-release-notes-yaml-192.mdx";
-
{/* COPIED_START source="splice:docs/src/release_notes.rst" hash="b9660f66" */}
## 0.6.3
@@ -551,7 +549,11 @@ Note: 0.5.7 introduced a significant performance regression related to the proce
In some cases, helm might not properly update the state after you removed the `migrating` flag. You can check before the upgrade if it got properly applied through `kubectl describe deployment -n validator validator-app` and look for this env var:
-
+ ```yaml
+ - name: ADDITIONAL_CONFIG_VALIDATOR_MIGRATION_RESTORE
+ value: |
+ canton.validator-apps.validator_backend.restore-from-migration-dump = "/domain-upgrade-dump/domain_migration_dump.json"
+ ```
If you see it, the deployment still has `migrating: true` activated. You can clear that flag by, for example, uninstalling and reinstalling the validator helm release (but not participant and postgres). You can either directly reinstall the new version or first do the reinstall on the old version and then upgrade.
diff --git a/docs-main/global-synchronizer/splice-fundamentals/rewards-minting.mdx b/docs-main/global-synchronizer/splice-fundamentals/rewards-minting.mdx
index dd8a494cc..2279cec2a 100644
--- a/docs-main/global-synchronizer/splice-fundamentals/rewards-minting.mdx
+++ b/docs-main/global-synchronizer/splice-fundamentals/rewards-minting.mdx
@@ -3,6 +3,12 @@ title: "Minting Delegations"
description: "How validator operators delegate minting authority for external parties hosted on their node"
---
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDelegationsBash309 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-309.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDelegationsBash276 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-276.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDelegationsBash251 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-251.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDelegationsBash215 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-215.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcValidatorOperatorValidatorDelegationsBash201 from "/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-201.mdx";
+
{/* COPIED_START source="splice:docs/src/validator_operator/validator_delegations.rst" hash="af0084d8" */}
Minting delegations allow a delegate to instruct their validator node to automate the minting of rewards on behalf of an external party (the beneficiary) hosted on the same validator node. The delegate can be any party onboarded to the validator node's wallet (e.g., the validator operator party, but other internal parties are also possible). This is useful to automate the reward collection for external parties.
@@ -131,42 +137,11 @@ To create the proposal, submit a `create` command via the Ledger API [command su
First, set up the required environment variables:
-```bash
-export LEDGER_API_URL="https://validator.example.com:5003"
-export TOKEN="your-auth-token"
-export BENEFICIARY_PARTY="beneficiary::1220abcd..."
-export DELEGATE_PARTY="validator_operator::1220efgh..."
-export DSO_PARTY="DSO::1220ijkl..."
-export EXPIRES_AT="2025-12-31T23:59:59Z"
-# This could be created by
-# export EXPIRES_AT="$(date -u -d '+1 year' '+%Y-%m-%dT%H:%M:%SZ')"
-export AMULET_MERGE_LIMIT=10
-```
+
Then create the proposal using curl:
-```bash
-curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
---data-raw '{
- "commands": [
- {
- "CreateCommand": {
- "templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegationProposal",
- "createArguments": {
- "delegation": {
- "beneficiary": "'"$BENEFICIARY_PARTY"'",
- "delegate": "'"$DELEGATE_PARTY"'",
- "dso": "'"$DSO_PARTY"'",
- "expiresAt": "'"$EXPIRES_AT"'",
- "amuletMergeLimit": '"$AMULET_MERGE_LIMIT"'
- }
- }
- }
- }
- ]
-}' \
-"$LEDGER_API_URL/v2/commands"
-```
+
See the [MintingDelegationProposal template source code](https://github.com/canton-network/splice/blob/main/daml/splice-wallet/daml/Splice/Wallet/MintingDelegation.daml) for the complete Daml definition.
@@ -176,51 +151,11 @@ The beneficiary can monitor their proposal status by querying for active `Mintin
To query for pending proposals:
-```bash
-curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
---data-raw '{
- "filter": {
- "filtersByParty": {
- "'"$BENEFICIARY_PARTY"'": {
- "filters": [
- {
- "inclusive": {
- "templateFilters": [
- {"templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegationProposal"}
- ]
- }
- }
- ]
- }
- }
- }
-}' \
-"$LEDGER_API_URL/v2/state/active-contracts"
-```
+
Once accepted, query for the active `MintingDelegation` contract to confirm the delegation is active:
-```bash
-curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
---data-raw '{
- "filter": {
- "filtersByParty": {
- "'"$BENEFICIARY_PARTY"'": {
- "filters": [
- {
- "inclusive": {
- "templateFilters": [
- {"templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegation"}
- ]
- }
- }
- ]
- }
- }
- }
-}' \
-"$LEDGER_API_URL/v2/state/active-contracts"
-```
+
#### Withdrawing a Proposal
@@ -228,24 +163,7 @@ If the beneficiary wants to withdraw their proposal before it is accepted or rej
First, obtain the contract ID of the proposal from the active contracts query above, then exercise the withdrawal choice:
-```bash
-export PROPOSAL_CONTRACT_ID="00abcd1234..."
-
-curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
---data-raw '{
- "commands": [
- {
- "ExerciseCommand": {
- "templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegationProposal",
- "contractId": "'"$PROPOSAL_CONTRACT_ID"'",
- "choice": "MintingDelegationProposal_Withdraw",
- "choiceArgument": {}
- }
- }
- ]
-}' \
-"$LEDGER_API_URL/v2/commands"
-```
+
### Security Considerations
diff --git a/docs-main/global-synchronizer/understand/installing-daml-sdk.mdx b/docs-main/global-synchronizer/understand/installing-daml-sdk.mdx
index 80a6e10b0..278decfe2 100644
--- a/docs-main/global-synchronizer/understand/installing-daml-sdk.mdx
+++ b/docs-main/global-synchronizer/understand/installing-daml-sdk.mdx
@@ -3,6 +3,8 @@ title: "Installing a Compatible Daml SDK"
description: "How to install a Daml SDK version compatible with the current Splice release"
---
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevOverviewVersionInformationBash42 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-42.mdx";
+
{/* COPIED_START source="splice:docs/src/app_dev/overview/version_information.rst#installing-a-compatible-daml-sdk" hash="2149e7a4" */}
You are not required to install the exact same Daml SDK versions used to build this Splice release. These versions are provided for reference only. `.dar` files built by older 3.x Daml SDKs are generally compatible with the Canton version used in this Splice release.
@@ -17,9 +19,7 @@ Follow these steps to install a recent, compatible OSS Daml SDK version:
2. Install that release using
- ```bash
- curl -sSL https://get.digitalasset.com/ | sh
- ```
+
For more information about installing the Daml SDK, see the [DPM installation guide](/sdks-tools/cli-tools/dpm).
diff --git a/docs-main/global-synchronizer/understand/local-testing.mdx b/docs-main/global-synchronizer/understand/local-testing.mdx
index af7e083f9..41d0a12b9 100644
--- a/docs-main/global-synchronizer/understand/local-testing.mdx
+++ b/docs-main/global-synchronizer/understand/local-testing.mdx
@@ -5,6 +5,13 @@ description: "Docker-Compose based deployment of a local Canton Network for deve
import { NetworkVariables } from '/snippets/components/version.mdx';
import { networkData } from '/snippets/generated/version-dashboard-data.mdx';
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetBash228 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-bash-228.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetBash206 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-bash-206.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetBash190 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-bash-190.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetBash175 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-bash-175.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetBash162 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-bash-162.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetNone147 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-none-147.mdx";
+import ExternalSpliceMainSpliceRstCodeDocsSrcAppDevTestingLocalnetNone126 from "/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-testing-localnet-none-126.mdx";
{/* COPIED_START source="splice:docs/src/app_dev/testing/localnet.rst" hash="a3270359" */}
@@ -111,10 +118,7 @@ LocalNet uses a single PostgreSQL database for all components. Database configur
In most scenarios, the `*.localhost` domains (e.g., `http://scan.localhost`) will resolve to your local host IP `127.0.0.1`. There are some situations where the resolution does not occur and the solution is to add entries to your `/etc/hosts` file. For example, to resolve `http://scan.localhost` and `http://wallet.localhost` add these entry to the file:
-```
-127.0.0.1 scan.localhost
-127.0.0.1 wallet.localhost
-```
+
## Default Wallet Users
@@ -126,9 +130,7 @@ In most scenarios, the `*.localhost` domains (e.g., `http://scan.localhost`) wil
When the `swagger-ui` profile is enabled, the Swagger UI for the `JSON Ledger API HTTP Endpoints` across all running participants is available at [http://localhost:9090](http://localhost:9090). Note: Some endpoints require a JWT token when using the **Try it out** feature. One method to obtain this token is via the Canton Console. Start the Canton Console `make canton-console` and execute the following command:
-``` none
-`app-provider`.adminToken
-```
+
For proper functionality, Swagger UI relies on a localhost nginx proxy for `canton.localhost` configured for each participant. For example, the `JSON Ledger API HTTP Endpoints` for the app-provider can be accessed at the nginx proxy URL `http://canton.localhost:${APP_PROVIDER_UI_PORT}` via Swagger UI, which corresponds to accessing `localhost:3${PARTICIPANT_JSON_API_PORT}` directly. The nginx proxy only adds additional headers to resolve CORS issues within Swagger UI.
@@ -136,57 +138,23 @@ For proper functionality, Swagger UI relies on a localhost nginx proxy for `cant
### Start LocalNet nodes
-```bash
-docker compose --env-file $LOCALNET_DIR/compose.env \
- --env-file $LOCALNET_DIR/env/common.env \
- -f $LOCALNET_DIR/compose.yaml \
- -f $LOCALNET_DIR/resource-constraints.yaml \
- --profile sv \
- --profile app-provider \
- --profile app-user up -d
-```
+
### Stop LocalNet nodes
-```bash
-docker compose --env-file $LOCALNET_DIR/compose.env \
- --env-file $LOCALNET_DIR/env/common.env \
- -f $LOCALNET_DIR/compose.yaml \
- -f $LOCALNET_DIR/resource-constraints.yaml \
- --profile sv \
- --profile app-provider \
- --profile app-user down -v
-```
+
### Start nodes including a swagger-ui
See `swagger-ui` for more information.
-```bash
-docker compose --env-file $LOCALNET_DIR/compose.env \
- --env-file $LOCALNET_DIR/env/common.env \
- -f $LOCALNET_DIR/compose.yaml \
- -f $LOCALNET_DIR/resource-constraints.yaml \
- --profile sv \
- --profile app-provider \
- --profile app-user \
- --profile swagger-ui up -d
-```
+
### Stop nodes including a swagger-ui
See `swagger-ui` for more information.
-```bash
-docker compose --env-file $LOCALNET_DIR/compose.env \
- --env-file $LOCALNET_DIR/env/common.env \
- -f $LOCALNET_DIR/compose.yaml \
- -f $LOCALNET_DIR/resource-constraints.yaml \
- --profile sv \
- --profile app-provider \
- --profile app-user \
- --profile swagger-ui down -v
-```
+
### Access the Canton Admin Console
@@ -195,13 +163,7 @@ Use the Canton Admin Console to inspect and modify the run configuration of the
- [Canton Console How-To](/global-synchronizer/canton-console/console-overview)
- [Canton Console commands](/global-synchronizer/reference/canton-console-commands)
-```bash
-docker compose --env-file $LOCALNET_DIR/compose.env \
- --env-file $LOCALNET_DIR/env/common.env \
- -f $LOCALNET_DIR/compose.yaml \
- -f $LOCALNET_DIR/resource-constraints.yaml \
- run --rm console
-```
+
## Multiple Synchronizers
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-configuring-topup-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-configuring-topup-start.mdx
index c1c1f80b2..440d1f804 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-configuring-topup-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-configuring-topup-start.mdx
@@ -2,11 +2,10 @@
# Configuring a validator's traffic top-up loop;
# see documentation for more detailed information.
topup:
- # set to false in order to disable automatic traffic top-ups
- enabled: true
- # target throughput in bytes / second of sequenced traffic; targetThroughput=0 <=> enabled=false
- targetThroughput: 20000
- # minTopupInterval - minimum time interval that must elapse before the next top-up
- minTopupInterval: "1m"
- #
+ # set to false in order to disable automatic traffic top-ups
+ enabled: true
+ # target throughput in bytes / second of sequenced traffic; targetThroughput=0 <=> enabled=false
+ targetThroughput: 20000
+ # minTopupInterval - minimum time interval that must elapse before the next top-up
+ minTopupInterval: "1m"
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-migration-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-migration-start.mdx
deleted file mode 100644
index 9b8baf9f4..000000000
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-migration-start.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
-```yaml
- # Replace MIGRATION_ID with the migration ID of the global synchronizer.
- migration:
- id: "MIGRATION_ID"
- # Uncomment this when redeploying as part of a migration, i.e., MIGRATION_ID was incremented and a migration dump was exported to the attached pvc.
- # migrating: true
- #
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-participant-bootstrap-migrate-to-new-participant-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-participant-bootstrap-migrate-to-new-participant-start.mdx
index 0b5741e2e..5614b2a8b 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-participant-bootstrap-migrate-to-new-participant-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-participant-bootstrap-migrate-to-new-participant-start.mdx
@@ -4,5 +4,4 @@
# # Make sure to also adjust nodeIdentifier to the same value
# newParticipantIdentifier: put-some-new-string-never-used-before
# migrateValidatorParty: true
- #
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-scan-client-configuration-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-scan-client-configuration-start.mdx
new file mode 100644
index 000000000..d7e68043c
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-scan-client-configuration-start.mdx
@@ -0,0 +1,35 @@
+```yaml
+ scanClient:
+ scanType: "bft"
+ seedUrls: ["TRUSTED_SCAN_URL"] # replace with scan seed url. Supports multiple urls, separated by comma.
+
+ # scanClient denotes how the validator makes connections to scan service and supports three modes of operation.
+
+ # Mode 1: bft (Byzantine Fault Tolerance)
+ # Connects to all available scans in the network. It validates responses by ensuring
+ # at least f+1 matching responses are received.
+
+ # scanClient:
+ # scanType: "bft"
+ # seedUrls: ["TRUSTED_SCAN_URL"] # replace with scan seed url(s). Supports multiple urls, separated by comma.
+
+ # Mode 2: bft-custom
+ # A specialized version of bft where you specify a subset of trusted SVs.
+ # The validator connects only to the scans of the SVs listed in 'svNames'.
+ # Optional param 'threshold' defines how many identical responses are required to consider the scan responses valid.
+
+ # scanClient:
+ # scanType: "bft-custom"
+ # svNames: ["TRUSTED_SV"] # replace with trusted SV names(s)
+ # seedUrls: ["TRUSTED_SCAN_URL"] # replace with actual scan seed urls(s)
+ # threshold: # optional integer indicating the number of matching responses required for validation
+
+ # Mode 3: trust-single
+ # Connects to a single trusted scan address.
+ # This means that you depend on that single SV and if it is broken or malicious you will be unable to use the network.
+ # Hence, usually you want to default to not enabling this
+
+ # scanClient:
+ # scanType: "trust-single"
+ # scanAddress: "TRUSTED_SCAN_URL" # replace with the trusted scan url
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-synchronizer-configuration-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-synchronizer-configuration-start.mdx
new file mode 100644
index 000000000..cd94b530d
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-standalone-validator-values-synchronizer-configuration-start.mdx
@@ -0,0 +1,31 @@
+```yaml
+ synchronizer:
+ connectionType: "bft"
+
+ # synchronizer configuration enables to configure how the validator's participant connects to the synchronizer.
+ # synchronizer configuration has three modes of operation.
+
+ # Mode 1: bft (Byzantine Fault Tolerance)
+ # Uses all available synchronizer connections provided by the scan service.
+ # Responses are validated against the network's f+1 fault tolerance logic.
+
+ # synchronizer:
+ # connectionType: "bft"
+
+ # Mode 2: bft-custom
+ # Connects only to sequencers operated by the specific SVs listed in 'svNames'.
+ # optional param 'threshold' defines the minimum number of matching responses required for validation.
+
+ # synchronizer:
+ # connectionType: "bft-custom"
+ # svNames: ["TRUSTED_SV"] # replace with trusted SV name(s)
+ # threshold: # optional integer indicating the number of matching responses required for validation
+
+ # Mode 3: trust-Single
+ # Connects to a single specified sequencer URL.
+ # trust-single makes you dependent on a single SV; if it is malicious or down, you will be unable to use the network.
+
+ #synchronizer:
+ # connectionType: "trust-single"
+ # url: "TRUSTED_SYNCHRONIZER_SEQUENCER_URL" # replace with the trusted synchronizer sequencer url
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-validator-values-sv-participant-pruning-schedule-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-validator-values-sv-participant-pruning-schedule-start.mdx
new file mode 100644
index 000000000..c65c297dd
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-validator-values-sv-participant-pruning-schedule-start.mdx
@@ -0,0 +1,6 @@
+```yaml
+ participantPruningSchedule:
+ cron: 0 /10 * * * ? # Run every 10min
+ maxDuration: 5m # Run for a max of 5min per iteration
+ retention: 30d # Retain history that is newer than 30d.
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-docs-pruning-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-docs-pruning-start.mdx
index 99e881570..6db77b5b3 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-docs-pruning-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-docs-pruning-start.mdx
@@ -1,11 +1,11 @@
```yaml
- domain:
- sequencerPruningConfig:
- # Enable or disable sequencer pruning
- enabled: true
- # The pruning interval is the time between two consecutive prunings.
- pruningInterval: "1 hour"
- # The retention period is the time for which the sequencer will retain the data.
- retentionPeriod: "30 days"
- #
+ synchronizers:
+ current:
+ sequencerPruningConfig:
+ # Enable or disable sequencer pruning
+ enabled: true
+ # The pruning interval is the time between two consecutive prunings.
+ pruningInterval: "1 hour"
+ # The retention period is the time for which the sequencer will retain the data.
+ retentionPeriod: "30 days"
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-migration-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-migration-start.mdx
index 67638f478..f3613b8c6 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-migration-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-sv-values-migration-start.mdx
@@ -1,12 +1,11 @@
```yaml
# Replace MIGRATION_ID with the migration ID of the global synchronizer.
migration:
- id: "MIGRATION_ID"
- # Uncomment these when redeploying as part of a migration,
- # i.e., MIGRATION_ID was incremented and a migration dump was exported to the attached pvc.
- # migrating: true
- # This declares that your sequencer with that migration id is still up. You should remove it
- # once you take down the sequencer for the prior migration id
- # legacyId: "MIGRATION_ID_BEFORE_INCREMENTED"
- #
+ id: "MIGRATION_ID"
+ # Uncomment these when redeploying as part of a migration,
+ # i.e., MIGRATION_ID was incremented and a migration dump was exported to the attached pvc.
+ # migrating: true
+ # This declares that your sequencer with that migration id is still up. You should remove it
+ # once you take down the sequencer for the prior migration id
+ # legacyId: "MIGRATION_ID_BEFORE_INCREMENTED"
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-auto-accept-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-auto-accept-start.mdx
index a5e81af4e..a87505bf4 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-auto-accept-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-auto-accept-start.mdx
@@ -4,5 +4,4 @@
# "":
# fromParties:
# - ""
- #
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-enablewallet-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-enablewallet-start.mdx
index e891d717f..c5fd6a97e 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-enablewallet-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-enablewallet-start.mdx
@@ -1,5 +1,4 @@
```yaml
# This will disable the wallet HTTP server and wallet automations when set to false
enableWallet: true
- #
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-participant-pruning-schedule-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-participant-pruning-schedule-start.mdx
index 70fab75b3..f32a5b982 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-participant-pruning-schedule-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-participant-pruning-schedule-start.mdx
@@ -5,5 +5,4 @@
# cron: 0 /10 * * * ? # Run every 10min
# maxDuration: 5m # Run for a max of 5min per iteration
# retention: 48h # Retain history that is newer than 48h.
- #
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-sweep-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-sweep-start.mdx
deleted file mode 100644
index 0854cb039..000000000
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-sweep-start.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```yaml
- # If you want funds sweeped out of parties in this validator, uncomment and fill in the following:
- #walletSweep:
- # "":
- # maxBalanceUSD:
- # minBalanceUSD:
- # receiver: ""
- # useTransferPreapproval: false # sweep by transferring directly through the transfer preapproval of the receiver,
- # if set to false sweeping creates transfer offers that need to be accepted on the receiver side.
- # Note that this refers to the preapprovals described in /appdev/modules/m7-canton-coin-preapprovals
- # and not to auto accepting transfers. Auto accept transfers does not setup preapproval contracts that allow
- # for a direct transfer but just automates the acceptance of the transfer offer so in that case
- # useTransferPreapproval should be set to false.
- #
-```
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-trusted-single-scan-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-trusted-single-scan-start.mdx
deleted file mode 100644
index 5438c232d..000000000
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-trusted-single-scan-start.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```yaml
- # If you want to configure validator to use a single trusted scan, set ``nonSvValidatorTrustSingleScan`` to true.
- # It will only connect to the scan specified in ``scanAddress``. This does mean that you depend on that single SV and if it is broken or malicious you will be unable to use the network so usually you want to default to not enabling this.
- # nonSvValidatorTrustSingleScan: true
- #
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-trusted-single-sequencer-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-trusted-single-sequencer-start.mdx
deleted file mode 100644
index 0faa951b9..000000000
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-apps-app-src-pack-examples-sv-helm-validator-values-trusted-single-sequencer-start.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
-```yaml
- # If you want to configure validator to connect to a single trusted sequencer, set ``useSequencerConnectionsFromScan`` to false.
- # and replace ``TRUSTED_SYNCHRONIZER_SEQUENCER_URL`` with the publicly accessible URL of the trusted sequencer.
- # This does mean that you depend on that single SV and if it is broken or malicious you will be unable to use the network so usually you want to default to not enabling this.
- # decentralizedSynchronizerUrl: "TRUSTED_SYNCHRONIZER_SEQUENCER_URL"
- # useSequencerConnectionsFromScan: false
- #
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-literal-marker-cluster-helm-splice-cometbft-values-template-docs-cometbft-pruning-start.mdx b/docs-main/snippets/external/splice/main/splice-literal-marker-cluster-helm-splice-cometbft-values-template-docs-cometbft-pruning-start.mdx
index 0ba3ee712..5ed5f6aa6 100644
--- a/docs-main/snippets/external/splice/main/splice-literal-marker-cluster-helm-splice-cometbft-values-template-docs-cometbft-pruning-start.mdx
+++ b/docs-main/snippets/external/splice/main/splice-literal-marker-cluster-helm-splice-cometbft-values-template-docs-cometbft-pruning-start.mdx
@@ -1,6 +1,5 @@
```yaml
# Number of blocks to keep, used for pruning. 0 -> keep all blocks.
- # Number of blocks to keep for 30 days with an upper bound of 7k blocks/h.
- retainBlocks: 5040000
- #
+ # Number of blocks to keep for 30 days with an upper bound of 7k blocks/h.
+ retainBlocks: 5040000
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-json-82.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-json-82.mdx
deleted file mode 100644
index bc7a447cd..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-json-82.mdx
+++ /dev/null
@@ -1,7 +0,0 @@
-```json
- {
- "sub": "ledgerApiUserId",
- "aud": "audience-of-app"
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-116.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-116.mdx
deleted file mode 100644
index 69a312ccf..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-116.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```
- Authorization: Bearer yourtoken
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-132.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-132.mdx
deleted file mode 100644
index a740a2c7c..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-132.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
-```
- canton {
- validator-apps {
- validator {
- admin-api.port = 5003
- ...
- }
- }
- }
-
-
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-99.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-99.mdx
deleted file mode 100644
index 6bc971c5f..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-splice-app-apis-none-99.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```
- canton {
- validator-apps {
- validator {
- auth {
- audience = "https://example.com"
- algorithm = "rs-256"
- jwks-url = "https://example.com/.well-known/jwks.json"
- }
- ...
- }
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-42.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-42.mdx
new file mode 100644
index 000000000..ed2fe7d15
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-42.mdx
@@ -0,0 +1,3 @@
+```bash
+ curl -sSL https://get.digitalasset.com/ | sh
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-54.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-54.mdx
deleted file mode 100644
index 2493c74d5..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-overview-version-information-bash-54.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- curl -sSL https://get.daml.com/ | sh -s 3.3.0-snapshot.20250603.0
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-114.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-114.mdx
deleted file mode 100644
index 97b5f546e..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-114.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```json
- {
- "entries": [
- {
- "contract_id": null,
- "user": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "name": "dso.cns",
- "url": "",
- "description": "",
- "expires_at": null
- }
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-133.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-133.mdx
deleted file mode 100644
index 5f8302d5a..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-133.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```json
- {
- "entries": [
- {
- "contract_id": "00ab54b0bfc5a70f1fa421b4fd76cd6860d061e0fff2a0ef79d87521ab60215e2fca10122056e3bf53375a1323f296d8348057a0e1a063884e6330fd0b5476acf8811bc193",
- "user": "auth0_007c675a429eaf831f0991308d85::12201abe669faf7e657735cdcc96a1b0a98f3ba6ddca688739bcb90933b693c65a8c",
- "name": "alice_2e5bbb1c.unverified.cns",
- "url": "",
- "description": "",
- "expires_at": "2025-03-12T01:56:28.974046Z"
- }
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-23.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-23.mdx
deleted file mode 100644
index 340455e15..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-23.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
-```json
- {
- "migration_id": 4,
- "record_time": "2025-02-14T15:00:00Z",
- "owner_party_ids": [
- "digitalasset-testValidator-1::1220e92bbc9d80cb6e283184017b307b9f44f23d32d7d195cdbcac033ae91eac2f28",
- "digitalasset-testValidator-1::12201bca369bee8df7a32ee53c6433d437396c9f69c269a1bb51383c0a279ca90626",
- "digitalasset-testValidator-1::122079c06f2c4128d44d1ad0b201452c0bb67858bcb9db2cf2d6310cf02960f03eea"
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-37.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-37.mdx
deleted file mode 100644
index 748d9be8f..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-37.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
-```json
- {
- "record_time": "2025-02-14T15:00:00Z",
- "migration_id": 4,
- "computed_as_of_round": 20203,
- "summaries": [
- {
- "party_id": "digitalasset-testValidator-1::122079c06f2c4128d44d1ad0b201452c0bb67858bcb9db2cf2d6310cf02960f03eea",
- "total_unlocked_coin": "23765.0066688730",
- "total_locked_coin": "0.0000000000",
- "total_coin_holdings": "23765.0066688730",
- "accumulated_holding_fees_unlocked": "1.4193321400",
- "accumulated_holding_fees_locked": "0.0000000000",
- "accumulated_holding_fees_total": "1.4193321400",
- "total_available_coin": "23763.5873367330"
- },
- /* similar records for the other party IDs */
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-67.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-67.mdx
deleted file mode 100644
index b60a22b6e..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-aggregates-api-json-67.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
-```json
- {
- "record_time": "2025-02-14T15:00:00Z",
- "migration_id": 4,
- "created_events": [
- {
- "event_type": "created_event",
- "event_id": "#1220da14f2feb58bd88ab07d12feb2c483b2eba91e696ddbacf8196288a32cfcc96b:7",
- "contract_id": "0078f4eeb4bc4dd4fe111cc5ed35594db14e70fc9f262158d97df699cb347b3a0eca101220712cd87d67727c259c698cc3ec33eb773cf77bb03a1e4d5ca9b19f7cbf4e250d",
- "template_id": "979ec710c3ae3a05cb44edf8461a9b4d7dd2053add95664f94fc89e5f18df80f:Splice.Amulet:Amulet",
- "package_name": "splice-amulet",
- "create_arguments": {
- "dso": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "owner": "digitalasset-testValidator-1::122079c06f2c4128d44d1ad0b201452c0bb67858bcb9db2cf2d6310cf02960f03eea",
- "amount": {
- "initialAmount": "23765.0066688730",
- "createdAt": {
- "number": "19830"
- },
- "ratePerRound": {
- "rate": "0.0038051800"
- }
- }
- },
- "created_at": "2025-02-12T00:42:56.627908Z",
- "signatories": [
- "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "digitalasset-testValidator-1::122079c06f2c4128d44d1ad0b201452c0bb67858bcb9db2cf2d6310cf02960f03eea"
- ],
- "observers": []
- },
- /* similar records for other parties */
- ],
- "next_page_token": null
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-119.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-119.mdx
deleted file mode 100644
index 60b896b0b..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-119.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```json
- {
- "page_size": 10
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-131.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-131.mdx
deleted file mode 100644
index 5df3fa1a0..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-131.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
-```json
- {
- "page_size": 10,
- "after": {
- "after_migration_id": 0,
- "after_record_time": "2024-09-20T13:31:28.405180Z"
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-191.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-191.mdx
deleted file mode 100644
index 265e89abe..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-191.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
-```json
- {
- "transactions": [
- {
- "update_id": "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7",
- "migration_id": 0,
- "workflow_id": "",
- "record_time": "2024-09-20T13:31:28.405180Z",
- "synchronizer_id": "global-domain::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "effective_at": "2024-09-20T13:31:29.552807Z",
- "root_event_ids": [
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:0",
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:1"
- ],
- "events_by_id": {
- "..." : "events omitted for brevity"
- }
- }
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-236.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-236.mdx
deleted file mode 100644
index c3d99b742..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-236.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
-```json
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:4": {
- "event_type": "exercised_event",
- "event_id": "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:4",
- "contract_id": "0036a147673cc66b5e7d27811084897d6eaf1807c2bc024b9c7c9359dbfb25c790ca101220bf3bfb7315fe33fc0bafa88087a8af6794674f2a02a4690ef2897325efd9e973",
- "template_id": "a36ef8888fb44caae13d96341ce1fabd84fc9e2e7b209bbc3caabb48b6be1668:Splice.AmuletRules:AmuletRules",
- "package_name": "splice-amulet",
- "choice": "AmuletRules_Bootstrap_Rounds",
- "choice_argument": {
- "amuletPrice": "0.0050000000",
- "round0Duration": {
- "microseconds": "97200000000"
- }
- },
- "child_event_ids": [
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:5",
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:6",
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:7"
- ],
- "exercise_result": {
- "openMiningRoundCid": "004eba336d6bbaed0e866e2dd11351fc989b1043b09c34ce3ac16fe08ff9fc1cfaca101220e8339d816712ba0294cdce13216494bb50dd1070be12ede312133003e0f1252d"
- },
- "consuming": false,
- "acting_parties": [
- "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17"
- ],
- "interface_id": null
- },
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-278.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-278.mdx
deleted file mode 100644
index a00fb5ec6..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-278.mdx
+++ /dev/null
@@ -1,71 +0,0 @@
-```json
- "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:7": {
- "event_type": "created_event",
- "event_id": "1220e04f50c4b00024dd3a225611ad96441abd854e461c144b872c0eedac1dc784c7:7",
- "contract_id": "004eba336d6bbaed0e866e2dd11351fc989b1043b09c34ce3ac16fe08ff9fc1cfaca101220e8339d816712ba0294cdce13216494bb50dd1070be12ede312133003e0f1252d",
- "template_id": "a36ef8888fb44caae13d96341ce1fabd84fc9e2e7b209bbc3caabb48b6be1668:Splice.Round:OpenMiningRound",
- "package_name": "splice-amulet",
- "create_arguments": {
- "dso": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "round": {
- "number": "2"
- },
- "amuletPrice": "0.0050000000",
- "opensAt": "2024-09-21T16:31:29.552807Z",
- "targetClosesAt": "2024-09-21T16:51:29.552807Z",
- "issuingFor": {
- "microseconds": "1200000000"
- },
- "transferConfigUsd": {
- "createFee": {
- "fee": "0.0300000000"
- },
- "holdingFee": {
- "rate": "0.0000190259"
- },
- "transferFee": {
- "initialRate": "0.0100000000",
- "steps": [
- {
- "_1": "100.0000000000",
- "_2": "0.0010000000"
- },
- {
- "_1": "1000.0000000000",
- "_2": "0.0001000000"
- },
- {
- "_1": "1000000.0000000000",
- "_2": "0.0000100000"
- }
- ]
- },
- "lockHolderFee": {
- "fee": "0.0050000000"
- },
- "extraFeaturedAppRewardAmount": "1.0000000000",
- "maxNumInputs": "100",
- "maxNumOutputs": "100",
- "maxNumLockHolders": "50"
- },
- "issuanceConfig": {
- "amuletToIssuePerYear": "40000000000.0000000000",
- "validatorRewardPercentage": "0.0500000000",
- "appRewardPercentage": "0.1500000000",
- "validatorRewardCap": "0.2000000000",
- "featuredAppRewardCap": "100.0000000000",
- "unfeaturedAppRewardCap": "0.6000000000",
- "optValidatorFaucetCap": "2.8500000000"
- },
- "tickDuration": {
- "microseconds": "600000000"
- }
- },
- "created_at": "2024-09-20T13:31:29.552807Z",
- "signatories": [
- "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17"
- ],
- "observers": []
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-453.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-453.mdx
deleted file mode 100644
index 8f6943af0..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-453.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```json
- {
- "record_time" : "2025-02-11T18:00:00Z"
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-470.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-470.mdx
deleted file mode 100644
index 97ac10f41..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-470.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
-```json
- {
- "migration_id": 4,
- "record_time": "2025-02-11T18:00:00Z",
- "page_size": 10
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-483.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-483.mdx
deleted file mode 100644
index 4580e45c9..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-483.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
-```json
- {
- "record_time": "2025-02-11T18:00:00Z",
- "migration_id": 4,
- "created_events": [
- {
- "event_type": "created_event",
- "event_id": "#122098355fd6741a763f23fa0b7758d2a59cfce54aef07808ef42d366bdd6296db2d:0",
- "contract_id": "001c9216c7194bb6180968abdae59b1718a44857b005613cb47cdbc4a459b3a4caca10122019fd0561c858eac85e7e3374ec8cb27ee6f410f9260d4f89c7a3a398a1d2a37f",
- "template_id": "053c7f4c2a77312e7d465a4fa7dc8cb298754ad12c0c987a7c401bd724e65efc:Splice.Ans:AnsRules",
- "package_name": "splice-amulet-name-service",
- "create_arguments": {
- "dso": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "config": {
- "renewalDuration": {
- "microseconds": "2592000000000"
- },
- "entryLifetime": {
- "microseconds": "7776000000000"
- },
- "entryFee": "1.0000000000",
- "descriptionPrefix": "CNS entry: "
- }
- },
- "created_at": "2024-09-20T13:31:29.552807Z",
- "signatories": [
- "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17"
- ],
- "observers": []
- },
- {
- "..." : "more created events, omitted for brevity"
- }
- ],
- "next_page_token": 61329223
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-685.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-685.mdx
deleted file mode 100644
index a48f47027..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-685.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
-```json
- "1220299075b2251a542c4ff0a6aec03dbd3e69041da7d85cd62be9d665f3a959cd25:1": {
- "event_type": "exercised_event",
- "event_id": "1220299075b2251a542c4ff0a6aec03dbd3e69041da7d85cd62be9d665f3a959cd25:1",
- "contract_id": "00aec43c48f896adb70550e22a5bd44f290534058aa9fa1ba939aa17f622639d31ca101220b56087539ec11e1b7803b726e1d833ef9685dfdffb7570644b44d1074882e0fd",
- "template_id": "979ec710c3ae3a05cb44edf8461a9b4d7dd2053add95664f94fc89e5f18df80f:Splice.AmuletRules:AmuletRules",
- "package_name": "splice-amulet",
- "choice": "AmuletRules_BuyMemberTraffic",
- "choice_argument": {
- "inputs": [
- {
- "tag": "InputAmulet",
- "value": "0019bc6f3f9b53f1e4e3af43e47a35f3fe43507e861490c0b58656fc08a1408c32ca101220ed59a33d6a79962a0924a1ecae3f539c4003d808a0a564dada0437018adb8c6d"
- },
- {
- "tag": "InputAmulet",
- "value": "00b0acb28b679855d0cab28c662663ccfbb22e78873424ec49eddc18e81a4f5fe9ca10122053517786a087da1055ab0f2adf0d20b6d02238c13fee8d2a773e2dc0514976a9"
- }
- ],
- "context": "<...>",
- "provider": "<...>",
- "memberId": "<...>",
- "synchronizerId": "global-domain::1220e1e594cdb287aeac3e1e6d62e7d2db46b756a5d01656c26f1f1a151345bf2e53",
- "migrationId": "1",
- "trafficAmount": "1999800"
- },
- "child_event_ids": "<...>",
- "exercise_result": {
- "round": {
- "number": "10470"
- },
- "summary": {
- "inputAppRewardAmount": "0E-10",
- "inputValidatorRewardAmount": "0E-10",
- "inputSvRewardAmount": "0E-10",
- "inputAmuletAmount": "224019632.4829619323",
- "balanceChanges": "<...>",
- "holdingFees": "0.0076103600",
- "outputFees": [
- "209.9976000000"
- ],
- "senderChangeFee": "6.0000000000",
- "senderChangeAmount": "223995628.8753515723",
- "amuletPrice": "0.0050000000",
- "inputValidatorFaucetAmount": "0E-10"
- },
- "amuletPaid": "23997.6000000000",
- "purchasedTraffic": "00f040b550e04734b36ca89f3d89f77192566bd3b41ead2435b94f9ab32d9eb013ca101220147966510802349805e611d2b88a289decd32ff9dc80268e0e8de5e84661e4f1",
- "senderChangeAmulet": "004997a51da7d833e7122ddd0a10800857c0370a4cc28bcb5f4bc554ec79fb42ccca1012209b58a59bb36a8ad1667a23809bebbc090b9cd5a97612a59a0ad05f2edb129c63"
- },
- "consuming": false,
- "acting_parties": [
- "Cumberland-GasStation-1::12203f6faf84f106d90b87775def701c39734fe26ce5fb01892c73f45ce8fecc8e86"
- ],
- "interface_id": null
- },
-
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-758.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-758.mdx
deleted file mode 100644
index 553527796..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-758.mdx
+++ /dev/null
@@ -1,64 +0,0 @@
-```json
- "1220f207fb8c58969e51c99af570f99302ad4f5adf513de0b70dc93e358371f25bc2:2": {
- "event_type": "exercised_event",
- "event_id": "1220f207fb8c58969e51c99af570f99302ad4f5adf513de0b70dc93e358371f25bc2:2",
- "contract_id": "00aec43c48f896adb70550e22a5bd44f290534058aa9fa1ba939aa17f622639d31ca101220b56087539ec11e1b7803b726e1d833ef9685dfdffb7570644b44d1074882e0fd",
- "template_id": "979ec710c3ae3a05cb44edf8461a9b4d7dd2053add95664f94fc89e5f18df80f:Splice.AmuletRules:AmuletRules",
- "package_name": "splice-amulet",
- "choice": "AmuletRules_Transfer",
- "choice_argument": {
- "transfer": {
- "sender": "<...>",
- "provider": "<...>",
- "inputs": [
- {
- "tag": "InputAmulet",
- "value": "0020459e63b92ded757b2d271ae527285d97a28edacd15e2ce9d4b9f209167190cca1012203226f23d0e205f4aa9ffbc9445b39c7a3a2d1ea5b94326adbcd94d7f2862a802"
- }
- ],
- "outputs": [
- {
- "receiver": "<...>",
- "receiverFeeRatio": "0E-10",
- "amount": "9600.2116486069",
- "lock": null
- }
- ]
- },
- "context": "<...>"
- },
- "child_event_ids": "<...>",
- "exercise_result": {
- "round": {
- "number": "10468"
- },
- "summary": {
- "inputAppRewardAmount": "0E-10",
- "inputValidatorRewardAmount": "0E-10",
- "inputSvRewardAmount": "0E-10",
- "inputAmuletAmount": "223970271.6123234793",
- "balanceChanges": "<...>",
- "holdingFees": "0E-10",
- "outputFees": [
- "102.0021164861"
- ],
- "senderChangeFee": "6.0000000000",
- "senderChangeAmount": "223960563.3985583863",
- "amuletPrice": "0.0050000000",
- "inputValidatorFaucetAmount": "0E-10"
- },
- "createdAmulets": [
- {
- "tag": "TransferResultAmulet",
- "value": "0062dfd0dd4e814762c67c4f8264d9f752f1e3291535546bc33a7d1a5d748c9a6cca1012204a3e156db434b9b56af11b7d9b4dca8ba182baf6d161c2c35dac328e58bebe5a"
- }
- ],
- "senderChangeAmulet": "0085965dcb855eb24cc28bdf455aa77c4a60d9ffbbc35d9ac43c64f6bf6667448aca10122018a84ec51c73894877b3897cb415b4569520a6ca32eb992fbf98e72155d62cf9"
- },
- "consuming": false,
- "acting_parties": "<...>",
- "interface_id": null
- },
-
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-839.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-839.mdx
deleted file mode 100644
index d5a033c9f..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-839.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
-```json
- "1220088866741e05b6ee333fad8fb505856ad78e836aa812afb1ca4a00deae5d50b3:7": {
- "event_type": "exercised_event",
- "event_id": "1220088866741e05b6ee333fad8fb505856ad78e836aa812afb1ca4a00deae5d50b3:7",
- "contract_id": "00ec1e0685d269b19064c9ca45294f4d03024988d3d9e3e86e9fd9d4b8b35db8a3ca1012205aa122cbfb63e63310fcfd024daabea1c379d942261033ab34dd1bfc5405e6af",
- "template_id": "4e3e0d9cdadf80f4bf8f3cd3660d5287c084c9a29f23c901aabce597d72fd467:Splice.Wallet.Subscriptions:SubscriptionInitialPayment",
- "package_name": "splice-wallet-payments",
- "choice": "SubscriptionInitialPayment_Collect",
- "choice_argument": {
- "transferContext": "<...>"
- },
- "child_event_ids": "<...>",
- "exercise_result": {
- "subscription": "<...>",
- "subscriptionState": "<...>",
- "amulet": "0064d6918d973d69c626a6d9020c625e30199309bcf36460a8e3a4cc0775b44738ca10122090b18bbdc6ac5da9338e547c3f1c310de27184877cb6c4b1daf91c77cfb3356b"
- },
- "consuming": true,
- "acting_parties": "<...>",
- "interface_id": null
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-950.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-950.mdx
deleted file mode 100644
index a8c9e11c5..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-bulk-data-api-json-950.mdx
+++ /dev/null
@@ -1,64 +0,0 @@
-```json
- "1220986fb3a857bc92ca570bc11d7b3b8579cb4afe0e0c2ac3ac920057f2d968b99f:0": {
- "event_type": "exercised_event",
- "event_id": "1220986fb3a857bc92ca570bc11d7b3b8579cb4afe0e0c2ac3ac920057f2d968b99f:0",
- "contract_id": "0062bacc032e3f6191070940cddec7b0d34fdf0f4d8ff49a2e28bbc51462ef9c35ca1012205bb34d8c4609b3172094908c35107e3d774517054efae35b8c6847f4487e95a7",
- "template_id": "4646d50cbdec6f088c98ae543da5c973d2d1be3363b9f32eb097d8fdc063ade7:Splice.AmuletRules:AmuletRules",
- "package_name": "splice-amulet",
- "choice": "AmuletRules_CreateTransferPreapproval",
- "choice_argument": {
- "context": {
- "amuletRules": "0062bacc032e3f6191070940cddec7b0d34fdf0f4d8ff49a2e28bbc51462ef9c35ca1012205bb34d8c4609b3172094908c35107e3d774517054efae35b8c6847f4487e95a7",
- "context": "<...>"
- },
- "inputs": [
- {
- "tag": "InputAmulet",
- "value": "005b5fb07cdf97f2cc32190d0a5cc80176bb20161e581987848ac93c31a07d9932ca101220e3a7885db04643c34edb10fe11a0418810ba881d072c9b40a24a4106aa875a7d"
- }
- ],
- "receiver": "<...>",
- "provider": "<...>",
- "expiresAt": "2025-05-28T19:19:09.285322Z"
- },
- "child_event_ids": "<...>",
- "exercise_result": {
- "transferPreapprovalCid": "00361db2d2b07253f64deaa7c8db4319625227c27b97143c1b279cdc6294d5cb97ca101220d1c8f06741b5b99477861410e4d4bc460a207af3ea7fa179e903c78846b227e2",
- "transferResult": {
- "round": {
- "number": "32"
- },
- "summary": {
- "inputAppRewardAmount": "0E-10",
- "inputValidatorRewardAmount": "0E-10",
- "inputSvRewardAmount": "0E-10",
- "inputAmuletAmount": "253917.5244126799",
- "balanceChanges": [
- [
- "digitalasset-validator1-1::1220e6ee4d3f5387c9210ce50a46b3c4906335bae0083bb1dcc2819d4b52e178ec7e",
- {
- "changeToInitialAmountAsOfRoundZero": "-61.3199997000",
- "changeToHoldingFeesRate": "0E-10"
- }
- ]
- ],
- "holdingFees": "0E-10",
- "outputFees": [
- "6.0000000000"
- ],
- "senderChangeFee": "6.0000000000",
- "senderChangeAmount": "253856.2044129799",
- "amuletPrice": "0.0050000000",
- "inputValidatorFaucetAmount": "0E-10"
- },
- "createdAmulets": "<...>",
- "senderChangeAmulet": "00fe4c85fc36780c61281ffa37679a4580fe33df727e5614185e8aacde1bcd491eca101220b7e8a17df7ec6598d5b5d5b240513805cdbc31404b0fcef2309763237e7245d9"
- },
- "amuletPaid": "49.3199997000"
- },
- "consuming": false,
- "acting_parties": "<...>",
- "interface_id": null
- },
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-cc-reference-data-api-json-24.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-cc-reference-data-api-json-24.mdx
deleted file mode 100644
index 3e67231b1..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-cc-reference-data-api-json-24.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```json
- {
- "dso_party_id": "DSO::122084177677350389dd0710d6516f700a33fe3488c5f2702dffef6d36e1dedcbfc17"
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-25.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-25.mdx
deleted file mode 100644
index 0cbdc155a..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-25.mdx
+++ /dev/null
@@ -1,14 +0,0 @@
-```json
- {
- "traffic_status": {
- "actual": {
- "total_consumed": 0,
- "total_limit": 6000000
- },
- "target": {
- "total_purchased": 6000000
- }
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-50.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-50.mdx
deleted file mode 100644
index 48486ed99..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-50.mdx
+++ /dev/null
@@ -1,7 +0,0 @@
-```json
- {
- "cached_open_mining_round_contract_ids": [],
- "cached_issuing_round_contract_ids": []
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-59.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-59.mdx
deleted file mode 100644
index ec5fffb73..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-current-state-api-json-59.mdx
+++ /dev/null
@@ -1,63 +0,0 @@
-```json
- {
- "time_to_live_in_microseconds": 600000000,
- "open_mining_rounds": {
- "00dea42d6e8aa5cdd8110564774b740943c2f0d57ecef624f2f9ab881a847f3ebfca1012200109878982101a4f2b8106091bdde79793daf8548662f9962b371adc8c3aa294": {
- "contract": {
- "template_id": "979ec710c3ae3a05cb44edf8461a9b4d7dd2053add95664f94fc89e5f18df80f:Splice.Round:OpenMiningRound",
- "contract_id": "00dea42d6e8aa5cdd8110564774b740943c2f0d57ecef624f2f9ab881a847f3ebfca1012200109878982101a4f2b8106091bdde79793daf8548662f9962b371adc8c3aa294",
- "payload": {
- "dso": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "tickDuration": {
- "microseconds": "600000000"
- },
- "issuingFor": {
- "microseconds": "12474000000000"
- },
- "amuletPrice": "0.005",
- "issuanceConfig": /* ... */,
- "opensAt": "2025-02-18T22:18:42.495769Z",
- "transferConfigUsd": {
- "holdingFee": {
- "rate": "0.0000190259"
- },
- /* other configuration */
- },
- "targetClosesAt": "2025-02-18T22:38:42.495769Z",
- "round": {
- "number": "20790"
- }
- },
- /* other contract metadata */
- },
- "domain_id": "global-domain::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17"
- },
- /* other open rounds; there are usually 3 */
- },
- "issuing_mining_rounds": {
- "00f15ce85311175cc62acab235d768f5c8b1e02247a1d0e4c54635fc2b43726262ca101220cc210224ad72ee4a71ae887732898f0f1db81e530b3817e75500ebe5a8a4f7a6": {
- "contract": {
- "template_id": "979ec710c3ae3a05cb44edf8461a9b4d7dd2053add95664f94fc89e5f18df80f:Splice.Round:IssuingMiningRound",
- "contract_id": "00f15ce85311175cc62acab235d768f5c8b1e02247a1d0e4c54635fc2b43726262ca101220cc210224ad72ee4a71ae887732898f0f1db81e530b3817e75500ebe5a8a4f7a6",
- "payload": {
- "dso": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "optIssuancePerValidatorFaucetCoupon": "324.0134341208",
- "issuancePerFeaturedAppRewardCoupon": "100.0",
- "opensAt": "2025-02-18T22:29:35.850299Z",
- "issuancePerSvRewardCoupon": "0.4058853374",
- "targetClosesAt": "2025-02-18T22:49:35.850299Z",
- "issuancePerUnfeaturedAppRewardCoupon": "0.6",
- "round": {
- "number": "20788"
- },
- "issuancePerValidatorRewardCoupon": "0.2"
- },
- /* other contract metadata */
- },
- "domain_id": "global-domain::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17"
- },
- /* any other issuing rounds */
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-110.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-110.mdx
deleted file mode 100644
index 06e8629e6..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-110.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
-```json
- {
- "validator_licenses": [
- /* many similar records */,
- {
- "template_id": "979ec710c3ae3a05cb44edf8461a9b4d7dd2053add95664f94fc89e5f18df80f:Splice.ValidatorLicense:ValidatorLicense",
- "contract_id": "00e17d6e36499b656f8e248c31f18130e00db30332820b6b91da9f222049f3d078ca101220d189c2482b5018eae7c656561bf201a54deb276f81e8a0d715b7305d3a03abc3",
- "payload": {
- "dso": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "sponsor": "Digital-Asset-2::1220dcf294bffd10439167f7460b1b6926b7a87d3237b748c7de6d7367fad3e33b20",
- "lastActiveAt": "2025-01-23T12:48:21.220193Z",
- "validator": "digitalasset-testValidator-1::1220167abbb792b81e5fb1dc45311f32eb9d796c46a5100a1cd446979176f699e117",
- "faucetState": {
- "firstReceivedFor": {
- "number": "17087"
- },
- "lastReceivedFor": {
- "number": "17122"
- },
- "numCouponsMissed": "0"
- },
- "metadata": {
- "lastUpdatedAt": "2025-01-23T07:03:50.820769Z",
- "version": "0.3.6",
- "contactPoint": "sv-support@example.com"
- }
- },
- "created_event_blob": "CgMyLjESwgYKRQDhfW42SZtlb44kjDHxgTDgDbMDMoILa5HanyIgSfPQeMoQEiDRicJIK1AY6ufGVlYb8gGlTesnb4HooNcVtzBdOgOrwxINc3BsaWNlLWFtdWxldBpuCkA5NzllYzcxMGMzYWUzYTA1Y2I0NGVkZjg0NjFhOWI0ZDdkZDIwNTNhZGQ5NTY2NGY5NGZjODllNWYxOGRmODBmEgZTcGxpY2USEFZhbGlkYXRvckxpY2Vuc2UaEFZhbGlkYXRvckxpY2Vuc2UilQNqkgMKZgpkOmJkaWdpdGFsYXNzZXQtdGVzdFZhbGlkYXRvci0xOjoxMjIwMTY3YWJiYjc5MmI4MWU1ZmIxZGM0NTMxMWYzMmViOWQ3OTZjNDZhNTEwMGExY2Q0NDY5NzkxNzZmNjk5ZTExNwpZClc6VURpZ2l0YWwtQXNzZXQtMjo6MTIyMGRjZjI5NGJmZmQxMDQzOTE2N2Y3NDYwYjFiNjkyNmI3YTg3ZDMyMzdiNzQ4YzdkZTZkNzM2N2ZhZDNlMzNiMjAKTQpLOklEU086OjEyMjA4NDE3NzY3NzM1MDM4OWRkMDcxMGQ2NTE2ZjcwMGEzM2ZlMzQ4YzVmMjcwMmRmZmVmNmQzNmUxZGVkY2JmYzE3CioKKFImCiRqIgoMCgpqCAoGCgQY/ooCCgwKCmoICgYKBBjEiwIKBAoCGAAKQQo/Uj0KO2o5CgsKCSmhJ1o2WiwGAAoJCgdCBTAuMy42Ch8KHUIbc3Ytc3VwcG9ydEBkaWdpdGFsYXNzZXQuY29tCg8KDVILCgkpYWtnBl8sBgAqSURTTzo6MTIyMDg0MTc3Njc3MzUwMzg5ZGQwNzEwZDY1MTZmNzAwYTMzZmUzNDhjNWYyNzAyZGZmZWY2ZDM2ZTFkZWRjYmZjMTcyYmRpZ2l0YWxhc3NldC10ZXN0VmFsaWRhdG9yLTE6OjEyMjAxNjdhYmJiNzkyYjgxZTVmYjFkYzQ1MzExZjMyZWI5ZDc5NmM0NmE1MTAwYTFjZDQ0Njk3OTE3NmY2OTllMTE3OWFrZwZfLAYAQioKJgokCAESIBhgA7BpKZodv42OaTYfxCqk4WQhgRJ+scPIQtmbh96gEB4=",
- "created_at": "2025-01-23T12:48:21.220193Z"
- },
- /* many similar records */,
- ],
- "next_page_token": 6033
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-149.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-149.mdx
deleted file mode 100644
index 9b095f28b..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-149.mdx
+++ /dev/null
@@ -1,7 +0,0 @@
-```json
- {
- "validator_licenses": [],
- "next_page_token": null
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-164.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-164.mdx
deleted file mode 100644
index 6de2e2390..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-164.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```json
- {
- "participant_id": "PAR::validator-runbook::1220e92bbc9d80cb6e283184017b307b9f44f23d32d7d195cdbcac033ae91eac2f28"
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-24.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-24.mdx
deleted file mode 100644
index 4ea32185a..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-24.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
-```json
- {
- "scans": [
- {
- "domainId": "global-domain::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "scans": [
- /* several scans */,
- {
- "publicUrl": "https://scan.sv.dev.global.canton.network.digitalasset.com",
- "svName": "DA-Helm-Test-Node"
- },
- /* several other scans */,
- {
- "publicUrl": "https://scan.sv-1.dev.global.canton.network.sync.global",
- "svName": "Global-Synchronizer-Foundation"
- }
- ]
- }
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-58.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-58.mdx
deleted file mode 100644
index b92898411..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-connectivity-api-json-58.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
-```json
- {
- "domainSequencers": [
- {
- "domainId": "global-domain::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "sequencers": [
- /* several sequencers */,
- {
- "migrationId": 4,
- "id": "SEQ::DA-Helm-Test-Node::122054dda14cc07dbf8cd56b392263c73b10630c0040f185b737ee5526c8d479ffab",
- "url": "https://sequencer-4.sv.dev.global.canton.network.digitalasset.com",
- "svName": "DA-Helm-Test-Node",
- "availableAfter": "2024-11-29T15:25:05.771558Z"
- },
- /* several other sequencers */,
- {
- "migrationId": 4,
- "id": "SEQ::Global-Synchronizer-Foundation::1220408be05ce20b9f7023ec1cad8af61f0280fd30a050ccf052660da2adf35549ed",
- "url": "https://sequencer-4.sv-1.dev.global.canton.network.sync.global",
- "svName": "Global-Synchronizer-Foundation",
- "availableAfter": "2024-12-02T13:30:27.774745Z"
- }
- ]
- }
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-operations-api-json-22.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-operations-api-json-22.mdx
deleted file mode 100644
index a136cad43..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-operations-api-json-22.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```json
- {
- "validatorsReceivedFaucets": [
- {
- "validator": "digitalasset-testValidator-1::12201bca369bee8df7a32ee53c6433d437396c9f69c269a1bb51383c0a279ca90626",
- "numRoundsCollected": 36,
- "numRoundsMissed": 0,
- "firstCollectedInRound": 19830,
- "lastCollectedInRound": 19865
- },
- /* similar structures for the other two validators */
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-operations-api-json-50.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-operations-api-json-50.mdx
deleted file mode 100644
index 38ac9572a..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-scan-api-scan-global-synchronizer-operations-api-json-50.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```json
- {
- "sv_user": "bUfFRpl2tEfZBB7wzIo9iRNGTj8wMeIn@clients",
- "sv_party_id": "DA-Helm-Test-Node::12201094994818f3b4a165f4b391736a9c2f7c5f4ee926b5a3179cc224fe47cc92f3",
- "dso_party_id": "DSO::122084177677350389dd0710d6516f700a33fe348c5f2702dffef6d36e1dedcbfc17",
- "voting_threshold": 11,
- "latest_mining_round": /* OpenMiningRound Daml contract */,
- "amulet_rules": /* AmuletRules Daml contract */,
- "dso_rules": /* DsoRules Daml contract */,
- "sv_node_states": [
- /* several SvNodeState contracts, one for each SV */
- ]
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-187.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-187.mdx
deleted file mode 100644
index 5e674e97c..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-187.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
-```json
- {
- "filtersByParty": {
- "$A_PARTY": {
- "cumulative": [
- {
- "identifierFilter": {
- "InterfaceFilter": {
- "value": {
- "interfaceId": "$AN_INTERFACE_ID",
- "includeInterfaceView": true,
- "includeCreatedEventBlob": true
- }
- }
- }
- }
- ]
- }
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-237.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-237.mdx
deleted file mode 100644
index d63ad54f9..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-237.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
-```json
- {
- "filtersByParty": {
- "$A_PARTY": {
- "cumulative": [
- {
- "identifierFilter": {
- "InterfaceFilter": {
- "value": {
- "interfaceId": "$AN_INTERFACE_ID",
- "includeInterfaceView": true,
- "includeCreatedEventBlob": true
- }
- }
- }
- }
- ]
- }
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-267.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-267.mdx
deleted file mode 100644
index 4934dc047..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-app-dev-token-standard-index-json-267.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
-```json
- {
- "identifierFilter": {
- "WildcardFilter": {
- "value": {
- "includeCreatedEventBlob": true
- }
- }
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-background-tokenomics-feat-app-act-marker-tokenomics-bash-79.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-background-tokenomics-feat-app-act-marker-tokenomics-bash-79.mdx
deleted file mode 100644
index 009d9e1a7..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-background-tokenomics-feat-app-act-marker-tokenomics-bash-79.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
-```bash
- curl "http://$lapiParticipant/v2/state/active-contracts" \
- "$jwtToken" "application/json" \
- --data-raw '{
- "filter": {
- "filtersByParty": {
- "'$holderPartyId'": {
- "cumulative":
- [
- {
- "identifierFilter": {
- "InterfaceFilter": {
- "value": {
- "interfaceId": "'7804375fe5e4c6d5afe067bd314c42fe0b7d005a1300019c73154dd939da4dda:Splice.Api.FeaturedAppRightV1:FeaturedAppRight'",
- "includeInterfaceView": true,
- "includeCreatedEventBlob": false
- }
- }
- }
- }
- ]}
- }
- },
- "verbose": false,
- "activeAtOffset":"'$latestOffset'"
- }'
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-none-49.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-none-49.mdx
deleted file mode 100644
index da6a77fcd..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-none-49.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```
- def main() {
- logger.info(s"Participant id from bootstrap script: ${participant.id}")
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-none-51.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-none-51.mdx
new file mode 100644
index 000000000..713070ff5
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-none-51.mdx
@@ -0,0 +1,5 @@
+```
+def main() {
+ logger.info(s"Participant id from bootstrap script: ${participant.id}")
+}
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-yaml-68.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-yaml-68.mdx
deleted file mode 100644
index 59e5d4003..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-yaml-68.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```yaml
- additionalEnvVars:
- - name: ADDITIONAL_CONFIG_EXAMPLE
- value: canton.example.key=value
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-yaml-70.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-yaml-70.mdx
new file mode 100644
index 000000000..992cffae0
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-configuration-yaml-70.mdx
@@ -0,0 +1,5 @@
+```yaml
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_EXAMPLE
+ value: canton.example.key=value
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-166.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-166.mdx
index c746e8d1f..6b499dd36 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-166.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-166.mdx
@@ -1,4 +1,3 @@
```bash
kubectl debug "${POD_NAME}" --image "$(kubectl get pod "${POD_NAME}" -o json | jq -re '.spec.containers[0].image')" -i -t -- bash
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-174.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-174.mdx
index 11b516883..05d3306e8 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-174.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-bash-174.mdx
@@ -3,5 +3,4 @@
$ apt-get install -y vim
$ vim console.conf # paste in the config from above
$ /app/bin/canton -v -c console.conf
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-104.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-104.mdx
index e8a6bc3ae..815638e60 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-104.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-104.mdx
@@ -1,20 +1,19 @@
```
- canton {
- remote-sequencers {
- sequencer {
- public-api {
- port = 5008
- address = localhost
- }
- admin-api {
- port = 5009
- address = localhost
- }
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
- }
-
+canton {
+ remote-sequencers {
+ sequencer {
+ public-api {
+ port = 5008
+ address = localhost
+ }
+ admin-api {
+ port = 5009
+ address = localhost
+ }
+ }
+ }
+ features.enable-preview-commands = yes
+ features.enable-testing-commands = yes
+ features.enable-repair-commands = yes
+}
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-136.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-136.mdx
index a0e550960..7130cdd7c 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-136.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-136.mdx
@@ -1,16 +1,15 @@
```
- canton {
- remote-mediators {
- mediator {
- admin-api {
- port = 5007
- address = localhost
- }
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
- }
-
+canton {
+ remote-mediators {
+ mediator {
+ admin-api {
+ port = 5007
+ address = localhost
+ }
+ }
+ }
+ features.enable-preview-commands = yes
+ features.enable-testing-commands = yes
+ features.enable-repair-commands = yes
+}
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-40.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-40.mdx
index adc6085b5..0d633e893 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-40.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-40.mdx
@@ -1,21 +1,20 @@
```
- canton {
- remote-participants {
- participant {
- admin-api {
- port = 5002
- address = localhost
- }
- ledger-api {
- port = 5001
- address = localhost
- }
- token = ""
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
- }
-
+canton {
+ remote-participants {
+ participant {
+ admin-api {
+ port = 5002
+ address = localhost
+ }
+ ledger-api {
+ port = 5001
+ address = localhost
+ }
+ token = ""
+ }
+ }
+ features.enable-preview-commands = yes
+ features.enable-testing-commands = yes
+ features.enable-repair-commands = yes
+}
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-71.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-71.mdx
index 910e2156b..264f84bbe 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-71.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-none-71.mdx
@@ -1,21 +1,20 @@
```
- canton {
- remote-participants {
- participant {
- admin-api {
- port = 5002
- address = participant
- }
- ledger-api {
- port = 5001
- address = participant
- }
- token = ""
- }
- }
- features.enable-preview-commands = yes
- features.enable-testing-commands = yes
- features.enable-repair-commands = yes
- }
-
+canton {
+ remote-participants {
+ participant {
+ admin-api {
+ port = 5002
+ address = participant
+ }
+ ledger-api {
+ port = 5001
+ address = participant
+ }
+ token = ""
+ }
+ }
+ features.enable-preview-commands = yes
+ features.enable-testing-commands = yes
+ features.enable-repair-commands = yes
+}
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-126.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-126.mdx
new file mode 100644
index 000000000..34ce65633
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-126.mdx
@@ -0,0 +1,3 @@
+```bash
+docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-154.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-154.mdx
new file mode 100644
index 000000000..34ce65633
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-154.mdx
@@ -0,0 +1,3 @@
+```bash
+docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-63.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-63.mdx
new file mode 100644
index 000000000..34ce65633
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-63.mdx
@@ -0,0 +1,3 @@
+```bash
+docker run -it --rm --network host -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-94.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-94.mdx
new file mode 100644
index 000000000..9063f845c
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-parsed-literal-94.mdx
@@ -0,0 +1,3 @@
+```bash
+docker run -it --rm --network splice-validator -v $(pwd)/console.conf:/app/app.conf |docker_repo_prefix|/canton:|version_literal| --console
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-text-23.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-text-23.mdx
deleted file mode 100644
index a72df7620..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-console-access-text-23.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
-```text
- _____ _
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-observability-validator-health-yaml-22.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-observability-validator-health-yaml-22.mdx
deleted file mode 100644
index 7f6ede1d6..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-observability-validator-health-yaml-22.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```yaml
- kubectl exec -n -- curl -v https://localhost:5003/api/validator/readyz
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-observability-validator-health-yaml-28.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-observability-validator-health-yaml-28.mdx
deleted file mode 100644
index 31daafd6f..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-observability-validator-health-yaml-28.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```yaml
- docker exec -- curl -v https://localhost:5003/api/validator/livez
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-json-94.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-json-94.mdx
index cdea26537..cb2dce6bc 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-json-94.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-json-94.mdx
@@ -1,15 +1,13 @@
```json
- "fees": {
- "baseRateTrafficLimits": {
- "burstAmount": "400000",
- "burstWindow": {
- "microseconds": "1200000000"
- }
- },
- "extraTrafficPrice": "60.0",
- "readVsWriteScalingFactor": "4",
- "minTopupAmount": "200000"
+"fees": {
+ "baseRateTrafficLimits": {
+ "burstAmount": "400000",
+ "burstWindow": {
+ "microseconds": "1200000000"
}
-
-
+ },
+ "extraTrafficPrice": "60.0",
+ "readVsWriteScalingFactor": "4",
+ "minTopupAmount": "200000"
+}
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-129.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-129.mdx
new file mode 100644
index 000000000..c065008bf
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-129.mdx
@@ -0,0 +1,3 @@
+```bash
+curl -X POST --header "Content-Type: application/json" -d "{\"cached_open_mining_round_contract_ids\":[], \"cached_issuing_round_contract_ids\":[]}" |gsf_scan_url|/api/scan/v0/open-and-issuing-mining-rounds | jq ".open_mining_rounds | values[] | .contract.payload | {round, amuletPrice}"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-88.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-88.mdx
new file mode 100644
index 000000000..102beb59e
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-deployment-traffic-parsed-literal-88.mdx
@@ -0,0 +1,3 @@
+```bash
+curl -X POST --header "Content-Type: application/json" -d "{}" |gsf_scan_url|/api/scan/v0/amulet-rules | jq ".amulet_rules_update.contract.payload.configSchedule.initialValue.decentralizedSynchronizer.fees"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-129.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-129.mdx
deleted file mode 100644
index 52c73f5ae..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-129.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
-```text
- canton {
- participants {
- participant1 {
- http-ledger-api {
- address = 0.0.0.0
- port = 10010
- port-file = "./json.port"
- path-prefix = "my-prefix"
- websocket-config {
- http-list-max-elements-limit = 1000,
- http-list-wait-time = 2s,
- }
- daml-definitions-service-enabled = true
- }
- }
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-64.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-64.mdx
deleted file mode 100644
index dd1ddeb3b..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-64.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```text
- 2025-07-10T14:39:43.155Z [⋮] INFO - c.d.c.p.a.s.c.CommandSubmissionServiceImpl:participant=aliceParticipant (1e2d6bf54d150e230fd0c7f348707bf6---) - Phase 1 started: Submitting commands for interpretation: Commands(
- commandId = org.lfdecentralizedtrust.splice.wallet.tap_92d9ffae4bd90068a15dad747559ed641572f057e3beb03f2a9b024f388bdc20,
- submissionId = 0a3e62aa-c4e7-44ba-ad8a-fdbd0e55b9e9,
- userId = alice_validator_user-b7e18d55,
- actAs = alice-validatorb7e18d55-1::12204bfd2aa7...,
- readAs = alice__wallet__user-b7e18d55__tc0::12204bfd2aa7...,
- submittedAt = 2025-07-10T14:39:43.154021Z,
- ledgerEffectiveTime = 1970-01-01T01:11:10Z,
- deduplicationPeriod = (duration=PT24H),
- synchronizerId = global-domain::12203755b6a7...,
- ...
- ).
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-81.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-81.mdx
deleted file mode 100644
index 937192a18..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-faq-text-81.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
-```text
- 2025-07-10T14:39:43.202Z [⋮] DEBUG - c.d.c.s.t.TrafficStateController:participant=aliceParticipant/synchronizerId=global-domain::12203755b6a7 (1e2d6bf54d150e230fd0c7f348707bf6---) - Computed following cost for submission request using topology at 1970-01-01T01:11:10.000177Z: EventCostDetails(
- cost multiplier = 4,
- group to members size = MediatorGroupRecipient(group = 0) -> 1,
- envelopes cost details = Seq(
- EnvelopeCostDetails(write cost = 1541, read cost = 0, final cost = 1541, recipients = MediatorGroupRecipient(group = 0)),
- EnvelopeCostDetails(
- write cost = 137,
- read cost = 0,
- final cost = 137,
- recipients = Seq(MemberRecipient(PAR::aliceValidator::12204bfd2aa7...), MediatorGroupRecipient(group = 0), MemberRecipient(PAR::sv1::1220c1e24991...))
- ),
- EnvelopeCostDetails(write cost = 1904, read cost = 0, final cost = 1904, recipients = MemberRecipient(PAR::aliceValidator::12204bfd2aa7...)),
- EnvelopeCostDetails(write cost = 2509, read cost = 2, final cost = 2511, recipients = Seq(MemberRecipient(PAR::aliceValidator::12204bfd2aa7...), MemberRecipient(PAR::sv1::1220c1e24991...)))
- ),
- event cost = 6093
- )
- 2025-07-10T14:39:43.414Z [⋮] DEBUG - c.d.c.s.t.TrafficStateController:participant=aliceParticipant/synchronizerId=global-domain::12203755b6a7 (1e2d6bf54d150e230fd0c7f348707bf6---) - Computed following cost for submission request using topology at 1970-01-01T01:11:10.000179Z: EventCostDetails(
- cost multiplier = 4,
- group to members size = MediatorGroupRecipient(group = 0) -> 1,
- envelopes cost details = EnvelopeCostDetails(write cost = 651, read cost = 0, final cost = 651, recipients = MediatorGroupRecipient(group = 0)),
- event cost = 651
- )
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-release-notes-yaml-192.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-release-notes-yaml-192.mdx
deleted file mode 100644
index 1280c6e7a..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-release-notes-yaml-192.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```yaml
- - name: ADDITIONAL_CONFIG_VALIDATOR_MIGRATION_RESTORE
- value: |
- canton.validator-apps.validator_backend.restore-from-migration-dump = "/domain-upgrade-dump/domain_migration_dump.json"
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-1021.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-1033.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-1021.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-1033.mdx
index 507154a05..f395f45b4 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-1021.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-1033.mdx
@@ -1,4 +1,3 @@
```bash
curl https://scan.sv-1./api/scan/v0/scans | jq -r '.scans.[].scans.[].publicUrl'
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-301.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-302.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-301.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-302.mdx
index 7f60d3790..ae84484c4 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-301.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-302.mdx
@@ -6,5 +6,4 @@
"--from-literal=client-secret=${SV_CLIENT_SECRET}" \
"--from-literal=audience=${OIDC_AUTHORITY_LEDGER_API_AUDIENCE}"
"--from-literal=scope=${OIDC_AUTHORITY_LEDGER_API_SCOPE}"
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-313.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-314.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-313.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-314.mdx
index 65afd3561..3b98758af 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-313.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-314.mdx
@@ -6,5 +6,4 @@
"--from-literal=client-secret=${VALIDATOR_CLIENT_SECRET}" \
"--from-literal=audience=${OIDC_AUTHORITY_LEDGER_API_AUDIENCE}" \
"--from-literal=scope=${OIDC_AUTHORITY_LEDGER_API_SCOPE}"
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-325.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-326.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-325.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-326.mdx
index edf4e473c..acd9d1948 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-325.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-326.mdx
@@ -10,5 +10,4 @@
kubectl create --namespace sv secret generic splice-app-cns-ui-auth \
"--from-literal=url=${OIDC_AUTHORITY_URL}" \
"--from-literal=client-id=${CNS_UI_CLIENT_ID}"
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-380.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-381.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-380.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-381.mdx
index 4c1087bd6..bb53d6ee2 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-380.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-381.mdx
@@ -2,5 +2,4 @@
kubectl create --namespace sv secret generic cometbft-keys \
"--from-file=node_key.json=node_key.json" \
"--from-file=priv_validator_key.json=priv_validator_key.json"
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-38.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-39.mdx
similarity index 62%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-38.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-39.mdx
index 8e29a9598..fa32187f8 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-38.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-39.mdx
@@ -1,4 +1,4 @@
```bash
export MIGRATION_ID=0
-
+ export SERIAL_ID=0
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-500.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-507.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-500.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-507.mdx
index 96c4fbe32..ba2f19a1f 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-500.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-507.mdx
@@ -11,6 +11,4 @@
kubectl create secret generic apps-pg-secret \
--from-literal=postgresPassword=${POSTGRES_PASSWORD_APPS} \
-n sv
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-55.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-55.mdx
new file mode 100644
index 000000000..32872456d
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-55.mdx
@@ -0,0 +1,15 @@
+```bash
+# Generate the keypair
+openssl ecparam -name prime256v1 -genkey -noout -out sv-keys.pem
+
+# Encode the keys
+public_key_base64=$(openssl ec -in sv-keys.pem -pubout -outform DER 2>/dev/null | base64 | tr -d "\n")
+private_key_base64=$(openssl pkcs8 -topk8 -nocrypt -in sv-keys.pem -outform DER 2>/dev/null | base64 | tr -d "\n")
+
+# Output the keys
+echo "public-key = \"$public_key_base64\""
+echo "private-key = \"$private_key_base64\""
+
+# Clean up
+rm sv-keys.pem
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-616.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-627.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-616.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-627.mdx
index 1304f48e6..75541c543 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-616.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-627.mdx
@@ -2,5 +2,4 @@
kubectl create secret --namespace sv generic splice-app-sv-key \
--from-literal=public=YOUR_PUBLIC_KEY \
--from-literal=private=YOUR_PRIVATE_KEY
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-713.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-725.mdx
similarity index 99%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-713.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-725.mdx
index 8f52fa80e..0cd0fd9ef 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-713.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-725.mdx
@@ -17,6 +17,4 @@
sv-web-ui-67bfbdfc77-wwvp9 2/2 Running 0 13m
validator-app-667445fdfc-rcztx 2/2 Running 0 10m
wallet-web-ui-648f86f9f9-lffz5 2/2 Running 0 10m
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-823.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-835.mdx
similarity index 98%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-823.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-835.mdx
index a9c05934e..22ca7394e 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-823.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-835.mdx
@@ -1,4 +1,3 @@
```bash
grpcurl : grpc.health.v1.Health/Check
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-832.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-844.mdx
similarity index 96%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-832.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-844.mdx
index 4224e8764..f54f66414 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-832.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-844.mdx
@@ -2,6 +2,4 @@
{
"status": "SERVING"
}
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-849.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-849.mdx
deleted file mode 100644
index 916bc2b40..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-849.mdx
+++ /dev/null
@@ -1,7 +0,0 @@
-```bash
- helm repo add istio https://istio-release.storage.googleapis.com/charts
- helm repo update
- helm install istio-base istio/base -n istio-system --set defaults.global.istioNamespace=cluster-ingress --wait
- helm install istiod istio/istiod -n cluster-ingress --set global.istioNamespace="cluster-ingress" --set meshConfig.accessLogFile="/dev/stdout" --wait
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-861.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-861.mdx
index c0901575b..edf844d21 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-861.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-861.mdx
@@ -1,5 +1,6 @@
```bash
- kubectl create ns cluster-ingress
-
-
+ helm repo add istio https://istio-release.storage.googleapis.com/charts
+ helm repo update
+ helm install istio-base istio/base -n istio-system --set defaults.global.istioNamespace=cluster-ingress --wait
+ helm install istiod istio/istiod -n cluster-ingress --set global.istioNamespace="cluster-ingress" --set meshConfig.accessLogFile="/dev/stdout" --wait
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-873.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-873.mdx
new file mode 100644
index 000000000..cdb8c4d36
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-873.mdx
@@ -0,0 +1,3 @@
+```bash
+ kubectl create ns cluster-ingress
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-902.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-914.mdx
similarity index 98%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-902.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-914.mdx
index d962210a0..b72c53147 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-902.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-914.mdx
@@ -1,5 +1,3 @@
```bash
helm install istio-ingress istio/gateway -n cluster-ingress -f istio-gateway-values.yaml
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-91.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-93.mdx
similarity index 94%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-91.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-93.mdx
index e6a8e642b..1f2c9ccce 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-91.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-93.mdx
@@ -1,5 +1,3 @@
```bash
kubectl create ns sv
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-978.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-990.mdx
similarity index 97%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-978.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-990.mdx
index 3e814df27..763142d5e 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-978.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-bash-990.mdx
@@ -1,5 +1,3 @@
```bash
kubectl apply -f gateways.yaml -n cluster-ingress
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-none-1135.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-none-1135.mdx
new file mode 100644
index 000000000..43f5adae5
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-none-1135.mdx
@@ -0,0 +1,11 @@
+```
+- name: ADDITIONAL_CONFIG_FOLLOW_AMULET_CONVERSION_RATE_FEED
+ value: |
+ canton.sv-apps.sv.follow-amulet-conversion-rate-feed {
+ publisher = "publisher::namespace"
+ accepted-range = {
+ min = 0.01
+ max = 100.0
+ }
+ }
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-none-1145.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-none-1145.mdx
deleted file mode 100644
index 1c1da1272..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-none-1145.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
-```
- - name: ADDITIONAL_CONFIG_FOLLOW_AMULET_CONVERSION_RATE_FEED
- value: |
- canton.sv-apps.sv.follow-amulet-conversion-rate-feed {
- publisher = "publisher::namespace"
- accepted-range = {
- min = 0.01
- max = 100.0
- }
- }
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-1005.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-1005.mdx
new file mode 100644
index 000000000..6f1f1439d
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-1005.mdx
@@ -0,0 +1,3 @@
+```bash
+helm install cluster-ingress-sv |helm_repo_prefix|/splice-cluster-ingress-runbook -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/sv-cluster-ingress-values.yaml
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-354.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-354.mdx
new file mode 100644
index 000000000..2ec24926a
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-354.mdx
@@ -0,0 +1,9 @@
+```bash
+# Create a folder to store the config
+mkdir cometbft
+cd cometbft
+# Init the node
+docker run --rm -v "$(pwd):/init" |docker_repo_prefix|/cometbft:|version| init --home /init
+# Read the node id and keep a note of it for the deployment
+docker run --rm -v "$(pwd):/init" |docker_repo_prefix|/cometbft:|version| show-node-id --home /init
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-468.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-468.mdx
new file mode 100644
index 000000000..39f3a1a93
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-468.mdx
@@ -0,0 +1,15 @@
+```haskell
+@ participant.synchronizers.config("global")
+res1: Option[SynchronizerConnectionConfig] = Some(
+ value = SynchronizerConnectionConfig(
+ synchronizer = Synchronizer 'global',
+ sequencerConnections = SequencerConnections(
+ connections = Sequencer 'DefaultSequencer' -> GrpcSequencerConnection(sequencerAlias = Sequencer 'DefaultSequencer', endpoints = http://global-domain-0-sequencer:5008),
+ sequencer trust threshold = 1,
+ submission request amplification = SubmissionRequestAmplification(factor = 1, patience = 10s)
+ ),
+ manualConnect = false,
+ timeTracker = SynchronizerTimeTrackerConfig(minObservationDuration = 30m)
+ )
+)
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-528.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-528.mdx
new file mode 100644
index 000000000..b3fe3e03e
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-528.mdx
@@ -0,0 +1,6 @@
+```bash
+helm install sequencer-pg |helm_repo_prefix|/splice-postgres -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/postgres-values-sequencer.yaml --wait
+helm install mediator-pg |helm_repo_prefix|/splice-postgres -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/postgres-values-mediator.yaml --wait
+helm install participant-pg |helm_repo_prefix|/splice-postgres -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/postgres-values-participant.yaml --wait
+helm install apps-pg |helm_repo_prefix|/splice-postgres -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/postgres-values-apps.yaml --wait
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-691.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-691.mdx
new file mode 100644
index 000000000..e77d0fe86
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-691.mdx
@@ -0,0 +1,4 @@
+```bash
+helm install global-domain-${SERIAL_ID}-cometbft |helm_repo_prefix|/splice-cometbft -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/cometbft-values.yaml --wait
+helm install global-domain-${SERIAL_ID} |helm_repo_prefix|/splice-global-domain -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/global-domain-values.yaml --wait
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-701.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-701.mdx
new file mode 100644
index 000000000..d18e73e01
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-701.mdx
@@ -0,0 +1,3 @@
+```bash
+helm install participant |helm_repo_prefix|/splice-participant -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/participant-values.yaml --wait
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-707.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-707.mdx
new file mode 100644
index 000000000..092af72c9
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-707.mdx
@@ -0,0 +1,5 @@
+```bash
+helm install sv |helm_repo_prefix|/splice-sv-node -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/sv-values.yaml -f ${SV_IDENTITIES_FILE} -f ${UI_CONFIG_VALUES_FILE} --wait
+helm install scan |helm_repo_prefix|/splice-scan -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/scan-values.yaml -f ${UI_CONFIG_VALUES_FILE} --wait
+helm install validator |helm_repo_prefix|/splice-validator -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/validator-values.yaml -f splice-node/examples/sv-helm/sv-validator-values.yaml -f ${UI_CONFIG_VALUES_FILE} --wait
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-715.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-715.mdx
new file mode 100644
index 000000000..ece4170c5
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-parsed-literal-715.mdx
@@ -0,0 +1,3 @@
+```bash
+helm install info |helm_repo_prefix|/splice-info -n sv --version ${CHART_VERSION} -f splice-node/examples/sv-helm/info-values.yaml
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-text-366.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-text-366.mdx
new file mode 100644
index 000000000..33a288b4b
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-text-366.mdx
@@ -0,0 +1,4 @@
+```text
+cometbft/config/node_key.json
+cometbft/config/priv_validator_key.json
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-text-74.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-text-74.mdx
new file mode 100644
index 000000000..2c13dd4b9
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-text-74.mdx
@@ -0,0 +1,4 @@
+```text
+public-key = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1eb+JkH2QFRCZedO/P5cq5d2+yfdwP+jE+9w3cT6BqfHxCd/PyA0mmWMePovShmf97HlUajFuN05kZgxvjcPQw=="
+private-key = "MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBsFuFa7Eumkdg4dcf/vxIXgAje2ULVz+qTKP3s/tHqKw=="
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-440.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-440.mdx
new file mode 100644
index 000000000..2b6e4af9f
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-440.mdx
@@ -0,0 +1,5 @@
+```yaml
+synchronizer:
+ connectionType: "trust-single"
+ url: "SEQUENCER_PUBLIC_URI" # synchronizers.current.sequencerPublicUrl from sv-values.yaml
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-441.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-441.mdx
deleted file mode 100644
index c9a8978db..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-441.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```yaml
- additionalEnvVars:
- - name: ADDITIONAL_CONFIG_NO_BFT_SEQUENCER_CONNECTION
- value: "canton.validator-apps.validator_backend.disable-sv-validator-bft-sequencer-connection = true"
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-448.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-448.mdx
new file mode 100644
index 000000000..2793d433b
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-448.mdx
@@ -0,0 +1,5 @@
+```yaml
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_NO_BFT_SEQUENCER_CONNECTION
+ value: "canton.validator-apps.validator_backend.disable-sv-validator-bft-sequencer-connection = true"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-449.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-449.mdx
deleted file mode 100644
index b224db62d..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-449.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```yaml
- additionalEnvVars:
- - name: ADDITIONAL_CONFIG_NO_BFT_SEQUENCER_CONNECTION
- value: "canton.sv-apps.sv.bft-sequencer-connection = false"
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-456.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-456.mdx
new file mode 100644
index 000000000..ca810c852
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-456.mdx
@@ -0,0 +1,5 @@
+```yaml
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_NO_BFT_SEQUENCER_CONNECTION
+ value: "canton.sv-apps.sv.bft-sequencer-connection = false"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-870.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-870.mdx
deleted file mode 100644
index 8d7d110ee..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-870.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-```yaml
- apiVersion: cert-manager.io/v1
- kind: Certificate
- metadata:
- name: cn-certificate
- namespace: cluster-ingress
- spec:
- dnsNames:
- - '*.sv.YOUR_HOSTNAME'
- issuerRef:
- name: letsencrypt-production
- secretName: cn-net-tls
-
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-882.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-882.mdx
new file mode 100644
index 000000000..daa79ffcf
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-882.mdx
@@ -0,0 +1,13 @@
+```yaml
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+ name: cn-certificate
+ namespace: cluster-ingress
+spec:
+ dnsNames:
+ - '*.sv.YOUR_HOSTNAME'
+ issuerRef:
+ name: letsencrypt-production
+ secretName: cn-net-tls
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-888.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-888.mdx
deleted file mode 100644
index 06961ab0c..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-888.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
-```yaml
- service:
- loadBalancerIP: "YOUR_CLUSTER_IP"
- loadBalancerSourceRanges:
- - "35.194.81.56/32"
- - "35.198.147.95/32"
- - "35.189.40.124/32"
- - "34.132.91.75/32"
-
-
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-900.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-900.mdx
new file mode 100644
index 000000000..170696e86
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-900.mdx
@@ -0,0 +1,9 @@
+```yaml
+service:
+ loadBalancerIP: "YOUR_CLUSTER_IP"
+ loadBalancerSourceRanges:
+ - "35.194.81.56/32"
+ - "35.198.147.95/32"
+ - "35.189.40.124/32"
+ - "34.132.91.75/32"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-914.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-914.mdx
deleted file mode 100644
index 39164c30c..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-914.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
-```yaml
- apiVersion: networking.istio.io/v1alpha3
- kind: Gateway
- metadata:
- name: cn-http-gateway
- namespace: cluster-ingress
- spec:
- selector:
- app: istio-ingress
- istio: ingress
- servers:
- - port:
- number: 443
- name: https
- protocol: HTTPS
- tls:
- mode: SIMPLE
- credentialName: cn-net-tls # name of the secret created above
- hosts:
- - "*.YOUR_HOSTNAME"
- - "YOUR_HOSTNAME"
- - port:
- number: 80
- name: http
- protocol: HTTP
- tls:
- httpsRedirect: true
- hosts:
- - "*.YOUR_HOSTNAME"
- - "YOUR_HOSTNAME"
- ---
- apiVersion: networking.istio.io/v1alpha3
- kind: Gateway
- metadata:
- name: cn-apps-gateway
- namespace: cluster-ingress
- spec:
- selector:
- app: istio-ingress
- istio: ingress
- servers:
- - port:
- number: 26016
- name: cometbft-0-1-6-gw
- protocol: TCP
- hosts:
- # We cannot really distinguish TCP traffic by hostname, so configuring to "*" to be explicit about that
- - "*"
- - port:
- number: 26116
- name: cometbft-1-1-6-gw
- protocol: TCP
- hosts:
- - "*"
- - port:
- number: 26216
- name: cometbft-2-1-6-gw
- protocol: TCP
- hosts:
- - "*"
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-926.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-926.mdx
new file mode 100644
index 000000000..a4810b2d4
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-helm-yaml-926.mdx
@@ -0,0 +1,61 @@
+```yaml
+apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+ name: cn-http-gateway
+ namespace: cluster-ingress
+spec:
+ selector:
+ app: istio-ingress
+ istio: ingress
+ servers:
+ - port:
+ number: 443
+ name: https
+ protocol: HTTPS
+ tls:
+ mode: SIMPLE
+ credentialName: cn-net-tls # name of the secret created above
+ hosts:
+ - "*.YOUR_HOSTNAME"
+ - "YOUR_HOSTNAME"
+ - port:
+ number: 80
+ name: http
+ protocol: HTTP
+ tls:
+ httpsRedirect: true
+ hosts:
+ - "*.YOUR_HOSTNAME"
+ - "YOUR_HOSTNAME"
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+ name: cn-apps-gateway
+ namespace: cluster-ingress
+spec:
+ selector:
+ app: istio-ingress
+ istio: ingress
+ servers:
+ - port:
+ number: 26016
+ name: cometbft-0-1-6-gw
+ protocol: TCP
+ hosts:
+ # We cannot really distinguish TCP traffic by hostname, so configuring to "*" to be explicit about that
+ - "*"
+ - port:
+ number: 26116
+ name: cometbft-1-1-6-gw
+ protocol: TCP
+ hosts:
+ - "*"
+ - port:
+ number: 26216
+ name: cometbft-2-1-6-gw
+ protocol: TCP
+ hosts:
+ - "*"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-118.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-118.mdx
new file mode 100644
index 000000000..7ea0a5903
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-118.mdx
@@ -0,0 +1,9 @@
+```
+rollForwardLsu:
+ newPhysicalSynchronizerSerial: NEW_PHYSICAL_SYNCHRONIZER_SERIAL # Must be agreed between SVs, usually existing (broken) synchronizer serial + 1
+ newPhysicalSynchronizerProtocolVersion: NEW_PHYSICAL_SYNCHRONIZER_PROTOCOL_VERSION # Must be agreed between SVs, usually existing (broken) synchronizer serial + 1
+ exportTimes:
+ topologyExportTime: TOPOLOGY_EXPORT_TIME # Must be agreed between SVs
+ trafficExportTime: TRAFFIC_EXPORT_TIME # Must be agreed between SVs
+ upgradeTime: UPGRADE_TIME # Must be agreed between SVs
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-142.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-142.mdx
new file mode 100644
index 000000000..a29f59101
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-142.mdx
@@ -0,0 +1,5 @@
+```
+rollForwardLsu:
+ enabled: true
+ upgradeTime: UPGRADE_TIME # Must be agreed between SVs, optional, if not specified it is taken from an existing LSU announcement which should usually be sufficient.
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-87.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-87.mdx
new file mode 100644
index 000000000..65bbe222b
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-logical-synchronizer-upgrade-none-87.mdx
@@ -0,0 +1,5 @@
+```
+- name: ADDITIONAL_CONFIG_SEQUENCER_LSU_MAX_SEQUENCING_TIME
+ value: |
+ canton.sequencers.sequencer.parameters.lsu-repair.global-max-sequencing-time-exclusive=MAX_SEQUENCING_TIME
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-482.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-482.mdx
index 7a47122cf..aea9dcbd1 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-482.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-482.mdx
@@ -19,5 +19,4 @@
--begin-migration-id 3 \
--weight 5000 \
--already-minted-weight 0
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-507.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-507.mdx
index 989bca73f..f6db517c1 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-507.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-507.mdx
@@ -25,5 +25,4 @@
--begin-migration-id 3 \
--weight 5000 \
--already-minted-weight 0
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-538.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-538.mdx
index 76c4be71a..d8698ba54 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-538.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-538.mdx
@@ -20,5 +20,4 @@
--begin-migration-id 3 \
--weight 5000 \
--already-minted-weight 0
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-564.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-564.mdx
index d5b556bda..58cf3b4b1 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-564.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-564.mdx
@@ -21,6 +21,4 @@
--weight 5000 \
--already-minted-weight 0 \
--rebuild-cache
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-683.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-683.mdx
index e0e1b44f1..abd42b190 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-683.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-683.mdx
@@ -1,5 +1,4 @@
```bash
--begin-record-time=t0 --end-record-time=t1 \
--weight=10000 --already-minted-weight=0
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-697.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-697.mdx
deleted file mode 100644
index 0af166fd0..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-697.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- --begin-record-time=t0 --end-record-time=t1 \
- --weight=10000 --already-minted-weight=10000
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-704.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-704.mdx
deleted file mode 100644
index 772e197b5..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-704.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- --begin-record-time=t1 --end-record-time=t2 \
- --weight=10000 --already-minted-weight=0
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-718.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-718.mdx
deleted file mode 100644
index 3995f45f9..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-718.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- --begin-record-time=t0 --end-record-time=t1 \
- --weight=20000 --already-minted-weight=20000
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-725.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-725.mdx
deleted file mode 100644
index bbd5764ae..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-725.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- --begin-record-time=t1 --end-record-time=t2 \
- --weight=20000 --already-minted-weight=10000
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-732.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-732.mdx
deleted file mode 100644
index 56c40df7b..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-bash-732.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- --begin-record-time=t2 --end-record-time=t3 \
- --weight=20000 --already-minted-weight=0
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-171.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-171.mdx
new file mode 100644
index 000000000..28b82b84c
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-171.mdx
@@ -0,0 +1,10 @@
+```bash
+executing batch AmuletOperationBatch(
+ nonMergeOperations = AmuletOperation(
+ from = tid:80afc8ae63defcb7a636d2cd23e38c0d,
+ op = CO_CompleteAcceptedTransfer(ContractId(00ebc78671f4b5f688d8245a1e0c6c72f378c0c90c7ca574a3c3a615489f3ca15dca1012208d8f9eb3ffe0d0a05b207e2bc3fb3f3e7d31c0b594eaefcfd486411386de775c)),
+ priority = Low
+ ),
+ priority = Low
+) with inputs Vector(InputAmulet(ContractId(002ace5687dc7f82cb0ca80d2b349a39b1127ffd01db2cd7172053fef88308e6faca1012202646cd3cbb31c78314c3ef22657d4ba6f7f096e90167dcd0d71eba565fa35844)))
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-193.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-193.mdx
new file mode 100644
index 000000000..d82009852
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-193.mdx
@@ -0,0 +1,3 @@
+```bash
+Request (tid:43fd8ad332ca637b0c7c1509b2bdf715) com.daml.ledger.api.v2.CommandService/SubmitAndWaitForTransactionTree to participant-1:5001: sending request
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-204.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-204.mdx
new file mode 100644
index 000000000..3fe422764
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-204.mdx
@@ -0,0 +1,5 @@
+```bash
+resource.labels.container_name="sequencer"
+jsonPayload.logger_name="c.d.c.s.t.TrafficConsumedManager:sequencer=sequencer"
+jsonPayload."trace-id"="43fd8ad332ca637b0c7c1509b2bdf715"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-222.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-222.mdx
new file mode 100644
index 000000000..e0277087a
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-parsed-literal-222.mdx
@@ -0,0 +1,5 @@
+```bash
+Consumed 16147 for PAR::sender::...
+Consumed 711 for PAR::receiver::...
+Consumed 1450 for PAR::sender::...
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-344.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-344.mdx
index e067617b5..55581cf23 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-344.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-344.mdx
@@ -1,4 +1,3 @@
```sql
- select distinct(reward_party) from dso_acs_store where reward_round < UPGRADE_ROUND;
-
+select distinct(reward_party) from dso_acs_store where reward_round < UPGRADE_ROUND;
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-359.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-359.mdx
index 4be761167..afe5aeb2b 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-359.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-sql-359.mdx
@@ -1,10 +1,9 @@
```sql
- select m.template_id_qualified_name, m.reward_party, min(m.reward_round) from (
- select c.reward_party, c.reward_round, c.template_id_qualified_name from dso_acs_store c
- join dso_acs_store r
- on r.mining_round = c.reward_round
- and r.mining_round > UPGRADE_ROUND
- and r.template_id_qualified_name = 'Splice.Round:ClosedMiningRound'
- ) as m group by (template_id_qualified_name, reward_party);
-
+select m.template_id_qualified_name, m.reward_party, min(m.reward_round) from (
+ select c.reward_party, c.reward_round, c.template_id_qualified_name from dso_acs_store c
+ join dso_acs_store r
+ on r.mining_round = c.reward_round
+ and r.mining_round > UPGRADE_ROUND
+ and r.template_id_qualified_name = 'Splice.Round:ClosedMiningRound'
+) as m group by (template_id_qualified_name, reward_party);
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-text-665.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-text-665.mdx
deleted file mode 100644
index 5fbdde39d..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-text-665.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```text
- t0 t1 t2 t3
- | m₁ (w=10K) | m₂ (w=10K) | m₃ (w=20K) |
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-296.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-296.mdx
index 4021c7c7a..566e8ebe7 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-296.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-296.mdx
@@ -1,7 +1,6 @@
```yaml
- additionalEnvVars:
- - name: ADDITIONAL_CONFIG_PAUSED_EXPIRY_TRIGGER
- value: |
- canton.sv-apps.sv.automation.paused-triggers += "org.lfdecentralizedtrust.splice.sv.automation.delegatebased.ExpireRewardCouponsTrigger"
-
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_PAUSED_EXPIRY_TRIGGER
+ value: |
+ canton.sv-apps.sv.automation.paused-triggers += "org.lfdecentralizedtrust.splice.sv.automation.delegatebased.ExpireRewardCouponsTrigger"
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-309.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-309.mdx
index 2e6d588bb..fdc3a11cb 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-309.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-309.mdx
@@ -1,9 +1,8 @@
```yaml
- additionalEnvVars:
- - name: ADDITIONAL_CONFIG_IGNORED_EXPIRY_PARTY_IDS
- value: |
- canton.sv-apps.sv {
- automation.ignored-expired-rewards-party-ids = [ "party1::12345", "party2:57890" ]
- }
-
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_IGNORED_EXPIRY_PARTY_IDS
+ value: |
+ canton.sv-apps.sv {
+ automation.ignored-expired-rewards-party-ids = [ "party1::12345", "party2:57890" ]
+ }
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-821.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-821.mdx
index d451ad18c..72d2758d2 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-821.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-821.mdx
@@ -1,6 +1,5 @@
```yaml
- # Example to trigger re-ingestion of the ACS store for the first time
- persistence:
- acsStoreDescriptorUserVersion: 1
-
+# Example to trigger re-ingestion of the ACS store for the first time
+persistence:
+ acsStoreDescriptorUserVersion: 1
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-829.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-829.mdx
index 8b0111a87..d743da9c8 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-829.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-829.mdx
@@ -1,6 +1,5 @@
```yaml
- # Example to trigger re-ingestion of the ACS store for the second time
- persistence:
- acsStoreDescriptorUserVersion: 2
-
+# Example to trigger re-ingestion of the ACS store for the second time
+persistence:
+ acsStoreDescriptorUserVersion: 2
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-838.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-838.mdx
index d7aa3d35b..52a0d5a61 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-838.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-838.mdx
@@ -1,6 +1,5 @@
```yaml
- # Example to trigger re-ingestion of the TxLog store for the first time
- persistence:
- txLogStoreDescriptorUserVersion: 1
-
+# Example to trigger re-ingestion of the TxLog store for the first time
+persistence:
+ txLogStoreDescriptorUserVersion: 1
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-846.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-846.mdx
index 0b83a5fb8..60ac18d52 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-846.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-846.mdx
@@ -1,6 +1,5 @@
```yaml
- # Example to trigger re-ingestion of the TxLog store for the second time
- persistence:
- txLogStoreDescriptorUserVersion: 2
-
+# Example to trigger re-ingestion of the TxLog store for the second time
+persistence:
+ txLogStoreDescriptorUserVersion: 2
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-865.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-865.mdx
new file mode 100644
index 000000000..4c075c46d
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-865.mdx
@@ -0,0 +1,6 @@
+```yaml
+# Example to reset the activity ingestion completeness boundary
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_ACTIVITY_INGESTION_USER_VERSION
+ value: canton.scan-apps.scan-app.activity-ingestion-user-version = 1
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-889.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-889.mdx
new file mode 100644
index 000000000..2bea5a6f2
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-operations-yaml-889.mdx
@@ -0,0 +1,7 @@
+```yaml
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_ADDITIONAL_PACKAGES_TO_UNVET
+ value: |
+ canton.sv-apps.sv.additional-packages-to-unvet.splice-wallet = ["0.1.16"]
+ canton.sv-apps.sv.additional-packages-to-unvet.splice-amulet = ["0.1.16", "0.1.17"]
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-pruning-yaml-62.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-pruning-yaml-62.mdx
new file mode 100644
index 000000000..db355ad9b
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-pruning-yaml-62.mdx
@@ -0,0 +1,6 @@
+```yaml
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_PRUNING_ACS_COMMITMENTS
+ value: |
+ canton.participants.participant.parameters.stores.safe-to-prune-commitment-state = "all"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-104.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-102.mdx
similarity index 97%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-104.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-102.mdx
index 80ccf6229..30ff10207 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-104.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-102.mdx
@@ -1,5 +1,3 @@
```bash
jq '.identities.participant' backup.json > dump.json
-
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-190.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-190.mdx
deleted file mode 100644
index b4f56e392..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-190.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- data=$(curl -sSLf "https://sv.sv.YOUR_HOSTNAME/api/sv/v0/admin/domain/data-snapshot?timestamp=" -H "authorization: Bearer " -X GET -H "Content-Type: application/json")
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-209.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-209.mdx
deleted file mode 100644
index 738cd4eab..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-209.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- id=$(cat identities.json)
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-218.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-218.mdx
deleted file mode 100644
index 638717394..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-218.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- echo "$id" "$data" | jq -s add > dump.json
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-224.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-224.mdx
deleted file mode 100644
index f891ea58b..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-224.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- kubectl cp dump.json sv/:/domain-upgrade-dump/domain_migration_dump.json
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-59.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-57.mdx
similarity index 90%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-59.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-57.mdx
index 1a662f242..786cc86d9 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-59.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-57.mdx
@@ -3,9 +3,8 @@
global-domain-0-cometbft \
global-domain-0-mediator \
global-domain-0-sequencer \
- participant-0 \
+ participant \
scan-app \
sv-app \
validator-app
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-76.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-74.mdx
similarity index 90%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-76.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-74.mdx
index 9c036b478..22291ab08 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-76.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-restore-bash-74.mdx
@@ -3,9 +3,8 @@
global-domain-0-cometbft \
global-domain-0-mediator \
global-domain-0-sequencer \
- participant-0 \
+ participant \
scan-app \
sv-app \
validator-app
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-110.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-110.mdx
new file mode 100644
index 000000000..ed57000db
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-110.mdx
@@ -0,0 +1,5 @@
+```bash
+kubectl create secret --namespace sv generic splice-app-sv-cometbft-governance-key \
+ --from-literal=publicKey="$(jq -r .public cometbft-governance-keys.json)" \
+ --from-literal=privateKey="$(jq -r .private cometbft-governance-keys.json)"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-73.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-73.mdx
new file mode 100644
index 000000000..be3e5b48c
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-bash-73.mdx
@@ -0,0 +1,17 @@
+```bash
+# Generate the private key
+openssl genpkey -algorithm ed25519 -out cometbft-governance-keys.pem
+
+# Extract and encode the keys
+public_key_base64=$(openssl pkey -in cometbft-governance-keys.pem -pubout -outform DER | tail -c 32 | base64 | tr -d "\n")
+private_key_base64=$(openssl pkey -in cometbft-governance-keys.pem -outform DER | tail -c 32 | base64 | tr -d "\n")
+
+echo "{"
+# Output the keys
+echo " \"publicKey\": \"$public_key_base64\","
+echo " \"privateKey\": \"$private_key_base64\""
+echo "}"
+
+# Clean up
+rm cometbft-governance-keys.pem
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-json-94.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-json-94.mdx
new file mode 100644
index 000000000..8c83728fa
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-sv-operator-sv-security-json-94.mdx
@@ -0,0 +1,6 @@
+```json
+{
+ "public": "A9tWyYq/HIJ3B73ym1eIUV8yqnDBligGJUE8463CBUM=",
+ "private": "FDG16PaSh9hGLu2fXzEHmTECMjSyQuZnEg+w5HKCEtg="
+}
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-123.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-167.mdx
similarity index 100%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-123.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-167.mdx
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-131.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-175.mdx
similarity index 100%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-131.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-175.mdx
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-237.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-281.mdx
similarity index 100%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-237.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-281.mdx
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-262.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-306.mdx
similarity index 100%
rename from docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-262.mdx
rename to docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-bash-306.mdx
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-152.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-152.mdx
new file mode 100644
index 000000000..205393577
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-152.mdx
@@ -0,0 +1,10 @@
+```yaml
+ services:
+ validator:
+ environment:
+ JAVA_TOOL_OPTIONS: >-
+ -Dhttps.proxyHost=your.proxy.host
+ -Dhttps.proxyPort=your_proxy_port
+ -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.internal|10.*
+
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-347.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-347.mdx
new file mode 100644
index 000000000..68e9379fc
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-compose-yaml-347.mdx
@@ -0,0 +1,13 @@
+```yaml
+ services:
+ validator:
+ environment:
+ - |
+ ADDITIONAL_CONFIG_AUTO_ACCEPT_TRANSFERS=
+ canton.validator-apps.validator_backend.auto-accept-transfers {
+ "" {
+ from-parties = ["", ""]
+ }
+ }
+
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-201.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-201.mdx
new file mode 100644
index 000000000..9ce39f43a
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-201.mdx
@@ -0,0 +1,11 @@
+```bash
+ export LEDGER_API_URL="https://validator.example.com:5003"
+ export TOKEN="your-auth-token"
+ export BENEFICIARY_PARTY="beneficiary::1220abcd..."
+ export DELEGATE_PARTY="validator_operator::1220efgh..."
+ export DSO_PARTY="DSO::1220ijkl..."
+ export EXPIRES_AT="2025-12-31T23:59:59Z"
+ # This could be created by
+ # export EXPIRES_AT="$(date -u -d '+1 year' '+%Y-%m-%dT%H:%M:%SZ')"
+ export AMULET_MERGE_LIMIT=10
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-215.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-215.mdx
new file mode 100644
index 000000000..d35814336
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-215.mdx
@@ -0,0 +1,22 @@
+```bash
+ curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
+ --data-raw '{
+ "commands": [
+ {
+ "CreateCommand": {
+ "templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegationProposal",
+ "createArguments": {
+ "delegation": {
+ "beneficiary": "'"$BENEFICIARY_PARTY"'",
+ "delegate": "'"$DELEGATE_PARTY"'",
+ "dso": "'"$DSO_PARTY"'",
+ "expiresAt": "'"$EXPIRES_AT"'",
+ "amuletMergeLimit": '"$AMULET_MERGE_LIMIT"'
+ }
+ }
+ }
+ }
+ ]
+ }' \
+ "$LEDGER_API_URL/v2/commands"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-251.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-251.mdx
new file mode 100644
index 000000000..153d237fd
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-251.mdx
@@ -0,0 +1,21 @@
+```bash
+ curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
+ --data-raw '{
+ "filter": {
+ "filtersByParty": {
+ "'"$BENEFICIARY_PARTY"'": {
+ "filters": [
+ {
+ "inclusive": {
+ "templateFilters": [
+ {"templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegationProposal"}
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ }' \
+ "$LEDGER_API_URL/v2/state/active-contracts"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-276.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-276.mdx
new file mode 100644
index 000000000..75cc4a68d
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-276.mdx
@@ -0,0 +1,21 @@
+```bash
+ curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
+ --data-raw '{
+ "filter": {
+ "filtersByParty": {
+ "'"$BENEFICIARY_PARTY"'": {
+ "filters": [
+ {
+ "inclusive": {
+ "templateFilters": [
+ {"templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegation"}
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ }' \
+ "$LEDGER_API_URL/v2/state/active-contracts"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-309.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-309.mdx
new file mode 100644
index 000000000..9715a808b
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-delegations-bash-309.mdx
@@ -0,0 +1,18 @@
+```bash
+ export PROPOSAL_CONTRACT_ID="00abcd1234..."
+
+ curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
+ --data-raw '{
+ "commands": [
+ {
+ "ExerciseCommand": {
+ "templateId": "#splice-wallet:Splice.Wallet.MintingDelegation:MintingDelegationProposal",
+ "contractId": "'"$PROPOSAL_CONTRACT_ID"'",
+ "choice": "MintingDelegationProposal_Withdraw",
+ "choiceArgument": {}
+ }
+ }
+ ]
+ }' \
+ "$LEDGER_API_URL/v2/commands"
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-137.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-137.mdx
index e9a6b2889..6a669bc1a 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-137.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-137.mdx
@@ -1,6 +1,6 @@
```bash
- kubectl create secret generic participant-bootstrap-dump \
- --from-file=content=${PARTICIPANT_BOOTSTRAP_DUMP_FILE} \
- -n validator
+.. code-block:: bash
+
+ kubectl create secret generic participant-bootstrap-dump \
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-159.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-159.mdx
deleted file mode 100644
index 685764d6a..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-159.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- ./start.sh -s "" -o "" -p -m "" -i "" -P "" -w
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-456.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-456.mdx
deleted file mode 100644
index 7a8a130be..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-456.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- curl -sSLf "https://wallet.validator.YOUR_HOSTNAME/api/validator/v0/admin/domain/data-snapshot?timestamp=&force=true" -H "authorization: Bearer " -X GET -H "Content-Type: application/json" > dump_response.json
- cat dump_response.json | jq '.data_snapshot' > dump.json
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-473.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-473.mdx
deleted file mode 100644
index 3989c7a5b..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-473.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- kubectl cp dump.json validator/:/domain-upgrade-dump/domain_migration_dump.json
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-490.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-490.mdx
deleted file mode 100644
index 2351437ef..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-490.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```bash
- curl -sSLf "https://wallet.localhost/api/validator/v0/admin/domain/data-snapshot?timestamp=&force=true" -H "authorization: Bearer " -X GET -H "Content-Type: application/json" > dump_response.json
- cat dump_response.json | jq '.data_snapshot' > dump.json
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-509.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-509.mdx
deleted file mode 100644
index 734f40388..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-bash-509.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```bash
- docker run --rm -v "domain-upgrade-dump:/volume" -v "$(pwd):/backup" alpine sh -c "cp /backup/dump.json /volume/domain_migration_dump.json"
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-230.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-230.mdx
deleted file mode 100644
index 27afb4d5e..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-230.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```
- val syncId = participant.synchronizers.list_connected().head.synchronizerId
- participant.topology.party_to_participant_mappings.list(syncId, filterParticipant = )
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-238.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-238.mdx
deleted file mode 100644
index 9cf885685..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-238.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-```
- val participantId = participant.id // ID of the new participant
- participant.topology.party_to_participant_mappings.propose(, Seq((participantId, )), store = syncId)
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-240.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-240.mdx
new file mode 100644
index 000000000..f5a4bbb35
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-240.mdx
@@ -0,0 +1,4 @@
+```
+val syncId = participant.synchronizers.list_connected().head.synchronizerId
+participant.topology.party_to_participant_mappings.list(syncId, filterParticipant = )
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-248.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-248.mdx
new file mode 100644
index 000000000..a061a99a2
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-248.mdx
@@ -0,0 +1,4 @@
+```
+val participantId = participant.id // ID of the new participant
+participant.topology.party_to_participant_mappings.propose(, Seq((participantId, )), store = syncId)
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-250.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-250.mdx
deleted file mode 100644
index f324269e8..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-250.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
-```
- participant.synchronizers.disconnect_all()
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-260.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-260.mdx
new file mode 100644
index 000000000..e8513d896
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-260.mdx
@@ -0,0 +1,3 @@
+```
+participant.synchronizers.disconnect_all()
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-264.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-264.mdx
index ef9abedfb..e690948ed 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-264.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-264.mdx
@@ -1,4 +1,4 @@
```
- participant.repair.import_acs("acs_snapshot")
+ Run from a regular shell (same working directory like the one you started your Canton console from):
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-299.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-299.mdx
new file mode 100644
index 000000000..aa0c302ad
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-299.mdx
@@ -0,0 +1,4 @@
+```
+Missing authorizers: ReferencedAuthorizations(extraKeys = ...)
+Rejected transaction ... OwnerToKeyMapping(...) ... due to Not authorized
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-309.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-309.mdx
index 90ebc961d..d84372230 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-309.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-309.mdx
@@ -1,33 +1,33 @@
```
- // replace YOUR_PARTY_ID by the ID of your external party
- val partyId = PartyId.tryFromProtoPrimitive("YOUR_PARTY_ID")
- val participantId = participant.id
- val synchronizerId = participant.synchronizers.id_of("global")
-
- // generate topology transaction
- val partyToParticipant = PartyToParticipant.tryCreate(
- partyId = partyId,
- threshold = PositiveInt.one,
- participants = Seq(
- HostingParticipant(
- participantId,
- ParticipantPermission.Confirmation,
- )
- ),
- )
-
- import com.digitalasset.canton.admin.api.client.commands.TopologyAdminCommands.Write.GenerateTransactions
- val topologyTransaction = participant.topology.transactions.generate(
- Seq(
- GenerateTransactions.Proposal(
- partyToParticipant,
- TopologyStoreId.Synchronizer(synchronizerId),
- )
- )
- ).head
-
- // Print out the hash that needs to be signed. Note that you need to sign
- // the actual bytes the hex string represents not the hex string
- topologyTransaction.hash.hash.toHexString
+ those from the rejected ``OwnerToKeyMapping`` in your participant logs, and replace the
+ old participant ID with your actual old participant ID:
+ .. code::
+
+ val keys = Seq("", "").map(prefix =>
+ participant.keys.public.list().filter(_.publicKey.id.toProtoPrimitive.startsWith(prefix)).head.publicKey)
+
+ val oldParticipantId = ParticipantId.fromProtoPrimitive("", "participant").toOption.get
+ val otk = OwnerToKeyMapping(member = oldParticipantId, keys = NonEmpty.from(keys).get)
+ participant.topology.owner_to_key_mappings.propose(otk, force = ForceFlag.AlienMember)
+
+3. Start the validator app using your original identities dump configuration.
+
+.. _validator_recover_external_party:
+
+Recover the Coin balance of an external party
++++++++++++++++++++++++++++++++++++++++++++++
+
+For a party relying on external signing, a similar procedure can be
+used to recover its coin balance in case the validator originally
+hosting it becomes unusable for whatever reason.
+
+.. warning:: The target validator that you use to host the party after
+ recovery **must** be a **completely new validator**. An existing validator
+ may brick completely due to some limitations around party
+ migrations and there is no way to recover from that at
+ this point. Recovering a validator from an identities backup does not classify
+ as a completely new validator here. You must setup it with a completely new identity
+ and a completely clean database.
+ This limitation is expected to be lifted in
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-314.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-314.mdx
new file mode 100644
index 000000000..b6db37f3f
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-314.mdx
@@ -0,0 +1,8 @@
+```
+val keys = Seq("", "").map(prefix =>
+ participant.keys.public.list().filter(_.publicKey.id.toProtoPrimitive.startsWith(prefix)).head.publicKey)
+
+val oldParticipantId = ParticipantId.fromProtoPrimitive("", "participant").toOption.get
+val otk = OwnerToKeyMapping(member = oldParticipantId, keys = NonEmpty.from(keys).get)
+participant.topology.owner_to_key_mappings.propose(otk, force = ForceFlag.AlienMember)
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-351.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-351.mdx
index 6f3a9bf5f..4afc08701 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-351.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-351.mdx
@@ -1,20 +1,20 @@
```
- // Replace HASH_SIGNATURE_HEXSTRING with the signed topology transaction hash
- val signature = Signature.fromExternalSigning(SignatureFormat.Raw, HexString.parseToByteString("HASH_SIGNATURE_HEXSTRING").get, partyId.namespace.fingerprint, SigningAlgorithmSpec.Ed25519)
- val topologyTxSignedByParty = SignedTopologyTransaction.create(
- topologyTransaction,
- NonEmpty(Set, SingleTransactionSignature(topologyTransaction.hash, signature): TopologyTransactionSignature),
- isProposal = false,
- ProtocolVersion.v34,
- )
- val topologyTxSignedByBoth = participant.topology.transactions.sign(
- topologyTxSignedByParty,
- TopologyStoreId.Synchronizer(synchronizerId),
- signedBy = Seq(participantId.namespace.fingerprint)
- )
- participant.topology.transactions.load(
- topologyTxSignedByBoth,
- TopologyStoreId.Synchronizer(synchronizerId),
- )
+it on multiple nodes, you will need to adjust this.
+.. code::
+
+ // replace YOUR_PARTY_ID by the ID of your external party
+ val partyId = PartyId.tryFromProtoPrimitive("YOUR_PARTY_ID")
+ val participantId = participant.id
+ val synchronizerId = participant.synchronizers.id_of("global")
+
+ // generate topology transaction
+ val partyToParticipant = PartyToParticipant.tryCreate(
+ partyId = partyId,
+ threshold = PositiveInt.one,
+ participants = Seq(
+ HostingParticipant(
+ participantId,
+ ParticipantPermission.Confirmation,
+ )
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-373.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-373.mdx
index 92476ec97..9d549ca0d 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-373.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-373.mdx
@@ -1,20 +1,20 @@
```
- // The detailed output will slightly vary. Make sure that you see the new participant ID though.
- participant.topology.party_to_participant_mappings.list(synchronizerId, filterParty = partyId.filterString)
- res36: Seq[topology.ListPartyToParticipantResult] = Vector(
- ListPartyToParticipantResult(
- context = BaseResult(
- storeId = Synchronizer(id = global-domain::122025296c61...),
- validFrom = 2025-05-14T10:19:33.534074Z,
- validUntil = None,
- sequenced = 2025-05-14T10:19:33.534074Z,
- operation = Replace,
- transactionHash = ,
- serial = PositiveNumeric(value = 1),
- signedBy = Vector(1220b529c1d9...)
- ),
- item = PartyToParticipant(YOUR_PARTY_ID, PositiveNumeric(1), Vector(HostingParticipant(YOUR_PARTICIPANT_ID..., Submission)))
- )
- )
+ val topologyTransaction = participant.topology.transactions.generate(
+ Seq(
+ GenerateTransactions.Proposal(
+ partyToParticipant,
+ TopologyStoreId.Synchronizer(synchronizerId),
+ )
+ )
+ ).head
+
+ // Print out the hash that needs to be signed. Note that you need to sign
+ // the actual bytes the hex string represents not the hex string
+ topologyTransaction.hash.hash.toHexString
+
+We'll need the topology transaction and the definitions defined here later again. Either keep your Canton console open or save them.
+
+The topology transaction hash needs to be signed externally following the
+`documentation for external signing `_.
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-405.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-405.mdx
index 43b6e1c0e..0ab01ad71 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-405.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-405.mdx
@@ -1,6 +1,6 @@
```
- participant.synchronizers.disconnect_all()
- participant.repair.import_acs("acs_snapshot")
- participant.synchronizers.reconnect_all()
-
+ val topologyTxSignedByBoth = participant.topology.transactions.sign(
+ topologyTxSignedByParty,
+ TopologyStoreId.Synchronizer(synchronizerId),
+ signedBy = Seq(participantId.namespace.fingerprint)
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-485.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-485.mdx
new file mode 100644
index 000000000..0fa00888b
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-none-485.mdx
@@ -0,0 +1,9 @@
+```
+val existingPhysicalSynchronizerId = participant.synchronizers.list_connected().find(_.synchronizerAlias == "global").head.physicalSynchronizerId
+participant.synchronizers.perform_manual_lsu(
+ existingPhysicalSynchronizerId,
+ newPhysicalSynchronizerId,
+ upgradeTime = None,
+ sequencerSuccessors,
+)
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-268.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-268.mdx
new file mode 100644
index 000000000..14e917255
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-268.mdx
@@ -0,0 +1,3 @@
+```bash
+curl -sSL --fail-with-body '|gsf_scan_url|/api/scan/v0/acs/YOUR_PARTY_ID' -H 'Content-Type: application/json' | jq -r .acs_snapshot | base64 -d > acs_snapshot
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-443.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-443.mdx
new file mode 100644
index 000000000..fe2f10e3f
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-parsed-literal-443.mdx
@@ -0,0 +1,4 @@
+```bash
+// Make sure to adjust YOUR_VALID_FROM to the time you got from the previous query and YOUR_PARY_ID
+curl -sSL --fail-with-body '|gsf_scan_url|/api/scan/v0/acs/YOUR_PARTY_ID?record_time=YOUR_VALID_FROM' -H 'Content-Type: application/json' | jq -r .acs_snapshot | base64 -d > acs_snapshot
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-182.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-182.mdx
deleted file mode 100644
index 12c73bba7..000000000
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-182.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-```yaml
- additionalEnvVars:
- - name: ADDITIONAL_CONFIG_EXIT_ON_FATAL_FAILURES
- value: canton.parameters.exit-on-fatal-failures = false
-
-```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-185.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-185.mdx
new file mode 100644
index 000000000..52b0a9fc4
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-disaster-recovery-yaml-185.mdx
@@ -0,0 +1,5 @@
+```yaml
+additionalEnvVars:
+ - name: ADDITIONAL_CONFIG_EXIT_ON_FATAL_FAILURES
+ value: canton.parameters.exit-on-fatal-failures = false
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-103.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-103.mdx
index 44051e142..60300992e 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-103.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-103.mdx
@@ -1,6 +1,6 @@
```bash
- kubectl create secret generic postgres-secrets \
- --from-literal=postgresPassword=${POSTGRES_PASSWORD} \
- -n validator
+You can set ``http.nonProxyHosts`` to bypass the proxy for specific target
+hosts. Matching hosts will be contacted directly rather than through the
+configured proxy. This is useful for services that are reachable on the local
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-116.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-116.mdx
index 62e80fd46..5d38bec4d 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-116.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-116.mdx
@@ -1,6 +1,6 @@
```bash
- kubectl create secret generic splice-app-validator-onboarding-validator \
- "--from-literal=secret=${ONBOARDING_SECRET}" \
- -n validator
+ resolution is performed, so ``localhost`` and ``127.0.0.1`` are treated as
+ different names unless you list both.
+- An empty value (e.g. ``-Dhttp.nonProxyHosts=``) means "no bypass patterns".
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-310.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-310.mdx
index b84e5a97b..c2c2ed83f 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-310.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-310.mdx
@@ -1,10 +1,10 @@
```bash
- kubectl create --namespace validator secret generic splice-app-validator-ledger-api-auth \
- "--from-literal=ledger-api-user=${VALIDATOR_CLIENT_ID}@clients" \
- "--from-literal=url=${OIDC_AUTHORITY_URL}/.well-known/openid-configuration" \
- "--from-literal=client-id=${VALIDATOR_CLIENT_ID}" \
- "--from-literal=client-secret=${VALIDATOR_CLIENT_SECRET}" \
- "--from-literal=audience=${OIDC_AUTHORITY_LEDGER_API_AUDIENCE}" \
- "--from-literal=scope=${OIDC_AUTHORITY_LEDGER_API_SCOPE}"
+ e. Save your application settings.
+6. Create an Auth0 Application for the CNS web UI.
+ Repeat all steps described in step 5, with following modifications:
+
+ - In step b, use ``CNS web UI`` as the name of your application.
+ - In steps c and d, use the URL for your validator's *CNS* UI.
+ If you're using the ingress configuration of this runbook, that would be ``https://cns.validator.YOUR_HOSTNAME``.
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-322.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-322.mdx
index d17603266..f03956704 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-322.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-322.mdx
@@ -1,10 +1,10 @@
```bash
- kubectl create --namespace validator secret generic splice-app-wallet-ui-auth \
- "--from-literal=url=${OIDC_AUTHORITY_URL}" \
- "--from-literal=client-id=${WALLET_UI_CLIENT_ID}"
+It can be found in the Auth0 interface under User Management -> Users -> your user's name -> user_id (a field right under the user's name at the top).
- kubectl create --namespace validator secret generic splice-app-cns-ui-auth \
- "--from-literal=url=${OIDC_AUTHORITY_URL}" \
- "--from-literal=client-id=${CNS_UI_CLIENT_ID}"
+We will use the environment variables listed in the table below to refer to aspects of your Auth0 configuration:
+================================== ===========================================================================
+Name Value
+---------------------------------- ---------------------------------------------------------------------------
+OIDC_AUTHORITY_URL ``https://AUTH0_TENANT_NAME.us.auth0.com``
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-451.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-451.mdx
index 4a01fbee8..b17ca7185 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-451.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-451.mdx
@@ -1,11 +1,11 @@
```bash
- $ kubectl get pods -n validator
- NAMESPACE NAME READY STATUS RESTARTS AGE
- validator ans-web-ui-5bf489db78-bdn2j 1/1 Running 0 24m
- validator participant-8988dfb54-m9655 1/1 Running 0 26m
- validator postgres-0 1/1 Running 0 37m
- validator validator-app-f8c74d5dd-zf9j4 1/1 Running 0 24m
- validator wallet-web-ui-69d85cdb99-fnj7q 1/1 Running 0 24m
+- Replace ``YOUR_VALIDATOR_PARTY_HINT`` with the desired name for your
+ validator operator party. It must be of the format
+ ``--``.
+- Replace ``YOUR_VALIDATOR_NODE_NAME`` with the name you want your validator node to be represented as on the network. Usually you can use the same value as for your ``validatorPartyHint``.
+Finally, please download the UI config values file from
+https://github.com/global-synchronizer-foundation/configs/blob/main/configs/ui-config-values.yaml
+and add the values from it to your ``standalone-validator-values.yaml``.
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-514.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-514.mdx
index 916bc2b40..3eb15fc8d 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-514.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-514.mdx
@@ -1,7 +1,7 @@
```bash
- helm repo add istio https://istio-release.storage.googleapis.com/charts
- helm repo update
- helm install istio-base istio/base -n istio-system --set defaults.global.istioNamespace=cluster-ingress --wait
- helm install istiod istio/istiod -n cluster-ingress --set global.istioNamespace="cluster-ingress" --set meshConfig.accessLogFile="/dev/stdout" --wait
+* ``https://wallet.validator.`` should be routed to service ``wallet-web-ui`` in the ``validator`` namespace
+* ``https://wallet.validator./api/validator`` should be routed to ``/api/validator`` at port 5003 of service ``validator-app`` in the ``validator`` namespace
+* ``https://cns.validator.`` should be routed to service ``ans-web-ui`` in the ``validator`` namespace
+* ``https://cns.validator./api/validator`` should be routed to ``/api/validator`` at port 5003 of service ``validator-app`` in the ``validator`` namespace
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-526.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-526.mdx
index c0901575b..3d3cde3c5 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-526.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-526.mdx
@@ -1,5 +1,5 @@
```bash
- kubectl create ns cluster-ingress
-
-
+Internet ingress configuration is often specific to the network configuration and scenario of the
+cluster being configured. To illustrate the basic requirements of a Validator node ingress, we have
+provided a Helm chart that configures ingress according to the routes above using Istio, as detailed in the sections below.
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-567.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-567.mdx
index d962210a0..54b21a3d7 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-567.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-567.mdx
@@ -1,5 +1,5 @@
```bash
- helm install istio-ingress istio/gateway -n cluster-ingress -f istio-gateway-values.yaml
-
-
+ kind: Certificate
+ metadata:
+ name: cn-certificate
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-611.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-611.mdx
index 3ea9717bf..9cd7e629c 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-611.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-611.mdx
@@ -1,5 +1,5 @@
```bash
- kubectl apply -f gateway.yaml -n cluster-ingress
-
-
+ namespace: cluster-ingress
+ spec:
+ selector:
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-65.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-65.mdx
index b05f5efc8..6abfcd761 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-65.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-bash-65.mdx
@@ -1,4 +1,3 @@
```bash
kubectl create ns validator
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-472.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-472.mdx
new file mode 100644
index 000000000..bc6d47ca5
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-472.mdx
@@ -0,0 +1,5 @@
+```bash
+helm install postgres |helm_repo_prefix|/splice-postgres -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/postgres-values-validator-participant.yaml --wait
+helm install participant |helm_repo_prefix|/splice-participant -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/participant-values.yaml -f splice-node/examples/sv-helm/standalone-participant-values.yaml --wait
+helm install validator |helm_repo_prefix|/splice-validator -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/validator-values.yaml -f splice-node/examples/sv-helm/standalone-validator-values.yaml --wait
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-657.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-657.mdx
new file mode 100644
index 000000000..b0dbc53c5
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-parsed-literal-657.mdx
@@ -0,0 +1,3 @@
+```bash
+helm install cluster-ingress-validator |helm_repo_prefix|/splice-cluster-ingress-runbook -n validator --version ${CHART_VERSION} -f splice-node/examples/sv-helm/validator-cluster-ingress-values.yaml
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-127.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-127.mdx
new file mode 100644
index 000000000..158786809
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-127.mdx
@@ -0,0 +1,6 @@
+```yaml
+additionalJvmOptions: |
+ -Dhttps.proxyHost=your.proxy.host
+ -Dhttps.proxyPort=your_proxy_port
+ -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.internal|10.*
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-535.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-535.mdx
index d15c6499f..dd8681e38 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-535.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-535.mdx
@@ -1,15 +1,15 @@
```yaml
- apiVersion: cert-manager.io/v1
- kind: Certificate
- metadata:
- name: cn-certificate
- namespace: cluster-ingress
- spec:
- dnsNames:
- - '*.validator.YOUR_HOSTNAME'
- issuerRef:
- name: letsencrypt-production
- secretName: cn-net-tls
+* *cert-manager* must be available in the cluster (See `cert-manager documentation `_)
+* *istio* should be installed in the cluster (See `istio documentation `_)
+*Note that their deployments are often platform-dependent and good documentations on how to set them up can be found online.*
+
+**Example of Istio installation:**
+
+.. code-block:: bash
+
+ helm repo add istio https://istio-release.storage.googleapis.com/charts
+ helm repo update
+ helm install istio-base istio/base -n istio-system --set defaults.global.istioNamespace=cluster-ingress --wait
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-553.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-553.mdx
index 06961ab0c..4bba621fd 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-553.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-553.mdx
@@ -1,12 +1,12 @@
```yaml
- service:
- loadBalancerIP: "YOUR_CLUSTER_IP"
- loadBalancerSourceRanges:
- - "35.194.81.56/32"
- - "35.198.147.95/32"
- - "35.189.40.124/32"
- - "34.132.91.75/32"
+Create a `cluster-ingress` namespace:
+.. code-block:: bash
+ kubectl create ns cluster-ingress
+
+Ensure that there is a cert-manager certificate available in a secret
+named ``cn-net-tls``. An example of a suitable certificate
+definition:
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-576.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-576.mdx
index 5ff9d9ed3..72bcdba7b 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-576.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-576.mdx
@@ -1,33 +1,33 @@
```yaml
- apiVersion: networking.istio.io/v1alpha3
- kind: Gateway
- metadata:
- name: cn-http-gateway
- namespace: cluster-ingress
- spec:
- selector:
- app: istio-ingress
- istio: ingress
- servers:
- - port:
- number: 443
- name: https
- protocol: HTTPS
- tls:
- mode: SIMPLE
- credentialName: cn-net-tls # name of the secret created above
- hosts:
- - "*.YOUR_HOSTNAME"
- - "YOUR_HOSTNAME"
- - port:
- number: 80
- name: http
- protocol: HTTP
- tls:
- httpsRedirect: true
- hosts:
- - "*.YOUR_HOSTNAME"
- - "YOUR_HOSTNAME"
+ secretName: cn-net-tls
+Create a file named ``istio-gateway-values.yaml`` with the following content
+(Tip: on GCP you can get the cluster IP from ``gcloud compute addresses list``):
+
+.. code-block:: yaml
+
+ service:
+ loadBalancerIP: "YOUR_CLUSTER_IP"
+ loadBalancerSourceRanges:
+ - "35.194.81.56/32"
+ - "35.198.147.95/32"
+ - "35.189.40.124/32"
+ - "34.132.91.75/32"
+
+
+
+And install it to your cluster:
+
+.. code-block:: bash
+
+ helm install istio-ingress istio/gateway -n cluster-ingress -f istio-gateway-values.yaml
+
+
+Create an Istio Gateway resource in the `cluster-ingress` namespace. Save the following to a file named `gateway.yaml`,
+and replace ``YOUR_HOSTNAME`` with the actual hostname you want to use for your validator node
+(and has a DNS record pointing to the cluster IP you configured above):
+
+.. code-block:: yaml
+
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-771.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-771.mdx
index c57c1ee7d..3c5123779 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-771.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-771.mdx
@@ -1,12 +1,12 @@
```yaml
- # if you want to disable the default postgres init container:
- persistence:
- enablePgInitContainer: false
+Refer to the Canton documentation for more details on participant pruning:
- # if you want additional init containers:
- extraInitContainers:
- - name: my-extra-container
- image: busybox
- command: [ "sh", "-c", "echo 'example extra container'" ]
+* https://docs.daml.com/ops/pruning.html
+* https://docs.daml.com/canton/usermanual/pruning.html
+
+.. literalinclude:: ../../../apps/app/src/pack/examples/sv-helm/validator-values.yaml
+ :language: yaml
+ :start-after: PARTICIPANT_PRUNING_SCHEDULE_START
+ :end-before: PARTICIPANT_PRUNING_SCHEDULE_END
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-797.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-797.mdx
index 8e08b26d7..0daad6996 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-797.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-797.mdx
@@ -1,11 +1,11 @@
```yaml
- extraInitContainers:
- - name: chown-domain-upgrade-dump
- image: busybox:1.37.0
- command: ["sh", "-c", "chown -R 1001:1001 /domain-upgrade-dump"]
- volumeMounts:
- - name: domain-upgrade-dump-volume
- mountPath: /domain-upgrade-dump
+ command: [ "sh", "-c", "echo 'example extra container'" ]
+.. _helm-validator-volume-ownership:
+Working around volume ownership issues
+--------------------------------------
+
+The containers in the ``splice-validator`` chart run as non-root users (specifically, user:group 1001:1001) for security reasons.
+The pod mounts volumes for use by the containers, and these volumes need to be owned by the user that the containers run as.
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-82.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-82.mdx
index 2e49a96b7..cf29f0e0c 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-82.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-helm-yaml-82.mdx
@@ -1,6 +1,5 @@
```yaml
- additionalJvmOptions: |
- -Dhttps.proxyHost=your.proxy.host
- -Dhttps.proxyPort=your_proxy_port
-
+additionalJvmOptions: |
+ -Dhttps.proxyHost=your.proxy.host
+ -Dhttps.proxyPort=your_proxy_port
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-107.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-107.mdx
index edf034416..3bd45c2c8 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-107.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-107.mdx
@@ -9,5 +9,4 @@
https://scan.sv-2.test.global.canton.network.cumberland.io: 0.3.6
https://scan.sv-1.test.global.canton.network.c7.digital: 0.3.6
https://scan.sv-1.test.global.canton.network.digitalasset.com: 0.3.6
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-136.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-136.mdx
index c3564e443..6e6db2a66 100644
--- a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-136.mdx
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-bash-136.mdx
@@ -29,5 +29,4 @@
sequencer-1.sv-1.test.global.canton.network.digitalasset.com: {
"status": "SERVING"
}
-
```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-126.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-126.mdx
new file mode 100644
index 000000000..948cd4b29
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-126.mdx
@@ -0,0 +1,7 @@
+```bash
+(set -o pipefail
+for url in $(curl -fsS -m 5 --connect-timeout 5 |gsf_scan_url|/api/scan/v0/dso-sequencers | jq -r '.domainSequencers[].sequencers[].url | sub("https://"; "")'); do
+ echo -n "$url: "
+ grpcurl --max-time 10 "$url":443 grpc.health.v1.Health/Check
+done)
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-86.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-86.mdx
new file mode 100644
index 000000000..c2e283ced
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-86.mdx
@@ -0,0 +1,3 @@
+```bash
+curl -sSL http://checkip.amazonaws.com
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-95.mdx b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-95.mdx
new file mode 100644
index 000000000..05499db47
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-code-docs-src-validator-operator-validator-onboarding-parsed-literal-95.mdx
@@ -0,0 +1,8 @@
+```bash
+(set -o pipefail
+CURL='curl -fsS -m 5 --connect-timeout 5'
+for url in $($CURL |gsf_scan_url|/api/scan/v0/scans | jq -r '.scans[].scans[].publicUrl'); do
+ echo -n "$url: "
+ $CURL "$url"/api/scan/version | jq -r '.version'
+done)
+```
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-backup-suggestion.mdx b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-backup-suggestion.mdx
new file mode 100644
index 000000000..38ecd8c4a
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-backup-suggestion.mdx
@@ -0,0 +1,19 @@
+
+
+**If you lose your keys, you lose access to your coins**. While regular backups are not necessary to run your node,
+
+they are **strongly** recommended for recovery purposes.
+
+You should regularly back up all databases in your deployment and ensure you always have an up-to-date identities backup.
+
+Super Validators retain the information necessary to allow you to recover your Canton Coin from an identities backup.
+
+On the other hand, Super Validators **do not** retain transaction details from applications they are not involved in.
+
+This means that if you have other applications installed, the Super Validators cannot help you recover data from those apps;
+
+you can only rely on your own backups.
+
+(More information in [Backups section for Validators](/global-synchronizer/production-operations/validator-backups) or [Backups section for SVs](/global-synchronizer/production-operations/sv-backup))
+
+
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-reloader-recommendation.mdx b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-reloader-recommendation.mdx
new file mode 100644
index 000000000..e69de29bb
diff --git a/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-sv-extra-dars-notice.mdx b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-sv-extra-dars-notice.mdx
new file mode 100644
index 000000000..84fd911cf
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-sv-extra-dars-notice.mdx
@@ -0,0 +1,13 @@
+
+
+As an SV operator, you are most welcome to review, install, and use third-party Daml apps provided you
+
+**install third-party Daml apps on a validator node separate from your SV node**.
+
+Installing additional Daml apps on an SV node is not supported and may compromise its secure
+
+operations. In particular, please refrain from manually uploading additional `.dar` files
+
+to your SV node or manually connecting it to third-party synchronizers.
+
+
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-traffic-topups.mdx b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-traffic-topups.mdx
new file mode 100644
index 000000000..c01ccc96a
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-traffic-topups.mdx
@@ -0,0 +1,15 @@
+On each successful top-up, the validator app purchases a `top-up amount` of roughly `targetThroughput * minTopupInterval` bytes of traffic (specific amount can vary due to rounding-up). The `minTopupInterval` allows validator operators to control the upper-bound frequency at which automated top-ups happen. If the top-up amount is below the synchronizer-wide `minTopupAmount` (see [traffic parameters](/global-synchronizer/deployment/synchronizer-traffic#traffic-parameters)), `minTopupInterval` is automatically stretched so that at least `minTopupAmount` bytes of traffic are purchased while respecting the configured `targetThroughput`.
+
+The next top-up gets triggered when all of the following conditions are met:
+
+
+
+- The available [extra traffic balance](/global-synchronizer/deployment/synchronizer-traffic#traffic-accounting-what-counts-as-traffic) drops below the configured top-up amount (i.e., below `targetThroughput * minTopupInterval`).
+
+- At least `minTopupInterval` has elapsed since the last top-up.
+
+- The validator has sufficient CC in its wallet to buy the top-up amount worth on traffic (except on DevNet, where the validator app will automatically tap enough coin to purchase traffic).
+
+
+
+Validators receive a small amount of free traffic from the Super Validators, which suffices for submitting the top-up transaction. However, if many other transactions are submitted, you may run into a situation where you have exhausted also the free traffic, thus the validator cannot submit the top-up transaction. The free traffic grant accumulates gradually and continuously. When no transactions are submitted, it takes about twenty minutes for free traffic to accumulate to the maximum possible. If you've consumed your traffic balance by submitting too many transactions without purchasing traffic, pause your Validator node (validator app and participant) for twenty minutes to allow your free traffic balance to accumulate.
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-wallet-sweeps.mdx b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-wallet-sweeps.mdx
new file mode 100644
index 000000000..b331f2efb
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-full-docs-src-common-wallet-sweeps.mdx
@@ -0,0 +1,5 @@
+You can optionally configure the validator to automatically create transfer offers to other parties on the network whenever the balance of certain parties that it hosts exceeds a certain threshold.
+
+Whenever the balance of `` exceeds `maxBalanceUSD`, the validator will automatically create a transfer offer to ``, for an amount that leaves `minBalanceUSD` in the sender's wallet. Note that you will need to know the party IDs of both the sender and receiver, which can be copied from the wallet UIs of the respective users (in the top right corner). This therefore needs to be applied to the Helm chart in a second step after the initial deployment, once the party IDs are known.
+
+Whenever the validator receives a transfer offer from `` to ``, it will automatically accept it. Similarly to sweeps, party IDs must be known in order to apply this configuration.
\ No newline at end of file
diff --git a/docs-main/snippets/external/splice/main/splice-rst-partial-docs-src-validator-operator-required-network-parameters-9.mdx b/docs-main/snippets/external/splice/main/splice-rst-partial-docs-src-validator-operator-required-network-parameters-9.mdx
new file mode 100644
index 000000000..0b4910323
--- /dev/null
+++ b/docs-main/snippets/external/splice/main/splice-rst-partial-docs-src-validator-operator-required-network-parameters-9.mdx
@@ -0,0 +1,38 @@
+To initialize your validator node, you need the following parameters that define the network you're onboarding to and the secret required for doing so.
+
+
+
+- **MIGRATION_ID** — The current migration id of the network (dev/test/mainnet) you are trying to connect to. This value is frozen and must not be changed from the last value. You can find this on https://sync.global/sv-network/.
+
+- **SPONSOR_SV_URL** — The URL of the SV app of your SV sponsor. This should be of the form |generic_sv_url|, e.g., if the Global Synchronizer Foundation is your sponsor use |gsf_sv_url|.
+
+
+
+**ONBOARDING_SECRET**
+The onboarding secret provided by your sponsor. If you don't already have one, ask your sponsor. Note that onboarding secrets are one-time use and expire after 48 hours. If you don't join before it expires, you need to request a new secret from your SV sponsor.
+
+
+
+
+
+On DevNet, you can obtain an onboarding secret automatically by calling the following endpoint on any SV (replace `SPONSOR_SV_URL` with the SV app URL defined above):
+
+
+
+```bash
+curl -X POST SPONSOR_SV_URL/api/sv/v0/devnet/onboard/validator/prepare
+```
+
+
+
+Make sure to use the **SV app URL** (starting with `sv.`), not the Scan URL (starting with `scan.`).
+
+
+
+
+
+Note that this self-served secret is only valid for 1 hour.
+
+
+
+
\ No newline at end of file
diff --git a/scripts/helpers/generateOutputDocs.js b/scripts/helpers/generateOutputDocs.js
index 742e543b8..8690e5ee2 100644
--- a/scripts/helpers/generateOutputDocs.js
+++ b/scripts/helpers/generateOutputDocs.js
@@ -8,9 +8,10 @@
const fs = require('fs')
const path = require('path')
+const { convertRstIncludeToMdx } = require('./rstIncludeToMdx')
const REPO_ROOT = path.join(__dirname, '..', '..')
-const EXPORT_CONFIG_PATH = path.join(REPO_ROOT, 'docs/config/exportConfig.json')
+const EXPORT_CONFIG_PATH = path.join(__dirname, 'exportConfig.json')
const OUTPUT_FOLDER_PATH = path.join(REPO_ROOT, 'docs-output')
function readFileContent(filePath) {
@@ -52,13 +53,25 @@ function extractByStringMarker(fileContent, startMarker, endMarker) {
throw new Error(`Start marker not found: "${startMarker}"`)
}
- const contentStart = startIndex + startMarker.length
+ // Match Sphinx literalinclude :start-after: / :end-before: — exclude marker lines.
+ let contentStart = fileContent.indexOf('\n', startIndex)
+ if (contentStart === -1) {
+ contentStart = startIndex + startMarker.length
+ } else {
+ contentStart += 1
+ }
+
const endIndex = fileContent.indexOf(endMarker, contentStart)
if (endIndex === -1) {
throw new Error(`End marker not found: "${endMarker}"`)
}
- return fileContent.substring(contentStart, endIndex).trim()
+ let contentEnd = fileContent.lastIndexOf('\n', endIndex)
+ if (contentEnd < contentStart) {
+ contentEnd = endIndex
+ }
+
+ return fileContent.substring(contentStart, contentEnd).trim()
}
function extractByRegexWrap(fileContent, startRegex, endRegex) {
@@ -159,25 +172,133 @@ function normalizeIndent(content) {
}
}
- if (minIndent === null || minIndent === 0) {
- return lines
- .map((line) =>
- line.trim() === '' ? '' : ` ${line.replace(/^\s*/, '')}`
- )
- .join('\n')
- }
-
+ // Strip the common leading whitespace from every non-blank line and then
+ // re-indent the whole block by two spaces. Using `line.slice(strip)`
+ // (instead of stripping ALL leading whitespace) preserves the relative
+ // indentation between lines — including the case where minIndent is 0,
+ // which would otherwise flatten any source that contains a top-level
+ // line at column 0 (e.g. HOCON config files where a `}` closes at the
+ // start of the line).
+ const strip = minIndent ?? 0
return lines
.map((line) => {
if (line.trim() === '') return ''
- return ` ${line.slice(minIndent)}`
+ return ` ${line.slice(strip)}`
})
.join('\n')
}
-function formatSnippetContent(content, options) {
+/** Strip common leading indent only; first line starts at column 0 (HOCON/config in RST). */
+function baselineIndent(content) {
+ const lines = content.split('\n')
+ let minIndent = null
+ for (const line of lines) {
+ if (line.trim() === '') continue
+ const indent = (line.match(/^(\s*)/) || ['', ''])[1].length
+ if (minIndent === null || indent < minIndent) minIndent = indent
+ }
+ const strip = minIndent ?? 0
+ return lines
+ .map((line) => (line.trim() === '' ? '' : line.slice(strip)))
+ .join('\n')
+}
+
+function applyIndentOption(content, normalizeIndentOption) {
+ if (normalizeIndentOption === false) return content
+ if (normalizeIndentOption === 'baseline') return baselineIndent(content)
+ return normalizeIndent(content)
+}
+
+function trimBlankEdges(content) {
+ return content.replace(/^\s*\n+/, '').replace(/\n+\s*$/, '')
+}
+
+function convertRstBlocksToMarkdown(content, fallbackLanguage = '') {
+ const input = trimBlankEdges(content)
+ const lines = input.split('\n')
+ const out = []
+ let i = 0
+
+ while (i < lines.length) {
+ const m = lines[i].match(/^\s*\.\.\s+code-block::\s*(\S*)\s*$/)
+ if (!m) {
+ i++
+ continue
+ }
+
+ let language = (m[1] || '').trim()
+ if (!language || language.toLowerCase() === 'none') {
+ language = fallbackLanguage || ''
+ }
+
+ i++
+ while (i < lines.length && lines[i].trim() === '') i++
+
+ const block = []
+ while (i < lines.length) {
+ const line = lines[i]
+ if (line.trim() === '') {
+ block.push('')
+ i++
+ continue
+ }
+
+ if (/^( {4}|\t)/.test(line)) {
+ block.push(line.replace(/^( {4}|\t)/, ''))
+ i++
+ continue
+ }
+ break
+ }
+
+ while (block.length > 0 && block[block.length - 1] === '') {
+ block.pop()
+ }
+
+ if (language) {
+ out.push(`\`\`\`${language}`)
+ } else {
+ out.push('```')
+ }
+ out.push(block.join('\n'))
+ out.push('```')
+ out.push('')
+ }
+
+ if (out.length === 0) {
+ // Safety fallback: strip any leftover RST directives and keep only content.
+ const cleaned = input
+ .split('\n')
+ .filter((line) => !/^\s*\.\.\s+code-block::/.test(line))
+ .join('\n')
+ const trimmed = trimBlankEdges(cleaned)
+ const language = fallbackLanguage || ''
+ if (language) {
+ return `\`\`\`${language}\n${trimmed}\n\`\`\``
+ }
+ return `\`\`\`\n${trimmed}\n\`\`\``
+ }
+
+ while (out.length > 0 && out[out.length - 1] === '') out.pop()
+ return out.join('\n')
+}
+
+function formatSnippetContent(content, options, globalOptions = {}) {
+ let body = content
+ if (options && options.unescapeRstQuotes) {
+ body = body.replace(/\\'/g, "'")
+ }
+ if (options && options.transform === 'rstinclude') {
+ return convertRstIncludeToMdx(body, {
+ refTargets: {
+ ...(globalOptions.rstIncludeRefTargets || {}),
+ ...(options.refTargets || {}),
+ },
+ })
+ }
if (options && options.transform === 'rstjson') {
- return content
+ const language = options && options.language ? options.language : ''
+ return convertRstBlocksToMarkdown(body, language)
}
const displayStyle = (options && options.displayStyle) || 'wrapCode'
const rawLanguage = options && options.language ? options.language : ''
@@ -187,9 +308,9 @@ function formatSnippetContent(content, options) {
switch (displayStyle) {
case 'wrapCode':
if (language) {
- return `\`\`\`${language}\n${content}\n\`\`\``
+ return `\`\`\`${language}\n${body}\n\`\`\``
} else {
- return `\`\`\`\n${content}\n\`\`\``
+ return `\`\`\`\n${body}\n\`\`\``
}
default:
@@ -207,9 +328,11 @@ function getSourceFilePath(snippet) {
}
}
-function processSnippet(snippet) {
+function processSnippet(snippet, verbose, globalOptions = {}) {
try {
- console.log(`Processing snippet: ${snippet.snippetName}`)
+ if (verbose) {
+ console.log(`Processing snippet: ${snippet.snippetName}`)
+ }
if (!snippet.snippetName) {
throw new Error('Snippet missing required field: snippetName')
@@ -229,14 +352,22 @@ function processSnippet(snippet) {
fileContent,
snippet.location
)
- const normalizedContent =
- snippet.options && snippet.options.transform === 'rstjson'
- ? extractedContent
- : normalizeIndent(extractedContent)
+ const skipTransform =
+ snippet.options &&
+ (snippet.options.transform === 'rstjson' ||
+ snippet.options.transform === 'rstinclude')
+ const indentOpt = snippet.options?.normalizeIndent
+ const normalizedContent = skipTransform
+ ? extractedContent
+ : applyIndentOption(
+ extractedContent,
+ indentOpt === undefined ? true : indentOpt
+ )
const formattedContent = formatSnippetContent(
normalizedContent,
- snippet.options || {}
+ snippet.options || {},
+ globalOptions
)
const outputFileName = `${snippet.snippetName}.mdx`
@@ -247,7 +378,9 @@ function processSnippet(snippet) {
fs.writeFileSync(outputPath, formattedContent, 'utf8')
- console.log(`✓ Successfully extracted snippet to: ${outputPath}`)
+ if (verbose) {
+ console.log(`✓ Successfully extracted snippet to: ${outputPath}`)
+ }
} catch (error) {
console.error(
`✗ Error processing snippet "${snippet.snippetName}": ${error.message}`
@@ -262,6 +395,7 @@ function processSnippet(snippet) {
*/
function main() {
try {
+ const verbose = process.argv.includes('--verbose')
const configContent = readFileContent(EXPORT_CONFIG_PATH)
const config = JSON.parse(configContent)
@@ -274,9 +408,13 @@ function main() {
let successCount = 0
let errorCount = 0
+ const globalOptions = {
+ rstIncludeRefTargets: config.rstIncludeRefTargets || {},
+ }
+
for (const snippet of config.snippets) {
try {
- processSnippet(snippet)
+ processSnippet(snippet, verbose, globalOptions)
successCount++
} catch (error) {
errorCount++