SuperAPI AI 工具集

canton-network-repos

编程与开发

查看项目

更新于 10-15 14:28

技能介绍

用途

该技能面向使用 Canton Network 的开发者,适用于以下场景:处理 Canton Network 参与者(participants)、编写或调试 DAML 智能合约、开发 Splice 应用,以及排查 LF(Daml-LF)版本与包 ID(package ID)相关的问题。

仓库层级与版本映射

三个仓库存在依赖关系:Splice(如 0.5.4)依赖 Canton(如 3.4.9),Canton 依赖 DAML SDK(如 3.4.9)。

版本映射表:

Splice Canton DAML SDK Protocol LF Default LF Available
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 支持 仅嵌入式
Pruning 完整 有限

构建命令

# 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

在相同 LF 版本下,社区构建的 DAR 与企业版具有相同的包 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 兼容性。

适用场景与限制

适用于 Canton Network 参与者、DAML 智能合约、Splice 应用的开发与调试,尤其是 LF 版本与包 ID 相关问题的排查。资料未提供该技能的具体安装方式、收费信息或平台限制,这些内容暂未提供。