mcpField
C
cardano-protocol-params

cardano-protocol-params

github.com/flux-point-studios开发840 次安装5 周前更新
代码仓库

关于 cardano-protocol-params

面向 Cardano 开发者的协议参数技能,指导使用 cardano-cli 获取并解读目标网络的最新参数,用于手续费、最小 UTxO 和 Plutus 执行预算;也提供 Docker 运行 CLI 的备用方式。

主要功能

  1. 01获取目标网络的参数
  2. 02说明手续费计算输入项
  3. 03检查最小 UTxO 要求
  4. 04查看 Plutus 执行预算
  5. 05通过 Docker 运行 cardano-cli

适用场景

  1. 01排查 UTxO 过小的交易错误
  2. 02估算脚本执行成本
  3. 03比较不同网络的参数
  4. 04将参数与交易文件一同保存

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/flux-point-studios/cardano-agent-skills --skill cardano-protocol-params

安装后在 Claude Code 中输入/cardano-protocol-params确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
docker-fallback.md
pparams.md
scripts/
cardano-cli.sh

详细介绍

cardano-protocol-params

使用场景

  • 获取最新的协议参数
  • 了解手续费计算所需的输入
  • 排查最小 UTxO 或执行预算问题
  • 比较不同网络的参数

操作规则(必须遵守)

  • 始终获取目标网络的最新参数
  • 切勿假定主网参数适用于测试网
  • 将 pparams.json 与交易产物一同保存,以便复现

Docker 回退模式

如果本地未安装 cardano-cli,请使用此技能文件夹中的包装脚本,在 Docker 中运行 cardano-cli(Cardano 节点容器镜像包含该 CLI)。

chmod +x {baseDir}/scripts/cardano-cli.sh
{baseDir}/scripts/cardano-cli.sh version

注意:

  • 包装脚本会将当前目录挂载到容器中的 /work,因此 pparams.json、tx.body、datum.json 等文件都可以照常使用。
  • 如果你有本地节点套接字,请在运行前设置 CARDANO_NODE_SOCKET_PATH,以便 query 命令正常工作。
  • 使用 CARDANO_DOCKER_IMAGE=ghcr.io/intersectmbo/cardano-node:<tag> 覆盖镜像。

关键参数说明

手续费计算
minFeeA: 44           # lovelace per byte
minFeeB: 155381       # base fee in lovelace

公式:fee = minFeeA * txSize + minFeeB

最小 UTxO
coinsPerUTxOByte: 4310   # lovelace per byte of UTxO

所需的最小 ADA = UTxO 大小(包括 datum)× coinsPerUTxOByte

执行单位(Plutus)
maxTxExecutionUnits:
  steps: 10000000000     # CPU budget
  memory: 10000000       # Memory budget
executionUnitPrices:
  priceSteps: 0.0000721  # lovelace per step
  priceMemory: 0.0577    # lovelace per memory unit
引用脚本
minFeeRefScriptCostPerByte: 15  # Cost for using reference scripts

工作流

获取参数
# Preprod
cardano-cli conway query protocol-parameters \
  --testnet-magic 1 \
  --out-file pparams-preprod.json

# Mainnet
cardano-cli conway query protocol-parameters \
  --mainnet \
  --out-file pparams-mainnet.json
提取关键值
# Using jq
cat pparams.json | jq '{
  minFeeA: .txFeePerByte,
  minFeeB: .txFeeFixed,
  coinsPerUTxOByte: .utxoCostPerByte,
  maxTxSize: .maxTxSize,
  maxValSize: .maxValueSize
}'
计算输出的最小 UTxO
# Approximate: base ~160 bytes + datum size
# For simple ADA-only output: ~1 ADA minimum
# For output with tokens: varies by token count/names

示例

示例:排查“UTxO 太小”错误

问题: 交易因最小 UTxO 错误而失败

解决方案:

# 1. Fetch current params
cardano-cli conway query protocol-parameters \
  --testnet-magic 1 \
  --out-file pparams.json

# 2. Check coinsPerUTxOByte
cat pparams.json | jq .utxoCostPerByte
# Result: 4310

# 3. Estimate min-UTxO for your output
# Simple ADA output: ~160 bytes × 4310 = ~690,000 lovelace
# With inline datum: add datum size × 4310
# With tokens: add ~30 bytes per token

# 4. Solution: increase output amount above minimum
示例:估算脚本执行成本

问题: 需要为 Plutus 脚本分配预算

解决方案:

# 1. Get execution prices
cat pparams.json | jq '{
  priceSteps: .executionUnitPrices.priceSteps,
  priceMemory: .executionUnitPrices.priceMemory
}'

# 2. If script uses 1M steps and 100K memory:
# Cost = (1000000 × 0.0000721) + (100000 × 0.0577)
# Cost = 72.1 + 5770 = 5842.1 lovelace (~0.006 ADA)

# 3. Add to base tx fee for total

网络 magic 参考

Mainnet:  (no flag, use --mainnet)
Preprod:  --testnet-magic 1
Preview:  --testnet-magic 2

安全 / 密钥处理

  • 协议参数是公开的,不涉及机密信息
  • 始终确认查询的是预期网络
  • 将 pparams 与交易产物一同保存,以便调试

参考资料

评论

支持 Markdown