我正在使用这个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中创建它?
答案 0 :(得分:7)
如果您没有自己的节点,可以使用此处所述的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),那么您可以获得已通知此处的交易(http://godoc.org/github.com/btcsuite/btcrpcclient#Client.NotifyNewTransactions)
答案 1 :(得分:2)
如已接受的答案所示,使用第三方API将在短期内起作用。但是,如果您正在寻找长期,可靠,不受速率限制的解决方案,您应该运行自己的比特币节点。当然,这取决于您的项目要求。
对于OP的问题的可靠解决方案,我建议以下内容:
zmqpubrawtx=tcp://127.0.0.1:3600
启用bitcoind的ZeroMQ接口。这将使原始交易数据流式传输到您的node.js应用程序下面的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
答案 2 :(得分:1)
我认为this是您想要的。该教程可帮助用户设置本地btc节点,并演示如何使用zmq订阅和RPC通讯来完成发送和接收事务以及通知和其他功能。
@ c.hill的响应是正确的,但省略了此处描述的更复杂的功能:)