关于 cardano-protocol-params
面向 Cardano 开发者的协议参数技能,指导使用 cardano-cli 获取并解读目标网络的最新参数,用于手续费、最小 UTxO 和 Plutus 执行预算;也提供 Docker 运行 CLI 的备用方式。
主要功能
- 01获取目标网络的参数
- 02说明手续费计算输入项
- 03检查最小 UTxO 要求
- 04查看 Plutus 执行预算
- 05通过 Docker 运行 cardano-cli
适用场景
- 01排查 UTxO 过小的交易错误
- 02估算脚本执行成本
- 03比较不同网络的参数
- 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.mdpparams.mdscripts/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 与交易产物一同保存,以便调试
参考资料
shared/PRINCIPLES.md- Cardano 协议参数
评论
支持 Markdown