diff --git a/docs-main/appdev/deep-dives/external-signing-transactions.mdx b/docs-main/appdev/deep-dives/external-signing-transactions.mdx index 6fd1608d..a5774eed 100644 --- a/docs-main/appdev/deep-dives/external-signing-transactions.mdx +++ b/docs-main/appdev/deep-dives/external-signing-transactions.mdx @@ -1066,7 +1066,7 @@ prepared_create_transaction = prepare_create_response.prepared_transaction - `command_id`: Unique, random string identifying this specific command. Each command submission must have a new and unique `command_id`. - `act_as`: ID of the party issuing the command. - `synchronizer_id`: ID of the synchronizer that processes the transaction upon submission. -- `commands`: Ledger commands for submission. In this case, it shows the creation of a Ping contract with `Alice` as the initiator, `Bob` as the responder, and a `ping_id` value. See the [command documentation](https://docs.daml.com/app-dev/grpc/proto-docs.html#command-message-version-com-daml-ledger-api-v1) for details. +- `commands`: Ledger commands for submission. In this case, it shows the creation of a Ping contract with `Alice` as the initiator, `Bob` as the responder, and a `ping_id` value. See the [Ledger API command reference](/reference/grpc-ledger-api-reference/com-daml-ledger-api-v2) for details. ### Response @@ -1274,7 +1274,7 @@ In the request, note the presence of: - `signatures`: Object containing the signature of the transaction hash, along with metadata. In particular: > - `signing_algorithm_spec`: Will vary depending on the key used during onboarding. - > - `signed_by`: Fingerprint of the protocol signing *public* key of `Alice`. This tutorial assumes the same key was used to create `Alice`'s namespace and her protocol signing key. This is why the fingerprint of the signing key matches the second part of her Party Id (after `::`). For more details check out the onboarding tutorial and the [parties documentation](https://docs.daml.com/app-dev/parties-users.html#party-id-hints-and-display-names). + > - `signed_by`: Fingerprint of the protocol signing *public* key of `Alice`. This tutorial assumes the same key was used to create `Alice`'s namespace and her protocol signing key. This is why the fingerprint of the signing key matches the second part of her Party Id (after `::`). For more details check out the onboarding tutorial and the [Daml parties guide](/appdev/deep-dives/manage-daml-parties). If the gRPC Ledger API authorization is enabled, the user must have the `actAs` claim on behalf of `Alice` to call the `execute` endpoint. diff --git a/docs-main/appdev/deep-dives/multi-hosting.mdx b/docs-main/appdev/deep-dives/multi-hosting.mdx index 888b00e9..20ecb205 100644 --- a/docs-main/appdev/deep-dives/multi-hosting.mdx +++ b/docs-main/appdev/deep-dives/multi-hosting.mdx @@ -45,7 +45,7 @@ Each hosting validator is assigned one of three permission levels: Multi-hosting requires several topology transactions that maps the party to multiple validators. All hosting validators must sign the mapping — it's a proposal that becomes active only when all parties agree. -The instructions below apply to **new external parties**. Adding hosting nodes to existing parties is called [party replication](https://docs.digitalasset.com/operate/3.4/howtos/operate/parties/party_replication.html) and is a different, more involved workflow. For external parties, the external party must authorize (sign) the party to participant mapping with its own key. See the [external signing onboarding documentation](https://docs.digitalasset.com/build/3.5/tutorials/app-dev/external_signing_onboarding.html) for details. +The instructions below apply to **new external parties**. Adding hosting nodes to existing parties is called [party replication](/appdev/deep-dives/manage-daml-parties) and is a different, more involved workflow. For external parties, the external party must authorize (sign) the party to participant mapping with its own key. See the [external signing onboarding documentation](/appdev/deep-dives/external-signing-onboarding) for details. ### Via the Ledger API diff --git a/docs-main/appdev/deep-dives/performance-optimization.mdx b/docs-main/appdev/deep-dives/performance-optimization.mdx index 71b18198..3d0160e1 100644 --- a/docs-main/appdev/deep-dives/performance-optimization.mdx +++ b/docs-main/appdev/deep-dives/performance-optimization.mdx @@ -1339,7 +1339,7 @@ The default PostgreSQL Docker image ships with minimal settings. For any realist - `max_connections` — Match to your expected connection pool size - `autovacuum` settings — Tune for your write patterns -Resource requirements depend on your workload. Consult the [PQS operations guide](https://docs.digitalasset.com/canton/usermanual/pqs) for sizing guidance specific to your query patterns and contract volumes. +Resource requirements depend on your workload. Tune sizing based on your query patterns and contract volumes. {/* COPIED_END */} diff --git a/docs-main/appdev/faq.mdx b/docs-main/appdev/faq.mdx index a72b1f19..6fb21728 100644 --- a/docs-main/appdev/faq.mdx +++ b/docs-main/appdev/faq.mdx @@ -664,8 +664,8 @@ If a course doesn't mention Canton Network or Daml 3.x, or covers only Daml 2.x **Recommended resources:** 1. **Official Documentation:** - - [Build Documentation](https://docs.digitalasset.com/build/3.4) - - [Operator Documentation](https://docs.sync.global) + - [Build Documentation](/appdev/get-started/choose-your-path) + - [Operator Documentation](/global-synchronizer) 2. **Hands-on:** - [Canton Quickstart](https://github.com/digital-asset/cn-quickstart) @@ -759,7 +759,7 @@ Redact sensitive information (private keys, passwords, JWTs) before sharing logs **TestNet → MainNet:** 1. Complete MainNet validator onboarding 2. Request MainNet IP whitelisting -3. Follow [MainNet onboarding documentation](https://docs.sync.global/validator_operator/validator_onboarding.html) +3. Follow [MainNet onboarding documentation](/global-synchronizer/deployment/onboarding-process) 4. Deploy with production configuration diff --git a/docs-main/appdev/get-started/upgrading-from-previous-versions.mdx b/docs-main/appdev/get-started/upgrading-from-previous-versions.mdx index 848cb986..2a6c2ba2 100644 --- a/docs-main/appdev/get-started/upgrading-from-previous-versions.mdx +++ b/docs-main/appdev/get-started/upgrading-from-previous-versions.mdx @@ -9,7 +9,7 @@ Per-version migration steps live with the component release notes. Use the links - **Splice and the Global Synchronizer** — [Current release](/global-synchronizer/release-notes/current-release), [release history](/global-synchronizer/release-notes/release-history), [weekly patch releases](/global-synchronizer/release-notes/weekly-patch-releases) - **Wallet SDK** — [Wallet SDK release notes](/integrations/wallet/release-notes) -- **Canton and Daml SDK** — [GitHub releases (digital-asset/daml)](https://github.com/digital-asset/daml/releases) and the upstream changelog at [docs.digitalasset.com](https://docs.digitalasset.com) +- **Canton and Daml SDK** — [GitHub releases (digital-asset/daml)](https://github.com/digital-asset/daml/releases) ## From Canton 2.x to 3.x diff --git a/docs-main/appdev/get-started/whats-new.mdx b/docs-main/appdev/get-started/whats-new.mdx index 937a9610..6354d2a4 100644 --- a/docs-main/appdev/get-started/whats-new.mdx +++ b/docs-main/appdev/get-started/whats-new.mdx @@ -7,7 +7,7 @@ For changes shipping in each component, see the corresponding release notes: - **Splice and the Global Synchronizer** — [Current release](/global-synchronizer/release-notes/current-release), [release history](/global-synchronizer/release-notes/release-history), [weekly patch releases](/global-synchronizer/release-notes/weekly-patch-releases) - **Wallet SDK** — [Wallet SDK release notes](/integrations/wallet/release-notes) -- **Canton and Daml SDK** — [GitHub releases (digital-asset/daml)](https://github.com/digital-asset/daml/releases) and the upstream documentation at [docs.digitalasset.com](https://docs.digitalasset.com) +- **Canton and Daml SDK** — [GitHub releases (digital-asset/daml)](https://github.com/digital-asset/daml/releases) - **CIPs** — [Canton Improvement Proposals](https://github.com/global-synchronizer-foundation/cips) ## Version compatibility diff --git a/docs-main/appdev/modules/m1-understanding-canton.mdx b/docs-main/appdev/modules/m1-understanding-canton.mdx index cdb07061..66c6ab24 100644 --- a/docs-main/appdev/modules/m1-understanding-canton.mdx +++ b/docs-main/appdev/modules/m1-understanding-canton.mdx @@ -96,4 +96,4 @@ By the end of this module, you'll understand: After completing this module, continue to: - **[Module 2](/appdev/modules/m2-canton-for-ethereum-devs)**: If you have Ethereum/blockchain experience -- **[Daml Documentation](https://docs.daml.com)**: If you're ready to start writing Daml +- **[Choose your path](/appdev/get-started/choose-your-path)**: If you're ready to start writing Daml diff --git a/docs-main/appdev/modules/m2-migration-checklist.mdx b/docs-main/appdev/modules/m2-migration-checklist.mdx index 3d13aa8a..1047f0c9 100644 --- a/docs-main/appdev/modules/m2-migration-checklist.mdx +++ b/docs-main/appdev/modules/m2-migration-checklist.mdx @@ -41,7 +41,7 @@ If your app heavily relies on global state queries (e.g., "show all NFTs"), you' -- [ ] Install the [Daml SDK](https://docs.daml.com/getting-started/installation.html) +- [ ] Install the [Daml SDK](/sdks-tools/sdks/daml-sdk) - [ ] Install VS Code with the Daml extension - [ ] Clone the [CN Quickstart](https://github.com/digital-asset/cn-quickstart) repository - [ ] Run `make setup && make build && make start` to verify your setup works diff --git a/docs-main/appdev/modules/m3-building-packaging.mdx b/docs-main/appdev/modules/m3-building-packaging.mdx index df955d0f..ed348d78 100644 --- a/docs-main/appdev/modules/m3-building-packaging.mdx +++ b/docs-main/appdev/modules/m3-building-packaging.mdx @@ -12,7 +12,7 @@ The application from `compose` is a complete and secure model for atomic swaps o 1. Upgrades, which change existing logic. For example, one might want the `Asset` template to have multiple signatories. 2. Extensions, which merely add new functionality through additional templates. -Upgrades are covered in their own section outside this introduction to Daml: [smart contract upgrades](https://docs.digitalasset.com/build/3.4/sdk/explanations/smart-contract-upgrades), +Upgrades are covered in their own section outside this introduction to Daml: [smart contract upgrades](/appdev/deep-dives/smart-contract-upgrade), so in this section we will extend the `compose` model with a simple second workflow: a multi-leg trade. In doing so, you'll learn about: - The software architecture of the Daml stack @@ -111,7 +111,7 @@ The `MultiTrade` model has more complex control flow and data handling than prev ## Building with dpm -When working on Canton Network projects, use the [`dpm`](https://docs.digitalasset.com/build/3.4/dpm/dpm.html) tool for all build operations: +When working on Canton Network projects, use the [`dpm`](/sdks-tools/cli-tools/dpm) tool for all build operations: - `dpm build` — Compile your Daml project and produce a DAR file - `dpm build --all` — Build all packages in a multi-package project diff --git a/docs-main/appdev/modules/m3-contract-keys.mdx b/docs-main/appdev/modules/m3-contract-keys.mdx index 28b6955d..9058ff74 100644 --- a/docs-main/appdev/modules/m3-contract-keys.mdx +++ b/docs-main/appdev/modules/m3-contract-keys.mdx @@ -48,7 +48,7 @@ Checking of the keys is done automatically at execution time, by the Daml execut The primary purpose of contract keys is to provide a stable, and possibly meaningful, identifier that can be used in Daml to fetch contracts. There are two functions to perform such lookups: `fetchbykey` and `lookupbykey`. Both types of lookup are performed at interpretation time on the submitting Participant Node, on a best-effort basis. Currently, that best-effort means lookups only return contracts if the submitting Party is a stakeholder of that contract. -In particular, the above means that if multiple commands are submitted simultaneously, all using contract lookups to find and consume a given contract, there will be contention between these commands, and at most one will succeed. For more information, see the section on avoiding contention in the [Canton documentation](https://docs.digitalasset.com/canton/usermanual/performance/index.html). +In particular, the above means that if multiple commands are submitted simultaneously, all using contract lookups to find and consume a given contract, there will be contention between these commands, and at most one will succeed. For more information, see the [performance optimization deep dive](/appdev/deep-dives/performance-optimization). Limiting key usage to stakeholders also means that keys cannot be used to access a divulged contract, i.e. there can be cases where `fetch` succeeds and `fetchByKey` does not. See the example at the end of this section for details. diff --git a/docs-main/appdev/modules/m3-dev-environment.mdx b/docs-main/appdev/modules/m3-dev-environment.mdx index 66bc6643..71f4a349 100644 --- a/docs-main/appdev/modules/m3-dev-environment.mdx +++ b/docs-main/appdev/modules/m3-dev-environment.mdx @@ -13,7 +13,7 @@ In this module, you will learn about the structure of a Daml ledger and how to w ## Prerequisites -- You have installed [dpm](https://docs.digitalasset.com/build/3.4/dpm/dpm.html) +- You have installed [dpm](/sdks-tools/cli-tools/dpm) ## Loading Example Code diff --git a/docs-main/appdev/modules/m3-language-fundamentals.mdx b/docs-main/appdev/modules/m3-language-fundamentals.mdx index 0b5de81a..848198ca 100644 --- a/docs-main/appdev/modules/m3-language-fundamentals.mdx +++ b/docs-main/appdev/modules/m3-language-fundamentals.mdx @@ -138,7 +138,7 @@ If we want to partially apply an infix operation we can also do that as follows: #### Associativity and Precedence -When dealing with multiple infix operators, precedence determines how the Daml compiler should parse an expression. For example, for the expression `x + y * z`, because `\*` has a higher precedence than `+`, the expression is parsed as `x + (y * z)` instead of `(x + y) * z`. When dealing with infix operators with the same precedence, associativity determines how the Daml compiler should parse an expression. For example, because `+` and `-` are left-associative, the expression `x + y - z` is parsed as `(x + y) - z` instead of `x + (y - z)`. For built-in operators this has been predefined, for user-defined operators, it must be user-defined. See the [Daml reference on Fixity, Associativity and Precedence](https://docs.digitalasset.com/daml/reference/base.html) for details. +When dealing with multiple infix operators, precedence determines how the Daml compiler should parse an expression. For example, for the expression `x + y * z`, because `\*` has a higher precedence than `+`, the expression is parsed as `x + (y * z)` instead of `(x + y) * z`. When dealing with infix operators with the same precedence, associativity determines how the Daml compiler should parse an expression. For example, because `+` and `-` are left-associative, the expression `x + y - z` is parsed as `(x + y) - z` instead of `x + (y - z)`. For built-in operators this has been predefined, for user-defined operators, it must be user-defined. See the [Daml language reference](/appdev/reference/daml-language-reference) for details on fixity, associativity, and precedence. ### Type constraints diff --git a/docs-main/appdev/modules/m3-standard-library.mdx b/docs-main/appdev/modules/m3-standard-library.mdx index 64e97ed0..97c58877 100644 --- a/docs-main/appdev/modules/m3-standard-library.mdx +++ b/docs-main/appdev/modules/m3-standard-library.mdx @@ -176,7 +176,7 @@ Other than the typeclasses defined in Prelude, there are two modules generalizin Being able to browse the standard library starting from `stdlib-reference-base` is a start, and the module naming helps, but it's not an efficient process for finding out what a function you've encountered does, even less so for finding a function that does a thing you need to do. -Daml has its own version of the [Hoogle](https://hoogle.haskell.org/) search engine, which offers search both by name and by signature. This function is fully integrated into the search bar on [https://docs.digitalasset.com/](https://docs.digitalasset.com/), but for those wanting a pure standard library search, it's also available on [https://hoogle.daml.com](https://hoogle.daml.com). +Daml has its own version of the [Hoogle](https://hoogle.haskell.org/) search engine, which offers search both by name and by signature. For a pure standard library search, use [https://hoogle.daml.com](https://hoogle.daml.com). ### Search for functions by name diff --git a/docs-main/appdev/modules/m3-testing.mdx b/docs-main/appdev/modules/m3-testing.mdx index 5935c288..a5afbd7d 100644 --- a/docs-main/appdev/modules/m3-testing.mdx +++ b/docs-main/appdev/modules/m3-testing.mdx @@ -118,7 +118,7 @@ The first part of the summary is a list of each executed script. For each script The second part of the summary is the coverage report. It shows you how many templates and choices are tested by the complete set of scripts in the package, in proportion of the total number of templates and choices. -To learn more about Daml test coverage, read the [Daml test coverage guide](https://docs.digitalasset.com/build/3.4/sdk/howtos/testing/test-coverage). +The coverage summary above is the primary tool for assessing how thoroughly your scripts exercise the templates and choices in your package. ## Debug, trace, and stacktraces diff --git a/docs-main/appdev/modules/m7-security.mdx b/docs-main/appdev/modules/m7-security.mdx index 298be140..90c6a336 100644 --- a/docs-main/appdev/modules/m7-security.mdx +++ b/docs-main/appdev/modules/m7-security.mdx @@ -62,7 +62,7 @@ Canton uses cryptographic keys for party identity, node identity, and transactio On LocalNet, keys are generated and stored locally — this is fine for development. In production: -- Use [Hardware Security Modules (HSM) or cloud Key Management Services (KMS)](https://docs.digitalasset.com/canton/usermanual/kms) for private keys +- Use [Hardware Security Modules (HSM) or cloud Key Management Services (KMS)](/global-synchronizer/production-operations/key-management) for private keys - Never store production keys on developer machines or in CI systems - Rotate keys according to your organization's security policy - Back up key material securely — losing keys means losing access to your party identity diff --git a/docs-main/appdev/quickstart/index.mdx b/docs-main/appdev/quickstart/index.mdx index d3c140b4..f52c0439 100644 --- a/docs-main/appdev/quickstart/index.mdx +++ b/docs-main/appdev/quickstart/index.mdx @@ -17,7 +17,7 @@ The QuickStart sets up a local environment (called LocalNet) with: - **A React frontend** for both provider and user roles - **A Java backend** service handling Ledger API interactions - **Canton Coin wallets** for traffic purchase and payment flows -- **Log analysis** with [lnav](https://docs.digitalasset.com/build/3.4/quickstart/operate/lnav-in-cn.html) for debugging and troubleshooting +- **Log analysis** with [lnav](/appdev/quickstart/observability-and-tracing) for debugging and troubleshooting ## Pages in this section diff --git a/docs-main/appdev/quickstart/observability-and-tracing.mdx b/docs-main/appdev/quickstart/observability-and-tracing.mdx index 0f477fdd..28ae7627 100644 --- a/docs-main/appdev/quickstart/observability-and-tracing.mdx +++ b/docs-main/appdev/quickstart/observability-and-tracing.mdx @@ -72,7 +72,7 @@ The Quickstart application provides a foundational production Daml application. The current troubleshooting and debugging services include: -- Local ledger inspection via Daml shell ([https://docs.daml.com/tools/daml-shell/index.html](https://docs.daml.com/tools/daml-shell/index.html)) +- Local ledger inspection via [Daml Shell](/sdks-tools/cli-tools/daml-shell) - Datasource collection and management via **OpenTelemetry** - This uses the **OTEL Collector** ([https://opentelemetry.io/docs/collector](https://opentelemetry.io/docs/collector)) - Metrics are aggregated using **Prometheus** ([https://prometheus.io/](https://prometheus.io/)) @@ -385,17 +385,17 @@ A starting point for finding documentation on these see: [^3]: Daml shell has tab completion on most command arguments, including the Template Id argument to `active` and the Contract Id argument to contract. -[^4]: Further documentation is available at [https://docs.daml.com/tools/daml-shell/index.html](https://docs.daml.com/tools/daml-shell/index.html) +[^4]: Further documentation is available in the [Daml Shell reference](/sdks-tools/cli-tools/daml-shell). !["Daml Shell command line interface"](/images/docs_website/footnote-04-daml-shell-cli.png) -[^5]: A key differentiator of Canton from all other level one blockchains is that it offers privacy. It does this by enforcing right-to-know. rather than via secrecy-via-obscurity and/or via pseudo-anonymity. Canton provides two privacy guarantees: Even in encrypted form (sub-)transactions are only transmitted to participant nodes with a right to be informed of them; and, participant nodes will be informed of every (sub-)transaction they have a right to be informed of. For details on how Canton defines “right” and other aspects of this see the Daml Ledger Privacy Model ([https://docs.daml.com/concepts/ledger-model/ledger-privacy.html#privacy](https://docs.daml.com/concepts/ledger-model/ledger-privacy.html#privacy)) +[^5]: A key differentiator of Canton from all other level one blockchains is that it offers privacy. It does this by enforcing right-to-know. rather than via secrecy-via-obscurity and/or via pseudo-anonymity. Canton provides two privacy guarantees: Even in encrypted form (sub-)transactions are only transmitted to participant nodes with a right to be informed of them; and, participant nodes will be informed of every (sub-)transaction they have a right to be informed of. For details on how Canton defines "right" and other aspects of this see the [Daml ledger privacy model](/appdev/deep-dives/privacy-model). [^6]: Distributed tracing is essential to efficient debugging and diagnosis of any distributed application. While technically distinct identifiers Trace and Span Ids are closely linked. If unfamiliar with their use OpenTelemetry has a good primer ([https://opentelemetry.io/docs/concepts/signals/traces/](https://opentelemetry.io/docs/concepts/signals/traces/)), Grafana has a reasonable demo ([https://grafana.com/docs/tempo/latest/introduction/](https://grafana.com/docs/tempo/latest/introduction/)), and we demonstrate their use later in this guide. [^7]: Equivalent to “blockheight” in other public blockchains that do not support privacy. As privacy dictates that each participant node sees a different projection of the global blockchain, the offset is not comparable across different Participant Nodes. It is commonly the preferred id when dealing with a single participant node due to being a simple, monotonic, total-order on ledger events witnessed by a Participant Node. -[^8]: By virtue of their role in the ledger model, all parties are (and the associated entity must be) capable of authorizing a (sub-)transaction or ledger event. See the Daml Ledger Authorization Model for details ([https://docs.daml.com/concepts/ledger-model/ledger-integrity.html#authorization](https://docs.daml.com/concepts/ledger-model/ledger-integrity.html#authorization)) +[^8]: By virtue of their role in the ledger model, all parties are (and the associated entity must be) capable of authorizing a (sub-)transaction or ledger event. See the [Daml ledger authorization model](/appdev/deep-dives/authorization) for details. [^9]: Where loggers cannot be configured to emit structured logs directly, log parsers are used to convert raw log files in the usual manner. This is primarily done in the OTEL Collector configuration. diff --git a/docs-main/appdev/quickstart/prerequisites.mdx b/docs-main/appdev/quickstart/prerequisites.mdx index b796afc3..2ac7be71 100644 --- a/docs-main/appdev/quickstart/prerequisites.mdx +++ b/docs-main/appdev/quickstart/prerequisites.mdx @@ -19,7 +19,7 @@ This guide walks through the installation and `LocalNet` deployment of the CN Qu - After installation, [explore the demo](/appdev/quickstart/running-the-demo) to complete a business operation in the example application. - For an overview of how the Quickstart project is structured, read the [project structure guide](/appdev/quickstart/project-structure). -- Learn about debugging using lnav in the [Debugging and troubleshooting with lnav](https://docs.digitalasset.com/build/3.4/quickstart/operate/lnav-in-cn.html). +- Learn about debugging using lnav in the [observability and tracing guide](/appdev/quickstart/observability-and-tracing). - Additional debugging information is in the section in the observability and troubleshooting section of the [cn-quickstart repository](https://github.com/digital-asset/cn-quickstart). ## Prerequisites @@ -214,7 +214,7 @@ The `LocalNet` deployment connects to a local validator which is in turn connect The Canton Network provides three synchronizer pools. The production network is `MainNet`; the production staging network is `TestNet`. As a developer you will mostly be connecting to the development staging network `DevNet`. -Access to [a SV Node](https://docs.dev.sync.global/validator_operator/validator_onboarding.html) that is whitelisted on the CN is required to connect to DevNet. The GSF publishes a [list of SV nodes](https://sync.global/sv-network/) who have the ability to sponsor a Validator node. To access `DevNet`, contact your sponsoring SV agent for VPN connection information. +Access to [a SV Node](/global-synchronizer/deployment/onboarding-process) that is whitelisted on the CN is required to connect to DevNet. The GSF publishes a [list of SV nodes](https://sync.global/sv-network/) who have the ability to sponsor a Validator node. To access `DevNet`, contact your sponsoring SV agent for VPN connection information. ## Resources @@ -226,7 +226,7 @@ Access to [a SV Node](https://docs.dev.sync.global/validator_operator/validator_ - [Digital Asset Docker](https://console.cloud.google.com/artifacts/docker/da-images/europe/public) - [Nix](https://nixos.org/download/) - [Quickstart GitHub repository](https://github.com/digital-asset/cn-quickstart) -- [Validator onboarding documentation](https://docs.dev.sync.global/validator_operator/validator_onboarding.html) +- [Validator onboarding documentation](/global-synchronizer/deployment/onboarding-process) - [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install) diff --git a/docs-main/appdev/quickstart/project-structure.mdx b/docs-main/appdev/quickstart/project-structure.mdx index 484da6a0..e0a2226c 100644 --- a/docs-main/appdev/quickstart/project-structure.mdx +++ b/docs-main/appdev/quickstart/project-structure.mdx @@ -304,7 +304,7 @@ See `quickstart-debugging-and-troubleshooting-lnav` for log analysis techniques. ## Next steps -Once you understand the project structure, visit the [TL;DR for new Canton Network developers](https://docs.digitalasset.com/build/3.4/overview/tldr.html) for additional guides to explore. +Once you understand the project structure, visit the [Choose your path guide](/appdev/get-started/choose-your-path) for additional guides to explore. {/* COPIED_END */} \ No newline at end of file diff --git a/docs-main/appdev/quickstart/running-the-demo.mdx b/docs-main/appdev/quickstart/running-the-demo.mdx index 17ca7c68..4bf8359f 100644 --- a/docs-main/appdev/quickstart/running-the-demo.mdx +++ b/docs-main/appdev/quickstart/running-the-demo.mdx @@ -194,7 +194,7 @@ To make payment, navigate to the Canton Wallet at [http://wallet.localhost:2000/ You can find the wallet's location by: -1. Reading the [Splice Local Network docs](https://docs.dev.sync.global/app_dev/testing/localnet.html#application-uis). +1. Reading the [LocalNet Application UIs reference](/sdks-tools/development-tools/localnet#application-uis). 2. Navigating to the App Provider's "Tenants" menu. ![AppProvider Tenants menu](/images/docs_website/app-provider-tenants.png) diff --git a/docs-main/appdev/reference/daml-standard-library/da-fail.mdx b/docs-main/appdev/reference/daml-standard-library/da-fail.mdx index cebf32b1..1937e9cc 100644 --- a/docs-main/appdev/reference/daml-standard-library/da-fail.mdx +++ b/docs-main/appdev/reference/daml-standard-library/da-fail.mdx @@ -33,7 +33,7 @@ Deprecated since: `-` The category of the failure, which determines the status code and log level of the failure. Maps 1-1 to the Canton error categories documented -here: https://docs.digitalasset.com/operate/3.4/reference/error_codes.html#error-categories-inventory +in the [error codes reference](/appdev/reference/error-codes). If you are more familiar with gRPC error codes, you can use the synonyms referenced in the comments. @@ -47,8 +47,7 @@ and should thus not be retried. Corresponds to the gRPC status code `INVALID_ARGUMENT`. -See https://docs.digitalasset.com/operate/3.4/reference/error_codes.html#invalidindependentofsystemstate -for more information. +See the [error codes reference](/appdev/reference/error-codes) for more information. - `InvalidGivenCurrentSystemStateOther` Use this to report errors that are due to the current state of the ledger, @@ -57,8 +56,7 @@ requests after reading updated state from the ledger. Corresponds to the gRPC status code `FAILED_PRECONDITION`. -See https://docs.digitalasset.com/operate/3.4/reference/error_codes.html#error-categories-inventory -for more information. +See the [error codes reference](/appdev/reference/error-codes) for more information. Instances: diff --git a/docs-main/appdev/reference/daml-standard-library/da-record.mdx b/docs-main/appdev/reference/daml-standard-library/da-record.mdx index 75cc56f0..134fa06d 100644 --- a/docs-main/appdev/reference/daml-standard-library/da-record.mdx +++ b/docs-main/appdev/reference/daml-standard-library/da-record.mdx @@ -53,8 +53,6 @@ MyRecord {foo = 3, bar = "hello"} daml> ``` -For more on Record syntax, see https://docs.digitalasset.com/build/3.4/reference/daml/stdlib/DA-Record.html. - `GetField x r a` and `SetField x r a` are typeclasses taking three parameters. The first parameter `x` is the field name, the second parameter `r` is the record type, and the last parameter `a` is the type of the field in this record. For diff --git a/docs-main/appdev/reference/pqs-sql-reference.mdx b/docs-main/appdev/reference/pqs-sql-reference.mdx index 6ffdae2e..8040272a 100644 --- a/docs-main/appdev/reference/pqs-sql-reference.mdx +++ b/docs-main/appdev/reference/pqs-sql-reference.mdx @@ -351,7 +351,7 @@ Join through the `*_at_ix` column to enrich contract or exercise data with trans ## Summary functions -This section will be expanded in a future update. For PQS query patterns and usage, see the [PQS documentation](https://docs.digitalasset.com/canton/3.5/participant/how-to/pqs/pqs-user-guide). +This section will be expanded in a future update. For PQS query patterns and usage, see the [PQS development tools page](/sdks-tools/development-tools/pqs). ## Contract columns diff --git a/docs-main/appdev/tooling/ide-setup.mdx b/docs-main/appdev/tooling/ide-setup.mdx index 557d21ab..a0bd4924 100644 --- a/docs-main/appdev/tooling/ide-setup.mdx +++ b/docs-main/appdev/tooling/ide-setup.mdx @@ -16,7 +16,7 @@ Daml Studio is the primary IDE for writing Daml smart contracts. It is a VS Code ### Installation 1. Install [VS Code](https://code.visualstudio.com/) version 1.87 or later -2. Install [DPM](https://docs.digitalasset.com/build/3.4/dpm/dpm.html) if you have not already +2. Install [DPM](/sdks-tools/cli-tools/dpm) if you have not already 3. From your project directory, run: diff --git a/docs-main/global-synchronizer/canton-console/getting-started-tutorial.mdx b/docs-main/global-synchronizer/canton-console/getting-started-tutorial.mdx index 8e1a6b77..1ad47191 100644 --- a/docs-main/global-synchronizer/canton-console/getting-started-tutorial.mdx +++ b/docs-main/global-synchronizer/canton-console/getting-started-tutorial.mdx @@ -12,7 +12,7 @@ Reviewers: Skip this section. Remove markers after final approval.
-change the section where we provision smart contract code: - create a new empty project - use the "Understanding IOUs" section to explain the structure of a daml contract (`https://docs.daml.com/app-dev/bindings-java/quickstart.html`) - transact on the IOU contract using curl and JSON Ledger API, not via console commands +change the section where we provision smart contract code: - create a new empty project - use the "Understanding IOUs" section to explain the structure of a daml contract (link to the Java bindings page once it covers a quickstart-style IOU walkthrough: /sdks-tools/language-bindings/java) - transact on the IOU contract using curl and JSON Ledger API, not via console commands
# Getting Started @@ -175,10 +175,10 @@ canton { To run the protocol, the participants must connect to one or more synchronizers. To execute a *transaction* (a change that updates the shared contracts of several parties), all the parties' participant nodes must be connected to the same synchronizer. In the remainder of this tutorial, you will construct a network topology that will enable the three parties Alice, Bob, and Bank to transact with each other, as shown here:
-images/canton-tutorial-elements.svg +images/canton-tutorial-elements.svg
-The Participant Nodes provide their parties with a [gRPC Ledger API](https://docs.daml.com/app-dev/ledger-api.html) as a means to access the ledger. The parties can interact with the gRPC Ledger API manually using the console, but in practice these parties use applications to handle the interactions and display the data in a user-friendly interface. +The Participant Nodes provide their parties with a [gRPC Ledger API](/sdks-tools/api-reference/ledger-api) as a means to access the ledger. The parties can interact with the gRPC Ledger API manually using the console, but in practice these parties use applications to handle the interactions and display the data in a user-friendly interface. In addition to the gRPC Ledger API, each participant node also exposes an *Admin API*. The Admin API allows the administrator (that is, you) to: @@ -700,7 +700,7 @@ template OfferToPaintHouseByPainter return iouId2 ``` -We won't dive into the details of Daml, as this is [explained elsewhere](https://docs.daml.com/daml/intro/0_Intro.html). But one key observation is that the contracts themselves are passive. The contract instances represent the ledger and only encode the rules according to which the ledger state can be changed. Any change requires you to trigger some Daml contract execution by sending the appropriate commands over the Ledger API. +We won't dive into the details of Daml, as this is [explained elsewhere](/appdev/modules/m3-language-fundamentals). But one key observation is that the contracts themselves are passive. The contract instances represent the ledger and only encode the rules according to which the ledger state can be changed. Any change requires you to trigger some Daml contract execution by sending the appropriate commands over the Ledger API. The Canton console gives you interactive access to this API, together with some utilities that can be useful for experimentation. The Ledger API uses [gRPC](http://grpc.io). @@ -987,7 +987,7 @@ Note that the conversion to `LfContractId` was required to pass in the IOU contr ## Your Development Choices -While the `ledger_api` functions in the Console can be handy for educational purposes, the Daml SDK provides you with much more convenient tools to inspect and manipulate the ledger content: - [Daml script](https://docs.daml.com/daml-script) for scripting - [Bindings in a variety of languages](https://docs.daml.com/app-dev/ledger-api.html) to build your own applications +While the `ledger_api` functions in the Console can be handy for educational purposes, the Daml SDK provides you with much more convenient tools to inspect and manipulate the ledger content: - [Daml Script](/sdks-tools/cli-tools/daml-script) for scripting - [Language bindings](/sdks-tools/language-bindings/java) to build your own applications All these tools work against the Ledger API. @@ -1042,9 +1042,8 @@ Note how we again use `retry_until_true` to add a manual synchronization point, You are now ready to start using Canton for serious tasks. If you want to develop a Daml application and run it on Canton, we recommend the following resources: -1. Install the [Daml SDK](https://docs.daml.com/getting-started/installation.html) to get access to the Daml IDE and other tools. -2. Follow the [Daml documentation](https://docs.daml.com/) to learn how to program new contracts, or check out the [Daml Examples](https://daml.com/examples/) to find existing ones for your needs. -3. Use the [Navigator (Deprecated)](https://docs.daml.com/tools/navigator/index.html) for easy Web-based access and manipulation of your contracts. +1. Install the [Daml SDK](/sdks-tools/sdks/daml-sdk) to get access to the Daml IDE and other tools. +2. Work through the [Daml language fundamentals](/appdev/modules/m3-language-fundamentals) to learn how to program new contracts. If you want to understand more about Canton: @@ -1092,9 +1091,7 @@ Also, you may want to add `-XX:+UseG1GC` to force the JVM to to use the `G1` gar The Canton Open Source version is available from [Github](https://github.com/digital-asset/daml/releases). -Daml Enterprise includes an enterprise version of the Canton ledger. If you have entitlement to Daml Enterprise you can download the enterprise version of Canton by following the [Installing Daml Enterprise instructions](https://docs.daml.com/getting-started/installation.html#installing-the-enterprise-edition) and downloading the appropriate Canton artifact. - -You can also use the Daml Enterprise Canton Docker images by following our Docker instructions. +For commercial Canton distributions and support, contact [Digital Asset](https://www.digitalasset.com/contact). ## Your Topology diff --git a/docs-main/global-synchronizer/deployment/configuration.mdx b/docs-main/global-synchronizer/deployment/configuration.mdx index e5a43a7c..75586f23 100644 --- a/docs-main/global-synchronizer/deployment/configuration.mdx +++ b/docs-main/global-synchronizer/deployment/configuration.mdx @@ -38,7 +38,7 @@ The full configuration for each app can be observed in the scala code, with the - [SvAppConfig.scala](https://github.com/hyperledger-labs/splice/blob/main/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/config/SvAppConfig.scala#L199) - [ScanAppConfig.scala](https://github.com/hyperledger-labs/splice/blob/main/apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/config/ScanAppConfig.scala#L28) -Furthermore, the participant and other synchronizer components can be configured independently as well. Further info on such configurations can be found in the [daml docs](https://docs.daml.com/canton/usermanual/static_conf.html). +Furthermore, the participant and other synchronizer components can be configured independently as well. Further info on such configurations can be found in the [Canton configuration guide](/global-synchronizer/reference/canton-configuration-guide).
@@ -176,7 +176,7 @@ KMS configuration is set in the participant's HOCON config: -See the [Splice documentation on external KMS](https://docs.sync.global) for provider-specific configuration details. +See [KMS Operations](/global-synchronizer/production-operations/kms-operations) for provider-specific configuration details. ## HTTP proxy configuration diff --git a/docs-main/global-synchronizer/deployment/identity-management.mdx b/docs-main/global-synchronizer/deployment/identity-management.mdx index d35f0c32..5968ecb7 100644 --- a/docs-main/global-synchronizer/deployment/identity-management.mdx +++ b/docs-main/global-synchronizer/deployment/identity-management.mdx @@ -27,7 +27,7 @@ The identity management system is self-contained and built without a trusted cen When two system entities such as a participant, synchronizer topology manager, mediator or sequencer communicate with each other, they will use asymmetric cryptography to encrypt messages and sign message contents such that only the recipient can decrypt the content, verify the authenticity of the message, or prove its origin. Therefore, we need a method to uniquely identify the system entities and a way to associate encryption and signing keys with them. -On top of that, Canton uses the contract language Daml, which represents contract ownership and rights through [parties](https://docs.daml.com/concepts/glossary.html#party). But parties are not primary members of the Canton synchronization protocol. They are represented by participants and therefore we need to uniquely identify parties and relate them to participants, such that a participant can represent several parties (and in Canton, a party can be represented by several participants). +On top of that, Canton uses the contract language Daml, which represents contract ownership and rights through [parties](/overview/understand/glossary). But parties are not primary members of the Canton synchronization protocol. They are represented by participants and therefore we need to uniquely identify parties and relate them to participants, such that a participant can represent several parties (and in Canton, a party can be represented by several participants). ### Unique Identifier @@ -198,7 +198,7 @@ Every participant also needs to manage access to their local Ledger API and be a - authentication: recognizing which user an application corresponds to (essentially by matching an application name with a user name) - authorization: knowing which rights an authenticated user has and restricting their Ledger API access according to those rights -Authentication is based on JWT and covered in the [application development/authorization section](https://docs.daml.com/app-dev/authorization.html) of the manual; the related Ledger API authorization configuration is covered in the Ledger API JWT configuration section. +Authentication is based on JWT and covered in the [authorization deep dive](/appdev/deep-dives/authorization); the related Ledger API authorization configuration is covered in the Ledger API JWT configuration section. Authorization is managed by the Ledger API's User Management Service. In essence, a user is a mapping from a user name to a set of parties with read or write permissions. In more detail a user consists of: @@ -208,7 +208,7 @@ Authorization is managed by the Ledger API's User Management Service. In essence - a set of user rights (describes whether a user has access to the admin portion of the Ledger API and what parties this user can act or read as) - a set of custom annotations (string-based key-value pairs, stored locally on the Ledger API server, that can be used to attach extra information to this party, e.g. how it relates to some business entity) -All these properties except the user ID can be modified. To learn more about annotations refer to the Ledger API Reference documentation. For an overview of the Ledger API's UserManagementService, see this [section](https://docs.daml.com/app-dev/services.html#user-management-service). +All these properties except the user ID can be modified. To learn more about annotations refer to the Ledger API Reference documentation. For an overview of the Ledger API's UserManagementService, see the [Ledger API reference](/sdks-tools/api-reference/ledger-api). You can manage users through the Canton console user management commands, an alpha feature. See the cookbook below for some concrete examples of how to manage users. diff --git a/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx b/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx index 4c07c334..a08c77c1 100644 --- a/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx +++ b/docs-main/global-synchronizer/deployment/synchronizer-traffic.mdx @@ -21,7 +21,7 @@ SVs, or more specifically SV participants and mediators, have unlimited traffic Sequencers keep track of the traffic used by validator participants. `Traffic` in this context refers to all messages from participants that have to be `sequenced`, i.e., messages that the group of sequencers has to order, persist (up to a pruning interval), and deliver to recipients (typically mediators and other participants). -Most prominently, traffic is used for Daml workflows as part of the [Canton transaction processing protocol](https://docs.daml.com/canton/architecture/overview.html#transaction-processing-in-canton). This includes: +Most prominently, traffic is used for Daml workflows as part of the [Canton transaction processing protocol](/overview/learn/how-transactions-work). This includes: - Confirmation requests; sent when a participant initiates the committing of a ledger transaction. - Confirmation responses; sent for participants that host stakeholders of a transaction. diff --git a/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx b/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx index bbcf6456..caa80aaf 100644 --- a/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx +++ b/docs-main/global-synchronizer/deployment/validator-docker-compose.mdx @@ -195,9 +195,9 @@ You can open your browser at [http://ans.localhost](http://ans.localhost) (note ### Accessing the Canton Participant APIs -The [JSON Ledger API](https://docs.digitalasset.com/build/3.4/tutorials/json-api/canton_and_the_json_ledger_api.html) is exposed under `json-ledger-api.localhost:80`. Note that for some clients you may explicitly need to set the `Host: json-ledger-api.localhost` header for this to get resolved correctly. +The [JSON Ledger API](/sdks-tools/api-reference/json-api) is exposed under `json-ledger-api.localhost:80`. Note that for some clients you may explicitly need to set the `Host: json-ledger-api.localhost` header for this to get resolved correctly. -The [gRPC Ledger API](https://docs.digitalasset.com/build/3.4/explanations/ledger-api-services.html) is exposed under `grpc-ledger-api.localhost:80`. Note that for some clients you may explicitly need to set the `:authority: json-ledger-api.localhost` pseudo-header for this to get resolved correctly. +The [gRPC Ledger API](/sdks-tools/api-reference/ledger-api) is exposed under `grpc-ledger-api.localhost:80`. Note that for some clients you may explicitly need to set the `:authority: json-ledger-api.localhost` pseudo-header for this to get resolved correctly. The Canton Admin API is not exposed by default as it does not yet support auth. There is a commented out section in `nginx.conf` that you can enable to expose it if you ensure that it is not exposed publicly, e.g., through network restrictions. diff --git a/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx b/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx index 8ba4a287..21c8896a 100644 --- a/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx +++ b/docs-main/global-synchronizer/deployment/validator-kubernetes.mdx @@ -578,10 +578,7 @@ Below you can see an example of the pruning config that you need to add to `vali Note that if your node is down for longer than the pruning window (48 hours in the example above), your node will most probably get corrupted, as the apps race catching up with the participant's attempts to keep pruning. It is therefore advisable to set the pruning window to a value that you are comfortable with in terms of guaranteeing uptime of your node. Setting it to 30 days is in general a reasonable choice, as the sequencers currently are also pruned after 30 days, so you will not be able to catch up with the network after a longer downtime anyway (see Disaster Recovery for disaster recovery guidelines). -Refer to the Canton documentation for more details on participant pruning: - -- `https://docs.daml.com/ops/pruning.html` -- `https://docs.daml.com/canton/usermanual/pruning.html` +For more details on participant pruning, see the [pruning operations guide](/global-synchronizer/production-operations/pruning). ```yaml -- Code from: ../../../apps/app/src/pack/examples/sv-helm/validator-values.yaml diff --git a/docs-main/global-synchronizer/deployment/validator-users.mdx b/docs-main/global-synchronizer/deployment/validator-users.mdx index 2dd5cc4a..c0839347 100644 --- a/docs-main/global-synchronizer/deployment/validator-users.mdx +++ b/docs-main/global-synchronizer/deployment/validator-users.mdx @@ -13,7 +13,7 @@ Reviewers: Skip this section. Remove markers after final approval. # Users, Parties and Wallets in the Splice Wallet -Canton distinguishes between parties and users, as documented in detail in the [Canton docs](https://docs.daml.com/app-dev/parties-users.html). In essence, a party is an identity on-ledger, while a user represents an off-ledger entity that can be associated with one or more parties. +Canton distinguishes between parties and users, as documented in detail in the [Daml parties guide](/appdev/deep-dives/manage-daml-parties). In essence, a party is an identity on-ledger, while a user represents an off-ledger entity that can be associated with one or more parties. By default, when a user logs in for the first time in the wallet, and presses the "Onboard yourself" button, the Validator allocates a fresh party, with a fresh Party ID, and associates that user with the newly allocated party. As part of validator initialization, a party is automatically created for the Validator Operator. The user provided during installation as the `validatorWalletUser` will be associated with this party as its primary party. diff --git a/docs-main/global-synchronizer/faq.mdx b/docs-main/global-synchronizer/faq.mdx index ef018e7a..9c38ee6e 100644 --- a/docs-main/global-synchronizer/faq.mdx +++ b/docs-main/global-synchronizer/faq.mdx @@ -664,8 +664,8 @@ If a course doesn't mention Canton Network or Daml 3.x, or covers only Daml 2.x **Recommended resources:** 1. **Official Documentation:** - - [Build Documentation](https://docs.digitalasset.com/build/3.4) - - [Operator Documentation](https://docs.sync.global) + - [What is Canton?](/overview/understand/what-is-canton) + - [Operator Documentation](/global-synchronizer) 2. **Hands-on:** - [Canton Quickstart](https://github.com/digital-asset/cn-quickstart) @@ -759,7 +759,7 @@ Redact sensitive information (private keys, passwords, JWTs) before sharing logs **TestNet → MainNet:** 1. Complete MainNet validator onboarding 2. Request MainNet IP whitelisting -3. Follow [MainNet onboarding documentation](https://docs.sync.global/validator_operator/validator_onboarding.html) +3. Follow [MainNet onboarding documentation](/global-synchronizer/deployment/onboarding-process) 4. Deploy with production configuration diff --git a/docs-main/global-synchronizer/production-operations/monitoring-setup.mdx b/docs-main/global-synchronizer/production-operations/monitoring-setup.mdx index f171ca69..9429aac0 100644 --- a/docs-main/global-synchronizer/production-operations/monitoring-setup.mdx +++ b/docs-main/global-synchronizer/production-operations/monitoring-setup.mdx @@ -147,7 +147,7 @@ how should this relate to the other observability docs that we have? we have the # Example Monitoring Setup -This section provides an example of how Canton can be run inside a connected network of Docker containers. The example also shows how you can monitor network activity. See the [monitoring glossary](https://docs.daml.com/canton/usermanual/monitoring_glossary.html) for an explanation of the terms and the [Monitoring Choices](#monitoring-choices) section for the reasoning behind the example monitoring setup. +This section provides an example of how Canton can be run inside a connected network of Docker containers. The example also shows how you can monitor network activity. See the [glossary](/overview/understand/glossary) for monitoring term definitions and the [Monitoring Choices](#monitoring-choices) section for the reasoning behind the example monitoring setup. ## Container Setup diff --git a/docs-main/global-synchronizer/production-operations/security-hardening.mdx b/docs-main/global-synchronizer/production-operations/security-hardening.mdx index ef2db6e1..9c6bf0b3 100644 --- a/docs-main/global-synchronizer/production-operations/security-hardening.mdx +++ b/docs-main/global-synchronizer/production-operations/security-hardening.mdx @@ -22,14 +22,14 @@ If you want to run third-party applications, deploy a separate validator node fo ## External KMS for managing participant keys {/* COPIED_START source="splice:docs/src/common/kms_participants_context.rst" */} -By default, Canton participants use cryptographic [keys](https://docs.daml.com/canton/usermanual/security.html) that are generated by the participant itself and stored in the regular database used by the participant. To improve key security, participants can be configured to use an external Key Management System (KMS) to generate and store keys. Consult the official [Canton documentation on KMS support](https://docs.daml.com/canton/usermanual/kms/kms.html) for additional details and a list of supported KMS providers. Participants deployed as part of a Splice deployment support the [External Key Storage](https://docs.daml.com/canton/usermanual/kms/external_key_storage/external_key_storage.html) mode of KMS usage. +By default, Canton participants use cryptographic [keys](/global-synchronizer/production-operations/key-management) that are generated by the participant itself and stored in the regular database used by the participant. To improve key security, participants can be configured to use an external Key Management System (KMS) to generate and store keys. See [KMS operations](/global-synchronizer/production-operations/kms-operations) for additional details and a list of supported KMS providers. Participants deployed as part of a Splice deployment support External Key Storage mode of KMS usage. {/* COPIED_END */} Official support for KMS-based operation of sequencers and mediators that are part of an SV deployment is planned for a future release. ### General configuration -Refer to the [Canton documentation on configuring KMS support](https://docs.daml.com/canton/usermanual/kms/kms_setup.html) for determining the right configuration options for your desired KMS provider. +Refer to the [KMS driver guide](/global-synchronizer/reference/kms-driver-guide) for determining the right configuration options for your desired KMS provider. When configuring KMS through Helm values: @@ -40,7 +40,7 @@ When configuring KMS through Helm values: ### Google Cloud KMS {/* COPIED_START source="splice:docs/src/common/kms_config_gcp.rst" */} -Refer to the [Canton documentation](https://docs.daml.com/canton/usermanual/kms/kms_gcp_setup.html) for a list of supported configuration options and their meaning, as well as for instructions on configuring authentication to the KMS. Splice participants support the External Key Storage mode, so the authentication credentials you supply must correspond to a GCP service account with the following IAM permissions: +Refer to the [KMS driver guide](/global-synchronizer/reference/kms-driver-guide) for a list of supported configuration options and their meaning, as well as for instructions on configuring authentication to the KMS. Splice participants support the External Key Storage mode, so the authentication credentials you supply must correspond to a GCP service account with the following IAM permissions: - `cloudkms.cryptoKeyVersions.create` - `cloudkms.cryptoKeyVersions.useToDecrypt` @@ -56,7 +56,7 @@ A mock GCP KMS configuration is available in [apps/app/src/pack/examples/sv-helm ### Amazon Web Services KMS {/* COPIED_START source="splice:docs/src/common/kms_config_aws.rst" */} -Refer to the [Canton documentation](https://docs.daml.com/canton/usermanual/kms/kms_aws_setup.html) for a list of supported configuration options and their meaning, as well as for instructions on configuring authentication to the KMS. Splice participants support the External Key Storage mode, so the authentication credentials you supply must correspond to an entity with the following IAM permissions: +Refer to the [KMS driver guide](/global-synchronizer/reference/kms-driver-guide) for a list of supported configuration options and their meaning, as well as for instructions on configuring authentication to the KMS. Splice participants support the External Key Storage mode, so the authentication credentials you supply must correspond to an entity with the following IAM permissions: - `kms:CreateKey` - `kms:TagResource` diff --git a/docs-main/global-synchronizer/reference/canton-configuration-guide.mdx b/docs-main/global-synchronizer/reference/canton-configuration-guide.mdx index a87f7491..073aa0e3 100644 --- a/docs-main/global-synchronizer/reference/canton-configuration-guide.mdx +++ b/docs-main/global-synchronizer/reference/canton-configuration-guide.mdx @@ -72,12 +72,12 @@ canton { ## Configuration reference -The Canton configuration file for static properties is based on [PureConfig](https://pureconfig.github.io/). PureConfig maps Scala case classes and their class structure into analogue configuration options (see e.g. the [PureConfig quick start](https://pureconfig.github.io/docs/#quick-start) for an example). Therefore, the ultimate source of truth for all available configuration options and the configuration file syntax is given by the appropriate scaladocs of the [CantonConfig](https://docs.daml.com/__VERSION__/canton/scaladoc/com/digitalasset/canton/config/index.html) classes. +The Canton configuration file for static properties is based on [PureConfig](https://pureconfig.github.io/). PureConfig maps Scala case classes and their class structure into analogue configuration options (see e.g. the [PureConfig quick start](https://pureconfig.github.io/docs/#quick-start) for an example). Therefore, the ultimate source of truth for all available configuration options and the configuration file syntax is given by the [CantonConfig Scala reference](/reference/scala/com-digitalasset-canton-config/cantonconfig) and the related types in `com.digitalasset.canton.config`. When understanding the mapping from scaladocs to configuration, please keep in mind that: - CamelCase Scala names are mapped to lowercase-with-dashes names in configuration files, e.g. `synchronizerParameters` in the scaladocs becomes `synchronizer-parameters` in a configuration file (dash, not underscore). -- `Option[<scala-class>]` means that the configuration can be specified but doesn't need to be, e.g. you can specify a JWT token via `token=token` [in a remote participant configuration](https://docs.daml.com/__VERSION__/canton/scaladoc/com/digitalasset/canton/participant/config/RemoteParticipantConfig.html#token:Option%5BString%5D), but not specifying `token` is also valid. +- `Option[<scala-class>]` means that the configuration can be specified but doesn't need to be, e.g. you can specify a JWT token via `token=token` in [RemoteParticipantConfig](/reference/scala/com-digitalasset-canton-participant-config/remoteparticipantconfig), but not specifying `token` is also valid. ## Configuration Compatibility diff --git a/docs-main/global-synchronizer/reference/canton-console-commands.mdx b/docs-main/global-synchronizer/reference/canton-console-commands.mdx index 63e6ffa6..b5eea567 100644 --- a/docs-main/global-synchronizer/reference/canton-console-commands.mdx +++ b/docs-main/global-synchronizer/reference/canton-console-commands.mdx @@ -3031,7 +3031,7 @@ ledger_api.commands.submit_assign_async > ``` none > Provides access to the command submission service of the Ledger API. - > See https://docs.daml.com/app-dev/services.html for documentation of the parameters. + > See the [Ledger API reference](/sdks-tools/api-reference/ledger-api) for documentation of the parameters. > ```
@@ -3091,7 +3091,7 @@ ledger_api.commands.submit_async > ``` none > Provides access to the command submission service of the Ledger API. - > See https://docs.daml.com/app-dev/services.html for documentation of the parameters. + > See the [Ledger API reference](/sdks-tools/api-reference/ledger-api) for documentation of the parameters. > ``` @@ -3171,7 +3171,7 @@ ledger_api.commands.submit_unassign_async > ``` none > Provides access to the command submission service of the Ledger API. - > See https://docs.daml.com/app-dev/services.html for documentation of the parameters. + > See the [Ledger API reference](/sdks-tools/api-reference/ledger-api) for documentation of the parameters. > ``` @@ -3312,7 +3312,7 @@ ledger_api.javaapi.commands.submit_async > ``` none > Provides access to the command submission service of the Ledger API. - > See https://docs.daml.com/app-dev/services.html for documentation of the parameters. + > See the [Ledger API reference](/sdks-tools/api-reference/ledger-api) for documentation of the parameters. > ``` diff --git a/docs-main/global-synchronizer/reference/canton-console-reference.mdx b/docs-main/global-synchronizer/reference/canton-console-reference.mdx index fc1d7573..dfba47e6 100644 --- a/docs-main/global-synchronizer/reference/canton-console-reference.mdx +++ b/docs-main/global-synchronizer/reference/canton-console-reference.mdx @@ -9,7 +9,7 @@ import CantonGlobalSynchronizerReferenceCantonConsoleReferenceL331 from "/snippe The Canton console is a Scala-based REPL (built on [Ammonite](http://ammonite.io)) that provides administrative access to Canton nodes. All console commands are valid Scala expressions. String arguments are automatically converted to the appropriate Canton types (`SynchronizerAlias`, `Fingerprint`, `Identifier`) where needed. This page covers the commands most relevant to validator and SV operators. For the full -command reference, see the [Canton documentation](https://docs.digitalasset.com/operate/3.5/reference/console.html). +command reference, see the [Canton console commands](/global-synchronizer/reference/canton-console-commands). ## Starting the Console @@ -45,7 +45,7 @@ Welcome to Canton! ## Participant console -1. Obtain an authentication token as specified in [the Canton authentication docs](https://docs.digitalasset.com/operate/3.4/howtos/secure/apis/jwt.html) +1. Obtain an authentication token as specified in the [security configuration reference](/global-synchronizer/reference/security-configuration) 2. Ensure you can access the participant's ports 5001 and 5002 @@ -340,5 +340,5 @@ Both sequencer and mediator nodes also expose `health`, `keys`, and `topology` c ## Related Resources -- [Canton documentation - Console reference](https://docs.digitalasset.com/operate/3.5/reference/console.html) for the full command listing -- [Canton documentation - Administration APIs](https://docs.digitalasset.com/operate/3.5/reference/apis.html) for the underlying gRPC APIs +- [Canton console commands](/global-synchronizer/reference/canton-console-commands) for the full command listing +- [Canton admin API reference](/global-synchronizer/reference/canton-admin-api) for the underlying gRPC APIs diff --git a/docs-main/global-synchronizer/reference/configuration-reference.mdx b/docs-main/global-synchronizer/reference/configuration-reference.mdx index 1808d7a2..36f8d7e1 100644 --- a/docs-main/global-synchronizer/reference/configuration-reference.mdx +++ b/docs-main/global-synchronizer/reference/configuration-reference.mdx @@ -199,7 +199,7 @@ Add this to `validator-values.yaml`: If your node is offline longer than the pruning retention window, it may become corrupted as apps race to catch up with pruned data. Set the retention to a value that reflects your uptime guarantee -- 30 days is a reasonable starting point, since sequencers are also pruned after 30 days. -See the Canton documentation on [pruning operations](https://docs.digitalasset.com/operate/3.5/usermanual/pruning.html) for more details. +See [pruning operations](/global-synchronizer/production-operations/pruning) for more details. ## Monitoring and observability diff --git a/docs-main/global-synchronizer/reference/metrics-reference.mdx b/docs-main/global-synchronizer/reference/metrics-reference.mdx index 92e1f5eb..085d75a4 100644 --- a/docs-main/global-synchronizer/reference/metrics-reference.mdx +++ b/docs-main/global-synchronizer/reference/metrics-reference.mdx @@ -80,7 +80,7 @@ This section will be expanded in a future update. Topology metrics track synchro ## Key participant metrics -These are the most operationally significant metrics from the participant node. For the full catalog of several hundred metrics, see the [Canton 3.x metrics reference](https://docs.digitalasset.com/canton/3.5/participant/reference/metrics). +These are the most operationally significant metrics from the participant node. For the full catalog of several hundred metrics, see the [Canton metrics reference](/global-synchronizer/reference/canton-metrics). ### Sequencer client diff --git a/docs-main/global-synchronizer/troubleshooting.mdx b/docs-main/global-synchronizer/troubleshooting.mdx index 388bf407..41d1a601 100644 --- a/docs-main/global-synchronizer/troubleshooting.mdx +++ b/docs-main/global-synchronizer/troubleshooting.mdx @@ -493,7 +493,7 @@ queued tasks = 2000 # ← Queue is full! 3. Monitor pruning progress via Canton Console: -See [Monitor Pruning Progress](https://docs.daml.com/canton/usermanual/pruning.html#monitor-pruning-progress) in the documentation. +See the [pruning operations guide](/global-synchronizer/production-operations/pruning) for details. @@ -690,7 +690,7 @@ JFrog access is required for Canton Enterprise licenses and certain quickstart a **Process:** 1. **DevNet:** Contact your Super Validator sponsor for VPN credentials and IP whitelisting 2. **TestNet:** Submit IP whitelisting request via support portal -3. **MainNet:** Follow the [validator onboarding documentation](https://docs.sync.global/validator_operator/validator_onboarding.html) +3. **MainNet:** Follow the [validator onboarding documentation](/global-synchronizer/deployment/onboarding-process) **Information Required:** - Static IP address(es) for your validator diff --git a/docs-main/integrations/ecosystem.mdx b/docs-main/integrations/ecosystem.mdx index 8b458034..b036e344 100644 --- a/docs-main/integrations/ecosystem.mdx +++ b/docs-main/integrations/ecosystem.mdx @@ -145,7 +145,7 @@ For current network statistics, visit: ### As a Developer 1. Start with the [QuickStart](/appdev/quickstart) -2. Learn [Daml](https://docs.daml.com) +2. Learn [Daml](/appdev/get-started/choose-your-path) 3. Build and deploy your application 4. Join the developer community {/* TODO: Add Slack link once available */} diff --git a/docs-main/integrations/wallet/guidance.mdx b/docs-main/integrations/wallet/guidance.mdx index 2602c6a8..eeb06ba9 100644 --- a/docs-main/integrations/wallet/guidance.mdx +++ b/docs-main/integrations/wallet/guidance.mdx @@ -223,11 +223,11 @@ The Wallet integration guide is tailored to work with a [LocalNet setup](/sdks-t ## Connecting to a Synchronizer -For onboarding a validator with the global synchronizer it is recommended to read the Splice documentation here: [https://docs.dev.sync.global/validator_operator/validator_onboarding.html](https://docs.dev.sync.global/validator_operator/validator_onboarding.html) +For onboarding a validator with the global synchronizer, see the [validator onboarding process](/global-synchronizer/deployment/onboarding-process). ## Supporting Tokens and Applications -To integrate and support tokens, it is recommended to use the Splice documentation here: [https://docs.sync.global/validator_operator/validator_onboarding.html](https://docs.sync.global/validator_operator/validator_onboarding.html) +To integrate and support tokens, see the [validator onboarding process](/global-synchronizer/deployment/onboarding-process). If you are interested in building your own application, a good first place would be to utilize the CN quickstart: [https://github.com/digital-asset/cn-quickstart](https://github.com/digital-asset/cn-quickstart) @@ -1265,7 +1265,7 @@ Just for being online and growing the network, Canton Coin tokenomics enable val For external parties, automation needs to be developed to call `AmuletRules_Transfer` at least once per round with all activity records as inputs. -You can find more information about the tokenomics of Canton Coin at [https://docs.dev.sync.global/overview/overview.html#tokenomics](https://docs.dev.sync.global/overview/overview.html#tokenomics). +You can find more information about the tokenomics of Canton Coin at [Canton Coin tokenomics](/overview/reference/canton-coin-tokenomics). *All rewards and coupons are mintable the follow mining round, if rewards are not redemed then they are lost* diff --git a/docs-main/overview/reference/sv-governance-reference.mdx b/docs-main/overview/reference/sv-governance-reference.mdx index 78ae21d0..9962e04f 100644 --- a/docs-main/overview/reference/sv-governance-reference.mdx +++ b/docs-main/overview/reference/sv-governance-reference.mdx @@ -26,7 +26,7 @@ The implementation uses three key techniques to achieves this Byzantine fault to Thus CC and CNS users that are willing to assume that no more than `f` SV nodes are dishonest can rely on the following guarantees: -- **valid transactions**: every transaction that requires confirmation from the DSO party is [valid](https://docs.daml.com/concepts/ledger-model/ledger-integrity.html#valid-ledgers). +- **valid transactions**: every transaction that requires confirmation from the DSO party is [valid](/overview/learn/ledger-model). - **timely automation**: actions required to be taken by the DSO party are taken in a timely fashion. - **predictable fees and configuration values**: fees and configuration values are reasonably predictable as they represent the *aggregate preferences* of ~2/3 of SV operators, which can be assumed to be acting in their own best interest. @@ -146,6 +146,6 @@ The decentralized party model means that the DSO party itself has a confirmation The combination of on-chain voting and decentralized automation provides three guarantees for network participants who trust that no more than `f` SVs are dishonest: -- **Valid transactions** -- Every DSO-confirmed transaction satisfies Daml's [ledger validity model](https://docs.daml.com/concepts/ledger-model/ledger-integrity.html#valid-ledgers) +- **Valid transactions** -- Every DSO-confirmed transaction satisfies Daml's [ledger validity model](/overview/learn/ledger-model) - **Timely automation** -- Routine operational actions (round advancement, reward issuance) execute without delay - **Predictable parameters** -- Fees and configuration values reflect the aggregate preferences of at least two-thirds of SV operators diff --git a/docs-main/sdks-tools/api-reference/admin-api.mdx b/docs-main/sdks-tools/api-reference/admin-api.mdx index 3e04d784..e15c0f0c 100644 --- a/docs-main/sdks-tools/api-reference/admin-api.mdx +++ b/docs-main/sdks-tools/api-reference/admin-api.mdx @@ -18,7 +18,7 @@ The Admin API is split across two layers: the **Ledger API admin services** (def ### Ledger API Admin Services -These services run on participant nodes alongside the Ledger API. They are defined in the [gRPC Ledger API proto specifications](https://docs.digitalasset.com/build/3.5/reference/lapi-proto-docs.html). +These services run on participant nodes alongside the Ledger API. They are defined in the [gRPC Ledger API proto specifications](/reference/protobuf). ### Canton-Specific Admin Services diff --git a/docs-main/sdks-tools/cli-tools/dpm.mdx b/docs-main/sdks-tools/cli-tools/dpm.mdx index 276891a1..5749c8b3 100644 --- a/docs-main/sdks-tools/cli-tools/dpm.mdx +++ b/docs-main/sdks-tools/cli-tools/dpm.mdx @@ -25,7 +25,7 @@ import DamlDocsSdksToolsCliToolsDpmL152 from "/snippets/daml-docs/sdks-tools_cli ## Installation -Install `dpm` following the instructions in the [Canton 3.x documentation](https://docs.digitalasset.com). On most systems, this involves downloading a single binary and adding it to your `PATH`. +Install `dpm` by downloading the binary from the [Daml SDK GitHub releases](https://github.com/digital-asset/daml/releases) and adding it to your `PATH`. Once installed, verify the installation: diff --git a/docs-main/sdks-tools/language-bindings/java.mdx b/docs-main/sdks-tools/language-bindings/java.mdx index f86a9c3f..df8cd2c2 100644 --- a/docs-main/sdks-tools/language-bindings/java.mdx +++ b/docs-main/sdks-tools/language-bindings/java.mdx @@ -120,11 +120,11 @@ For Maven, add the generated directory as a source folder in your `pom.xml`: ``` -You will also need the Daml Java bindings library as a dependency. Check the [Canton 3.x documentation](https://docs.digitalasset.com) for the current Maven coordinates and version. +You will also need the Daml Java bindings library as a dependency. Refer to the [Daml SDK GitHub releases](https://github.com/digital-asset/daml/releases) for the current Maven coordinates and version. ## Reference Documentation -The full Javadoc for the Daml Java bindings library is available in the [Canton 3.x SDK documentation](https://docs.digitalasset.com). The generated classes follow the same patterns documented there. +The full Javadoc for the Daml Java bindings library is published with each [Daml SDK release](https://github.com/digital-asset/daml/releases). The generated classes follow the same patterns documented there. ## Related Pages diff --git a/docs-main/sdks-tools/sdks/daml-sdk.mdx b/docs-main/sdks-tools/sdks/daml-sdk.mdx index 51ce22b5..1c6f4a59 100644 --- a/docs-main/sdks-tools/sdks/daml-sdk.mdx +++ b/docs-main/sdks-tools/sdks/daml-sdk.mdx @@ -99,4 +99,4 @@ When deploying to DevNet, TestNet, or MainNet, verify that your SDK version matc - [dpm command reference](/sdks-tools/cli-tools/dpm) -- Full list of `dpm` commands and options - [Daml Studio](/sdks-tools/development-tools/daml-studio) -- VS Code extension for Daml development - [Sandbox](/sdks-tools/development-tools/sandbox) -- Local single-node testing environment -- [Canton 3.x documentation](https://docs.digitalasset.com) -- Full platform documentation +- [Choose your path](/appdev/get-started/choose-your-path) -- Pick a development workflow diff --git a/docs-main/sdks-tools/sdks/wallet-sdk.mdx b/docs-main/sdks-tools/sdks/wallet-sdk.mdx index 5fc737a2..c33af863 100644 --- a/docs-main/sdks-tools/sdks/wallet-sdk.mdx +++ b/docs-main/sdks-tools/sdks/wallet-sdk.mdx @@ -85,7 +85,7 @@ Before performing any operations, you need to create a key pair and allocate an -The SDK generates Ed25519 key pairs by default. BIP-0039 mnemonic-based key generation is also supported for deterministic key recovery. For details on the key pair and party creation process, including topology transactions and multi-hosting, see the full [Wallet Integration Guide](https://docs.digitalasset.com/integrate/devnet/index.html). +The SDK generates Ed25519 key pairs by default. BIP-0039 mnemonic-based key generation is also supported for deterministic key recovery. For details on the key pair and party creation process, including topology transactions and multi-hosting, see the [wallet integration guidance](/integrations/wallet/guidance). ## Token operations @@ -183,7 +183,7 @@ The SDK can decode prepared transactions into human-readable JSON for display to ## Further resources - [Splice Wallet Kernel GitHub repository](https://github.com/hyperledger-labs/splice-wallet-kernel) -- source code, API specs, and example scripts -- [Token standard documentation](https://docs.sync.global/app_dev/token_standard/index.html) -- full token standard reference +- [Token standard documentation](/overview/reference/cip-0056) -- Canton Network Token Standard reference - [CIP-0056](https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0056/cip-0056.md) -- Canton Network token standard specification -- [External party signing tutorial](https://docs.digitalasset.com/build/3.5/tutorials/app-dev/external_signing_onboarding) -- step-by-step external signing walkthrough +- [External signing onboarding](/appdev/deep-dives/external-signing-onboarding) -- step-by-step external signing walkthrough - [CN Quickstart](https://github.com/digital-asset/cn-quickstart) -- reference application for getting started with Canton Network development diff --git a/docs-main/shared/version-compatibility-dashboard.mdx b/docs-main/shared/version-compatibility-dashboard.mdx index ad33c91f..f00dc6af 100644 --- a/docs-main/shared/version-compatibility-dashboard.mdx +++ b/docs-main/shared/version-compatibility-dashboard.mdx @@ -9,7 +9,7 @@ import { networkData } from '/snippets/generated/version-dashboard-data.mdx'; export const componentDescriptions = { splice: { text: 'Canton Network infrastructure including validator apps, wallet, and governance tools.', link: 'https://github.com/hyperledger-labs/splice/releases', linkText: 'View releases' }, damlSdk: { text: 'Smart contract language SDK for building and compiling Daml applications.', link: 'https://github.com/digital-asset/daml/releases', linkText: 'View releases' }, - pqs: { text: 'Participant Query Store - SQL database for querying ledger data.', link: 'https://docs.digitalasset.com/', linkText: 'Documentation' }, + pqs: { text: 'Participant Query Store - SQL database for querying ledger data.', link: '/sdks-tools/development-tools/pqs', linkText: 'Documentation' }, tokenStandard: { text: 'Canton Network Token Standard API for fungible token operations (CIP-0056).' }, walletSdk: { text: 'TypeScript SDK for wallet providers and exchanges.', link: 'https://www.npmjs.com/package/@canton-network/wallet-sdk', linkText: 'npm package' }, dappSdk: { text: 'Browser-optimized SDK for building decentralized applications.', link: 'https://www.npmjs.com/package/@canton-network/dapp-sdk', linkText: 'npm package' },