bitcoin core – How to create a Transaction with or without scriptPubKey?

0
18


I’m using the bitcore-lib-cash to attempt to create an instance of Transaction (_fromNonP2SH).

Transaction.prototype._fromNonP2SH = function(utxo) {
  var clazz;
  utxo = new UnspentOutput(utxo);
  if (utxo.script.isPublicKeyHashOut()) {
    clazz = PublicKeyHashInput;
  } else if (utxo.script.isPublicKeyOut()) {
    clazz = PublicKeyInput;
  } else {
    clazz = Input;
  }
  this.addInput(new clazz({
    output: new Output({
      script: utxo.script,
      satoshis: utxo.satoshis
    }),
    prevTxId: utxo.txId,
    outputIndex: utxo.outputIndex,
    script: Script.empty()
  }));
};

Currently, getting the UTXOs for given address from bch fullstack api using the following endpoint:

https://api.fullstack.cash/v5/electrumx/utxos/{addr}

which returns the following object for each utxo:

{
height: 712701
tx_hash: "76602674d6df5178858b2ed169af115a50525b0c4d56d726bfa72d775596dc56"
tx_pos: 0
value: 8272
}

However, the Transaction method calls new UnspentOutput(utxo) which then expects the above UTXOs to contain a scriptPubKey property.

$.checkArgument(!_.isUndefined(data.scriptPubKey) || !_.isUndefined(data.script),
                  'Must provide the scriptPubKey for that output!');

I’ve noticed other libraries only require txId and vout. Is there a way to either create a Transaction without a scriptPubKey or obtain the correct scriptPubKey through alternative means?



Source link

Leave a reply