【问题标题】:How to watch for the bitcoin transactions over blockchain via nodejs?如何通过 nodejs 监视区块链上的比特币交易?
【发布时间】:2018-01-12 14:59:47
【问题描述】:

我正在使用这个 bitcore npm 包。 https://bitcore.io/api/lib

我想监控区块链上的所有交易,并读取与该交易相关的输入地址、输出地址和金额。

但我无法找到要调用的 javascript 方法来完成此操作。 即使我找不到这个例子。

我正在寻找像这样短的东西

var someLib = require('some-bitcore-lib')

someLib.on('transaction-found', function(){
   // print everything
   console.log(arguments);
   // do something else;
})

有什么帮助吗? 我在哪里可以找到 some-bitcore-lib 或者我如何在 nodejs 中创建它?

【问题讨论】:

    标签: node.js bitcoin blockchain


    【解决方案1】:

    如果您没有自己的节点,则可以使用这里 (https://github.com/blockchain/api-v1-client-node/tree/master/Socket) 中所述的 blockchain.info API

    const Socket = require('blockchain.info/Socket');
    const mySocket = new Socket();
    mySocket.onTransaction(function() {
      console.log(arguments);
    });
    

    您始终可以通过运行自己的节点来观察交易,而无需依赖诸如 blockchain.info 之类的服务...例如,如果您使用的是 btcd (Golang) (https://github.com/btcsuite/btcd),那么您可以在像这里这样的交易 (http://godoc.org/github.com/btcsuite/btcrpcclient#Client.NotifyNewTransactions)

    【讨论】:

    【解决方案2】:

    正如公认的答案所暗示的,使用第三方 API 将在短期内奏效。但是,如果您正在寻找一个长期、可靠、不受速率限制的解决方案;你应该运行自己的比特币节点。当然,这取决于您的项目要求。

    对于 OP 问题的稳健解决方案,我建议如下:

    • 使用 bitcoind 运行一个修剪过的比特币节点
    • 使用配置选项zmqpubrawtx=tcp://127.0.0.1:3600 启用bitcoind 的ZeroMQ 接口。这将使原始交易数据流式传输到您的 node.js 应用程序
    • 使用ZeroMQ node.js module 订阅bitcoind 的ZeroMQ 接口
    • 使用bitcoinjs-lib 解码原始交易数据

    以下 node.js 示例将使用 zeromq 订阅 bitcoind 的 zeromq 接口。然后使用 bitcoinjs-lib 解码这些原始交易。

    var bitcoin = require('bitcoinjs-lib');
    var zmq = require('zeromq');
    var sock = zmq.socket('sub');
    var addr = 'tcp://127.0.0.1:3600';
    sock.connect(addr);
    sock.subscribe('rawtx');
    sock.on('message', function(topic, message) {
        if (topic.toString() === 'rawtx') {
            var rawTx = message.toString('hex');
            var tx = bitcoin.Transaction.fromHex(rawTx);
            var txid = tx.getId();
            tx.ins = tx.ins.map(function(in) {
                in.address = bitcoin.address.fromOutputScript(in.script, bitcoin.networks.bitcoin);
                return in;
            });
            tx.outs = tx.outs.map(function(out) {
                out.address = bitcoin.address.fromOutputScript(out.script, bitcoin.networks.bitcoin);
                return out;
            });
            console.log('received transaction', txid, tx);
        }
    });
    

    更多详情请关注this guide

    【讨论】:

    • 您好,有没有什么库可以帮助解决这个问题,我一直在尝试 bitcore,但它与那里的库 bitcore 非常混淆,那么 bitcore-node 您能提出其他建议吗?
    • 顺便说一句,这是更好的解决方案。
    • 很好的答案,非常感谢
    【解决方案3】:

    我认为this 是您正在寻找的。本教程帮助用户设置本地 btc 节点,并演示如何使用 zmq 订阅和 RPC 通信来完成发送和接收交易以及通知和其他功能。

    @c.hill 的回答是正确的,但忽略了这里描述的更复杂的功能:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多