canton-network-repos

v2026.09.24

Use when working with Canton Network participants, DAML smart contracts, Splice applications, or debugging LF version and package ID issues.

GitHub
Install command
npx skhub add alleneubank/canton-network-repos
Markdown
SKILL.md

Canton Network Repositories

Repository Hierarchy

Splice (e.g., 0.5.4)     github.com/digital-asset/decentralized-canton-sync
  └─ depends on
Canton (e.g., 3.4.9)     github.com/digital-asset/canton
  └─ depends on
DAML SDK (e.g., 3.4.9)   github.com/digital-asset/daml

Version Mapping

SpliceCantonDAML SDKProtocolLF DefaultLF Available
0.5.43.4.93.4.9PV342.1*2.2 (verified)
0.5.33.4.83.4.8PV342.1*2.2
0.4.x3.3.x3.3.xPV332.12.1

*Open-source Splice 0.5.4 ships with SDK snapshot 3.3.0-snapshot.20250502 (pre-dates LF 2.2). LF 2.2 was added to the SDK on 2025-10-03. Updating to SDK 3.4.9 enables LF 2.2 builds.

Key Configuration Files

PurposeRepoFile
LF version definitionsdamlsdk/daml-lf/language/.../LanguageVersion.scala
damlc target validationdamlsdk/compiler/damlc/lib/DA/Cli/Options.hs
Canton versioncantonVERSION
Built-in DARscantoncommunity/common/src/main/daml/
Splice LF configspliceproject/CantonDependencies.scala
Package targetssplicedaml/*/daml.yaml
Docker buildssplicecluster/images/*/Dockerfile

Splice LF config (project/CantonDependencies.scala):

val daml_language_versions = Seq("2.1")  // ← LF target; change to "2.2" for upgrade
val daml_compiler_version = sys.env("DAML_COMPILER_VERSION")

Package ID Derivation

Package IDs are cryptographic hashes of: source content + LF version (--target) + SDK/stdlib version + dependency package IDs.

Changing LF version = different package IDs = incompatible packages. Canton validates that upgraded packages use equal or newer LF version; mixing LF versions on the same ledger causes validation failures.

Enterprise vs Community Canton

FeatureEnterpriseCommunity
Transaction processingParallelSequential
DatabasePostgreSQL, OraclePostgreSQL only
HA DomainSupportedEmbedded only
PruningFullLimited

Build Commands

# Community Canton participant
cd canton && sbt "community/app/assembly"
# Output: community/app/target/scala-2.13/canton-community.jar

# Splice applications (requires DAML_COMPILER_VERSION env var)
cd decentralized-canton-sync && sbt compile

Upgrading to LF 2.2 (Verified with SDK 3.4.9)

  1. project/CantonDependencies.scala: val daml_language_versions = Seq("2.2")
  2. nix/daml-compiler-sources.json: { "version": "3.4.9" }
  3. All daml/*/daml.yaml: set sdk-version: 3.4.9 and --target=2.2
  4. Remove -Wno-ledger-time-is-alpha from all daml.yaml files (not in SDK 3.4.9)
  5. Build: daml build -p daml/splice-util && daml build -p daml/splice-amulet

Community-built DARs have identical package IDs to enterprise at the same LF version (verified 2025-12-24).

Troubleshooting

"Unknown Daml-LF version: 2.2": damlc binary doesn't support 2.2. Check daml damlc --help for supported targets; upgrade to SDK 3.4.9.

Package ID mismatch: different --target values between builds. Check: unzip -p package.dar META-INF/MANIFEST.MF | grep Sdk-Version

Upgrade validation failed: swapping enterprise (LF 2.2) with community (LF 2.1) packages. Use DAR injection to maintain LF 2.2 compatibility.

References

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Apache-2.0

Source path

.claude/skills/canton-network-repos

Default branch

main

Latest commit

2921eb8

Tree SHA

7e7a88e