Проверяемая случайная функция - это функция, которая в псевдокоде может быть выражена следующим образом:
(RESULT, PROOF) = VRF(SECRET, INPUT)
То есть для некоторого секретного и некоторого ввода (который может быть открытым), результатом являетсякортеж RESULT
и PROOF
, где PROOF
может использоваться внешними наблюдателями для проверки законности VRF RESULT
.
Другими словами, выполнение "броска VRF" приводит к случайномучисло и доказательство того, что вы получили это случайное число, а не просто выбрали его.
Каждый слот (примерно каждые 6 секунд), каждый валидатор будет запускать функцию VRF. SECRET
будет их ключом VRF, специальным ключом, который будет использоваться только для этого, генерируемым валидатором и хранящимся в секрете. INPUT
- это либо конкретное значение из блока генезиса, если в цепочке существует менее 2 эпох, либо хэш всех VRF-результатов за последние 2 эпохи.
Как только валидатор выполнил VRFRESULT
сравнивается со значением THRESHOLD
, которое определяется протоколом. Если RESULT
меньше, чем THRESHOLD
, валидатор является действительным кандидатом, предлагающим блочное предложение, для этого слота. В противном случае валидатор пропускает этот слот.
Это означает, что возможно наличие нескольких валидаторов, которые являются блоком, создающим кандидатов на слот, и в этом случае блок, который выбирается другими узлами, является тем, которыйпреобладает, пока он находится в цепочке с самым последним завершенным блоком согласно гаджету окончательности GRANDPA. Возможна ситуация, когда для слота не существует производителей блоков, и в этом случае консенсус AURA вступит во владение. Консенсус AURA - это в основном запасной вариант, который выбирает случайный валидатор для каждого блока. Он работает параллельно BABE и имеет значение только тогда, когда в слоте нет производителей блоков, в противном случае он игнорируется.