You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cardano中Plu-ts编写的NFT铸币脚本验证不生效问题求助

Cardano铸币脚本验证逻辑不生效问题排查与解决

问题描述

在Cardano上铸造NFT时,使用Plu-ts编写铸币策略脚本,通过Mesh SDK构建交易。NFT可成功铸造,但验证逻辑完全不生效——即使将脚本返回值改为pBool(false),交易仍能成功上链。

现有脚本

export const mintNFT = pfn(
  [datum.type, redeemer.type, PScriptContext.type],
  bool
)((datum, message, ctx) => {
  return pBool(true);
});

交易代码

const script: PlutusScript = {
  code: nftScriptCbor,
  version: "V2",
};

const recipient = await wallet.getChangeAddress();

const redeemer: Partial<Action> = {
  tag: "MINT",
};

const tx = new Transaction({ initiator: wallet });

const metadata: AssetMetadata = {
  name: "Test Token",
  description: "This is a test nft",
  image: "ipfs://",
  mediaType: "image/jpg",
};

const asset: Mint = {
  assetName: "MeshToken",
  assetQuantity: "1",
  metadata,
  label: "721",
  recipient,
};

const myUTxOs = await wallet.getUtxos();
tx.setCollateral(myUTxOs);

tx.mintAsset(script, asset, redeemer);

const unsignedTx = await tx.build();
const signedTx = await wallet.signTx(unsignedTx);
const txHash = await wallet.submitTx(signedTx);

return txHash;

解决方案

1. 修正脚本参数签名(核心问题)

Cardano的Plutus V2铸币脚本(政策脚本)不需要datum参数,仅接收redeemer和ScriptContext两个参数。错误的参数签名会导致脚本无法被节点正确执行,直接绕过验证逻辑。修改脚本:

export const mintNFT = pfn(
  [redeemer.type, PScriptContext.type], // 移除datum.type参数
  bool
)((message, ctx) => {
  return pBool(false);
});

2. 确保资产与脚本政策ID绑定

交易中铸造的资产必须关联脚本生成的政策ID,否则会使用默认的自由铸币政策(无验证)。添加政策ID关联:

import { hashScript } from '@meshsdk/core';

// 计算脚本对应的政策ID
const policyId = hashScript(script);

// 在asset对象中明确指定政策ID
const asset: Mint = {
  policyId: policyId, // 新增这一行
  assetName: "MeshToken",
  assetQuantity: "1",
  metadata,
  label: "721",
  recipient,
};

3. 验证脚本编译与CBOR有效性

确保Plu-ts脚本已正确编译为CBOR格式:

import { compile } from '@plu-ts/core';
// 重新编译脚本生成有效CBOR
const nftScriptCbor = compile(mintNFT).toString();

4. 检查交易结构

构建交易后,可通过Cardano区块浏览器查看交易详情,确认:

  • 交易包含了你编写的脚本
  • 铸币动作的政策ID与脚本哈希一致

内容的提问来源于stack exchange,提问作者Saad Raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:21:09