Что происходит подробно, когда Bitcoin Core проверяет блок во время синхронизации?

Начиная с версии 0.10.x, заголовки блоков приобретаются отдельно, поэтому загрузка не задерживается до тех пор, пока не будут проверены предыдущие блоки.

Предыдущие вопросы о синхронизации отмечают, что проверка занимает больше всего времени: как Bitcoin Core проверяет каждый блок? Я предполагаю, что он проверяет скрипт каждой транзакции, дерево merkle и, наконец, блокхаш, но как это происходит подробно?

6 голосов | спросил Murch 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 10 Sep 2015 10:32:36 +0300 2015, 10:32:36

1 ответ


1

Перефразируя из описание протокола в Bitcoin-Wiki :

В блоке выполняются следующие проверки:

  1. для корректности
  2. не является дубликатом
  3. имеет как минимум одну транзакцию
  4. hash удовлетворяет требованиям сложности (nBits)
  5. отметка времени не более двух часов в будущем
  6. первая транзакция - это транзакция Coinbase , никаких других транзакций нет.
  7. Сделки придерживаются правил
    1. имеет входы и выходы
    2. tx меньше MAX_BLOCK_SIZE
    3. каждый вывод и общее количество находятся между 0 и 21 000 000 биткойнами .
  8. Сценарий CoinbaseSig должен быть 2-100
  9. Отклонить, если сумма транзакций sig opcounts> MAX_BLOCK_SIGOPS
  10. Подтвердите Merkle hash о транзакциях.
  11. Проверьте, находится ли предыдущий блок в основной цепочке.
  12. инструкция по сложности (nBits) соответствует правилам сложности
  13. timestamp не старше медианы 11 предыдущих блоков.
ответил Murch 7 62015vEurope/Moscow11bEurope/MoscowSat, 07 Nov 2015 17:43:35 +0300 2015, 17:43:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132