javascript - How to use Psbt on bitcoinjs-lib? - Stack Overflow

I am trying to create a raw transaction for sending to the blockchain. In doing so, I want to do this i

I am trying to create a raw transaction for sending to the blockchain. In doing so, I want to do this in a browser.

Where can I get nonWitnessUtxo?

All the information that I have outlined here, I found in the tests. Am I doing the right thing?

const bitcoin = require('bitcoinjs-lib')
const testnet = bitcoinworks.testnet
const keyPair = bitcoin.ECPair.makeRandom({ network: testnet })
const publicKey = keyPair.publicKey
const { address } = bitcoin.payments.p2pkh({
  pubkey: publicKey,
  network: testnet
})
const privateKey = keyPair.toWIF()
const psbt = new bitcoin.Psbt({ network: testnet })
const txid = '226a14d30cfd411b14bf20b7ffd211f7f206699690c54d456cc1bef70c2de5a6'
const key = bitcoin.ECPair.fromWIF(privateKey, testnet)
psbt.addInput({
  hash: txid,
  index: 0,
  nonWitnessUtxo: Buffer.from('Where can i get this?', 'hex')
})
psbt.addOutput({
  script: Buffer.from('mmpAPZSvhJs1NGw8UaJXEJ9vRByAxProUL', 'hex')
  value: 10000
})
psbt.signInput(0, key)
psbt.validateSignaturesOfInput(0)
psbt.finalizeAllInputs()
psbt.extractTransaction().toHex()

I would be grateful for any help!

I am trying to create a raw transaction for sending to the blockchain. In doing so, I want to do this in a browser.

Where can I get nonWitnessUtxo?

All the information that I have outlined here, I found in the tests. Am I doing the right thing?

const bitcoin = require('bitcoinjs-lib')
const testnet = bitcoinworks.testnet
const keyPair = bitcoin.ECPair.makeRandom({ network: testnet })
const publicKey = keyPair.publicKey
const { address } = bitcoin.payments.p2pkh({
  pubkey: publicKey,
  network: testnet
})
const privateKey = keyPair.toWIF()
const psbt = new bitcoin.Psbt({ network: testnet })
const txid = '226a14d30cfd411b14bf20b7ffd211f7f206699690c54d456cc1bef70c2de5a6'
const key = bitcoin.ECPair.fromWIF(privateKey, testnet)
psbt.addInput({
  hash: txid,
  index: 0,
  nonWitnessUtxo: Buffer.from('Where can i get this?', 'hex')
})
psbt.addOutput({
  script: Buffer.from('mmpAPZSvhJs1NGw8UaJXEJ9vRByAxProUL', 'hex')
  value: 10000
})
psbt.signInput(0, key)
psbt.validateSignaturesOfInput(0)
psbt.finalizeAllInputs()
psbt.extractTransaction().toHex()

I would be grateful for any help!

Share Improve this question edited Sep 14, 2019 at 19:39 Narnik Gamarnik asked Sep 14, 2019 at 7:27 Narnik GamarnikNarnik Gamarnik 1,1211 gold badge16 silver badges40 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

The nonWitnessUtxo is the full rawtransaction that you are referencing with the input txid.

This answer is for those looking for a way to create a transaction in the browser, but could not deal with the bitcoinjs-lib

I use bitcore-lib - https://www.npmjs./package/bitcore-lib

const bitcore = require('bitcore-lib')

const firstPrivateKey = new bitcore.PrivateKey()
const secondPrivateKey = new bitcore.PrivateKey() 

const wif = firstPrivateKey.toString()
const toAddress = secondPrivateKey.toAddress().toString()
const satoshiAmount = 10000

const privateKey = bitcore.PrivateKey.fromWIF(wif)
const sourceAddress = privateKey.toAddress(bitcore.Networks.testnet)
const targetAddress = bitcore.Address.fromString(toAddress)
const utxos = [
  {
    address: 'mywRqUpbENhbu5VsYDwiMTJouVK9g2ZEJQ',
    txid: '761693565e82ca176532c52a37fb38cd9f1eb0172a00562b394e60ede0b7df8a',
    vout: 1,
    scriptPubKey: '76a914ca133ceac705b723b91263aa163ea8a45954e49a88ac',
    amount: 0.0001,
    satoshis: 10000,
    height: 1578273,
    confirmations: 338
  }
]
const transaction = new bitcore.Transaction()

transaction.from(utxos)
transaction.to(targetAddress, Number(satoshiAmount))
transaction.change(sourceAddress)
transaction.sign(privateKey)

const serializedTX = tx.serialize()

Then you need send this serializedTX as raw transaction to bitcoin network.

P.S. This example does not work because there is an invalid is presented utxos. Get your utxos using API, such as https://bitpay./api/addr/${sourceAddress}/utxo and then everything will work.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744836376a4596284.html

相关推荐

  • javascript - How to use Psbt on bitcoinjs-lib? - Stack Overflow

    I am trying to create a raw transaction for sending to the blockchain. In doing so, I want to do this i

    2天前
    40

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信