Последний блок из нескольких узлов майнинга

Допустим, у меня есть частная цепочка с 3 узлами (все для майнинга) A, B и C.

Я хочу получить последний блок своей цепочки. Я подключаюсь к узлу A и получаю эту информацию с помощью getBlock("latest").

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

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

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

Ответы (1)

Позвольте мне попытаться сломать это:

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

Как только блок был добыт, он считается правильным узлом, добывающим его (иначе он не был бы добыт).

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

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

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

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

Однако в чем я не совсем уверен, так это в том, что если есть какая-то логика, getBlock("latest")которая возвращает последний блок только в том случае, если он уже подтвержден некоторыми другими блоками или чем-то в этом роде...