Каким образом VRF Polkadot добивается случайного перемешивания валидаторов?

В отличие от Ethereum, который использует RANDAO (возможно, расширенный с помощью VDF), в Polkadot проверяемая случайная функция (VRF) используется для перетасовки валидаторов и выбора потенциальных предложителей блоков для определенных слотов. Откуда берется случайность, т.е. как конкретно работает случайность?

1 ответ

Решение

Проверяемая случайная функция - это функция, которая в псевдокоде может быть выражена так:

(RESULT, PROOF) = VRF(SECRET, INPUT)

То есть для некоторого секрета и некоторого ввода (который может быть общедоступным) результатом является кортеж RESULT а также PROOF, где PROOF могут использоваться сторонними наблюдателями для проверки легитимности VRF RESULT.

Другими словами, выполнение "прокрутки VRF" приводит к случайному числу и доказательству того, что вы получили это случайное число, а не просто выбрали его.

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

Как только валидатор выполнил VRF, RESULT сравнивается с THRESHOLDзначение, которое определяется протоколом. ЕслиRESULT меньше чем THRESHOLD, валидатор является действительным кандидатом на создание блока для этого слота. В противном случае валидатор пропускает этот слот.

Это означает, что может быть несколько валидаторов, которые создают блоки-кандидатов на слот, и в этом случае блок, который выбирается другими узлами, является преобладающим, если он находится в цепочке с самым последним завершенным блок в соответствии с гаджетом окончательности GRANDPA. Также возможна ситуация, когда не существует производителей блоков для слота, и в этом случае консенсус AURA вступит во владение. Консенсус AURA - это в основном резерв, который выбирает случайный валидатор для каждого блока. Он работает параллельно с BABE и имеет значение только тогда, когда в слоте нет производителей блоков, иначе он игнорируется.

Другие вопросы по тегам