
Canton Network Repos
- 1 installs
- 404 repo stars
- Updated August 5, 2026
- aiskillstore/marketplace
canton-network-repos is a Claude Code skill that documents the Canton Network open-source ecosystem (DAML SDK, Canton runtime, Splice) and their version and build relationships.
About
canton-network-repos is a Claude Code skill that documents the Canton Network open-source ecosystem: the DAML SDK, the Canton runtime, and Splice applications. It maps the repository hierarchy, version compatibility, enterprise vs community differences, and build processes. A developer uses it when working with DAML smart contracts, debugging LF version or package ID mismatches, or building Canton participants and Splice applications.
- Guide to the Canton Network open-source ecosystem (DAML SDK, Canton runtime, Splice)
- Maps repository hierarchy and version compatibility between DAML, Canton, and Splice
- Helps debug LF version and package ID mismatches
Canton Network Repos by the numbers
- 1 all-time installs (skills.sh)
- Ranked #426 of 479 Web3 & Blockchain skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
canton-network-repos capabilities & compatibility
- Capabilities
- repo architecture mapping · version compatibility analysis · smart contract guidance · build troubleshooting
- Works with
- github · docker · postgres
- Use cases
- research · debugging
What canton-network-repos says it does
Canton Network open-source ecosystem guide covering DAML SDK, Canton runtime, and Splice applications. Use when working with Canton Network, DAML smart contracts, or building decentralized application
This skill provides comprehensive knowledge about the Canton Network open-source ecosystem, repository relationships, and build processes.
npx skills add https://github.com/aiskillstore/marketplace --skill canton-network-reposAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 404 |
| Last updated | August 5, 2026 |
| Repository | aiskillstore/marketplace ↗ |
What it does
Navigate the Canton Network repos (DAML, Canton, Splice), resolve version compatibility, and build Canton or Splice apps.
Who is it for?
Developers working with DAML smart contracts or building Canton participants and Splice applications
Skip if: General blockchain work outside the Canton/DAML/Splice ecosystem
When should I use this skill?
Investigating version compatibility, LF version mismatches, or building Canton or Splice applications
By the numbers
- maps 3 interdependent repos (DAML SDK, Canton, Splice)
- lists enterprise vs community differences across 6 features
Files
Canton Network Open-Source Repositories
This skill provides comprehensive knowledge about the Canton Network open-source ecosystem, repository relationships, and build processes.
Activation
Use this skill when:
- Working with Canton Network, DAML, or Splice repositories
- Investigating version compatibility issues
- Understanding enterprise vs community differences
- Debugging LF version or package ID mismatches
- Building Canton participants or Splice applications
Repository Hierarchy
┌─────────────────────────────────────────────────────────────────┐
│ Splice Version (e.g., 0.5.4) │
│ github.com/digital-asset/decentralized-canton-sync │
│ Applications: Validator, SV, Wallet, Scan, Amulet (CC) │
└─────────────────────────┬───────────────────────────────────────┘
│ depends on
▼
┌─────────────────────────────────────────────────────────────────┐
│ Canton Version (e.g., 3.4.9) │
│ github.com/digital-asset/canton │
│ Runtime: Participant, Sequencer, Mediator, Admin API │
└─────────────────────────┬───────────────────────────────────────┘
│ depends on
▼
┌─────────────────────────────────────────────────────────────────┐
│ DAML SDK (e.g., 3.4.9) │
│ github.com/digital-asset/daml │
│ Compiler: damlc, LF Engine, Ledger API, stdlib, protobuf │
└─────────────────────────────────────────────────────────────────┘Repository Details
1. DAML SDK (github.com/digital-asset/daml)
Purpose: Smart contract language, compiler, and runtime libraries.
Key Directories:
daml/
├── sdk/
│ ├── compiler/damlc/ # Haskell compiler source
│ │ └── lib/DA/Cli/Options.hs # --target version validation
│ ├── daml-lf/
│ │ ├── language/ # LF version definitions (Scala)
│ │ ├── engine/ # LF execution engine
│ │ └── archive/ # DALF protobuf format
│ └── canton/ # Canton runtime (submodule)
├── ledger-api/ # gRPC API definitions
└── VERSION # SDK version stringLF Version Definitions (LanguageVersion.scala at v3.4.9):
// V2 versions defined
val List(v2_1, v2_2, v2_dev) = AllV2 // Line 51 - v2_2 IS defined
// Version ranges
case Major.V2 => VersionRange(v2_1, v2_2) // Line 171 - StableVersions includes v2_2
def AllVersions = VersionRange(v2_1, v2_dev)
// Features at v2_2:
val flatArchive = v2_2
val kindInterning = flatArchive
val exprInterning = flatArchive
val explicitPkgImports = v2_2
val unsafeFromInterfaceRemoved = v2_2Note: v2_2 IS in SDK v3.4.9 source. Older snapshots may not include it.
damlc Target Validation (Options.hs):
lfVersionOpt :: Parser LF.Version
-- Validates against LF.supportedOutputVersions
-- Error: "Unknown Daml-LF version: X" if not in list2. Canton (github.com/digital-asset/canton)
Purpose: Distributed ledger runtime implementing the Canton Protocol.
Key Directories:
canton/
├── community/ # Open-source Canton
│ ├── app/ # CantonCommunityApp entry point
│ ├── participant/ # Participant node implementation
│ ├── domain/ # Embedded domain (sequencer/mediator)
│ └── common/src/main/daml/ # Built-in DAML packages
│ └── AdminWorkflows/ # Ping, party replication DARs
├── daml/ # DAML SDK submodule
├── daml_dependencies.json # LF library versions
├── VERSION # Canton version
└── version.sbt # SBT version configBuilt-in DARs (embedded in JAR):
canton-builtin-admin-workflow-ping.darcanton-builtin-admin-workflow-party-replication-alpha.darCantonExamples.dar
Enterprise vs Community:
| Feature | Enterprise | Community |
|---|---|---|
| Main class | CantonEnterpriseApp | CantonCommunityApp |
| Transaction processing | Parallel | Sequential |
| Pruning | Available | Limited |
| Database | PostgreSQL, Oracle | PostgreSQL only |
| HA Domain | Supported | Embedded only |
3. Splice (github.com/digital-asset/decentralized-canton-sync)
Purpose: Decentralized synchronizer governance, Amulet (Canton Coin), and network applications.
Key Directories:
decentralized-canton-sync/
├── project/
│ ├── CantonDependencies.scala # Version config, LF versions
│ └── DamlPlugin.scala # DAR build logic
├── daml/
│ ├── splice-amulet/ # Canton Coin token contracts
│ ├── splice-wallet/ # Wallet contracts
│ ├── splice-dso-governance/ # DSO governance
│ └── */daml.yaml # Package configs with --target
├── apps/
│ ├── sv/ # Super Validator app
│ ├── validator/ # Validator app
│ ├── wallet/ # Wallet backend
│ └── scan/ # Payment scan service
├── cluster/images/ # Docker image builds
│ └── canton-community/ # Community participant image
└── daml-compiler-sources.json # Compiler version referenceCritical Configuration (CantonDependencies.scala):
object CantonDependencies {
val version: String = "3.4.9"
val daml_language_versions = Seq("2.1") // ← LF target version
val daml_libraries_version = version
val daml_compiler_version = sys.env("DAML_COMPILER_VERSION")
}Package Target (daml/splice-amulet/daml.yaml):
sdk-version: 3.3.0-snapshot.20250502.13767.0.v2fc6c7e2
build-options:
- --target=2.1 # Explicit LF 2.1 targetVersion Mapping
| Splice | Canton | DAML SDK | Protocol | LF (Default) | LF (With SDK 3.4.9) |
|---|---|---|---|---|---|
| 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 which predates LF 2.2.
Root Cause (Verified): The public Splice release uses an SDK snapshot from May 2, 2025, but LF 2.2 was added to the SDK on October 3, 2025. Updating to SDK 3.4.9 enables LF 2.2 builds.
Key insight: LF 2.2 is fully available in open-source SDK v3.4.9. The Splice project simply needs to be updated to use the newer SDK.
LF Version Implications
Package ID Derivation
Package IDs are cryptographic hashes derived from: 1. Package source content 2. LF version used (--target) 3. SDK/stdlib versions 4. Dependency package IDs
Changing LF version = Different package IDs = Incompatible packages
Upgrade Validation
Canton validates package upgrades:
- Upgraded packages must use equal or newer LF version
- LF 2.1 package cannot "upgrade" to LF 2.2 package (different IDs)
- Mixing LF versions on same ledger causes validation failures
Building from Open-Source
Community Canton Participant
cd canton
sbt "community/app/assembly"
# Output: community/app/target/scala-2.13/canton-community.jarSplice Applications
cd decentralized-canton-sync
sbt compile # Requires DAML_COMPILER_VERSION env varBuilding with LF 2.2 (Verified Working)
LF 2.2 is available in SDK v3.4.9. The following steps have been verified to work:
1. Edit project/CantonDependencies.scala:
val daml_language_versions = Seq("2.2")2. Update nix/daml-compiler-sources.json:
{ "version": "3.4.9" }3. Update all daml/*/daml.yaml files:
sdk-version: 3.4.9
build-options:
- --target=2.24. Remove invalid warning flags (not present in SDK 3.4.9):
# Remove -Wno-ledger-time-is-alpha from all daml.yaml files5. Build packages:
cd decentralized-canton-sync
nix-shell -p daml-sdk --run "daml build -p daml/splice-util"
nix-shell -p daml-sdk --run "daml build -p daml/splice-amulet"Verified: splice-util and splice-amulet build successfully with LF 2.2 and SDK 3.4.9.
Fully Open-Source LF 2.2 Build (Verified)
Both Splice and Canton can be built with LF 2.2 from entirely open-source code:
Canton Built-in DARs
Update Canton's daml.yaml files:
cd canton/community
# Update all daml.yaml files to sdk-version: 3.4.9 and --target=2.2
perl -pi -e 's/sdk-version: 3\.3\.0-snapshot\.[^\n]*/sdk-version: 3.4.9/g' **/daml.yaml
perl -pi -e 's/--target=2\.1/--target=2.2/g' **/daml.yamlRebuild Canton:
sbt "canton-community-app/assembly"Verified Results (2025-12-24)
Community-built DARs have identical package IDs to enterprise:
canton-builtin-admin-workflow-ping-3.4.9-fbeb863dab36da66d99...
This confirms full compatibility with enterprise deployments.
Key Files Reference
| Purpose | Repository | File |
|---|---|---|
| LF versions (Scala) | daml | sdk/daml-lf/language/.../LanguageVersion.scala |
| damlc validation | daml | sdk/compiler/damlc/lib/DA/Cli/Options.hs |
| Canton version | canton | VERSION |
| Canton 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 |
Troubleshooting
"Unknown Daml-LF version: 2.2"
- Cause: damlc binary doesn't support 2.2 in
supportedOutputVersions - Check:
daml damlc --helpfor supported targets - Fix: Use SDK version that includes 2.2, or use 2.1
Package ID Mismatch
- Cause: Different LF versions between builds
- Check:
unzip -p package.dar META-INF/MANIFEST.MF | grep Sdk-Version - Fix: Ensure consistent
--targetacross all builds
Upgrade Validation Failed
- Cause: Trying to swap enterprise (LF 2.2) with community (LF 2.1) packages
- Fix: Use DAR injection to maintain LF 2.2 compatibility
External References
{
"schema_version": "2.0",
"meta": {
"generated_at": "2026-01-16T12:34:50.791Z",
"slug": "0xbigboss-canton-network-repos",
"source_url": "https://github.com/0xBigBoss/claude-code/tree/main/.claude/skills/canton-network-repos",
"source_ref": "main",
"model": "claude",
"analysis_version": "3.0.0",
"source_type": "community",
"content_hash": "bbb9a773dd54740b624fe74dbaca4c247c705bde9b9af7eb9cd11502a75983e5",
"tree_hash": "a48bbff8901af27e5e77cd83c183dc3c9278d5118940ce9544f0e178cd40e60d"
},
"skill": {
"name": "canton-network-repos",
"description": "Canton Network open-source ecosystem guide covering DAML SDK, Canton runtime, and Splice applications. Use when working with Canton Network, DAML smart contracts, or building decentralized applications.",
"summary": "Canton Network open-source ecosystem guide covering DAML SDK, Canton runtime, and Splice application...",
"icon": "🏗️",
"version": "1.0.0",
"author": "0xBigBoss",
"license": "MIT",
"category": "coding",
"tags": [
"canton",
"daml",
"blockchain",
"distributed-ledger"
],
"supported_tools": [
"claude",
"codex",
"claude-code"
],
"risk_factors": [
"network",
"filesystem",
"external_commands"
]
},
"security_audit": {
"risk_level": "safe",
"is_blocked": false,
"safe_to_publish": true,
"summary": "Pure documentation skill containing only markdown content about the Canton Network ecosystem. No executable code, scripts, network operations, or file system access. Contains only informational content and example commands for reference. The static findings listed in the prompt DO NOT EXIST in the actual skill-report.json which shows zero findings across all severity levels.",
"risk_factor_evidence": [
{
"factor": "network",
"evidence": [
{
"file": "skill-report.json",
"line_start": 6,
"line_end": 6
},
{
"file": "SKILL.md",
"line_start": 302,
"line_end": 302
},
{
"file": "SKILL.md",
"line_start": 303,
"line_end": 303
},
{
"file": "SKILL.md",
"line_start": 304,
"line_end": 304
},
{
"file": "SKILL.md",
"line_start": 305,
"line_end": 305
},
{
"file": "SKILL.md",
"line_start": 306,
"line_end": 306
}
]
},
{
"factor": "filesystem",
"evidence": [
{
"file": "skill-report.json",
"line_start": 6,
"line_end": 6
},
{
"file": "SKILL.md",
"line_start": 276,
"line_end": 276
}
]
},
{
"factor": "external_commands",
"evidence": [
{
"file": "SKILL.md",
"line_start": 21,
"line_end": 41
},
{
"file": "SKILL.md",
"line_start": 41,
"line_end": 45
},
{
"file": "SKILL.md",
"line_start": 45,
"line_end": 50
},
{
"file": "SKILL.md",
"line_start": 50,
"line_end": 62
},
{
"file": "SKILL.md",
"line_start": 62,
"line_end": 64
},
{
"file": "SKILL.md",
"line_start": 64,
"line_end": 65
},
{
"file": "SKILL.md",
"line_start": 65,
"line_end": 79
},
{
"file": "SKILL.md",
"line_start": 79,
"line_end": 83
},
{
"file": "SKILL.md",
"line_start": 83,
"line_end": 84
},
{
"file": "SKILL.md",
"line_start": 84,
"line_end": 88
},
{
"file": "SKILL.md",
"line_start": 88,
"line_end": 90
},
{
"file": "SKILL.md",
"line_start": 90,
"line_end": 95
},
{
"file": "SKILL.md",
"line_start": 95,
"line_end": 107
},
{
"file": "SKILL.md",
"line_start": 107,
"line_end": 110
},
{
"file": "SKILL.md",
"line_start": 110,
"line_end": 111
},
{
"file": "SKILL.md",
"line_start": 111,
"line_end": 112
},
{
"file": "SKILL.md",
"line_start": 112,
"line_end": 123
},
{
"file": "SKILL.md",
"line_start": 123,
"line_end": 128
},
{
"file": "SKILL.md",
"line_start": 128,
"line_end": 146
},
{
"file": "SKILL.md",
"line_start": 146,
"line_end": 148
},
{
"file": "SKILL.md",
"line_start": 148,
"line_end": 149
},
{
"file": "SKILL.md",
"line_start": 149,
"line_end": 156
},
{
"file": "SKILL.md",
"line_start": 156,
"line_end": 158
},
{
"file": "SKILL.md",
"line_start": 158,
"line_end": 159
},
{
"file": "SKILL.md",
"line_start": 159,
"line_end": 163
},
{
"file": "SKILL.md",
"line_start": 163,
"line_end": 173
},
{
"file": "SKILL.md",
"line_start": 173,
"line_end": 184
},
{
"file": "SKILL.md",
"line_start": 184,
"line_end": 199
},
{
"file": "SKILL.md",
"line_start": 199,
"line_end": 203
},
{
"file": "SKILL.md",
"line_start": 203,
"line_end": 206
},
{
"file": "SKILL.md",
"line_start": 206,
"line_end": 209
},
{
"file": "SKILL.md",
"line_start": 209,
"line_end": 215
},
{
"file": "SKILL.md",
"line_start": 215,
"line_end": 216
},
{
"file": "SKILL.md",
"line_start": 216,
"line_end": 218
},
{
"file": "SKILL.md",
"line_start": 218,
"line_end": 220
},
{
"file": "SKILL.md",
"line_start": 220,
"line_end": 221
},
{
"file": "SKILL.md",
"line_start": 221,
"line_end": 223
},
{
"file": "SKILL.md",
"line_start": 223,
"line_end": 225
},
{
"file": "SKILL.md",
"line_start": 225,
"line_end": 226
},
{
"file": "SKILL.md",
"line_start": 226,
"line_end": 230
},
{
"file": "SKILL.md",
"line_start": 230,
"line_end": 233
},
{
"file": "SKILL.md",
"line_start": 233,
"line_end": 235
},
{
"file": "SKILL.md",
"line_start": 235,
"line_end": 238
},
{
"file": "SKILL.md",
"line_start": 238,
"line_end": 242
},
{
"file": "SKILL.md",
"line_start": 242,
"line_end": 253
},
{
"file": "SKILL.md",
"line_start": 253,
"line_end": 258
},
{
"file": "SKILL.md",
"line_start": 258,
"line_end": 261
},
{
"file": "SKILL.md",
"line_start": 261,
"line_end": 263
},
{
"file": "SKILL.md",
"line_start": 263,
"line_end": 268
},
{
"file": "SKILL.md",
"line_start": 268,
"line_end": 276
},
{
"file": "SKILL.md",
"line_start": 276,
"line_end": 277
},
{
"file": "SKILL.md",
"line_start": 277,
"line_end": 278
},
{
"file": "SKILL.md",
"line_start": 278,
"line_end": 279
},
{
"file": "SKILL.md",
"line_start": 279,
"line_end": 280
},
{
"file": "SKILL.md",
"line_start": 280,
"line_end": 281
},
{
"file": "SKILL.md",
"line_start": 281,
"line_end": 282
},
{
"file": "SKILL.md",
"line_start": 282,
"line_end": 287
},
{
"file": "SKILL.md",
"line_start": 287,
"line_end": 288
},
{
"file": "SKILL.md",
"line_start": 288,
"line_end": 293
},
{
"file": "SKILL.md",
"line_start": 293,
"line_end": 294
}
]
}
],
"critical_findings": [],
"high_findings": [],
"medium_findings": [],
"low_findings": [],
"dangerous_patterns": [],
"files_scanned": 2,
"total_lines": 485,
"audit_model": "claude",
"audited_at": "2026-01-16T12:34:50.791Z"
},
"content": {
"user_title": "Understand Canton Network repositories",
"value_statement": "Get expert guidance on working with Canton Network, DAML, and Splice open-source repositories. Covers version compatibility, build processes, and troubleshooting for distributed ledger development.",
"seo_keywords": [
"Canton Network",
"DAML SDK",
"DAML LF",
"Canton participant",
"Splice",
"distributed ledger",
"smart contracts",
"Claude Code",
"Codex",
"blockchain development"
],
"actual_capabilities": [
"Explain DAML SDK, Canton, and Splice repository hierarchies",
"Provide version compatibility guidance (LF versions, SDK versions)",
"Show build commands for community Canton and Splice applications",
"Troubleshoot LF version and package ID mismatch errors",
"Detail enterprise vs community feature differences",
"Explain package ID derivation and upgrade validation"
],
"limitations": [
"Cannot execute builds or run commands",
"Cannot access external repositories or documentation",
"Cannot install or update SDK versions",
"Does not provide real-time version checking"
],
"use_cases": [
{
"target_user": "Blockchain developers",
"title": "Build Canton participants",
"description": "Build open-source Canton participant nodes and understand enterprise vs community differences."
},
{
"target_user": "DAML developers",
"title": "Resolve LF version issues",
"description": "Debug DAML-LF version mismatches and understand package ID derivations."
},
{
"target_user": "DevOps engineers",
"title": "Configure Splice applications",
"description": "Set up Splice applications with correct SDK versions and build configurations."
}
],
"prompt_templates": [
{
"title": "LF version help",
"scenario": "Getting LF version errors",
"prompt": "I'm getting 'Unknown Daml-LF version' errors when building. How do I fix version compatibility between DAML SDK, Canton, and Splice?"
},
{
"title": "Build instructions",
"scenario": "Building from source",
"prompt": "What are the build commands for community Canton participant and Splice applications?"
},
{
"title": "Enterprise vs community",
"scenario": "Comparing editions",
"prompt": "What are the key differences between Canton Enterprise and Community editions?"
},
{
"title": "Repository structure",
"scenario": "Understanding codebases",
"prompt": "Explain the repository hierarchy and relationships between DAML SDK, Canton, and Splice."
}
],
"output_examples": [
{
"input": "How do I build Splice applications with LF 2.2?",
"output": [
"To build Splice with LF 2.2, update these files:",
"• project/CantonDependencies.scala: Set daml_language_versions = Seq(\"2.2\")",
"• nix/daml-compiler-sources.json: Update version to \"3.4.9\"",
"• daml/*/daml.yaml: Update sdk-version to 3.4.9 and target to 2.2",
"• Remove -Wno-ledger-time-is-alpha flags from daml.yaml files",
"Then run: daml build commands with nix-shell"
]
},
{
"input": "Why am I seeing package ID mismatches?",
"output": [
"Package ID mismatches occur when LF versions differ between builds.",
"Package IDs derive from: package content, LF version, SDK version, and dependencies.",
"Fix: Ensure consistent --target version across all DAR files.",
"Verify SDK version alignment using the version mapping table.",
"Enterprise and community DARs match when built with same SDK version."
]
}
],
"best_practices": [
"Keep SDK, Canton, and Splice versions aligned according to the version mapping table",
"Use consistent LF target versions across all DAR files to avoid package ID mismatches",
"Rebuild Canton DARs when updating SDK versions to maintain compatibility"
],
"anti_patterns": [
"Mixing LF versions between enterprise and community packages",
"Using SDK snapshots older than the LF version you need",
"Building Splice without setting the DAML_COMPILER_VERSION environment variable"
],
"faq": [
{
"question": "Which DAML SDK version supports LF 2.2?",
"answer": "LF 2.2 is available in DAML SDK v3.4.9. Earlier versions including the May 2025 snapshot do not include it."
},
{
"question": "Can community Canton build LF 2.2 packages?",
"answer": "Yes, by updating Canton daml.yaml files to SDK 3.4.9 and rebuilding, community DARs match enterprise package IDs."
},
{
"question": "What causes package ID mismatches?",
"answer": "Package IDs derive from LF version, SDK version, and content. Different LF versions or SDK versions produce different IDs."
},
{
"question": "How do enterprise and community editions differ?",
"answer": "Enterprise supports parallel transaction processing, Oracle DB, HA domains, and advanced pruning. Community is PostgreSQL-only with sequential processing."
},
{
"question": "What environment variables are required for building?",
"answer": "Splice builds require DAML_COMPILER_VERSION environment variable set to match your SDK version."
},
{
"question": "How does Canton relate to DAML?",
"answer": "Canton implements the Canton Protocol using DAML for smart contracts. DAML provides the LF language and compiler; Canton provides the runtime."
}
]
},
"file_structure": [
{
"name": "SKILL.md",
"type": "file",
"path": "SKILL.md",
"lines": 307
}
]
}