mcpField
P
psbt

psbt

github.com/aibtcdev其他11114 次安装1 天前更新
代码仓库

关于 psbt

用于 Bitcoin L1 部分签名比特币交易(PSBT)的命令行工具,面向多方签名交易流程。可估算手续费、使用已解锁钱包签名,并将完整签名的交易广播至 Bitcoin 网络。

主要功能

  1. 01估算不同速度档位的手续费
  2. 02使用 P2WPKH 或 Taproot 密钥签名
  3. 03选择要签名的输入
  4. 04可选地立即完成签名输入
  5. 05通过 mempool.space 广播交易

适用场景

  1. 01估算 PSBT 的网络手续费
  2. 02为多方交易签署指定输入
  3. 03广播已完整签名的 Bitcoin 交易

MCP 相关

输入说明提到 PSBT 可由 MCP 工具 `psbt_create_ordinal_buy` 创建;此技能自身通过命令行执行。

安装

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

$npx skills add https://github.com/aibtcdev/skills --skill psbt

安装后在 Claude Code 中输入/psbt确认已加载。

附带文件AGENT.mdpsbt.ts

详细介绍

PSBT 技能

在 Bitcoin L1 上提供 PSBT(部分签名的比特币交易)构建和签名操作。PSBT 支持多方签名工作流,例如序数市场购买:广播前,买家和卖家都必须签名。

  • estimate-fee — 根据 PSBT 结构进行只读费用估算。
  • sign — 使用当前已解锁钱包中的密钥(P2WPKH 或 Taproot)为一个或多个 PSBT 输入签名。
  • broadcast — 完成完全签名的 PSBT,并通过 mempool.space 将其广播到比特币网络。

用法

bun run psbt/psbt.ts <subcommand> [options]

子命令

estimate-fee

估算给定 PSBT 的网络费用(单位:聪)。解析交易结构,并根据 vsize 计算快速、中等和缓慢三个费用等级的估算值。

bun run psbt/psbt.ts estimate-fee --psbt <base64>

选项:

  • --psbt <base64>(必需)— Base64 格式的 PSBT

输出:

{
  "network": "mainnet",
  "vsize": 253,
  "inputsLength": 2,
  "outputsLength": 3,
  "feeEstimates": {
    "fast": { "satPerVb": 12, "totalSats": 3036 },
    "medium": { "satPerVb": 6, "totalSats": 1518 },
    "slow": { "satPerVb": 2, "totalSats": 506 }
  },
  "currentFeeSats": "1200"
}
sign

使用当前钱包中的 BTC 私钥(P2WPKH 和/或 Taproot)为 PSBT 输入签名。调用此子命令前,必须先解锁钱包。

bun run psbt/psbt.ts sign --psbt <base64>

选项:

  • --psbt <base64>(必需)— 要签名的 Base64 格式 PSBT
  • --inputs <indexes>(可选)— 以逗号分隔的输入索引;若省略,则为所有可签名的输入签名
  • --finalize(可选)— 立即完成已签名的输入(默认值:false)

输出:

{
  "success": true,
  "network": "mainnet",
  "signedInputs": [1, 2],
  "finalizedInputs": [],
  "skippedInputs": [{ "index": 0, "reason": "no matching key for this input" }],
  "psbtBase64": "<updated-base64>"
}
broadcast

完成完全签名的 PSBT,并通过 mempool.space 将其广播到比特币网络。

bun run psbt/psbt.ts broadcast --psbt <base64>

选项:

  • --psbt <base64>(必需)— Base64 格式的完全签名 PSBT

输出:

{
  "success": true,
  "network": "mainnet",
  "txid": "abc123...",
  "explorerUrl": "https://mempool.space/tx/abc123...",
  "txHex": "0200..."
}

注意事项

  • 调用 sign 前,必须先运行 bun run wallet/wallet.ts unlock 解锁钱包。
  • 对于序数购买 PSBT(由 MCP 工具 psbt_create_ordinal_buy 构建):输入索引 0 是卖家的铭文 UTXO;买家输入从索引 1 开始。除非你是卖家,否则只为买家输入(索引 1 及以上)签名。
  • broadcast 会调用 tx.finalize()——所有输入都必须已完全签名,否则会抛出错误。
  • estimate-fee 中的费用估算基于 PSBT 当前的 vsize;反映的是已签名交易的大小,而非未签名交易的大小。

评论

支持 Markdown