Почему два шахтера получают разные хэши для одного и того же списка транзакций?

В соответствии с Bitcoin Wiki :

  

крайне маловероятно, чтобы у двух людей был один и тот же корень Merkle   потому что первая транзакция в вашем блоке - это поколение, «отправленное» на   один из ваших уникальных адресов биткойнов.

Что это значит? Не является ли Merkle корнем хеш всех транзакций в списке? Почему у нас есть другой набор транзакций, если нужно проверить один и тот же набор транзакций?

Я думаю, что я не уверен, что здесь означает «поколение».

5 голосов | спросил incarna 13 AM00000020000004531 2017, 02:37:45

1 ответ


7

Первая транзакция в блоке называется транзакцией «генерация» или «коинбаза». Он не имеет реальных входов и не тратит монет. Вместо этого он выплачивает субсидии и сборы шахтеру, который сгенерировал блок.

Поскольку у любых двух горняков будет другой адрес, которому они хотят получить свою выплату, их транзакции с монетами будут разными. Если транзакции с монетами различны, деревья Merkle также будут отличаться.

  

Почему у нас есть другой набор транзакций, если точка заключается в проверке одного и того же набора транзакций?

Целью проверки не является проверка - каждый узел сети проверяет все транзакции. Целью поиска является ordering транзакции, чтобы выбрать одну из нескольких действительных транзакций, которые проводят одни и те же монеты. Тем не менее, майнеры поощряются , чтобы включать только действительные транзакции, потому что, если они этого не сделали, сеть не будет принимать свои блоки (и их субсидии).

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

В частности, возможно, что кто-то создает две конфликтующие транзакции A и B, которые являются действительными, но проводят одну и ту же монету. Очевидно, что только одна из двух может быть принята сетью. Я подключаюсь к узлу в Австралии и к одному в Бразилии и одновременно отправляю A в Японию и B в Бразилию. Узлы в Азии, скорее всего, будут видеть первый, а узлы в Северной и Южной Америке, скорее всего, сначала увидим B. Из-за конечной скорости света вы не можете гарантировать, что любые два узла будут видеть это одновременно. Кто-то должен позвонить, будет ли принят A или B. Решение Биткойна - позволить шахтерам выбрать - независимо от того, какой выигрывает первый шахтер, который создает блок, который включает A или B, выигрывает.

ответил Pieter Wuille 13 AM00000030000005431 2017, 03:05:54

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

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

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