Я просто написал Bitcoin blockchain анализатор в крошечном фрагменте кода. Это реализуется, как только два исходных файлов, один заголовок и один CPP, без каких-либо внешних зависимостей. Этот фрагмент кода не использует выделения памяти, шаблоны, контейнеры, STL, Boost, или что-нибудь более сложное, чем «FOPEN, FREAD, fclose».
Я написал это в основном как инструмент обучения, чтобы я мог понять формат blockchain сам.
Во время написания его я побежал в несколько незначительных вопросов. Во-первых, в том, что иногда blockchain файл данных будет просто запустить из данных, остальная часть файла, содержащего нули. Я не знаю, если это нормально или как ожидается, но я рассматривать его как условие конца-файла.
Друга в том, что некоторые блоки содержат меньше данных, чем указано на длину блока; Это означает, что после того, как все операции чтения в указатель файла не продвинулся так далеко, как «длина блока», который был указан. Я буду считать это нормальным и ожидаемым?
Этот фрагмент кода разбирает мою копию blockchain (9.2gb) примерно через 95 секунд; который я понял, было довольно хорошо; хотя я не знаю, что я должен сравнить.
Во всяком случае, если кто-то считает этот фрагмент кода полезным или просто хочет, чтобы лучше понять структуру данных о Bitcoin blockchain вы можете найти его здесь:
http://codesuppository.blogspot.com/2013/07/a-bitcoin-blockchain-parser-as-single.html
Обратная связь, исправления, предложения, все приветствуются.
Благодаря,
Джон