Принципы работы Ethereum
____________________________________
[ 49 ]
___________________________________
Время блока
Формула вычисления сложности, которую вы видели раньше, содержит 10-секунд-
ную задержку,
которая гарантирует, что разница времени майнинга между роди-
тельским и дочерним блоком будет находиться в пределах 10–20 секунд. Но почему
именно 10–20 секунд и никакое другое значение? И зачем вводить ограничение
с постоянной разностью времени вместо того, чтобы установить постоянную слож-
ность?
Представьте, что мы имеем постоянную сложность, и майнерам просто нужно най-
ти число nonce, при котором хеш блока меньше или равен значению target. Предпо-
ложим, сложность задачи высокая. В таком случае пользователи сети не смогут да-
же приблизительно предположить, сколько времени займет передача эфира от од-
ного пользователя другому. Если вычислительной мощности сети недостаточно,
поиск решения (и проводка транзакции) может длиться весьма долго.
Иногда сети
может повезти, и тогда решение будет найдено очень быстро. Но такой сети будет
очень сложно привлекать пользователей, потому что люди всегда хотят знать,
сколько времени займет транзакция, аналогично тому, как при переводе с одного
банковского счета на другой банковский счет мы представляем, сколько времени
занимает процедура перевода. Если сложность задачи низкая, это угрожает безо-
пасности блокчейна, потому что мощные майнеры будут добывать блоки намного
быстрее слабых майнеров и могут захватить управление децентрализованным при-
ложением. Невозможно найти постоянное значение сложности,
которое гарантиру-
ет стабильность сети, потому что вычислительная мощность сети непостоянна.
Теперь вы понимаете, почему мы всегда должны знать среднее значение времени,
в течение которого сеть вырабатывает новый блок. Вопрос в том, какое усреднен-
ное время считать приемлемым в диапазоне от одной секунды до бесконечности?
Маленькое усредненное время достигается снижением сложности, большое усред-
ненное время достигается увеличением сложности. Но каковы достоинства и
недостатки маленького и большого усредненного времени? Прежде, чем говорить
об этом, мы должны понять, что такое
устаревшие блоки
.
Что произойдет, если два майнера добудут следующий
блок приблизительно в одно
и то же время? Оба блока будут вполне корректными, но блокчейн не может со-
держать два блока с одинаковым номером, и два майнера не могут получить возна-
граждение. Хотя это частая проблема, у нее есть простое решение. Сетью будет
принят блок, у которого больше сложность. Соответственно, отвергнутый блок бу-
дет назван
устаревшим
блоком.
Общее количество устаревших блоков, производимых сетью, обратно пропорцио-
нально средней длительности выработки нового блока. Маленькая
длительность
выработки блока означает, что новые блоки будут чаще транслироваться в сеть, и
возрастает вероятность того, что решение задачи будет найдено более чем одним
майнером. Иначе говоря, за время, пока блок распространяется по сети, другие
майнеры могут найти решение и тоже его разослать, но это будут устаревшие бло-
ки. Но если средняя длительность выработки блока велика, это уменьшает вероят-