您好,登錄后才能下訂單哦!
本篇內容主要講解“bitcoinjs-lib怎么實現多筆交易合并”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“bitcoinjs-lib怎么實現多筆交易合并”吧!
轉賬的時候需要手動尋找每一筆未花費記錄實在太費時。
比特幣轉賬需要提取或合并所有未花費的交易中的比特幣,才能實現交易。
import * as bitcoin from 'bitcoinjs-lib'; import fetch, { Response } from 'node-fetch'; const quantitySat = 0.0001 * 1e8; const feeSat = 0.0001 * 1e8; (async () => { try { let NETWORK = bitcoin.networks.testnet; const keyPair = bitcoin.ECPair.fromWIF(from_pvtkey, NETWORK); const p2pkh = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey, network: NETWORK }); let from = p2pkh.address; const utxoResponse: Response = await fetch(`https://api.blockcypher.com/v1/btc/test3/addrs/${from}`); const json = await utxoResponse.json(); console.log(json); let balance = json.balance; let unspentList: Array<any> = []; // 過濾掉已經被花費了的交易和未確認的交易,以及自己不在接收列表的交易 const txrefs = json.txrefs; const unconfirmed_txrefs = json.unconfirmed_txrefs; if (unconfirmed_txrefs && unconfirmed_txrefs.length > 0) { // 要把未確認的余額給去掉 balance += json.unconfirmed_balance; unspentList = unspentList.concat(unconfirmed_txrefs.filter((item: any) => !item.spent_by && item.tx_output_n !== -1)); } if (txrefs.length > 0) { unspentList = unspentList.concat(txrefs.filter((item: any) => !item.spent_by && item.tx_output_n !== -1)); } // 構建交易對象 let txb = new bitcoin.TransactionBuilder(NETWORK); // 批量插入未花費交易 unspentList.forEach((item: any) => txb.addInput(item.tx_hash, item.tx_output_n)); // 轉出賬戶 txb.addOutput(to, quantitySat); // 預留手續費 txb.addOutput(from, balance - quantitySat - feeSat); // 批量簽名,根據索引即可 unspentList.forEach((item: any, index: any) => { txb.sign(index, keyPair) }); // 序列化交易 let tx = txb.build(); console.log(tx.getHash().toString('hex')); // 在一個測試鏈的節點把交易廣布出去 const result = await fetch('https://api.blockcypher.com/v1/btc/test3/txs/push',{ method:'post', headers:{'Content-Type':'application/json'}, body:JSON.stringify({tx: tx.toHex()}) }); } catch (error) { console.error(error); } })();
到此,相信大家對“bitcoinjs-lib怎么實現多筆交易合并”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。