Я изучаю технологии Биткойн и Блокчейн с помощью курса по криптографии в Принстоне, и в нем упоминается, что полные узлы выполняют следующие проверки:
i) транзакция действительна с текущей цепочкой блоков,
ii) соответствуют ли скрипты белому списку,
iii) транзакция не была замечена ранее и
iv) не конфликтует с другими ретранслируемыми (во избежание двойных расходов) .
Однако лектор также упомянул, что эти проверки не применяются на узле. Допустим, полный узел может иметь полный набор UTXO, но все же решает ретранслировать транзакцию, которая была потрачена ранее (фактически игнорируя тот факт, что TX не находится в пуле UTXO), и в конечном итоге этот TX ретранслируется и делает его в блок. Поскольку майнеры доверяют этим узлам проверку транзакций, не будет ли TX включена в цепочку консенсуса?
Я понимаю, что процесс майнинга (POW) и получающееся в результате вознаграждение за блок могут быть затребованы/собраны только в том случае, если блок окажется в ветке долгосрочного консенсуса, но это не защищает от злонамеренного поведения узла, как я уже объяснял, поскольку майнеры не t проверить на двойные траты.
Поскольку майнеры доверяют этим узлам проверку транзакций, ... поскольку майнеры не проверяют двойные траты.
Что заставляет вас так думать? Майнеры также являются узлами; они являются подмножеством узлов. Майнеры по-прежнему получают и проверяют все транзакции, они не просто слепо доверяют тому, что дал им какой-то другой узел. Майнеры заинтересованы в проверке транзакций, поскольку включение любых недействительных транзакций означает, что блок также будет недействительным и, следовательно, будет отклонен другими узлами и майнерами в сети.
Если майнер производит недействительную транзакцию (например, включая двойную трату), блок будет считаться недействительным. Майнеры не определяют, что является действительным, а что недействительным, это делают узлы. Поэтому, когда узлы в сети получают этот недействительный блок, они отклоняют его как недействительный и не добавляют в свою цепочку блоков. Кроме того, поскольку майнеры также являются узлами, другие майнеры отклонят блок и, следовательно, не будут майнить поверх него.
Если майнеры майнят поверх недопустимого блока, произойдет форк блокчейна. Узлы в сети откажутся следовать цепочке, содержащей недопустимый блок, даже если в ней больше работы. Они следуют только действительной цепочке с наибольшей работой, а недопустимый блок делает эту цепочку недействительной.
Майнеры, которые не проверяют двойные расходы, подключаются только к узлам, которым они полностью доверяют. И для этого есть веская причина — каждый неповрежденный узел будет игнорировать недопустимый блок. Таким образом, если бы майнер когда-либо добыл блок, содержащий двойную трату, любой другой узел проигнорировал бы этот блок, и он никогда не стал бы частью чьего-либо взгляда на цепочку консенсуса.
пебвиндкрафт