mcpbeat

Canton Network Repos

aiskillstore/canton-network-repos

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

9k tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
404
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/aiskillstore/marketplace --skill canton-network-repos

What comes with it

30 809 bytes besides the instruction
skill-report.json

The instruction itself

10 sections, as written by the author

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

| Splice | Canton | DAML SDK | Protocol | LF Default | LF Available |

|--------|--------|----------|----------|------------|--------------|

| 0.5.4 | 3.4.9 | 3.4.9 | PV34 | 2.1* | 2.2 (verified) |

| 0.5.3 | 3.4.8 | 3.4.8 | PV34 | 2.1* | 2.2 |

| 0.4.x | 3.3.x | 3.3.x | PV33 | 2.1 | 2.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

| Purpose | Repo | File |

|---------|------|------|

| LF version definitions | daml | sdk/daml-lf/language/.../LanguageVersion.scala |

| damlc target validation | daml | sdk/compiler/damlc/lib/DA/Cli/Options.hs |

| Canton version | canton | VERSION |

| Built-in DARs | canton | community/common/src/main/daml/ |

| Splice LF config | splice | project/CantonDependencies.scala |

| Package targets | splice | daml/*/daml.yaml |

| Docker builds | splice | cluster/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

| Feature | Enterprise | Community |

|---------|------------|-----------|

| Transaction processing | Parallel | Sequential |

| Database | PostgreSQL, Oracle | PostgreSQL only |

| HA Domain | Supported | Embedded only |

| Pruning | Full | Limited |

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)

  • project/CantonDependencies.scala: val daml_language_versions = Seq("2.2")
  • nix/daml-compiler-sources.json: { "version": "3.4.9" }
  • All daml/*/daml.yaml: set sdk-version: 3.4.9 and --target=2.2
  • Remove -Wno-ledger-time-is-alpha from all daml.yaml files (not in SDK 3.4.9)
  • 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

How to use it

Copy the folder

Take aiskillstore/canton-network-repos from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.