2
1
I need your opinion, do you mind ? :)
I'm bulding a javascript layer on top of bitcoind. I have bitcoind running on my server with rpc & zmq enabled.
daemon=1
rpcallowip=0.0.0.0/0
rpcuser=xxxxxxxx
rpcpassword=xxxxxxxxx
server=1
rest=1
zmqpubhashblock=tcp://*:28332
zmqpubhashtx=tcp://*:28332
zmqpubrawblock=tcp://*:28332
zmqpubrawtx=tcp://*:28332
rpcworkqueue=100
My program goal is to listen for rawblock and rawtx ZMQ channels. This is my zmq client:
const socket = ZMQ.socket('sub')
socket.connect('tcp://myserverip:28332')
socket.on('message', (channel, data) => {
console.log(channel.toString())
})
So here is what happens :
subscribing to rawtx alone works, I receive the tx flow (approx 2.5tx per second)
socket.subscribe('rawtx')
subscribing to rawblock alone also works, I receive blocks (approx 1block per 10minutes)
socket.subscribe('rawblock')
But here is my problem, when subscribing to both, i do receive rawtx but no rawblock !
socket.subscribe('rawblock')
socket.subscribe('rawtx')
I'm assuming the ZMQ socket is flooded with rawtx, which result in missing rawblock event.
My question is: how would you debug this ? Have you guys faced this situation already ?
I know I could use the blocknotify option in bitcoind to forward the blockhash back to my client, and then load the rawblock via an rpc call back to bitcoind, but then I would use 2 different mechanisms (one for rawtx and blocknotify for rawblock) for something that was supposed to work in the first place :)
Thanks for your feedback !!
Are you sure that
socket.subscribeallows you to subscript to multiple things in the way that you have done it? It seems like it could only be subscribing to the latest thing thatsubscribewas called on, and that would berawtx. What happens if you reverse the order? – Andrew Chow – 2017-11-25T17:08:14.340order does not matter I've checked. and if I sub to
rawtx&hashtxi receive both. I just don't receiverawblockwhen used withrawtxat the same time – Louis Grellet – 2017-11-25T21:55:50.757