-1

我正在尝试使用 Bitcoinlib-js 库创建交易。我坚持签署交易,因为它似乎witnessUtxo是必需的,我很困惑如何获得这个价值或从哪里获得它。对于 segwit,我将其设置为 UTXO vout 中的最后一个scriptPubKey,但出现以下错误。

对于非隔离见证,我只传递 UTXO rawTransaction。

这是我得到的错误

scriptPubKey = ************************************
(node:17) UnhandledPromiseRejectionWarning: Error: Can not sign for this input with the key ************************************************
    at checkScriptForPubkey (/app/node_modules/bitcoinjs-lib/src/psbt.js:800:11)
    at getHashAndSighashType (/app/node_modules/bitcoinjs-lib/src/psbt.js:927:3)
    at Psbt.signInput (/app/node_modules/bitcoinjs-lib/src/psbt.js:522:35)
    at Handshake.<anonymous> (/app/main.js:104:12)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
(Use `node --trace-warnings ...` to show where the warning was created)

这是代码。

const utxoTransaction = (await axios.get(`https://url/${utxos[j].txid}`)).data;

const scriptPubKey = utxoTransaction.vout[utxoTransaction.vout.length - 1].scriptPubKey.hex;

const isSegwit = utxoTransaction.hex.substring(8, 12) === '0001';
if (isSegwit) {
  psbt.addInput({
    hash: utxos[j].txid,
    index: utxos[j].vout,
    witnessUtxo: {
      script: Buffer.from(scriptPubKey, 'hex'),
      value: utxos[j].amount * 100000000 // value in satoshi
    },
  })
} else {
  // add non-segwit transaction input
  psbt.addInput({
    hash: utxos[j].txid,
    index: utxos[j].vout,
    nonWitnessUtxo: Buffer.from(utxoTransaction.hex, 'hex'),
  })
}
4

0 回答 0