Cryptocurrency / Programming / Blockchain
Syscoin + ZMQ + Node.js = Realtime Blockchain Updates!

Realtime Updates from the Syscoin Blockchain
You can use the ZMQ topic message queues in Syscoin to receive realtime updates for your application. Using in conjunction withsyscoin-core to blockchain-enable your applications in no time.
Syscoin Configuration
Make sure to enable the ZMQ listeners in yoursyscoin.conf file and restart syscoind or Syscoin Core Qt.
# server
server=1
daemon=1
# indexes
addressindex=1
txindex=1
litemode=0
# rpc
rpcuser=u
rpcpassword=p
rpcport=8370
rpcallowip=127.0.0.1
# zmq listener config
zmqpubaliasrecord=tcp://127.0.0.1:3030
zmqpubaliashistory=tcp://127.0.0.1:3030
zmqpubaliastxhistory=tcp://127.0.0.1:3030
zmqpubassetrecord=tcp://127.0.0.1:3030
zmqpubassetallocation=tcp://127.0.0.1:3030
zmqpubassethistory=tcp://127.0.0.1:3030
zmqpubcertrecord=tcp://127.0.0.1:3030
zmqpubcerthistory=tcp://127.0.0.1:3030
zmqpubescrowrecord=tcp://127.0.0.1:3030
zmqpubescrowbid=tcp://127.0.0.1:3030
zmqpubescrowfeedback=tcp://127.0.0.1:3030
zmqpubofferrecord=tcp://127.0.0.1:3030
zmqpubofferhistory=tcp://127.0.0.1:3030
zmqpubhashblock=tcp://127.0.0.1:3030
zmqpubhashtx=tcp://127.0.0.1:3030
zmqpubhashtxlock=tcp://127.0.0.1:3030
zmqpubrawblock=tcp://127.0.0.1:3030
zmqpubrawtx=tcp://127.0.0.1:3030
zmqpubrawtxlock=tcp://127.0.0.1:3030
Create ZMQ Client
You will need tonpm install the module zeromq.
const zeromq = require('zeromq');
const subscriber = zeromq.socket('sub');
subscriber.on('message', async (topic, message) => {
topic = topic.toString('utf8');
message = message.toString('utf8')
const alias = JSON.parse(message);
console.log(JSON.stringify(alias, null, 2));
});
// connect to message producer
subscriber.connect('tcp://127.0.0.1:3030');
subscriber.subscribe('aliasrecord');
console.log('subscribed to syscoin topic aliasrecord');
Run your script with the following:
> node zmq-client.js
subscribed to syscoin topic aliasrecord
{
"_id": "gldm1",
"address": "SRxK2GjfzTrm8z5PgCtLKzheN5ebd5kN8f",
"expires_on": 1590601936,
"encryption_privatekey": "",
"encryption_publickey": ""
}
{
"_id": "elatte",
"address": "Sd8JMHxtuFVSVJN2V51M27S6MkBBMjgjHY",
"expires_on": 1559077278,
"encryption_privatekey": "",
"encryption_publickey": ""
}
{
"_id": "primitive7",
"address": "Sk7q3kZcttBNVkUwpMXU59yQf9Pco4sAAJ",
"expires_on": 1558656041,
"encryption_privatekey": "",
"encryption_publickey": ""
}
{
"_id": "primitive9",
"address": "SYKff6VzkrzmSn9tL3zZE7FmV2dGFSKfxs",
"expires_on": 1558656041,
"encryption_privatekey": "",
"encryption_publickey": ""
}
// ....