Я немного запутался с механизмом подтверждения в консенсусе PoW биткойнов.
Согласно биткойн-вики:
После того, как транзакция транслируется в сеть Биткойн, она может быть включена в блок, который публикуется в сети. Когда это происходит, говорят, что транзакция была добыта на глубине 1 блока. С каждым последующим найденным блоком количество блоков в глубину увеличивается на один. Чтобы обезопасить себя от двойных расходов, транзакция не должна считаться подтвержденной до тех пор, пока она не достигнет определенного количества блоков в глубину.
Допустим, у A есть 1 биткойн, и A отправил 1 биткойн B как транзакцию T1, а также отправил 1 биткойн C как транзакцию T2. Возможно, что эти 2 транзакции записываются в 2 разные ветки.
В этом сценарии, если майнер M1 продолжает добычу на основе ветки с T1, а M2 продолжает майнинг на основе ветки с T2, в итоге последующий блок для этих 2 ветвей будет больше 6, и в большинстве приложений эти 2 транзакции будут считаться законными. Я думаю, что может быть другая проверка, чтобы блок считался подтвержденным.
Мой вопрос: что делает транзакцию подтвержденной? Заранее спасибо.
Допустим, у A есть 1 биткойн, и A отправил 1 биткойн B как транзакцию T1, а также отправил 1 биткойн C как транзакцию T2. Возможно, что эти 2 транзакции записываются в 2 разные ветки.
Да. Это возможно.
Но до сих пор нет двойной траты, потому что только 1 ветка будет принята в будущем.
Предположим, что майнеров больше. Если майнеры 3, 4, 5 и 6 начинают майнить на второй ветке, она растет быстрее. Через 2 часа в ветке 1 будет 1200 блоков, а в ветке 2 может быть 1209 блоков. Цепочка/ветвь с наибольшим количеством блоков является релевантной цепочкой. Таким образом, майнер 1 даже не хочет больше майнить на своей ветке, потому что он знает, что другие будут игнорировать эти блоки 1201, 1202, 1203. Таким образом, майнер 1 также переключается на ветку 2, потому что в противном случае он только тратит электроэнергию впустую.
Фрэнк Конг
Читрик