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

Я изучаю технологии Биткойн и Блокчейн с помощью курса по криптографии в Принстоне, и в нем упоминается, что полные узлы выполняют следующие проверки:

i) транзакция действительна с текущей цепочкой блоков,

ii) соответствуют ли скрипты белому списку,

iii) транзакция не была замечена ранее и

iv) не конфликтует с другими ретранслируемыми (во избежание двойных расходов) .

Однако лектор также упомянул, что эти проверки не применяются на узле. Допустим, полный узел может иметь полный набор UTXO, но все же решает ретранслировать транзакцию, которая была потрачена ранее (фактически игнорируя тот факт, что TX не находится в пуле UTXO), и в конечном итоге этот TX ретранслируется и делает его в блок. Поскольку майнеры доверяют этим узлам проверку транзакций, не будет ли TX включена в цепочку консенсуса?

Я понимаю, что процесс майнинга (POW) и получающееся в результате вознаграждение за блок могут быть затребованы/собраны только в том случае, если блок окажется в ветке долгосрочного консенсуса, но это не защищает от злонамеренного поведения узла, как я уже объяснял, поскольку майнеры не t проверить на двойные траты.

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

Ответы (2)

Поскольку майнеры доверяют этим узлам проверку транзакций, ... поскольку майнеры не проверяют двойные траты.

Что заставляет вас так думать? Майнеры также являются узлами; они являются подмножеством узлов. Майнеры по-прежнему получают и проверяют все транзакции, они не просто слепо доверяют тому, что дал им какой-то другой узел. Майнеры заинтересованы в проверке транзакций, поскольку включение любых недействительных транзакций означает, что блок также будет недействительным и, следовательно, будет отклонен другими узлами и майнерами в сети.

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

Если майнеры майнят поверх недопустимого блока, произойдет форк блокчейна. Узлы в сети откажутся следовать цепочке, содержащей недопустимый блок, даже если в ней больше работы. Они следуют только действительной цепочке с наибольшей работой, а недопустимый блок делает эту цепочку недействительной.

Спасибо за ваш вклад. Сколько времени обычно требуется майнеру, чтобы проверить каждую отдельную транзакцию в блоке, который он майнит, по набору UTXO?
Это занимает столько же времени, сколько и для любого другого узла. Обычно это занимает несколько миллисекунд. Кроме того, поскольку майнеры являются узлами, они, вероятно, получили и проверили все транзакции до того, как они появились в блоке, поэтому они могут пропустить их повторную проверку, когда получат их в блоке.

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