Как проверить ключи следующей сессии валидаторов Substrate
При ротации ключей валидатора недостаточно добавить новые ключи в локальный keystore. Pallet session хранит отдельно текущий набор валидаторов и ключи, поставленные в очередь следующей сессии.
Получите один финализированный снимок сессии
Используйте хранилище session нужной сети. Прочитайте все три значения по одному хешу, чтобы переход сессии не смешал старый индекс с новой очередью. Сопоставьте валидатора по типу идентификатора, принятому в этой сети.
const apiAt = await api.at(await api.rpc.chain.getFinalizedHead())
const [session, active, queued] = await Promise.all([
apiAt.query.session.currentIndex(),
apiAt.query.session.validators(),
apiAt.query.session.queuedKeys()
])
console.log(session.toString(), active.toJSON(), queued.toJSON())
Сверьте локальные ключи по ролям
Например, валидатор входит в active, а его запись в queued уже содержит новый ключ. Сравните каждое поле набора с публичными ключами процесса валидатора. Наличие одного ключа полномочий ещё ничего не говорит об остальных ролях.
При отсутствии валидатора в queued проверьте отбор следующей сессии и регистрацию ключей. Зафиксируйте индекс сессии и переход, прежде чем считать ротацию состоявшейся.