Как я могу анализировать и передавать биткойн-транзакции на kafka
Для учебного проекта я хочу направить все транзакции биткойнов с самого первого (а затем и реального обновления) в кластер kafka.
Я установил демон bitcoin и включил издателя zeromq для темы rawtrx, используя bitcoind -zmqpubrawtx=tcp://127.0.0.1:28332
, С Groovy ниже, я могу прочитать все транзакции в двоичном виде. Похоже, я получаю 3 сообщения размером 4, 5 и>200 за транзакцию. Поиск парсера приводит меня к биткойнам. Но там мне удалось прочитать только файл данных блокчейна, а это не то, что мне нужно. Использование класса Transaction также неочевидно, поскольку у меня есть байтовые массивы разного размера. Каким-то образом кажется возможным использовать биткойн в качестве полного узла, но в документации не хватает того, как это можно сделать.
@Grab(group='org.zeromq', module='jeromq', version='0.4.3')
import org.zeromq.ZMQ
@Grab(group='org.apache.kafka', module='kafka-clients', version='1.0.0')
import org.apache.kafka.clients.admin.*
import org.apache.kafka.clients.producer.*
import org.apache.kafka.common.errors.TopicExistsException
class zmq {
public static void main(String[] args) {
def broker = "tcp://localhost:28332"
def consumer = "tcp://localhost:5567"
ZMQ.Context context = ZMQ.context(1);
// Connect our subscriber socket
ZMQ.Socket subscriber = context.socket(ZMQ.SUB);
subscriber.setIdentity("hello".getBytes());
// Synchronize with the publisher
ZMQ.Socket sync = context.socket(ZMQ.PUSH);
subscriber.subscribe("rawtx".getBytes());
subscriber.connect(broker);
println("subscribed to topic rawtx");
// sync the broker with our local socket
sync.connect(consumer);
sync.send("".getBytes(), 0);
println("synced with broker for topic rawtx");
// Get updates, expect random Ctrl-C death
String msg = "";
while (!msg.equalsIgnoreCase("END")) {
msg = new String(subscriber.recv(0));
println(msg.length());
}
}
}
Любой намек, направляющий меня в правильном направлении, высоко ценится.