91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

bitcoinjs-lib怎么實現多筆交易合并

發布時間:2021-12-18 10:32:19 來源:億速云 閱讀:196 作者:iii 欄目:互聯網科技

本篇內容主要講解“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怎么實現多筆交易合并”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

咸阳市| 宣化县| 定南县| 茶陵县| 沙坪坝区| 东兰县| 赤城县| 辽源市| 融水| 大埔县| 定兴县| 宜昌市| 哈巴河县| 苍溪县| 仙居县| 汝城县| 东乌珠穆沁旗| 惠东县| 玉溪市| 祁东县| 米易县| 虎林市| 德兴市| 皮山县| 和顺县| 厦门市| 都昌县| 五河县| 无为县| 莒南县| 龙游县| 新密市| 苗栗市| 禄丰县| 淄博市| 六安市| 阿图什市| 罗江县| 长汀县| 岗巴县| 宜丰县|