如何通过 nodejs 监视区块链上的比特币交易?
How to watch for the bitcoin transactions over blockchain via nodejs?
我正在使用这个 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 中创建它?
如果您没有自己的节点,可以使用此处所述的 blockchain.info API (https://github.com/blockchain/api-v1-client-node/tree/master/Socket)
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) then you can get notified on transactions like in here (http://godoc.org/github.com/btcsuite/btcrpcclient#Client.NotifyNewTransactions)
使用第三方 API,正如公认的答案所暗示的那样,短期内会奏效。但是,如果您正在寻找一种长期、可靠、不受速率限制的解决方案;你应该 运行 你自己的比特币节点。当然,这取决于您的项目要求。
为了可靠地解决 OP 的问题,我建议如下:
- 运行 使用 bitcoind
的 p运行ed 比特币节点
- 使用配置选项
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
我想 this 就是您要找的。本教程帮助用户设置本地 btc 节点,并演示如何使用 zmq 订阅和 RPC 通信来完成发送和接收交易以及通知和其他功能。
@c.hill 的回答是正确的,但遗漏了此处描述的更复杂的功能:)
我正在使用这个 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 中创建它?
如果您没有自己的节点,可以使用此处所述的 blockchain.info API (https://github.com/blockchain/api-v1-client-node/tree/master/Socket)
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) then you can get notified on transactions like in here (http://godoc.org/github.com/btcsuite/btcrpcclient#Client.NotifyNewTransactions)
使用第三方 API,正如公认的答案所暗示的那样,短期内会奏效。但是,如果您正在寻找一种长期、可靠、不受速率限制的解决方案;你应该 运行 你自己的比特币节点。当然,这取决于您的项目要求。
为了可靠地解决 OP 的问题,我建议如下:
- 运行 使用 bitcoind 的 p运行ed 比特币节点
- 使用配置选项
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
我想 this 就是您要找的。本教程帮助用户设置本地 btc 节点,并演示如何使用 zmq 订阅和 RPC 通信来完成发送和接收交易以及通知和其他功能。
@c.hill 的回答是正确的,但遗漏了此处描述的更复杂的功能:)