关于 canton-network-repos
这是面向 Canton Network、Splice 和 DAML 仓库开发者的参考技能,整理版本依赖、LF 兼容性、构建与升级步骤及常见问题排查。
主要功能
- 01梳理 Splice、Canton 与 DAML SDK 版本
- 02说明 LF 版本与 Package ID 兼容性
- 03列出仓库配置文件
- 04提供构建和 LF 2.2 升级步骤
- 05记录常见构建与验证问题
适用场景
- 01检查仓库版本是否兼容
- 02规划 LF 版本升级
- 03构建 Canton 或 Splice 项目
- 04排查 Package ID 或升级验证错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alleneubank/ claude-code --skill canton-network-repos安装后在 Claude Code 中输入/canton-network-repos确认已加载。
详细介绍
Canton Network 仓库
仓库层级
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
版本对应关系
| Splice | Canton | DAML SDK | 协议 | LF 默认版本 | LF 可用版本 |
|---|---|---|---|---|---|
| 0.5.4 | 3.4.9 | 3.4.9 | PV34 | 2.1* | 2.2(已验证) |
| 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 |
*开源 Splice 0.5.4 随附的 SDK 快照版本为 3.3.0-snapshot.20250502(早于 LF 2.2)。LF 2.2 于 2025-10-03 加入 SDK。升级到 SDK 3.4.9 后即可构建 LF 2.2。
关键配置文件
| 用途 | 仓库 | 文件 |
|---|---|---|
| LF 版本定义 | daml | sdk/daml-lf/language/.../LanguageVersion.scala |
| damlc 目标验证 | daml | sdk/compiler/damlc/lib/DA/Cli/Options.hs |
| Canton 版本 | canton | VERSION |
| 内置 DAR | canton | community/common/src/main/daml/ |
| Splice LF 配置 | splice | project/CantonDependencies.scala |
| 包目标 | splice | daml/*/daml.yaml |
| Docker 构建 | splice | cluster/images/*/Dockerfile |
Splice LF 配置(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")
包 ID 推导
包 ID 是以下内容的加密哈希:源内容 + LF 版本(--target)+ SDK/stdlib 版本 + 依赖包 ID。
更改 LF 版本 = 包 ID 不同 = 包不兼容。 Canton 会验证升级后的包是否使用相同或更新的 LF 版本;在同一账本上混用不同 LF 版本会导致验证失败。
企业版与社区版 Canton
| 功能 | 企业版 | 社区版 |
|---|---|---|
| 事务处理 | 并行 | 顺序 |
| 数据库 | PostgreSQL、Oracle | 仅 PostgreSQL |
| HA Domain | 支持 | 仅嵌入式 |
| 修剪 | 完整 | 有限 |
构建命令
# 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
升级到 LF 2.2(已通过 SDK 3.4.9 验证)
project/CantonDependencies.scala:val daml_language_versions = Seq("2.2")nix/daml-compiler-sources.json:{ "version": "3.4.9" }- 所有
daml/*/daml.yaml:设置sdk-version: 3.4.9和--target=2.2 - 从所有
daml.yaml文件中移除-Wno-ledger-time-is-alpha(SDK 3.4.9 中不存在此选项) - 构建:
daml build -p daml/splice-util && daml build -p daml/splice-amulet
社区版构建的 DAR 在相同 LF 版本下与企业版具有相同的包 ID(已于 2025-12-24 验证)。
故障排除
“Unknown Daml-LF version: 2.2”:damlc 二进制文件不支持 2.2。检查 daml damlc --help 以查看支持的目标;升级到 SDK 3.4.9。
包 ID 不匹配:不同构建使用了不同的 --target 值。检查:unzip -p package.dar META-INF/MANIFEST.MF | grep Sdk-Version
升级验证失败:将企业版(LF 2.2)包替换为社区版(LF 2.1)包。使用 DAR 注入以保持 LF 2.2 兼容性。
参考资料
评论
支持 Markdown