agentsclimarketplace

Canton network repos

Skill aiskillstore/marketplace/skills/0xbigboss/canton-network-repos

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

Install
npx -y skills add aiskillstore/marketplace --skill canton-network-repos

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

3.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

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

What ships with it: 1 file

30.1 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.