canton-network-repos について
Canton Network、Splice、DAMLのリポジトリを扱う開発者向けのリファレンススキルです。バージョン依存関係、LFの互換性、ビルドとアップグレードの手順、問題の切り分けをまとめています。
主な機能
- 01Splice、Canton、DAML SDKのバージョン対応表
- 02LFバージョンとPackage IDの互換性説明
- 03リポジトリ設定ファイルの一覧
- 04ビルドとLF 2.2への更新手順
- 05ビルドおよび検証エラーの記録
活用シーン
- 01リポジトリ間のバージョン互換性確認
- 02LFバージョン更新の計画
- 03CantonまたはSpliceプロジェクトのビルド
- 04Package 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 バージョンを混在させると、検証に失敗します。
Enterprise 版と Community 版の Canton
| 機能 | Enterprise | Community |
|---|---|---|
| トランザクション処理 | 並列 | 順次 |
| データベース | 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 バージョンの Enterprise 版と同一のパッケージ 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
アップグレードの検証に失敗:Enterprise 版(LF 2.2)のパッケージを Community 版(LF 2.1)のパッケージに置き換えています。LF 2.2 との互換性を維持するには、DAR インジェクションを使用してください。