December 13, 2021

Очередь в тестнет и майннет

В этой статье я хочу рассмотреть один из самых главных вопросов: "Когда я попаду в мейн"? Вопрос этот достаточно сложный, потому зависит не только от того, какой у вас сервер, интернет, жесткий диск, а также от того, на каких серверах едут ваши соседи по очереди.

Содержание

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

Краткий путь валидатора в майннет по программе SFDP

Кратко путь попадания в майннет (по программе SFDP) через тестнет (иначе никак, в майннет (по программе SFDP) могут попасть только валидаторы, которые прошли весь путь в тестнете) можно представить так:

  1. Связывание ключей регистрация в SFDP и прохождение KYC (об этом читаем тут)
  2. Примерно 2 месяца ожидания.
  3. Мониторинг своей примерной очереди в сервисе SolanaTools
  4. Обнаруживаем в сервисе SolanaTools прочерк в своей очереди
  5. Ищем свой ключ в пулреквесте на гитхабе проекта, сначала в открытом пулреквесте - тут, потом в закрытом пулреквесте - тут.
  6. Ожидаем примерно одну эпоху и ждем, когда ключ появится тут.
  7. Запускаем ноду и начинаем отслеживать свою очередь тут или тут.
  8. Усердно работаем в течение 12-24 месяцев и попадаем в майннет! Ура!

Для отслеживания очереди мы будем пользоваться следующими ресурсами:

Очередь в тестнет

С этой очередью все не так просто. А все потому, что на данный момент отсутствует официальный сервис от команды, который мог бы поставлять актуальные данные о очереди в тестнет. На сайте SolanaTools есть возможность проверить момент, в который была совершена связка ключей (тестнет и майнет, как это делать читаем в этой статье), эта информация дает нам примерное понимание, когда ключ попадет в тестнет. Почему примерное? А потому что очередь идет не по времени связывания ключей, а по времени прохождения KYC, и получается ситуация, что человек ключ связал сегодня, а KYC прошел через месяц, соответственно его очередь идет с момента прохождения KYC. Если так получилось, то вот что мы увидим на сайте:

Первые ключи были связаны давным-давно, а в тестнет они до сих пор не попали. Почему? Потому что они до сих пор не прошли KYC.

Как определить через сколько времени вы попадете в тестнет? Нужно свою очередь делить на 100.

В тестнет запускают по 100 ключей каждую неделю, поэтому свою очередь делим на 100 и получаем количество недель, через которые вас запустят в тестнет. В одну неделю укладывается примерно 3 эпохи, поэтому на сайте SolanaTools вы будете видеть изменение вашей очереди на 100 позиций каждые 3 эпохи.

Когда ваш ключ будет добавлен в теснет вы увидите вот такие прочерки в очереди:

Как видите, 1 ключ зашел в тестнет в 255 эпохе, второй в 258. Хотя, этот прочерк еще не означает, что ключ уже зашел в тестнет и его видит бот, который начисляет стейк. Этот прочерк значит, что ваш ключ был добавлен в список, который в ближайшие 1-2 эпоху попадет в тестнет, его заметит бот и даст стейк.

Один нюанс, если вы видите прочерки ДО цифр с очередью, это значит, что до этого момента ваши ключ не были связаны, а связка ключей была произведена в ту эпоху, в которой вы увидели первые цифры, например, вот так:

Как видите на этом скриншоте, второй ключ до 245 эпохи не был в очереди в тестнет, связка ключе произошла в 247 эпоху и с этого момента начинается отсчет его очереди (в том случае, если в эту же эпоху человек также прошел KYC). Теперь нужно ждать, когда прочерк будет ПОСЛЕ цифр очереди.

Следующих этап попадания в тестнет лежит через гитхаб проекта, а именно, поэтому, переходит по ссылке и видим:

Пулреквесты, а точнее открытые пулреквесты на добавление 100 ключей в бота. Пока этот пулреквест не закрыт, ключ в бота не попадет. Как вы можете заметить, в этот раз команда сделала сразу несколько пулреквестов, но это исключение, обычно каждую неделю можно увидеть только один пулреквест. Видимо, это связано с Рождественскими и Новогодними каникулами. Поэтому кликаем на 192 Closed (192 пулреквеста команда уже закрыла и добавила какую-то информацию в бота, это не обязательно могут быть ваши ключ, могут быть и другие исправления в коде бота) и видим следующее:

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

Мы видим что 3 дня назад был закрыт пулреквест номер 216, кликаем на этот пулреквест и видим в вот такую ссылку:

Переходим по ней и видим список ключей, который в этот раз команда добавила в тестнет:

Так отмечены ключи, которые в этом пулреквесте были добавлены в бота. Нажимаете ctrl+F и ищете свой ключ в этом списке, если вы есть - все отлично, ждем около 1 эпохи и вы в тестнете!

Обратите внимание, те ключи, которые НЕ выделены зеленым цветом и без плюсиков, УЖЕ находятся в базе, чтобы это проверить вы можете взять любой из этих ключей и проверить его в боте. Как проверять - читаем ниже.

Если нашли свой ключ тут - https://raw.githubusercontent.com/solana-labs/stake-o-matic/master/bot/src/validator_list.rs значит, смело можете запускать свою ноду!

После того, как запустите ноду и синхронизируетесь с сетью, примерно в течение 1 эпохи вас заметит бот и заделегирует на вас 1 SOL. Информацию об этом сможете найти тут:

  • https://raw.githubusercontent.com/wiki/solana-labs/stake-o-matic/md/Validator-PUBLIC-KEY.md вставив за место PUBLIC-KEY свой публичный ключ. Если там есть информация о вашем ключе - значит бот вас уже заметил, если видите - 404: Not Found, значит пока еще не успел заметить и обновить свою базу.
  • Перейти по ссылке в самого бота - и в поле Find a Page... вбить свой публичный ключ, вот тут:

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

Внимание! Бывают моменты, когда ваш ключ исчез из очереди в тестнете (появился прочерк в сервисе SolanaTools, а в пулреквесте не появился, или появился в пулреквесте, а вот в самого бота так и не попал. И это продолжается уже не одну и не две эпохи. В таком случае срочно идем в дискорд проекта, проходим там авторизацию, если не делали это раньше (как это сделать, читаем тут) и заходим в канал #delegation-program, который находится в разделе Solana Foundation. И пишем текст примерно такого содержания: @kuzekuze could you check when my key - (пишем адрес своего публичного ключа в тестнете) gets into the testnet. I passed KYC (пишет месяц и число, когда примерно проходили KYC), and should have gotten into the testnet by now. Ждем ответа Эллы.

Очередь в майннет

Если вы уже находитесь в тестнете и можете найти свой публичный ключ по ссылке - https://raw.githubusercontent.com/wiki/solana-labs/stake-o-matic/md/Validator-PUBLIC-KEY.md (PUBLIC-KEY необходимо заменить на ваш публичный ключ в сети тестнет).

То идем на эту страницу и вводим сюда свой публичный ключ:

Что такое публичный ключ, для чего он нужен и чем отличаются ключи в тестнете и майннете читаем тут.

В итоге мы видим следующее:

  1. Какой процент бонусных эпох ваша нода едет в тестнете начиная с 207 эпохи.
  2. Какой процент бонусных эпох ваша ноде едет в тестнете за последние 13 эпох.
  3. Какое количество кредитов заработала ваша нода за последние 64 эпохи. (формулу изменили, данный параметр больше не актуален и не используется в расчете очереди)
  4. Здесь находится описание на английском, что значат цифры в первой колонке (нужно навести на эту область мышкой)
  5. Здесь находится описание на английском, что значат цифры во второй колонке (нужно навести на эту область мышкой)
  6. Здесь находится описание на английском, что значат цифры в третьей колонке (нужно навести на эту область мышкой)

Как мы видим на скриншоте выше, столбец Onbording priority у этого ключа ровняется 1594, что это значит? А значит это то, что этот ключ попадет в майнет примерно через 64 недели (1594 / 25 = 64).

Почему делим на 25? Потому что каждую неделю в майннет запускают по 25 человек.

С одной стороны здесь все понятно, находишь свой номер очереди, делишь на 25, и через определенное количество недель попадаешь в майннет. А вот и нет, все просто кажется только на первый взгляд, потому что очередь у нас динамическая! А это значит, что каждую эпоху очередь будет меняться.

Бот пересчитывает очередь не всегда стабильно и не всегда в одно и тоже время. Обновление данных происходит обычно в ночь после окончания каждой эпохи.

Что нам несет эта динамическая очередь? А несет она нам очень часто потерю нервных клеток). Пока вы не наберете полные 64 эпохи (а это максимум, который вы можете заработать по кредитам) вы будете двигаться вперед быстрее, чем на 25 позиций в неделю. А вот когда наберете все 64 эпохи по кредитам, вот тогда ваша очередь станет двигаться медленнее, иногда будут случаться эпохи, когда вас будет отбрасывать назад в очереди. В этом нет ничего плохого.

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

Формула, по которой на данный момент считаются ваши баллы для попадания в майннет:

0,5 * 1 показатель + 0,5 * 2 показатель

Анализировать очередь мы будем для ключа 8cDHpBhzqzea9mu51KwFaBLSquk1dMuPNZaddw2LfC1s, можете попробовать это сделать вместе со мной. Для этого переходим на сайт Solanatools и вбиваем ключ в строку поиска:

На сайте есть:

  1. Строка поиска ключа
  2. Возможность отменить ключ как избранный (он будет всегда находиться вверху списка ключей)
  3. Ссылка на ключ в гитхабе

На момент написания статьи ключ находился в очереди на 1594 месте, с 207 по 264 эпоху он ехал с бонусом 12,77% эпох, за последние 13 эпох он ехал 46,15% эпох с бонусом и за все время работы в тестнете он набрал 3 210 043 кредитов, показатель в 19,82% говорит нам о том, что ключ еще очень долго будет набирать свои максимальные 64 эпохи (сколько он проехал посмотрим дальше), итоговый балл на данный момент ключ имеет 24,64. Как писал выше, расчет такой:

12,77 * 0,25 + 46,15 * 0,25 + 19,82 * 0,5 = 3,1925 + 11,5375 + 9,91 = 24,64 расчет не актуальный, из-за изменения формулы

Теперь углубимся в расчет каждого показателя и разберемся, откуда они берутся на сайте:

  1. Смотрим на предыдущий скриншот, находим там прямоугольник подписанный цифрой 3 и щелкаем на ключ, и попадаем на гитхаб проекта с информацией о ключе:

Опускаемся вниз и ищем эпоху с которой начинается * Stake level: **Bonus**

Почему этот ключ получил бонус? Потому что в 256 эпоху он набрал достаточное количество кредитов и закончил ее со скипом, ниже максимального (вот тут смотрим требования под каждую эпоху - для тестнета и для майннета), а также выполнил еще одно требование.

Обратите внимание, что данные в боте опаздывают на одну эпоху. Также можно сказать, что сначала появляется подзаголовок Epoch N, а уже потом идут данные по этой эпохе.

Давайте попробуем этот момент закрепить еще с помощью этого скриншота:

Мы тут видим следующее:

  1. Номер эпохи, которая идет в данный момент (по ней нет еще информации в боте, так как она еще не закончилась)
  2. Минимальное количество кредитов, которое нужно было набрать для получения базового стейка в 263 эпохе (она уже закончилась).
  3. Максимально допустимый скип в 263 эпохе.
  4. Номер эпохи, данные которой представлены выше (НЕ ниже!).

Продолжаем наш анализ...

В итоге в тестнете в 256 эпохе были следующие требования:

  • Минимальное количество кредитов - 186 197 (кредиты за эпоху по этому ключу мы посмотрим чуть позже)
  • Максимальный скип рейт - 42%
  • Также валидатор не превысил максимальную концентрацию в 25% (что это такое, читаем в статье, как выбрать сервер)

Начинаем считать бонусные эпохи и видим, что в 259 эпохи его лишают бонусного стейка вот за это - Stake reason: Poor block production during epoch 259: 11 blocks in 20 slots, 45% skip rate. А какой был максимально разрешенный скип для этой эпохи (идем опять на гитхаб и ищем 259 эпоху)? Он был 42%. За это ключ и лишили бонусного стейка, а значит его откинет в очереди назад (на сколько, зависит от того, как едут его соседи). Лишением бонусного стейка нода потеряет как в первом показателе, так и во втором. На трений показатель (кредиты) проблема со скипом влияния не окажет).

Что такое skip rate, как он рассчитывается и другие непонятные слова ищем в словаре молодого валидатора.

Идем дальше.

Итого у этого ключа по состоянию на 262 эпоху:

  • 6 бонусных эпох (начиная с 207 эпохи)
  • 3 бонусные эпохи подряд

С расчетом первого показателя вручную могут быть сложности, потому что некоторые эпохи из-за проблем с ботом были не учтены в статистике (речь идет о бонусных эпохах, при этом в подсчете кредитов пропущенных эпох нет). Чтобы узнать, какие эпохи мы пропустили, придется выбрать любой ключ, который уже находится в майннете или скоро туда попадет и проанализировать пропуски:

Считаем количество эпох начиная с 207 (ее не берем) по 262 (ее считаем), у нас получается 47, из 47 эпох у этого ключа бонусных 6, получается:

6 / 47 * 100 = 12,77%

Рассчитываем второй показатель - 6 / 13 * 100 = 46,15%

Теперь самое интересное, расчет кредитов, у нас есть 2 варианта:

  1. Взять данные из блокчейна
  2. Взять данные с сайта Solana Foundation
  3. Взять данные с сайта SolanaTools

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

1. В терминале ввести команду:

solana vote-account vote-account-keypair.json

Внимание! Команда сработает в том случае, если вы находитесь в директории, где лежит ключ с названием vote-account-keypair.json. Если выполняете команду из другой директории, укажите верный путь до ключа воут аккаунта и его имя.

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

2. Переходим на сайт, вбиваем свой ключ и кликаем на данные:

Далее спускаемся вниз и кликаем по кнопке Show details

Вот тут и видим всю информацию по кредитам за ваши 64 эпохи (полные или нет):

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

3. Ну, этот пункт даже снабжать скриншотами не нужно, там все понятно, зашли, вбили свой ключ и смотрите, если хотите найти лидера и посмотреть сколько он заработал кредитов за прошлую эпоху, то удалите свой ключ из строки поиска и отсортируйте кредиты по убыванию (там треугольничек есть у каждой эпохи), ладно, сделаю еще один скрин:

Ну, всё. Теперь вы умеете анализировать очередь как в тестнете, так и в майннете, часто у людей возникают вопросы:

  1. А почему моя нода уже несколько эпох стоит на месте и не продвигается вперед?

Такое может случиться по нескольким причинам:

Во-первых вы уже набрали максимум по 2 (13 эпох закрыли с бонусами) или 3 показателю (проехали 64 эпохи), а остальные ноды, которые ехали за вами, начали их набирать в эти эпохи, поэтому показатели выравниваются или даже немного опережают вашу ноду, так как в тестнет пускают по 100 человек, а в майннет только по 25 поэтому за меньшее место в очереди очень высокая конкуренция. Анализируйте ноды, которые едут перед вами и за вами, эта информация даст понимание, почему так происходит конкретно с вашей нодой.

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

2. На сколько нужно ехать хорошо, чтобы опередить тех, кто зашел раньше, т.е. старичков?

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

Возьмем гипотетический ключ (ключ А), который едет со следующими показателями:

1 показатель - 60%, 2 показатель - 100%, 3 показатель 100% (такое хоть и не реально, но мы же просто фантазируем).

И есть другой ключ (ключ Б), который едет со следующими показателями:

1 показатель 79%, 2 показатель 100%, 3 показатель 88% (вот это вполне реальные цифры), считаем итоговый баллы по каждому ключу:

Ключ А - 60 * 0,25 + 100 * 0,25 + 100 * 0,50 = 15 + 25 + 50 = 90

Ключ Б - 79 * 0,25 + 100 * 0,25 + 88 * 0,50 = 19,75 + 25 + 44 = 88,75

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

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