Производители блоков

From Mina Wiki
Jump to navigation Jump to search

Автор Gareth Davies

Производители блоков

Роль производителя блоков в сети Mina заключается в достижении консенсуса и обеспечении безопасности блокчейна. Производитель блоков отвечает за создание новых блоков, которые включают недавние транзакции, транслируемые в сети, и доказательство блокчейна, подтверждающее, что текущее состояние цепочки является действительным.

В сети Mina любой может стать производителем блоков. Существует неограниченное количество участников с шансом создать блок, пропорциональный поставленным средствам. Средства не заблокированы и не подлежат рубке.

В обмен на размещение средств и создание необходимых доказательств блокчейна, блоки, созданные и включенные в каноническую цепочку, вознаграждаются в виде базы монет и комиссий за транзакции, за вычетом любых комиссий, уплаченных за покупку необходимой транзакционной работы snark.

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

Выбор производителя блоков

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

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

Распределение долей определяется из подсчитанного реестра в последнем блоке текущей эпохи-2, поэтому есть задержка для любой недавно приобретенной или делегированной доли. Например, если текущая эпоха - 10, распределение ставок определяется на основе перехваченной бухгалтерской книги последнего блока 8-й эпохи.

Вывод функции VRF можно увидеть в логе в строках "Checking VRF evaluations"

Создание блока

После того, как производитель блоков выбран для создания блока для слота, он выполняет следующие действия:

- Выбирает самый подходящий tip в transition frontier, на основании которого будет создан новый блок.

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

- Генерирует предлагаемое следующее состояние блокчейна. Это включает создание разницы в сети, которая включает в себя account ledger и scan state. Эта разница применяется к существующему состоянию сети для создания нового состояния.

- Создает доказательство блокчейна, чтобы доказать, что новое состояние является валидным. Данный снарк дополнительно проверяет предыдущее подтверждение состояния протокола.

- Создает delta transition chain proof, которое доказывает действительность блока, если он получен в пределах допустимой сетевой задержки.

- Применяет это вновь созданное состояние локально, добавляя его к существующему transition frontier.

- Транслирует блок другим пирам в сети.

Действия производителя блоков можно просмотреть в файле src / lib / block_producer / block_producer.ml

Делегирование стейка

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

Повышенное вознаграждение (supercharged coinbase)

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

Повышенное вознаграждение применимо ко всем адресам в сети, делегирующим токены, либо участвующим в стейкинге самостоятельно. Повышенное вознаграждение зависит от адреса, выигравшего слот. Например, в том случае, если адрес без временной привязки делегирует токены на адрес с временной привязкой, и адрес без временной привязки выигрывает слот, он получает повышенное вознаграждение. В случае, если слот выигрывает адрес с привязкой по времени, он получает обычное вознаграждение.

Перевод: Natalia

Оригинал: https://hackmd.io/@garethtdavies/BkFFd6pdD#