Проверка транзакции майнером VS полной нодой с SegWit и без него

Я пытаюсь заполнить несколько пробелов в своем понимании проверки транзакций и буду признателен за любую информацию.

Без SegWit

  1. Майнеры транслируют новые блоки, содержащие подписи, с каждой транзакцией.
  2. Майнеры могут решать, проверять или нет каждую транзакцию в блоке. У них есть стимул проверять каждую транзакцию, потому что в противном случае блок может быть недействительным, и они потеряют свое вознаграждение.
  3. Полные узлы хранят все данные блокчейна и могут дополнительно проверять транзакции.

Q1: Есть ли у полных узлов какой-либо стимул для проверки транзакций, от которых они не получают прямой выгоды? Как часто полные узлы фактически проверяют транзакции?

С SegWit

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

Q2: Если бы полный узел хотел проверить транзакцию, но майнер не передал свидетельство как часть нового блока, у кого бы полный узел запрашивал подпись? Насколько я понимаю, в долгосрочной перспективе планируется «сокращение» свидетелей, чтобы минимизировать размер полной цепочки блоков, но что заставляет сохранять подписи в краткосрочной перспективе?

Ответы (1)

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

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

Как часто полные узлы фактически проверяют транзакции?

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

Если бы полный узел хотел проверить транзакцию, но майнер не передал свидетельство как часть нового блока, у кого бы полный узел запрашивал подпись? Насколько я понимаю, в долгосрочной перспективе планируется «сокращение» свидетелей, чтобы минимизировать размер полной цепочки блоков, но что заставляет сохранять подписи в краткосрочной перспективе?

Узлы Segwit всегда будут запрашивать блок со свидетелями. Если блок отправляется им без свидетелей, даже если свидетели запрошены, блок будет считаться недействительным, а узел, отправивший блок, будет временно отключен от узла и забанен. То же самое касается транзакций, но без отключения и запрета IIRC. Чтобы всегда гарантировать, что блок поставляется со свидетелем, SegWit-узел никогда не будет запрашивать блок у не-segwit-узла.

Эндрю Чоу .... То же самое касается транзакций (вы имеете в виду мемпул или Tx от этого запрещенного майнера?), а также что такое IIRC?
Транзакции @anacondabitch без свидетелей считаются недействительными, но узел, отправивший их, не обязательно отключен и забанен. IIRC - это сокращение от «Если я правильно помню».