mcpField
C
canton-network-repos

canton-network-repos

github.com/alleneubank開発50216 回インストール18 週間前に更新
リポジトリ

canton-network-repos について

Canton Network、Splice、DAMLのリポジトリを扱う開発者向けのリファレンススキルです。バージョン依存関係、LFの互換性、ビルドとアップグレードの手順、問題の切り分けをまとめています。

主な機能

  1. 01Splice、Canton、DAML SDKのバージョン対応表
  2. 02LFバージョンとPackage IDの互換性説明
  3. 03リポジトリ設定ファイルの一覧
  4. 04ビルドとLF 2.2への更新手順
  5. 05ビルドおよび検証エラーの記録

活用シーン

  1. 01リポジトリ間のバージョン互換性確認
  2. 02LFバージョン更新の計画
  3. 03CantonまたはSpliceプロジェクトのビルド
  4. 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

バージョン対応表

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 バージョンを混在させると、検証に失敗します。

Enterprise 版と Community 版の Canton

機能EnterpriseCommunity
トランザクション処理並列順次
データベースPostgreSQL、OraclePostgreSQL のみ
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 バージョンの 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 インジェクションを使用してください。

参考資料

コメント