Bitcoin Forum
May 05, 2024, 02:09:18 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: поиск по блокчейну  (Read 331 times)
Andrea9000 (OP)
Member
**
Offline Offline

Activity: 210
Merit: 18


View Profile
October 31, 2019, 05:03:16 PM
 #1

Как реализовать поиск по блокчейну?
Я хочу осуществить автоматизированный поиск r транзакций. Покажу на примере:
Например, есть такая транзакция https://www.blockchain.com/uk/btc/tx/6c2d0bbb87350cd18d93ede269817767b84715a6292a022c68b327f704ce486f
Если открыть к ней входные скрипты (там есть кнопка), то можно увидеть, что первая часть скрипта идентична второй
( 3045022100b0c07b0c53df67139b216f2fbcfcc8719bd22b93b14f60c017ddfa89799582390220 )
Как искать такие транзакции?
1714874958
Hero Member
*
Offline Offline

Posts: 1714874958

View Profile Personal Message (Offline)

Ignore
1714874958
Reply with quote  #2

1714874958
Report to moderator
1714874958
Hero Member
*
Offline Offline

Posts: 1714874958

View Profile Personal Message (Offline)

Ignore
1714874958
Reply with quote  #2

1714874958
Report to moderator
1714874958
Hero Member
*
Offline Offline

Posts: 1714874958

View Profile Personal Message (Offline)

Ignore
1714874958
Reply with quote  #2

1714874958
Report to moderator
"I'm sure that in 20 years there will either be very large transaction volume or no volume." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
unknown_anonymouse
Newbie
*
Offline Offline

Activity: 12
Merit: 3


View Profile
October 31, 2019, 05:39:02 PM
 #2

Нужно записать все транзакции в SQL базу данных.
Для этого нужно установить и синхронизировать у себя полный блокчейн. Потом при запущенном клиенте нужно вызывать RPC API.
Справку по командам RPC API можно получить в окне отладки клиента биткоина.
Примеры обращений к RPC API для разных языков программирования можете найти тут https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
a.n.ivannikov
Jr. Member
*
Offline Offline

Activity: 37
Merit: 2


View Profile
January 11, 2020, 07:40:54 PM
 #3

Да, только выгрузкой транзакций в БД
И потом работать с этими данными.
Стандартный клиент Bitcoin Core тут не поможет.

Как реализовать поиск по блокчейну?
Я хочу осуществить автоматизированный поиск r транзакций. Покажу на примере:
Например, есть такая транзакция https://www.blockchain.com/uk/btc/tx/6c2d0bbb87350cd18d93ede269817767b84715a6292a022c68b327f704ce486f
Если открыть к ней входные скрипты (там есть кнопка), то можно увидеть, что первая часть скрипта идентична второй
( 3045022100b0c07b0c53df67139b216f2fbcfcc8719bd22b93b14f60c017ddfa89799582390220 )
Как искать такие транзакции?
a_6apcyk
Jr. Member
*
Offline Offline

Activity: 35
Merit: 10


View Profile WWW
July 24, 2020, 12:38:13 PM
 #4

Не рекомендую использовать реляционную БД. Лучше юзать ElasticSearch. По итогу с индексами получилось 2.3 Tb и около недели загрузки. Потом нашел, что пацаны уже сделали. ⁣https://oxt.me
~DefaultTrust
Copper Member
Sr. Member
****
Offline Offline

Activity: 1554
Merit: 487

Stop the war!


View Profile
July 26, 2020, 09:01:23 AM
 #5

Не рекомендую использовать реляционную БД. Лучше юзать ElasticSearch. По итогу с индексами получилось 2.3 Tb и около недели загрузки. Потом нашел, что пацаны уже сделали. ⁣https://долбоебы
Никого не ебут рекоммендации васей пупкиных. Если есть что сказать по делу, то выкладывай с формулами и графиками. Без этого ты очередное трепло спамящее по форумам ссылками на никому не нужное унылое говно.

Do not trust bitcointalk fascists: leonello; Snork1979; ivan1975
Lexiko
Sr. Member
****
Offline Offline

Activity: 503
Merit: 283


View Profile
August 10, 2020, 04:11:50 PM
Merited by suchmoon (4)
 #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.

Если выборка небольшая, то легко вложиться в лимит.
mrxtraf
Member
**
Offline Offline

Activity: 255
Merit: 27


View Profile WWW
August 10, 2020, 04:19:08 PM
 #7

Ещё такое есть.
http://blockchainsql.io/
a_6apcyk
Jr. Member
*
Offline Offline

Activity: 35
Merit: 10


View Profile WWW
August 16, 2020, 11:07:03 AM
 #8

Не рекомендую использовать реляционную БД. Лучше юзать ElasticSearch. По итогу с индексами получилось 2.3 Tb и около недели загрузки. Потом нашел, что пацаны уже сделали. ⁣https://долбоебы
Никого не ебут рекоммендации васей пупкиных. Если есть что сказать по делу, то выкладывай с формулами и графиками. Без этого ты очередное трепло спамящее по форумам ссылками на никому не нужное унылое говно.

Сылшь, Вась,  какие графики, какие формулы!??? Ты с урока алгебры только что вышел ?
Вопрос тебе как специалисту великому. У меня загружено сейчас в эластик 438 600 блоков, которые содержат 481 744 165  транзакций, которые в свою очередь содержат 1 285 285 104 outpot-ов. Как ты будешь в реляционной БД хранить такое количество записей (например output-ы), в одной таблице? или может разделишь таблицы, шаридируешь их... как ? Про индексы я даже спрашивать не буду. Просто расскажи мне как ты в RDBMS будешь хранить такое количество строк.
a_6apcyk
Jr. Member
*
Offline Offline

Activity: 35
Merit: 10


View Profile WWW
August 16, 2020, 12:20:40 PM
Merited by suchmoon (4)
 #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. Наслаждаемся

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

Activity: 2436
Merit: 2174



View Profile
August 17, 2020, 12:23:31 AM
 #10

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

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

То есть нет никакой необходимости экспорта данных в какой бы то ни было другой формат, чтобы с приемлемой скоростью и производительностью анализировать входы и выходы транзакций Bitcoin, поэтому топикстартеру просто нужно работать с блоками данных через клиентский интерфейс LevelDB или специальные скрипты.
a_6apcyk
Jr. Member
*
Offline Offline

Activity: 35
Merit: 10


View Profile WWW
August 17, 2020, 07: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 минут.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!