Author

Topic: поиск по блокчейну (Read 330 times)

jr. member
Activity: 35
Merit: 10
August 17, 2020, 03:56:34 AM
#11
В заключение хочу сказать что это задача не самая простая и отнимет у вас кучу времени. Если вы совершите ошибку в архитектуре вашей БД, то вероятно вы узнаете о ней когда пройдет несколько дней вгрузки данных, исправите, начнете все заново итд. Потому рекомендую использовать сторонние сервисы, но это уже на усмотрение каждого

Насколько мне известно, 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 минут.
legendary
Activity: 2422
Merit: 2166
August 16, 2020, 08:23:31 PM
#10
В заключение хочу сказать что это задача не самая простая и отнимет у вас кучу времени. Если вы совершите ошибку в архитектуре вашей БД, то вероятно вы узнаете о ней когда пройдет несколько дней вгрузки данных, исправите, начнете все заново итд. Потому рекомендую использовать сторонние сервисы, но это уже на усмотрение каждого

Насколько мне известно, Bitcoin Core хранит метаданные блокчейна в формате LevelDB. Эта бесплатная база данных с открытым исходным кодом тоже не реляционная, не SQL и оптимизирована как раз для очень больших таблиц.

То есть нет никакой необходимости экспорта данных в какой бы то ни было другой формат, чтобы с приемлемой скоростью и производительностью анализировать входы и выходы транзакций Bitcoin, поэтому топикстартеру просто нужно работать с блоками данных через клиентский интерфейс LevelDB или специальные скрипты.
jr. member
Activity: 35
Merit: 10
August 16, 2020, 08:20:40 AM
#9
Как реализовать поиск по блокчейну?
Я хочу осуществить автоматизированный поиск 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. Наслаждаемся

В заключение хочу сказать что это задача не самая простая и отнимет у вас кучу времени. Если вы совершите ошибку в архитектуре вашей БД, то вероятно вы узнаете о ней когда пройдет несколько дней вгрузки данных, исправите, начнете все заново итд. Потому рекомендую использовать сторонние сервисы, но это уже на усмотрение каждого
jr. member
Activity: 35
Merit: 10
August 16, 2020, 07:07:03 AM
#8
Не рекомендую использовать реляционную БД. Лучше юзать ElasticSearch. По итогу с индексами получилось 2.3 Tb и около недели загрузки. Потом нашел, что пацаны уже сделали. ⁣https://долбоебы
Никого не ебут рекоммендации васей пупкиных. Если есть что сказать по делу, то выкладывай с формулами и графиками. Без этого ты очередное трепло спамящее по форумам ссылками на никому не нужное унылое говно.

Сылшь, Вась,  какие графики, какие формулы!??? Ты с урока алгебры только что вышел ?
Вопрос тебе как специалисту великому. У меня загружено сейчас в эластик 438 600 блоков, которые содержат 481 744 165  транзакций, которые в свою очередь содержат 1 285 285 104 outpot-ов. Как ты будешь в реляционной БД хранить такое количество записей (например output-ы), в одной таблице? или может разделишь таблицы, шаридируешь их... как ? Про индексы я даже спрашивать не буду. Просто расскажи мне как ты в RDBMS будешь хранить такое количество строк.
member
Activity: 255
Merit: 27
August 10, 2020, 12:19:08 PM
#7
Ещё такое есть.
http://blockchainsql.io/
sr. member
Activity: 503
Merit: 283
August 10, 2020, 12:11:50 PM
#6
Тут вопрос в чем? Как создать конкретный SQL запрос или как вообще делать запросы к блокчейну.
Если нужно разово выполнить поиск по заданным критериям, то с разбегу можно воспользоваться Google Big Data
https://bigquery.cloud.google.com/dataset/bigquery-public-data:crypto_bitcoin

Стоит это вот так:
You will need to create a project before you can use BigQuery (free). You pay $5 per 1TB of data processed, the first 1TB is free. Google Cloud Platform gives you $300 credit so you can query 60TB of data for free even after you exceeded 1TB limit.

Если выборка небольшая, то легко вложиться в лимит.
copper member
Activity: 1540
Merit: 487
Stop the war!
July 26, 2020, 05:01:23 AM
#5
Не рекомендую использовать реляционную БД. Лучше юзать ElasticSearch. По итогу с индексами получилось 2.3 Tb и около недели загрузки. Потом нашел, что пацаны уже сделали. ⁣https://долбоебы
Никого не ебут рекоммендации васей пупкиных. Если есть что сказать по делу, то выкладывай с формулами и графиками. Без этого ты очередное трепло спамящее по форумам ссылками на никому не нужное унылое говно.
jr. member
Activity: 35
Merit: 10
July 24, 2020, 08:38:13 AM
#4
Не рекомендую использовать реляционную БД. Лучше юзать ElasticSearch. По итогу с индексами получилось 2.3 Tb и около недели загрузки. Потом нашел, что пацаны уже сделали. ⁣https://oxt.me
jr. member
Activity: 37
Merit: 2
January 11, 2020, 03:40:54 PM
#3
Да, только выгрузкой транзакций в БД
И потом работать с этими данными.
Стандартный клиент Bitcoin Core тут не поможет.

Как реализовать поиск по блокчейну?
Я хочу осуществить автоматизированный поиск r транзакций. Покажу на примере:
Например, есть такая транзакция https://www.blockchain.com/uk/btc/tx/6c2d0bbb87350cd18d93ede269817767b84715a6292a022c68b327f704ce486f
Если открыть к ней входные скрипты (там есть кнопка), то можно увидеть, что первая часть скрипта идентична второй
( 3045022100b0c07b0c53df67139b216f2fbcfcc8719bd22b93b14f60c017ddfa89799582390220 )
Как искать такие транзакции?
newbie
Activity: 12
Merit: 3
October 31, 2019, 01:39:02 PM
#2
Нужно записать все транзакции в SQL базу данных.
Для этого нужно установить и синхронизировать у себя полный блокчейн. Потом при запущенном клиенте нужно вызывать RPC API.
Справку по командам RPC API можно получить в окне отладки клиента биткоина.
Примеры обращений к RPC API для разных языков программирования можете найти тут https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
member
Activity: 210
Merit: 18
October 31, 2019, 01:03:16 PM
#1
Как реализовать поиск по блокчейну?
Я хочу осуществить автоматизированный поиск r транзакций. Покажу на примере:
Например, есть такая транзакция https://www.blockchain.com/uk/btc/tx/6c2d0bbb87350cd18d93ede269817767b84715a6292a022c68b327f704ce486f
Если открыть к ней входные скрипты (там есть кнопка), то можно увидеть, что первая часть скрипта идентична второй
( 3045022100b0c07b0c53df67139b216f2fbcfcc8719bd22b93b14f60c017ddfa89799582390220 )
Как искать такие транзакции?
Jump to: