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

Из статистики Ethereum я знаю , что блок добывается в среднем за 14 секунд. Но это только в среднем. Я хочу знать, шаг за шагом, если это возможно, каковы его механизмы, чтобы сказать « хорошо, этот блок готов, давайте создадим новый ».

На мой взгляд, это не предел размера блока (даже если он есть), потому что сеть Ethereum может адаптироваться, если транзакции не потребляют более 3 141 592 газа , что представляет собой множество транзакций.

Итак, я думаю, что это связано с объявлением, которое установило сложность на блок / 12 секунд. Но я не уверен в этом.

Спасибо за ваше драгоценное время и помощь.

Ответы (1)

По сути, Эфириум — это конечный автомат. У вас есть база данных состояний (например, счета с суммами). Как меняются эти состояния? с помощью транзакций. Это может быть give X ether from A to Bвызов смарт-контрактов. Хорошо, транзакции сгруппированы в блок . И вот тут становится интересно.

У вас есть вселенная майнеров , работающих над производством блоков. Они берут транзакции из пула, обрабатывают их до тех пор, пока они не достигнут gasLimit, назначая на назначенный им счет (называемый etherbase) комиссию за транзакцию и вознаграждение за найденный в конце блок, и отсюда они создают случайный одноразовый номер . Одноразовый номер важен: из этого одноразового номера и созданного вами блока вы создаете хэш , достаточно сложный, чтобы заставить вашу машину много работать (т. е. использовать много ЦП, памяти и энергии. Вот почему это называется доказательством работы ). Когда у майнера есть хэш, это сравнивается с целью , которая не что иное , как 2**256 / Difficulty, поэтому чем выше сложность, тем меньше шансов найти хэш меньше цели.

Поскольку вы можете создавать случайные 2**256возможные хэши из созданного вами блока и вашего одноразового номера , ваша вероятность в любой момент найти действительный хэш равна 1/D. Первый майнер, способный найти хэш меньше целевого , распространяет свой результат. Если другие майнеры получат этот блок и сочтут его действительным (путем воспроизведения его транзакций и проверки одноразового номера и хэша ), он будет включен в их соответствующую цепочку блоков .

Теперь вопрос: как им удается достичь в среднем около 14 секунд? Ну, есть функция расчета сложности (см. этот пост для выдающегося объяснения), которая каждый раз, когда создается блок, пересчитывается. Затем вы видите, что в зависимости от того, что вы делаете для создания последнего блока, вы настраиваете сложность, чтобы иметь возможность достичь времени между 10и 19секундами. Конечно, эта трудность подтверждается и в новом блоке.

Чтобы ответить на ваш вопрос, в конце концов, difficultyэто связано с данными из родительского блока , а именно сложностью , номером блока и временем этого родителя , а также временем текущего блока .

Обратите внимание, что майнеры максимизируют прибыль, и работа по созданию блока с 0 транзакциями в вероятностном выражении такая же, как и работа по созданию блока с максимальным количеством транзакций, разрешенным системой ( gasLimit). Они захотят включить как можно больше транзакций, чтобы получить комиссию за транзакцию.