From b3145deca7925f4336a5b953e41b6b6784f8ca26 Mon Sep 17 00:00:00 2001
From: Javier Vargas <javiervargas@users.noreply.github.com>
Date: Wed, 1 Jul 2020 13:59:26 +0200
Subject: [PATCH] Update 15_3_Receiving_Bitcoind_Notifications_with_C.md

---
 ...Receiving_Bitcoind_Notifications_with_C.md | 32 +++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/15_3_Receiving_Bitcoind_Notifications_with_C.md b/15_3_Receiving_Bitcoind_Notifications_with_C.md
index d638c90..7b06a41 100644
--- a/15_3_Receiving_Bitcoind_Notifications_with_C.md
+++ b/15_3_Receiving_Bitcoind_Notifications_with_C.md
@@ -76,8 +76,14 @@ Processing triggers for libc-bin (2.27-3ubuntu1) ...
 
 ### 2. Create C Program
 
-Now we've installed ZMQ and we can compile our C program using it's notifications.  This C program it's a simple client that subscribes to a connection point served by bitcoind and ZMQ interface and reads incoming messages.
-The program use czmq.h library and receives two parameters as follows,  first param is the point exposed by bitcoind and second the topic about we'll listen.
+Now we've installed ZMQ and we can compile our C program using it's notifications.  This C program it's a simple client that subscribes to a connection point served by bitcoind and ZMQ interface and reads incoming messages.  
+The program use czmq.h library and receives two parameters as follows,  first param is the point exposed by bitcoind that should be tcp connection point depending second param that could be one of these:
+
+zmqpubrawblock
+zmqpubrawtx
+zmqpubhashtx
+zmqpubhashblock
+
 
 ``` c
 #include <czmq.h>
@@ -134,6 +140,24 @@ gcc -o chainlistener chainlistener.c -I/usr/local/include -L/usr/local/lib -lzmq
 
 ### 4. Configure ZMQ on bitcoind
 
+#### ZMQ
+
+ZeroMQ is a high-performance asynchronous messaging library that provides a message queue.  ZeroMQ supports common messaging patterns (pub/sub, request/reply, client/server and others) over a variety of transports (TCP, in-process, inter-process, multicast, WebSocket and more), making inter-process messaging as simple as inter-thread messaging.   As the purpose of this chapter is to show how to receive bitcoind notifications in the C language, ZMQ will be used for it.
+
+Currently, the ZeroMQ facility only needs to have the ZeroMQ endpoint specified.  ZeroMQ publish sockets prepend each data item with an arbitrary topic
+prefix that allows subscriber clients to request only those items with a matching prefix.
+
+Topics.
+
+```
+zmqpubrawblock=tcp://127.0.0.1:28332
+zmqpubrawtx=tcp://127.0.0.1:28333
+zmqpubhashtx=tcp://127.0.0.1:28334
+zmqpubhashblock=tcp://127.0.0.1:28335
+```
+
+In this example we'll use raw tx that is the topic that notifies about new transactions in raw format.
+
 Add this lines to bitcoin.conf file and restart daemon.    
 
 ```
@@ -162,6 +186,8 @@ Output:
 ```
 ### 5. Execute listener:
 
+When you execute chainlistener and passes these params you'll get an output like this:
+
 ```
 $ ./chainlistener tcp://127.0.0.1:28333 rawtx
 Size: 250
@@ -178,7 +204,9 @@ Data: 0200000000010137527957C9AD6CFF0C9A74597E6EFCD7E1EBD53E942AB2FA34A831046CA1
 No: 70
 .......
 ```
+The first param it's bitcoind connection point where ZMQ will notifies all about transactions in raw format.   It corresponds to this line in bitcoin.conf file zmqpubrawtx=tcp://127.0.0.1:28333
 
+The second param is the topic selected rawtx explained above.
 
 ### For More Information