mesh-transaction について
mesh-transactionは、`@meshsdk/transaction` の `MeshTxBuilder` でCardanoのトランザクションを構築するAIスキルです。支払い、スクリプト操作、ガバナンス取引を扱い、データ形式やスクリプトバージョンの選択も説明します。
主な機能
- 01ADA送金とトークン発行の構築
- 02スクリプト支出と報酬引き出しの作成
- 03ステーク委任とガバナンス操作の構築
- 04バランス調整済み・部分的な構築
- 05参照スクリプトと複数のデータ形式
活用シーン
- 01CardanoのADA決済トランザクション構築
- 02ネイティブまたはPlutusトークンの発行
- 03Plutusスクリプトの呼び出しとdatum・redeemer値の処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ meshjs/ skills --skill mesh-transactionインストール後、Claude Code で/mesh-transactionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AIKEN-MAPPING.mdPATTERNS.mdREADME.mdTRANSACTION.mdTROUBLESHOOTING.md詳細
Mesh SDKトランザクションスキル
@meshsdk/transaction の MeshTxBuilder を使用した、AI支援によるCardanoトランザクションの構築です。
パッケージ情報
npm install @meshsdk/transaction
# or
npm install @meshsdk/core # includes transaction + wallet + provider
クイックリファレンス
| タスク | メソッドチェーン |
|---|---|
| ADAを送信 | txIn() -> txOut() -> changeAddress() -> complete() |
| トークンをミント(Plutus) | mintPlutusScriptV3() -> mint() -> mintingScript() -> mintRedeemerValue() -> ... |
| トークンをミント(ネイティブ) | mint() -> mintingScript() -> ... |
| スクリプトによる使用 | spendingPlutusScriptV3() -> txIn() -> txInScript() -> txInDatumValue() -> txInRedeemerValue() -> ... |
| ステーク委任 | delegateStakeCertificate(rewardAddress, poolId) |
| 報酬を引き出す | withdrawal(rewardAddress, coin) -> withdrawalScript() -> withdrawalRedeemerValue() |
| ガバナンス投票 | vote(voter, govActionId, votingProcedure) |
| DRep登録 | drepRegistrationCertificate(drepId, anchor?, deposit?) |
コンストラクターのオプション
import { MeshTxBuilder } from '@meshsdk/transaction';
const txBuilder = new MeshTxBuilder({
fetcher?: IFetcher, // For querying UTxOs (e.g., BlockfrostProvider)
submitter?: ISubmitter, // For submitting transactions
evaluator?: IEvaluator, // For script execution cost estimation
serializer?: IMeshTxSerializer, // Custom serializer
selector?: IInputSelector, // Custom coin selection
isHydra?: boolean, // Hydra L2 mode (zero fees)
params?: Partial<Protocol>, // Custom protocol parameters
verbose?: boolean, // Enable logging
});
完了メソッド
| メソッド | 非同期 | バランス調整済み | 用途 |
|---|---|---|---|
complete() | はい | はい | 本番環境 — コイン選択と手数料計算を自動実行 |
completeSync() | いいえ | いいえ | テスト — 入力と手数料を手動で指定する必要があります |
completeUnbalanced() | いいえ | いいえ | 確認用の部分的な構築 |
completeSigning() | いいえ | 該当なし | complete() の後に署名を追加 |
ファイル
- TRANSACTION.md - APIリファレンス全文
- PATTERNS.md - よく使うトランザクションのレシピ
- AIKEN-MAPPING.md - Aikenスマートコントラクトの型からMeshTxBuilderへのマッピング
- TROUBLESHOOTING.md - エラーの解決方法
主要な概念
Fluent API
すべてのメソッドはチェーン呼び出し用に this を返します。
txBuilder
.txIn(hash, index)
.txOut(address, amount)
.changeAddress(addr)
.complete();
スクリプトバージョン
スクリプトのPlutusバージョンに合ったバージョンを選択してください。
| バージョン | Era | 用途 |
|---|---|---|
| V1 | Alonzo | レガシースクリプトのみ |
| V2 | Babbage | 既存のBabbage Eraスクリプト |
| V3 | Conway | 新しいスクリプト(現行Era、デフォルトの選択肢) |
LanguageVersion 型 = "V1" | "V2" | "V3"
各スクリプトコンテキストには、静的ショートカットと動的バージョンの2つの同等な呼び出し方法があります。
| コンテキスト | 静的ショートカット | 動的バージョン |
|---|---|---|
| 支出 | spendingPlutusScriptV3() | spendingPlutusScript("V3") |
| ミント | mintPlutusScriptV3() | mintPlutusScript("V3") |
| 出金 | withdrawalPlutusScriptV3() | withdrawalPlutusScript("V3") |
| 投票 | votePlutusScriptV3() | votePlutusScript("V3") |
Conway Eraの新しいスクリプトでは、デフォルトでV3を使用してください。 V2/V1は、それぞれのPlutusバージョンを対象にコンパイルされたスクリプトにのみ使用してください。
データ型(DatumおよびRedeemerの形式)
DatumとRedeemerの値では、type パラメーターを使って3つの形式を指定できます。
"Mesh"(デフォルト) — constructor ではなく alternative を使用します。
import { mConStr0, mConStr1 } from '@meshsdk/common';
// Mesh Data type uses "alternative" for ConstrPlutusData
const datum = { alternative: 0, fields: [42, "deadbeef"] };
// Or use helper: mConStr0([42, "deadbeef"])
// mConStr1([...]) for constructor index 1, etc.
.txOutInlineDatumValue(datum) // default type is "Mesh"
.txOutInlineDatumValue(datum, "Mesh") // explicit
"JSON" — constructor を使用するCardano-CLI形式です。
import { conStr0, integer, byteString, pubKeyAddress } from '@meshsdk/common';
// JSON format uses "constructor" with typed field wrappers
const datum = conStr0([integer(42), byteString("deadbeef")]);
// Equivalent to: { constructor: 0, fields: [{ int: 42 }, { bytes: "deadbeef" }] }
.txOutInlineDatumValue(datum, "JSON") // MUST specify "JSON"
"CBOR" — シリアライズ済みの16進数です。
.txOutInlineDatumValue("d8799f182aff", "CBOR")
実際のMeshJSコントラクトでの慣例:
| シナリオ | 形式 | ヘルパー | 型パラメーター |
|---|---|---|---|
| Datum(常に) | JSON | conStr0()、integer()、pubKeyAddress() | "JSON"(明示的に指定) |
| Redeemer(空、フィールドなし) | Mesh | mConStr0([])、mConStr1([]) | 省略(デフォルトは "Mesh") |
| Redeemer(フィールドあり) | JSON | conStr0() + 型付きラッパー | "JSON" + DEFAULT_REDEEMER_BUDGET |
Redeemer(未使用/Data 型) | 該当なし | ""(空文字列) | 省略 |
注記: 型パラメーターを指定せず、シンプルなDatumにMesh形式(mConStr0)を使うコントラクトもあります。どちらの形式も使用できます。重要なのは、型パラメーターを形式に一致させることです。
Aikenの型からMeshのデータへのマッピングの詳細は、AIKEN-MAPPING.md を参照してください。
重要: 型パラメーターを省略した場合、デフォルトは "Mesh" です。"JSON" を指定せずに { constructor: 0, ... } を使用すると、エラーが発生します。
参照スクリプト
*TxInReference() メソッドを使用すると、トランザクションにスクリプトを含めずに、オンチェーンに保存されたスクリプトを参照できます(トランザクションのサイズと手数料を削減できます)。
重要な注意事項
- 変更先アドレスが必要です —
changeAddress()がないとcomplete()は失敗します - 担保が必要です — スクリプトトランザクションには
txInCollateral()が必要です - 呼び出し順が重要です — スクリプト入力では、
txIn()の前にspendingPlutusScriptV3()を呼び出してください - コイン選択 — 自動選択するには、
selectUtxosFrom()で UTxO を指定してください - データム形式 — デフォルトの
"Mesh"型では{ alternative: 0 }を使用し、{ constructor: 0 }は使用しません。{ constructor: 0 }(cardano-cli 形式)を使用するには"JSON"型を指定してください - スクリプトのバージョン — Conway 時代のスクリプトでは、デフォルトで V3 を使用してください。スクリプトのコンパイルに使用された Plutus バージョンと一致させてください