Post
Topic
Board Кодеры
Merits 4 from 1 user
Re: поиск по блокчейну
by
a_6apcyk
on 16/08/2020, 12:20:40 UTC
⭐ Merited by suchmoon (4)
Как реализовать поиск по блокчейну?
Я хочу осуществить автоматизированный поиск r транзакций. Покажу на примере:
Например, есть такая транзакция https://www.blockchain.com/uk/btc/tx/6c2d0bbb87350cd18d93ede269817767b84715a6292a022c68b327f704ce486f
Если открыть к ней входные скрипты (там есть кнопка), то можно увидеть, что первая часть скрипта идентична второй
( 3045022100b0c07b0c53df67139b216f2fbcfcc8719bd22b93b14f60c017ddfa89799582390220 )
Как искать такие транзакции?

Даю рецепт.
1. Скачиваем bitcoin core. Полностью синхронизируем блокчейн
2. Скачиваем очень клсассную тулзу для выгрузки данных из блокчейна https://github.com/blockchain-etl/bitcoin-etl
3. Определяемся с БД которую будем использовать. Если хотите чтобы у вас ничего не получилось, или получилось с дикими костылями и невероятными сложностями - используем реляционную БД. Когда ваши табицы начнут содержать несколько миллионов строк у вас начнутся дикие проблемы со вставкой в них, придется отключать индексы и колдовать другими способами. Если не хотим забивать гвозди микроскопом, подбираем более подходящий инструмент, т.к. у вас все таки бигдата. Это либо колончатые БД, типа Cassandra или clickhouse. С ними (как минимум с Cassandr-ой) будут проблемы с поиском - для осуществления поиска вам придется делать очень много дубликаций данных а их и так очень дохрена.  Либо юзаем Elastic
4. Разрабатываем архитектуру индексов (или таблиц, что там у вас будет...), пишем скрипты импорта.
5. Если вы юзаете Elastic, то у вас из коробки будет Kibana - тулза для поиска и анализа данных. Если не юзаете эластик - пишем код для поиска по данным и, например, веб морду для работы со всем вашим хозяйством
6. Вгружаем данные. У меня ушло на это около недели, при том что все хранилище у меня на SSD и проц Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
7. Наслаждаемся

В заключение хочу сказать что это задача не самая простая и отнимет у вас кучу времени. Если вы совершите ошибку в архитектуре вашей БД, то вероятно вы узнаете о ней когда пройдет несколько дней вгрузки данных, исправите, начнете все заново итд. Потому рекомендую использовать сторонние сервисы, но это уже на усмотрение каждого