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

Bitcoin Core 24.0未导入私钥调用signrawtransactionwithkey报错求助

Bitcoin Core 24.0 未导入私钥签名交易报错解决方案

问题背景

在Bitcoin Core 24.0环境下,尝试使用未导入钱包的私钥调用signrawtransactionwithkey签名原始交易时,返回错误:"Unable to sign input, invalid stack size (possibly missing key)"。

原始交易十六进制

0200000001d882ccfb5b012fc7f0ff80f88ad455397364b05924aa757eae6bc5ad686f02040100000000fdffffff0180841e00000000001976a9147270eaf36eb7849c81a1d21a8f4d15d81d03f54c88ac00000000

解码交易结果

执行命令:

bitcoin-cli decoderawtransaction "0200000001d882ccfb5b012fc7f0ff80f88ad455397364b05924aa757eae6bc5ad686f02040100000000fdffffff0180841e00000000001976a9147270eaf36eb7849c81a1d21a8f4d15d81d03f54c88ac00000000"

返回结果:

{
  "txid": "b9a6f80ecc13920db5d47e7a08cc50a271827c689fc95ef9b86721533d274de0",
  "hash": "b9a6f80ecc13920db5d47e7a08cc50a271827c689fc95ef9b86721533d274de0",
  "version": 2,
  "size": 85,
  "vsize": 85,
  "weight": 340,
  "locktime": 0,
  "vin": [
    {
      "txid": "04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8",
      "vout": 1,
      "scriptSig": {
        "asm": "",
        "hex": ""
      },
      "sequence": 4294967293
    }
  ],
  "vout": [
    {
      "value": 0.02000000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 7270eaf36eb7849c81a1d21a8f4d15d81d03f54c OP_EQUALVERIFY OP_CHECKSIG",
        "desc": "addr(mqx4bb2C4gZehqDoPKVZifkGXTdGghbPSZ)#a49n9ch9",
        "hex": "76a9147270eaf36eb7849c81a1d21a8f4d15d81d03f54c88ac",
        "address": "mqx4bb2C4gZehqDoPKVZifkGXTdGghbPSZ",
        "type": "pubkeyhash"
      }
    }
  ]
}

签名命令及输出

执行命令:

bitcoin-cli signrawtransactionwithkey "0200000001d882ccfb5b012fc7f0ff80f88ad455397364b05924aa757eae6bc5ad686f02040100000000fdffffff0180841e00000000001976a9147270eaf36eb7849c81a1d21a8f4d15d81d03f54c88ac00000000" "[\"<privkey>\"]"

返回结果:

{
  "hex": "0200000001d882ccfb5b012fc7f0ff80f88ad455397364b05924aa757eae6bc5ad686f02040100000000fdffffff0180841e00000000001976a9147270eaf36eb7849c81a1d21a8f4d15d81d03f54c88ac00000000",
  "complete": false,
  "errors": [
    {
      "txid": "04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8",
      "vout": 1,
      "witness": [
      ],
      "scriptSig": "",
      "sequence": 4294967293,
      "error": "Unable to sign input, invalid stack size (possibly missing key)"
    }
  ]
}

问题解答

1. 是否可以不导入私钥进行交易签名?

可以。signrawtransactionwithkey的核心设计就是无需将私钥导入钱包,直接用私钥签名交易。报错原因不是私钥未导入,而是缺少签名所需的前置UTXO上下文信息。

2. 正确的操作方式是什么?

签名时必须提供输入UTXO的完整锁定脚本(scriptPubKey)和金额,Bitcoin Core需要这些信息构建正确的签名脚本。具体步骤:

步骤1:获取前置交易的UTXO信息

查询你要花费的UTXO所属的原始交易:

bitcoin-cli getrawtransaction "04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8" true

从返回结果中提取vout[1]的scriptPubKey(hex格式)和value。

步骤2:构造prevtxs参数

将UTXO信息整理为JSON数组:

[
  {
    "txid": "04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8",
    "vout": 1,
    "scriptPubKey": "<提取到的scriptPubKey hex>",
    "amount": 0.02000000
  }
]

步骤3:传入参数完成签名

修改签名命令,加入prevtxs参数:

bitcoin-cli signrawtransactionwithkey "<原始交易十六进制>" "[\"<你的私钥>\"]" "[{\"txid\":\"04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8\",\"vout\":1,\"scriptPubKey\":\"<实际scriptPubKey hex>\",\"amount\":0.02000000}]"

执行后会返回包含完整签名的交易十六进制,且complete字段为true。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:35:10