| name | mesh-core-cst |
| description | Use when working with low-level Cardano utilities via MeshJS core-cst package. Covers CBOR serialization and deserialization, Plutus data conversion, address resolution and parsing, CIP-8 message signing and verification, script parameterization with applyParamsToScript, native script hashing, and direct access to cardano-sdk types. |
| license | Apache-2.0 |
| metadata | {"author":"MeshJS","version":"1.0"} |
Mesh SDK Core CST Skill
AI-assisted low-level Cardano utilities using @meshsdk/core-cst.
Package Info
npm install @meshsdk/core-cst
npm install @meshsdk/core
What is core-cst?
@meshsdk/core-cst provides low-level utilities for:
- Serialization - Convert transactions to/from CBOR
- Resolvers - Extract hashes, addresses, keys from various formats
- Message Signing - CIP-8 COSE sign and verify
- Plutus Tools - Apply parameters to scripts, normalize encodings
- Data Conversion - Plutus data ↔ JSON ↔ CBOR
- Address Utilities - Parse, serialize, convert address formats
Quick Reference
Resolvers
import {
resolveDataHash,
resolvePaymentKeyHash,
resolveStakeKeyHash,
resolveRewardAddress,
resolvePlutusScriptAddress,
resolvePlutusScriptHash,
resolveNativeScriptAddress,
resolveNativeScriptHash,
resolvePoolId,
resolvePrivateKey,
resolveTxHash,
resolveScriptRef,
resolveScriptHashDRepId,
resolveEd25519KeyHash,
} from "@meshsdk/core-cst";
const hash = resolveDataHash({ constructor: 0, fields: [] });
const keyHash = resolvePaymentKeyHash("addr_test1qp...");
const rewardAddr = resolveRewardAddress("addr_test1qp...");
const scriptAddr = resolvePlutusScriptAddress(
{ code: "59...", version: "V2" },
0,
);
const txHash = resolveTxHash(txCborHex);
Message Signing (CIP-8)
import { signData, checkSignature } from "@meshsdk/core-cst";
const signature = signData("Hello Cardano!", signer);
const isValid = await checkSignature(
"Hello Cardano!",
signature,
"addr_test1qp...",
);
Plutus Tools
import { applyParamsToScript, normalizePlutusScript } from "@meshsdk/core-cst";
const appliedScript = applyParamsToScript(
rawScriptHex,
[{ constructor: 0, fields: [{ bytes: "abc123" }] }],
"Mesh",
);
const normalized = normalizePlutusScript(scriptHex, "DoubleCBOR");
Data Conversion
import {
toPlutusData,
fromBuilderToPlutusData,
fromPlutusDataToJson,
parseDatumCbor,
} from "@meshsdk/core-cst";
const plutusData = toPlutusData({ constructor: 0, fields: ["hello", 42] });
const data = fromBuilderToPlutusData({ type: "Mesh", content: myData });
const json = fromPlutusDataToJson(plutusData);
const datum = parseDatumCbor<MyDatumType>(datumCborHex);
Address Utilities
import {
deserializeBech32Address,
serialzeAddress,
scriptHashToBech32,
addrBech32ToPlutusDataHex,
} from "@meshsdk/core-cst";
const { pubKeyHash, scriptHash, stakeCredentialHash } =
deserializeBech32Address("addr_test1qp...");
const addr = scriptHashToBech32(scriptHash, stakeKeyHash, 0);
const addrPlutusHex = addrBech32ToPlutusDataHex("addr_test1qp...");
CardanoSDKSerializer
import { CardanoSDKSerializer } from "@meshsdk/core-cst";
const serializer = new CardanoSDKSerializer(protocolParams);
const txCbor = serializer.serializeTxBody(meshTxBuilderBody);
const signedTx = serializer.addSigningKeys(txCbor, [privateKeyHex]);
const dataCbor = serializer.serializeData({ type: "Mesh", content: myData });
const addr = serializer.serializeAddress(
{
pubKeyHash: "...",
stakeCredentialHash: "...",
},
0,
);
Files
Module Exports
| Module | Purpose |
|---|
resolvers | Hash/address resolution functions |
serializer | CardanoSDKSerializer class |
message-signing | CIP-8 COSE utilities |
plutus-tools | Script parameterization |
utils | Data, address, encoding utilities |
types | Re-exports from @cardano-sdk/core |
Important Notes
- This is a low-level package - Most users should use
@meshsdk/transaction instead
- Used internally by Mesh - Powers MeshTxBuilder serialization
- Requires understanding of Cardano primitives - CBOR, Plutus data, addresses
- Re-exports cardano-sdk - Access via
Cardano, Serialization, Crypto exports