Как я могу анализировать и передавать биткойн-транзакции на 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());
        }
    }
}

Любой намек, направляющий меня в правильном направлении, высоко ценится.

0 ответов

Другие вопросы по тегам