В заключение хочу сказать что это задача не самая простая и отнимет у вас кучу времени. Если вы совершите ошибку в архитектуре вашей БД, то вероятно вы узнаете о ней когда пройдет несколько дней вгрузки данных, исправите, начнете все заново итд. Потому рекомендую использовать сторонние сервисы, но это уже на усмотрение каждого
Насколько мне известно, Bitcoin Core хранит метаданные блокчейна в формате
LevelDB. Эта
бесплатная база данных с открытым исходным кодом тоже не реляционная, не SQL и
оптимизирована как раз для очень больших таблиц.
То есть
нет никакой необходимости экспорта данных в какой бы то ни было другой формат, чтобы с приемлемой скоростью и производительностью анализировать входы и выходы транзакций Bitcoin, поэтому топикстартеру просто нужно работать с блоками данных через клиентский интерфейс LevelDB или специальные скрипты.
Действительно Bitcoin Core хранит данные в leveldb. Это key->value хранилище из которого вы сможете извлекать данные только по ключу, и никак иначе. Другими словами вы можете получить данные о блоке зная хэш блока, можете получить данные транзакции зная ее хэш (здесь описана модель данных bitcoin core
https://bitcoindev.network/understanding-the-data/). Все! Никаких операций поиска, никакие выборки вам не будут доступны. Вы не сможете осуществить поиск по выходам по какому либо критерию, вы не сможете найти транзакцию с заданным числом выходов итд.
Единственный способ это скан по такой БД, т.е. чтобы найти, например, транзакцию в 10 входами и 20 выходами вам придется написать какой нибудь скрипт, который обойдет всю БД и тупо в коде будет производить поиск по заданным вами критериям. Если критерии поиска изменятся, вам нужно будет переписать скрипт ну итд. Кроме того это будет очень долго. Для примера, когда я подменяю файл wallet.dat Bitcion Core производит рескан всей БД чтобы посчитать балансы кошельков, содержащихся в wallet.dat. У меня это занимает около 40 минут.