mcpField
M
mesh-core-cst

mesh-core-cst

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

mesh-core-cst について

低レベルの Cardano ユーティリティを提供する TypeScript パッケージ `@meshsdk/core-cst` の利用を支援するスキルです。トランザクションのシリアライズ、アドレス、Plutus データ、署名を直接扱う開発者向けです。

主な機能

  1. 01トランザクションの CBOR 変換と復元
  2. 02ハッシュ・アドレス・キーの解決
  3. 03CIP-8 メッセージの署名と検証
  4. 04Plutus スクリプトへのパラメーター適用
  5. 05形式をまたいだ Plutus データ変換
  6. 06Cardano アドレスの解析と変換

活用シーン

  1. 01Cardano トランザクション本文のシリアライズ
  2. 02CIP-8 署名メッセージの検証
  3. 03Plutus スクリプトへのパラメーター設定
  4. 04JSON と CBOR 間の Plutus データ変換

インストール

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

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

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

同梱ファイル

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

CORE-CST.md
PATTERNS.md
README.md
TROUBLESHOOTING.md

詳細

Mesh SDK Core CST スキル

@meshsdk/core-cst を使用した、AI 支援による低レベルの Cardano ユーティリティです。

パッケージ情報

npm install @meshsdk/core-cst
# or
npm install @meshsdk/core  # includes core-cst + transaction + wallet + provider

core-cst とは?

@meshsdk/core-cst は、次の低レベルユーティリティを提供します。

  • シリアライズ - トランザクションを CBOR に変換、または CBOR から変換します
  • リゾルバー - さまざまな形式からハッシュ、アドレス、鍵を抽出します
  • メッセージ署名 - CIP-8 COSE の署名と検証を行います
  • Plutus ツール - スクリプトにパラメーターを適用し、エンコーディングを正規化します
  • データ変換 - Plutus データ ↔ JSON ↔ CBOR
  • アドレスユーティリティ - アドレス形式を解析、シリアライズ、変換します

クイックリファレンス

リゾルバー
import {
  resolveDataHash,
  resolvePaymentKeyHash,
  resolveStakeKeyHash,
  resolveRewardAddress,
  resolvePlutusScriptAddress,
  resolvePlutusScriptHash,
  resolveNativeScriptAddress,
  resolveNativeScriptHash,
  resolvePoolId,
  resolvePrivateKey,
  resolveTxHash,
  resolveScriptRef,
  resolveScriptHashDRepId,
  resolveEd25519KeyHash,
} from '@meshsdk/core-cst';

// Get data hash from Plutus data
const hash = resolveDataHash({ constructor: 0, fields: [] });

// Get payment key hash from address
const keyHash = resolvePaymentKeyHash('addr_test1qp...');

// Get stake/reward address from base address
const rewardAddr = resolveRewardAddress('addr_test1qp...');

// Get script address from Plutus script
const scriptAddr = resolvePlutusScriptAddress(
  { code: '59...', version: 'V2' },
  0  // networkId
);

// Get tx hash from tx CBOR
const txHash = resolveTxHash(txCborHex);
メッセージ署名(CIP-8)
import { signData, checkSignature } from '@meshsdk/core-cst';

// Sign data
const signature = signData('Hello Cardano!', signer);
// { key: 'a401...', signature: '845846...' }

// Verify signature
const isValid = await checkSignature(
  'Hello Cardano!',
  signature,
  'addr_test1qp...'  // optional address verification
);
Plutus ツール
import { applyParamsToScript, normalizePlutusScript } from '@meshsdk/core-cst';

// Apply parameters to parameterized script
const appliedScript = applyParamsToScript(
  rawScriptHex,
  [{ constructor: 0, fields: [{ bytes: 'abc123' }] }],
  'Mesh'  // or 'JSON' or 'CBOR'
);

// Normalize script encoding
const normalized = normalizePlutusScript(scriptHex, 'DoubleCBOR');
データ変換
import {
  toPlutusData,
  fromBuilderToPlutusData,
  fromPlutusDataToJson,
  parseDatumCbor,
} from '@meshsdk/core-cst';

// Mesh Data → PlutusData
const plutusData = toPlutusData({ constructor: 0, fields: ['hello', 42] });

// BuilderData → PlutusData (handles Mesh/JSON/CBOR)
const data = fromBuilderToPlutusData({ type: 'Mesh', content: myData });

// PlutusData → JSON
const json = fromPlutusDataToJson(plutusData);

// Parse datum CBOR to JSON
const datum = parseDatumCbor<MyDatumType>(datumCborHex);
アドレスユーティリティ
import {
  deserializeBech32Address,
  serialzeAddress,
  scriptHashToBech32,
  addrBech32ToPlutusDataHex,
} from '@meshsdk/core-cst';

// Deserialize address to components
const { pubKeyHash, scriptHash, stakeCredentialHash } =
  deserializeBech32Address('addr_test1qp...');

// Script hash to bech32 address
const addr = scriptHashToBech32(scriptHash, stakeKeyHash, 0);

// Address to Plutus data (for on-chain use)
const addrPlutusHex = addrBech32ToPlutusDataHex('addr_test1qp...');
CardanoSDKSerializer
import { CardanoSDKSerializer } from '@meshsdk/core-cst';

const serializer = new CardanoSDKSerializer(protocolParams);

// Serialize transaction body
const txCbor = serializer.serializeTxBody(meshTxBuilderBody);

// Add signing keys to transaction
const signedTx = serializer.addSigningKeys(txCbor, [privateKeyHex]);

// Serialize data
const dataCbor = serializer.serializeData({ type: 'Mesh', content: myData });

// Serialize address from components
const addr = serializer.serializeAddress({
  pubKeyHash: '...',
  stakeCredentialHash: '...',
}, 0);

ファイル

モジュールのエクスポート

モジュール用途
resolversハッシュ/アドレスの解決関数
serializerCardanoSDKSerializer クラス
message-signingCIP-8 COSE ユーティリティ
plutus-toolsスクリプトのパラメーター化
utilsデータ、アドレス、エンコーディングのユーティリティ
types@cardano-sdk/core からの再エクスポート

重要な注意事項

  1. 低レベルのパッケージです - ほとんどのユーザーには、代わりに @meshsdk/transaction の使用をおすすめします
  2. Mesh 内部で使用されます - MeshTxBuilder のシリアライズを支えます
  3. Cardano のプリミティブに関する理解が必要です - CBOR、Plutus データ、アドレス
  4. cardano-sdk を再エクスポートします - Cardano、Serialization、Crypto の各エクスポートからアクセスできます

コメント