Signrawtransactionwithkey 返回“无法签署输入,堆栈大小无效(可能缺少密钥)”

问题描述 投票:0回答:2

节点是比特币核心24.0。我正在尝试使用未导入钱包的私钥签署原始交易。

原始交易十六进制:

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)"
    }
  ]
}
  • 是否可以在不导入密钥(我用来签名的)的情况下签署交易?
  • 正确的做法是什么? (如果没有)

尝试不同的私钥、txid 来生成原始交易十六进制

transactions bitcoin
2个回答
0
投票

问题原因很可能是:

  • 我以错误的方式创建原始交易。
  • 佣金太低。

尽管这两种原因都有不同的错误消息。我现在无法重现该问题。

有效的语法(1 个 utxo,1 个接收者):

bitcoin-cli createrawtransaction '[{
            "txid" : "04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8",
            "vout" : 1
        }]' '{
      "n1cDpTFBVV3s7P1Bt7wKZrAjQpZBuGt2ya": 0.04893500
    }'

无效的语法 - 1 个 utxo、1 个接收者、1 个更改接收者(与 utxo 持有者相同)

bitcoin-cli createrawtransaction
    '[{
        "txid" : "04026f68adc56bae7e75aa2459b064733955d48af880fff0c72f015bfbcc82d8",
        "vout" : 1
    }]'
    '{"n1cDpTFBVV3s7P1Bt7wKZrAjQpZBuGt2ya": 0.03, 
    "mqx4bb2C4gZehqDoPKVZifkGXTdGghbPSZ": 0.01}'

总而言之,您实际上可以使用Core v24.0上的“signrawtransactionwithkey”使用未导入的密钥签署交易。


0
投票
任何人都可以帮助解决 v25.0 上的 signtransactionwithkey 问题吗?

在测试网上,地址mhGwrKAfsm9DDuwkJLjS7gUKLiJC6DugBP通过trx 2a3416caf9e08510985b6f27d05855521aa60b9eef0295e0018177cbf96ad928接收0.00010661。

使用相同的 txid,我创建原始交易,发送到新地址:

$bitcoin-cli createrawtransaction "[{"txid":"2a3416caf9e08510985b6f27d05855521aa60b9eef0295e0018177cbf96ad928","vout":1}]" "[{"mtDWiWtkxu59jjs9y2cqFUeriu6GP Wm4d2":0.00000661}]"

020000000128d96af9cb778101e09502ef9e0ba61a525558d0276f5b981085e0f9ca16342a0100000000fdffffff0195020000000000001976a9148b4d3652c8 5352f12aca04a5d11af5304a6e6cb188ac00000000

现在我尝试使用私钥签署交易:

$ 比特币-CLI SignrawTransactionWithKey“020000000128d96af9cb778101e09502ef9e0ba61a525558d0276f5b981085e0f9ca16342a0100000000fdffffff0195020000000000001976 a9148b4d3652c85352f12aca04a5d11af5304a6e6cb188ac00000000""["5J47...N9R8bg"]"

错误代码:-5 错误信息: 私钥无效

我做错了什么? 请注意,我 trx 的 vout = 1 和 0。

© www.soinside.com 2019 - 2024. All rights reserved.