mcpField
C
canton-network-repos

canton-network-repos

github.com/alleneubank开发50216 次安装18 周前更新
代码仓库

关于 canton-network-repos

这是面向 Canton Network、Splice 和 DAML 仓库开发者的参考技能,整理版本依赖、LF 兼容性、构建与升级步骤及常见问题排查。

主要功能

  1. 01梳理 Splice、Canton 与 DAML SDK 版本
  2. 02说明 LF 版本与 Package ID 兼容性
  3. 03列出仓库配置文件
  4. 04提供构建和 LF 2.2 升级步骤
  5. 05记录常见构建与验证问题

适用场景

  1. 01检查仓库版本是否兼容
  2. 02规划 LF 版本升级
  3. 03构建 Canton 或 Splice 项目
  4. 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

版本对应关系

SpliceCantonDAML SDK协议LF 默认版本LF 可用版本
0.5.43.4.93.4.9PV342.1*2.2(已验证)
0.5.33.4.83.4.8PV342.1*2.2
0.4.x3.3.x3.3.xPV332.12.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 版本定义damlsdk/daml-lf/language/.../LanguageVersion.scala
damlc 目标验证damlsdk/compiler/damlc/lib/DA/Cli/Options.hs
Canton 版本cantonVERSION
内置 DARcantoncommunity/common/src/main/daml/
Splice LF 配置spliceproject/CantonDependencies.scala
包目标splicedaml/*/daml.yaml
Docker 构建splicecluster/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 验证)

  1. project/CantonDependencies.scala:val daml_language_versions = Seq("2.2")
  2. nix/daml-compiler-sources.json:{ "version": "3.4.9" }
  3. 所有 daml/*/daml.yaml:设置 sdk-version: 3.4.9 和 --target=2.2
  4. 从所有 daml.yaml 文件中移除 -Wno-ledger-time-is-alpha(SDK 3.4.9 中不存在此选项)
  5. 构建: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