cardano-cli-plutus-scripts について
`cardano-cli`でCardano Plutusスクリプトのトランザクションを準備する人向けのガイダンススキルです。説明とテンプレートを提供し、トランザクション自体は実行しません。
主な機能
- 01スクリプト資金のロックと支出のテンプレート
- 02DatumとRedeemerの扱い方
- 03担保の要件と扱い方
- 04V1、V2、V3スクリプトの違い
- 05`cardano-cli`のDocker代替手段
活用シーン
- 01スクリプトアドレスへのトランザクション準備
- 02DatumとRedeemerの選択肢の理解
- 03担保要件の確認
- 04Plutusトランザクションパターンの参照
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ flux-point-studios/ cardano-agent-skills --skill cardano-cli-plutus-scriptsインストール後、Claude Code で/cardano-cli-plutus-scriptsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/docker-fallback.mdscript-spend-template.mdscripts/cardano-cli.sh詳細
cardano-cli-plutus-scripts
これはガイダンス用スキルです。 テンプレートと解説を提供します。実行には
cardano-cli-plutus-scripts-operatorを使用してください。
使用する場面
- Plutus スクリプトのトランザクションパターンを学ぶ
- データム、リディーマー、担保について理解する
- スクリプトとのやり取りに使うテンプレートを入手する
運用ルール(必ず従うこと)
- ネットワークとスクリプトのバージョン(V2/V3)を確認します
- 実行はせず、テンプレートのみを提供します
- 必ず担保の処理を含めます
- 最新のプロトコルパラメーターを使用します
Docker フォールバックモード
ローカルに cardano-cli がインストールされていない場合は、このスキルフォルダーにあるラッパースクリプトを使用して、Docker 内で cardano-cli を実行します(Cardano ノードのコンテナーイメージには CLI が含まれています)。
chmod +x {baseDir}/scripts/cardano-cli.sh
{baseDir}/scripts/cardano-cli.sh version
注:
- ラッパーは現在のディレクトリをコンテナー内の
/workにマウントするため、pparams.json、tx.body、datum.jsonなどのファイルを通常どおり使用できます。 - ローカルノードのソケットがある場合は、実行前に
CARDANO_NODE_SOCKET_PATHを設定すると、queryコマンドが動作します。 CARDANO_DOCKER_IMAGE=ghcr.io/intersectmbo/cardano-node:<tag>を指定してイメージを上書きできます。
主な概念
スクリプトのバージョン
- V1(Alonzo):レガシーで、機能が限定されています
- V2(Babbage):参照スクリプト、インラインデータム
- V3(Conway):ガバナンス、簡素化されたインターフェース
データムの処理
- インラインデータム:UTxO とともにオンチェーンに保存されます
- データムハッシュ:ハッシュのみをオンチェーンに保存し、使用時に完全なデータムを指定します
- データムなし:一部の V3 スクリプトで使用します
担保
- すべての Plutus スクリプトトランザクションで必要です
- ADA のみの UTxO でなければなりません
- スクリプトが予期せず失敗した場合は没収されます
- 通常は 1~5 ADA で十分です
ワークフローテンプレート
スクリプトアドレスに資金をロックする
# 1. Derive script address
cardano-cli conway address build \
--payment-script-file script.plutus \
--testnet-magic 1 \
--out-file script.addr
# 2. Create datum file
echo '{"constructor": 0, "fields": []}' > datum.json
# 3. Lock with inline datum
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <utxo>#<index> \
--tx-out "$(cat script.addr)+5000000" \
--tx-out-inline-datum-file datum.json \
--change-address <payment-addr> \
--out-file tx.unsigned
# Sign and submit
スクリプトから使用する
# 1. Create redeemer
echo '{"constructor": 0, "fields": []}' > redeemer.json
# 2. Build script spend
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <script-utxo>#<index> \
--tx-in-script-file script.plutus \
--tx-in-inline-datum-present \
--tx-in-redeemer-file redeemer.json \
--tx-in-collateral <collateral-utxo>#<index> \
--tx-out <recipient>+<amount> \
--change-address <payment-addr> \
--out-file tx.unsigned
# Sign (with collateral key) and submit
参照スクリプトを使用する場合
# Script already on-chain at reference UTxO
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <script-utxo>#<index> \
--spending-tx-in-reference <ref-script-utxo>#<index> \
--spending-plutus-script-v2 \
--spending-reference-tx-in-inline-datum-present \
--spending-reference-tx-in-redeemer-file redeemer.json \
--tx-in-collateral <collateral>#<index> \
--tx-out <recipient>+<amount> \
--change-address <payment-addr> \
--out-file tx.unsigned
例
例:シンプルなバリデーターの使用
ユーザーのリクエスト:「常に成功するスクリプトから使用したい」
応答:
# === Spend from Always-Succeeds Script ===
SCRIPT_ADDR=$(cat script.addr)
PAYMENT_ADDR=$(cat base.addr)
# 1. Query script UTxO
cardano-cli conway query utxo \
--address $SCRIPT_ADDR \
--testnet-magic 1
# Note the UTxO hash and index
# 2. Query payment UTxOs (for collateral)
cardano-cli conway query utxo \
--address $PAYMENT_ADDR \
--testnet-magic 1
# Select ADA-only UTxO for collateral
# 3. Create redeemer (for always-succeeds, can be unit)
echo '{"constructor": 0, "fields": []}' > redeemer.json
# 4. Build transaction
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <script-utxo>#0 \
--tx-in-script-file always-succeeds.plutus \
--tx-in-inline-datum-present \
--tx-in-redeemer-file redeemer.json \
--tx-in-collateral <collateral-utxo>#0 \
--tx-out "$PAYMENT_ADDR+4500000" \
--change-address $PAYMENT_ADDR \
--out-file tx.unsigned
# 5. Sign and submit (use operator skill)
デバッグ
実行コストを計算する
cardano-cli conway transaction build \
... \
--calculate-plutus-script-cost costs.json
cat costs.json | jq .
よくある失敗
- ExUnitsTooBig:スクリプトが実行予算を超えています
- CollateralNotFound:担保がないか、無効です
- DatumMismatch:指定したデータムがハッシュと一致しません
- ScriptFailure:バリデーターが False を返しました
安全性/鍵の取り扱い
- まず preprod/preview でスクリプトをテストします
- 担保は最小限にします
- データム/リディーマーは公開情報です。秘密情報を含めないでください
- 再ビルド後にスクリプトハッシュを確認します
参考資料
shared/PRINCIPLES.mdcardano-cli-plutus-scripts-operator(実行用)aiken-smart-contracts(バリデーターの作成用)
コメント
Markdown 対応