Bitcoin Forum
October 12, 2024, 10:02:59 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Парсинг блоков и определение баллансов  (Read 1006 times)
coder0x15 (OP)
Jr. Member
*
Offline Offline

Activity: 36
Merit: 3


View Profile
November 09, 2016, 10:19:18 AM
 #1

Будучи совсем ещё новичком в данной теме, появился вопрос по парсингу блоков.
Насколько я понимаю, блок содержит транзакции, каждая из которых содержит входы и выходы.
Выходы содержат сумму (8 байт) и адрес (20 байт ripemd160 или 32 байт publicKey).
Вопрос. Как получить список вида [адрес1, сумма1], [адрес2, сумма2]...и т.д., после парсинга нескольких файлов blk00*.dat?
Понятно как плюсовать балланс по каждому адресу. Но как минусовать?
Понятно также, что сумма выходов транзакции равняется сумме входов. Но это лишь косвенный признак.
Подскажите куда копать. Как получить эти данные?
in100
Legendary
*
Offline Offline

Activity: 1200
Merit: 1021



View Profile
November 09, 2016, 11:27:18 AM
 #2

Подскажите куда копать.

Подсказываю Smiley

блок содержит транзакции, каждая из которых содержит входы и выходы
...
Понятно как плюсовать балланс по каждому адресу. Но как минусовать?

Нужно подумать, что же могут содержать входы? Читай о создании RAW-транзакций, всё станет понятно.

Понятно также, что сумма выходов транзакции равняется сумме входов.

Совсем не обязательно. Разница между суммой входов и суммой выходов - это комиссия.

1BTCin1ooigFtHHD82qquqysdfxFZGdd8a  |  LTCin1oo9JhxcZu8ZK5HivqwvzAdQSaoua  |  4NVCin1ooAd2XKoEfEhBn6tYNUHhojf4QS
Блокчейн биткоина с его алгоритмом децентрализованного консенсуса на самом деле неэффективен, но неэффективность – это та цена, которую мы платим за свободу.© Andreas Antonopoulos
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 09, 2016, 03:04:48 PM
 #3

входы содержат хэш предыдущей транзакции и номер адреса с которого списываются коины.
Этого достаточно чтобы найти сам адрес списания.

OpenTrade - Open Source Cryptocurrency Exchange
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 09, 2016, 04:37:38 PM
 #4

все просто: нет на входе номера адреса = нет и адреса из которого надо вычитать.

OpenTrade - Open Source Cryptocurrency Exchange
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 09, 2016, 05:07:46 PM
 #5

пример транзакции покажите, скажу что делать

OpenTrade - Open Source Cryptocurrency Exchange
ON
Hero Member
*****
Offline Offline

Activity: 684
Merit: 506



View Profile
November 12, 2016, 04:52:24 AM
 #6

а именно, повторюсь. как спарсить балланс по каждому адресу биткоина?
Возможно тебе поможет код https://github.com/znort987/blockparser
Ответить на твой вопрос конкретно не получится, там же килобайты кода. Нужно парсить блоки с первого до последнего, и отслеживать входы-выходы.
ligor
Full Member
***
Offline Offline

Activity: 1246
Merit: 138


Hodl DeepOnion


View Profile WWW
July 26, 2017, 10:07:04 AM
 #7

Распарсил весь блокчейн (все *.dat файлы), и получил неожиданный эффект. А именно, некоторых блоков нет в raw data (*.blk). Нет физически. Перепроверил всё по 10 раз. Не понимаю как такое может получиться. Пример, блок с хэшем 000000000000000001662c8caf43a0b6388494c78b324a81240f8c005c851603. Он физически отсутствует в базе.  Huh Хотя ссылка на него присутствует в блоке 000000000000000000034e5dc02b243b36554d4ba5ee0e6525fa26bdba4ac379.
Интуиция подсказывает, что что-то здесь не чисто)
Корень Меркле 162148d98a5ca79ce2cc0ebc5f42eed27da851ae9efd95eb295f93c286e324bd отсутствует в RAW в принципе! Почему? Задайтесь вопросом "доверять" аль нет.

ЗЫ понимая (на уровне данных, которые сохраняются на диск у всех нод!!!) как работает эта система, не могу допустить вышесказанный случай как правильный. Мнение, что присутствуют недокументированные возможности. А именно, подмена. Научный метод доказывает, что такое возможно. Ваши мнения очень важны.

И можно из "Новичков" тему перекинуть в разработку. Зарегился недавно, но это ж не повод для дискриминации по признаку рейтинга?)))

Может с базой что не так? В онлайн все видно https://blockchain.info/block-index/1523882/000000000000000001662c8caf43a0b6388494c78b324a81240f8c005c851603

ligor
Full Member
***
Offline Offline

Activity: 1246
Merit: 138


Hodl DeepOnion


View Profile WWW
July 26, 2017, 10:19:21 AM
 #8

Распарсил весь блокчейн (все *.dat файлы), и получил неожиданный эффект. А именно, некоторых блоков нет в raw data (*.blk). Нет физически. Перепроверил всё по 10 раз. Не понимаю как такое может получиться. Пример, блок с хэшем 000000000000000001662c8caf43a0b6388494c78b324a81240f8c005c851603. Он физически отсутствует в базе.  Huh Хотя ссылка на него присутствует в блоке 000000000000000000034e5dc02b243b36554d4ba5ee0e6525fa26bdba4ac379.
Интуиция подсказывает, что что-то здесь не чисто)
Корень Меркле 162148d98a5ca79ce2cc0ebc5f42eed27da851ae9efd95eb295f93c286e324bd отсутствует в RAW в принципе! Почему? Задайтесь вопросом "доверять" аль нет.

ЗЫ понимая (на уровне данных, которые сохраняются на диск у всех нод!!!) как работает эта система, не могу допустить вышесказанный случай как правильный. Мнение, что присутствуют недокументированные возможности. А именно, подмена. Научный метод доказывает, что такое возможно. Ваши мнения очень важны.

И можно из "Новичков" тему перекинуть в разработку. Зарегился недавно, но это ж не повод для дискриминации по признаку рейтинга?)))

Сделал запрос к своей локальной базе ( с помощью библиотеки BitcoinLib) - есть там вся полная инфа по этому блоку.
Size- 989872
Difficulty   711697198173.75659   
ChainWork   "0000000000000000000000000000000000000000006522ec80b162bc564d76b8"   
Tx   Count = 2157   

Ну и так далее, можно прекрасно вытащить всю информацию.



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!