mcpField
M
mesh-transaction

mesh-transaction

github.com/meshjs開発244 回インストール36 週間前に更新
リポジトリ

mesh-transaction について

mesh-transactionは、`@meshsdk/transaction` の `MeshTxBuilder` でCardanoのトランザクションを構築するAIスキルです。支払い、スクリプト操作、ガバナンス取引を扱い、データ形式やスクリプトバージョンの選択も説明します。

主な機能

  1. 01ADA送金とトークン発行の構築
  2. 02スクリプト支出と報酬引き出しの作成
  3. 03ステーク委任とガバナンス操作の構築
  4. 04バランス調整済み・部分的な構築
  5. 05参照スクリプトと複数のデータ形式

活用シーン

  1. 01CardanoのADA決済トランザクション構築
  2. 02ネイティブまたはPlutusトークンの発行
  3. 03Plutusスクリプトの呼び出しとdatum・redeemer値の処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/meshjs/skills --skill mesh-transaction

インストール後、Claude Code で/mesh-transactionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AIKEN-MAPPING.md
PATTERNS.md
README.md
TRANSACTION.md
TROUBLESHOOTING.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() の後に署名を追加

ファイル

主要な概念

Fluent API

すべてのメソッドはチェーン呼び出し用に this を返します。

txBuilder
  .txIn(hash, index)
  .txOut(address, amount)
  .changeAddress(addr)
  .complete();
スクリプトバージョン

スクリプトのPlutusバージョンに合ったバージョンを選択してください。

バージョンEra用途
V1Alonzoレガシースクリプトのみ
V2Babbage既存のBabbage Eraスクリプト
V3Conway新しいスクリプト(現行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(常に)JSONconStr0()、integer()、pubKeyAddress()"JSON"(明示的に指定)
Redeemer(空、フィールドなし)MeshmConStr0([])、mConStr1([])省略(デフォルトは "Mesh")
Redeemer(フィールドあり)JSONconStr0() + 型付きラッパー"JSON" + DEFAULT_REDEEMER_BUDGET
Redeemer(未使用/Data 型)該当なし""(空文字列)省略

注記: 型パラメーターを指定せず、シンプルなDatumにMesh形式(mConStr0)を使うコントラクトもあります。どちらの形式も使用できます。重要なのは、型パラメーターを形式に一致させることです。

Aikenの型からMeshのデータへのマッピングの詳細は、AIKEN-MAPPING.md を参照してください。

重要: 型パラメーターを省略した場合、デフォルトは "Mesh" です。"JSON" を指定せずに { constructor: 0, ... } を使用すると、エラーが発生します。

参照スクリプト

*TxInReference() メソッドを使用すると、トランザクションにスクリプトを含めずに、オンチェーンに保存されたスクリプトを参照できます(トランザクションのサイズと手数料を削減できます)。

重要な注意事項

  1. 変更先アドレスが必要です — changeAddress() がないと complete() は失敗します
  2. 担保が必要です — スクリプトトランザクションには txInCollateral() が必要です
  3. 呼び出し順が重要です — スクリプト入力では、txIn() の前に spendingPlutusScriptV3() を呼び出してください
  4. コイン選択 — 自動選択するには、selectUtxosFrom() で UTxO を指定してください
  5. データム形式 — デフォルトの "Mesh" 型では { alternative: 0 } を使用し、{ constructor: 0 } は使用しません。{ constructor: 0 }(cardano-cli 形式)を使用するには "JSON" 型を指定してください
  6. スクリプトのバージョン — Conway 時代のスクリプトでは、デフォルトで V3 を使用してください。スクリプトのコンパイルに使用された Plutus バージョンと一致させてください

コメント