Я пишу свой собственный blockchain анализатор, я хотел экспортировать UTXOs, я спросил вокруг в Bitcoin-DEV канал IRC, но мои вопросы был проигнорирован (вроде).
Что я должен сделать, чтобы проверить себя blockchain? Я хочу, чтобы, например, проверить, что некоторая транзакция может фактически потратить некоторые средства, или что блок, в котором эта транзакция, не сирота блок и является частью самой длинной сложности мудра цепью и т.д.
Я предложил использовать "bitcoind", Но я пишу свой собственный парсер, я хочу, чтобы быть в состоянии сделать эти вещи самостоятельно.
Примечание: Воссоздание проверки blockchain эталонного клиента является наиболее туманной частью о реализации Bitcoin. И причины, почему это трудно диапазон из-за отсутствия ручной удерживающей документации, ошибки, которые вы должны воссоздавать, и - в особенности - последствия получить это неправильно.
Прежде всего, я хотел бы начать в тяжелейшем части первой:
https://en.bitcoin.it/wiki/Script, которая будет у вас реализовать
https://en.bitcoin.it/wiki/OP_CHECKSIG. Он также будет иметь вы реализуете DER кодирование / декодирование и зверинец полезных функций, которые вы будете нуждаться по пути.
После того, как вы на месте, где вы можете (? Действительный-ТХ-вход х), и он будет (Eval-скрипт (CONCAT ввода-скрипт вывода-скрипт)) возвращает логическое значение, и обрабатывать OP_CHECKSIG - даже если это наивный реализация - тогда вы делаете хороший прогресс.
Мой наивный подход для обработки наиболее недействительной-ветви blockchain самого простым способом, чтобы всегда добавлять входящие блоки к моему blockchain дб, если они проверкам (входы проверки, трудности правильны, пред-выходы неизрасходованные на этой ветке, блок- хэш является правильным, и т.д.). Вилка представлена, когда несколько блоков указывают обратно на тот же предыдущая-блок. Например, может существовать несколько блоков на глубине 42.
Я вычислить (и кэш) наиболее недействительный-ветвь (ветвь с трудным суммированного трудом) с функцией, прилагаю к блоку генеза. Она возвращает набор этих блоков в наиболее недействительных ветвях. Таким образом, если Tx ABC существует в двух блоках на глубине 42, мне нужен способ, чтобы получить наиболее правильные один, и это лишь вопрос пересекающего его родительский-блок с наиболее действительным набором блоков.
Просто знайте, что через пару месяцев вы могли бы найти себя идти "Какого черта я делаю?", Но это только слабость оставив тело.