Author

Topic: Парсинг блоков и определение баллансов (Read 986 times)

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

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

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

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

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


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

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

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

Может с базой что не так? В онлайн все видно https://blockchain.info/block-index/1523882/000000000000000001662c8caf43a0b6388494c78b324a81240f8c005c851603
ON
hero member
Activity: 684
Merit: 506
а именно, повторюсь. как спарсить балланс по каждому адресу биткоина?
Возможно тебе поможет код https://github.com/znort987/blockparser
Ответить на твой вопрос конкретно не получится, там же килобайты кода. Нужно парсить блоки с первого до последнего, и отслеживать входы-выходы.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
пример транзакции покажите, скажу что делать
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
все просто: нет на входе номера адреса = нет и адреса из которого надо вычитать.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
входы содержат хэш предыдущей транзакции и номер адреса с которого списываются коины.
Этого достаточно чтобы найти сам адрес списания.
legendary
Activity: 1200
Merit: 1021
Подскажите куда копать.

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

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

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

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

Совсем не обязательно. Разница между суммой входов и суммой выходов - это комиссия.
jr. member
Activity: 36
Merit: 3
Будучи совсем ещё новичком в данной теме, появился вопрос по парсингу блоков.
Насколько я понимаю, блок содержит транзакции, каждая из которых содержит входы и выходы.
Выходы содержат сумму (8 байт) и адрес (20 байт ripemd160 или 32 байт publicKey).
Вопрос. Как получить список вида [адрес1, сумма1], [адрес2, сумма2]...и т.д., после парсинга нескольких файлов blk00*.dat?
Понятно как плюсовать балланс по каждому адресу. Но как минусовать?
Понятно также, что сумма выходов транзакции равняется сумме входов. Но это лишь косвенный признак.
Подскажите куда копать. Как получить эти данные?
Jump to: