Я прочитал руководство для разработчиков (bitcoin.org/en/developer-guide), спросил нескольких коллег и до сих пор не понимаю, как транзакции используются для формирования блока.
Я понял, что транзакции используются для формирования дерева Меркла. Все ли люди, добывающие следующий блок, используют одни и те же транзакции для формирования дерева Меркла?
Допустим, в сети Биткойн есть транзакции A, B, C, X, Y и Z. Все они неподтвержденные.
Я занимаюсь майнингом транзакций ABC, а вы майнингом XYZ. Если да, то если я найду блок, содержащий ABC, буду ли я майнить транзакции XYZ?
Если я найду блок, вам придется проверить, какие транзакции были включены мной в блок, прежде чем формировать следующее дерево меркла, верно? Если нет, вы можете снова использовать, например, транзакцию B, которая уже была подтверждена мной.
Все ли люди, добывающие следующий блок, используют одни и те же транзакции для формирования дерева Меркла?
Нет. Это может произойти из-за того, что майнеры по-разному выбирают транзакции (я говорю, что бесплатных транзакций быть не должно!) или из-за того, что о транзакции известно только 90% сети.
Я занимаюсь майнингом транзакций ABC, а вы майнингом XYZ. Если да, то если я найду блок, содержащий ABC, буду ли я майнить транзакции XYZ?
Это зависит от того, почему вы не включили XYZ в свой первый блок.
Если я найду блок, вам придется проверить, какие транзакции были включены мной в блок, прежде чем формировать следующее дерево меркла, верно? Если нет, вы можете снова использовать, например, транзакцию B, которая уже была подтверждена мной.
Да. Клиенты для майнинга загружают и полностью проверяют блоки перед майнингом поверх них.
Ник Оделл
анониму