mesh-core-cst について
低レベルの Cardano ユーティリティを提供する TypeScript パッケージ `@meshsdk/core-cst` の利用を支援するスキルです。トランザクションのシリアライズ、アドレス、Plutus データ、署名を直接扱う開発者向けです。
主な機能
- 01トランザクションの CBOR 変換と復元
- 02ハッシュ・アドレス・キーの解決
- 03CIP-8 メッセージの署名と検証
- 04Plutus スクリプトへのパラメーター適用
- 05形式をまたいだ Plutus データ変換
- 06Cardano アドレスの解析と変換
活用シーン
- 01Cardano トランザクション本文のシリアライズ
- 02CIP-8 署名メッセージの検証
- 03Plutus スクリプトへのパラメーター設定
- 04JSON と CBOR 間の Plutus データ変換
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ meshjs/ skills --skill mesh-core-cstインストール後、Claude Code で/mesh-core-cstを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CORE-CST.mdPATTERNS.mdREADME.mdTROUBLESHOOTING.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);
ファイル
- CORE-CST.md - API リファレンスの完全版
- PATTERNS.md - 一般的な使用パターン
- TROUBLESHOOTING.md - エラーの解決方法
モジュールのエクスポート
| モジュール | 用途 |
|---|---|
resolvers | ハッシュ/アドレスの解決関数 |
serializer | CardanoSDKSerializer クラス |
message-signing | CIP-8 COSE ユーティリティ |
plutus-tools | スクリプトのパラメーター化 |
utils | データ、アドレス、エンコーディングのユーティリティ |
types | @cardano-sdk/core からの再エクスポート |
重要な注意事項
- 低レベルのパッケージです - ほとんどのユーザーには、代わりに
@meshsdk/transactionの使用をおすすめします - Mesh 内部で使用されます - MeshTxBuilder のシリアライズを支えます
- Cardano のプリミティブに関する理解が必要です - CBOR、Plutus データ、アドレス
- cardano-sdk を再エクスポートします -
Cardano、Serialization、Cryptoの各エクスポートからアクセスできます
コメント
Markdown 対応