Creando Testnet Bitcoin Transaction con bitcoinjs-lib

Estoy tratando de configurar una transacción simple de testnet de bitcoin usando el módulo npm de bitcoinjs-lib. Parece que estoy creando la transacción correctamente y recibo el código hexadecimal, pero creo que no puedo transmitir mi transacción por algún motivo. Aquí está mi código:

const address_1 = 'mzMVV43nRcdGdL9D6xuMez2GkHq8oN1965'; //balance: 130281960 satoshi
const address_2 = 'moCytanji9FNUsDJWVeDGdEFxtGT5psHM6'; //balance: 0 satoshi

const input = {
  sender_prev_txid: 'efc912c7ea9b6eafe129c5fcc64c76d8adc87120bf09196e56c39ced84e6eb36'
};

const output = {
  address: address_2,
  satoshi: 130200000
};

const createTestnetTransaction = (wif, input, output) => {
  const transaction = new bitcoin.TransactionBuilder(bitcoin.networks.testnet);
  const sender = bitcoin.ECPair.fromWIF(wif, bitcoin.networks.testnet);

  transaction.setVersion(1);
  transaction.addInput(input.sender_prev_txid, 0);
  transaction.addOutput(output.address, output.satoshi);
  transaction.sign(0, sender);
  console.log(transaction.build().toHex());
};

createTestnetTransaction(wif_1, input, output);

Usando el siguiente código hexadecimal:

010000000136ebe684ed9cc3566e1909bf2071c8add8764cc6fcc529e1af6e9beac712c9ef000000006b483045022100ce67916a053e94faf940e81ae665fc81daae226d1a70e7a5bc82adac302a290802207b564151889dd22b9e755297ca502b06f1345106296379762daeae2ac46d0af301210226a0c89db3a526fc5751606bf2592bd1477a4ac0d95616a4dd6b01ba65080a96ffffffff01c0b1c207000000001976a914545ad9c5df8da219b16f8c844498090aa88a764c88ac00000000

Recibo el error: 'Error al validar la transacción: Transacción efc912c7ea9b6eafe129c5fcc64c76d8adc87120bf09196e56c39ced84e6eb36 a la que hace referencia la entrada 0 de a7f8e0b48c77b5c192f301d655dffcedee1bd8aac2a5a058bb952.ff.7152 ya se ha gastado.

Si alguien pudiera ayudarme a señalar lo que estoy haciendo mal y ayudarme a completar la transacción, sería genial, ¡gracias!

Respuestas (1)

La entrada que intenta gastar parece ser vout 1 en tx .

Su código actual intenta gastar vout 0, que ya se ha gastado. Intenta cambiar transaction.addInput(input.sender_prev_txid, 0);atransaction.addInput(input.sender_prev_txid, 1);