From d7b9a6e6d9b33ea974bfdb6b8bf38573906c7d01 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 10 Mar 2020 15:11:47 -0700 Subject: parse tx with javascript --- bitcoinPayments.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'bitcoinPayments.js') diff --git a/bitcoinPayments.js b/bitcoinPayments.js index 5b916265..0d410a6a 100644 --- a/bitcoinPayments.js +++ b/bitcoinPayments.js @@ -20,17 +20,24 @@ let NETWORK = bitcoin.networks[config.bitcoin.network === "mainnet" ? "bitcoin" module.exports = (app, bc, db, addresses, payments, emit) => { zmqRawTx.on("message", async (topic, message, sequence) => { const hex = message.toString("hex"); - const tx = await bc.decodeRawTransaction(hex); - let hash = tx.txid; + let tx = bitcoin.Transaction.fromHex(message); + let hash = reverse(tx.getHash()).toString("hex"); if (payments.includes(hash)) return; Promise.all( - tx.vout.map(async o => { - if (!(o.scriptPubKey && o.scriptPubKey.addresses)) return; - - const value = toSats(o.value); - const address = o.scriptPubKey.addresses[0]; + tx.outs.map(async o => { + const { value } = o; + + let address; + try { + address = bitcoin.address.fromOutputScript( + o.script, + NETWORK + ); + } catch (e) { + return; + } if (Object.keys(addresses).includes(address)) { payments.push(hash); -- cgit v1.2.3