Награды за стейкинг
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Выборы и стейкинг
Блокчейн TON использует алгоритм консенсуса доказательства доли владения (PoS - Proof of Stake), что означает, что, как и во всех сетях PoS, безопасность и стабильность сети поддерживаются набором сетевых валидаторов. В частности, валидаторы предлагают кандидатов для новых блоков (состоящих из пакетов транзакций), в то время как другие валидаторы проверяют и утверждают их с помощью цифровых подписей.
Валидаторы выбираются с помощью специального контракта управления Elector. Во время каждого раунда консен суса кандидаты на валидаторы отправляют заявку на выборы вместе со своей долей и желаемым max_factor (параметром, который регулирует объем обслуживания, выполняемого валидатором за раунд консенсуса).
В процессе выбора валидатора смарт-контракт управления выбирает следующий раунд валидаторов и назначает каждому валидатору вес голоса, чтобы максимизировать их общую долю, принимая во внимание также долю валидатора и max_factor. В этом отношении, чем выше доля и max_factor, тем выше вес голоса валидатора и наоборот.
Выбранные валидаторы выбираются для защиты сети путем участия в следующем раунде консенсуса. Однако, в отличие от многих других блокчейнов, для достижения горизонтальной масштабируемости каждый валидатор проверяет только часть сети:
Для каждого шардчейна и мастерчейна существует выделенный набор валидаторов. Наборы валидаторов мастерчейна состоят из до 100 валидаторов, которые демонстрируют самый высокий вес голоса (определяется как сетевой параметр Config16:max_main_validators
).
Напротив, каждый шардчейн проверяется набором из 23 валидаторов (определяется как сетевой параметр Config28:shard_validators_num
) и чередуется случайным образом каждые 1000 секунд (сетевой параметр Config28:shard_validators_lifetime
).
Значения стейкинга: Максимально эффективный стейк
Текущий max_factor
в конфигурации равен 3, что означает, что стейк наименьшего валидатора не может быть меньше стейка наибольшего валидатора более чем в три раза.
Формула с конфигурационными параметрами:
max_factor
= max_stake_factor
/ validators_elected_for
(Упрощенный) алгоритм выбора
Этот алгоритм, запущенный смарт-контрактом Elector, выбирает лучших кандидатов-валидаторов на основе их стейка. Вот как это работает:
-
Начальная выборка: избиратели рассматривают всех кандидатов, которые имеют стейк больше установленной минимальной суммы (300 тыс., как указано в конфигурации).
-
Сортировка кандидатов: Затем эти кандидаты располагаются от самого высокого к самому низкому в зависимости от их стейка.
-
Уточнение:
- Если количество кандидатов превышает максимально допустимое количество валидаторов (см. конфигурацию), то исключаются кандидаты с самым низким стейком.
- Затем Elector оценивает каждую потенциальную группу кандидатов, начиная с самой большой группы и переходя к меньшим:
- Он проверяет лучших кандидатов в упорядоченном списке, увеличивая число на единицу.
- Для каждого кандидата Elector вычисляет его "эффективный стейк". Если стейк кандидата значительно выше минимального, он корректируется (например, если кто-то поставил 310 тыс., а минимум составляет 100 тыс., но есть правило, ограничивающее минимум в три раза, его эффективный стейк считается равной 300 тыс.).
- Он суммирует эффективные стейки всех кандидатов в этой группе.
-
Окончательный отбор: группа кандидатов с наибольшим общим эффективным стейком выбирается Elector в качестве валидаторов.
Алгоритм выбора валидатора
На основе доступных стейков потенциальных валидаторов определяются оптимальные значения минимального и максимального стейка с целью максимизации величины общего стейка:
-
Elector выбирает всех кандидатов, у которых сумма стейка превышает минимальную (300 тысяч в конфигурации).
-
Elector сортирует их в порядке убывания стейка.
-
Если участников больше, чем максимальное ч исло валидаторов, Elector удаляет последнюю часть списка. Затем Elector делает следующее:
- Для каждого цикла i от 1 до N (оставшееся число участников) он берет первые i заявок из отсортированного списка.
- Он вычисляет эффективный стейк, учитывая
max_factor
. То есть, если человек вложил 310 тыс., но сmax_factor
3, а минимальный стейк в списке составляет 100 тыс. Toncoin, то эффективный стейк будет минимум (310 тыс., 3*100 тыс.) = 300 тыс. Один узел валидатора может использовать до 600 тыс. TON (в этом примере) в двух раундах (половина в нечетных раундах, половина в четных раундах). Чтобы увеличить стейк, необходимо настроить несколько узлов валидатора. - Он вычисляет общий эффективнуый стейк всех i участников.
Как только Elector находит такой i, где общий эффективный стейк максимальный, мы объявляем этих i участников валидаторами.