Управление учетными записями для голосования

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

Создать учетную запись для голосования

Учетная запись для голосования может быть создана с помощью команды create-vote-account. Учетную запись для голосования можно настроить при первом создании или после запуска валидатора. Все аспекты учетной записи для голосования можно изменить, кроме адреса учетной записи для голосования, который фиксируется на весь срок действия учетной записи.

Настройка существующей учетной записи для голосования

Структура счета для голосования

Адрес аккаунта для голосования

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

Адрес учетной записи для голосования никогда не требуется для подписания каких-либо транзакций, а просто используется для поиска информации об учетной записи.

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

Идентификатор валидатора

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

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

Эта практика может снизить риск потери средств, если диск или файловая система узла валидации будут скомпрометированы или повреждены.

Идентификатор валидатора необходимо указать при создании учетной записи для голосования. Идентификатор валидатора также можно изменить после создания учетной записи с помощью команды vote-update-validator.

Право голоса

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

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

Права голоса можно установить при создании учетной записи для голосования. Если он не указан, по умолчанию он назначается так же, как идентификатор валидатора. Права голоса можно изменить позже с помощью команды vote-authorize-voter-checked.

Право голоса может быть изменено не более одного раза за эпоху. Если полномочия изменены с помощью vote-authorize-voter-checked, это не вступит в силу до начала следующей эпохи. Для поддержки плавного перехода подписи голосования solana-validator позволяет указать аргумент --authorized-voter несколько раз. Это позволяет процессу валидатора продолжать успешное голосование, когда сеть достигает границы эпохи, при которой меняется учетная запись полномочий валидатора.

Авторизованный отзыв

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

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

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

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

Авторизованный отзыватель может быть изменен позже с помощью команды vote-authorize-withdrawer-checked.

Комиссия

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

Например, если учетная запись для голосования имеет комиссию в размере 10%, для всех вознаграждений, полученных этим валидатором в данную эпоху, 10% этих вознаграждений будут зачислены на учетную запись для голосования в первом блоке следующей эпохи. Остальные 90% будут переведены на делегированные счета ставок в качестве немедленно активной ставки.

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

Комиссию можно установить при создании учетной записи для голосования с помощью опции --commission. Если он не указан, по умолчанию он будет равен 100%, что приведет к тому, что все вознаграждения будут зачислены на счет для голосования, и ни одно из них не будет передано каким-либо делегированным счетам ставок.

Комиссию также можно изменить позже с помощью команды vote-update-commission.

При установке комиссии принимаются только целые значения из набора [0-100]. Целое число представляет собой количество процентных пунктов для комиссии, поэтому создание учетной записи с --commission 10 установит комиссию в размере 10%.

Ключевое вращение

Смена ключей полномочий учетной записи для голосования требует специальной обработки при работе с действующим валидатором.

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

Идентификация валидатора аккаунта для голосования

Вам потребуется доступ к паре ключей authorized remover для учетной записи для голосования, чтобы изменить личность валидатора. Следующие шаги предполагают, что ~/authorized_withdrawer.json является этой парой ключей.

  1. Создайте новую пару ключей идентификации валидатора, solana-keygen new -o ~/new-validator-keypair.json.
  2. Убедитесь, что новая учетная запись удостоверения была профинансирована, solana transfer ~/new-validator-keypair.json 500.
  3. Запустите solana voice-update-validator ~/vote-account-keypair.json ~/new-validator-keypair.json ~/authorized_withdrawer.json, чтобы изменить идентификатор валидатора в вашей учетной записи для голосования.
  4. Перезапустите валидатор с новой парой идентификационных ключей для аргумента --identity.

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

После перезапуска вашего валидатора с новой парой ключей удостоверения на шаге 4 запустите второй валидатор без права голоса на другом компьютере со старой парой ключей удостоверения без указания аргумента --vote-account.

Этот временный валидатор должен работать в течение двух полных эпох. За это время будет:

Безопасно остановить этот временный валидатор, когда ваш старый идентификатор валидатора больше не указан в выводе solana Leader-schedule.

Аккаунт для голосования Авторизованный избиратель

Пара ключей vote Authority может быть изменена только на границах эпох и требует некоторых дополнительных аргументов для solana-validator для плавной миграции.

  1. Запустите solana epoch-info. Если в текущей эпохе осталось немного времени, подумайте о том, чтобы дождаться следующей эпохи, чтобы дать вашему валидатору достаточно времени для перезапуска и наверстать упущенное.
  2. Создайте новую пару ключей полномочий для голосования: solana-keygen new -o ~/new-vote-authority.json.
  3. Определите текущую пару ключей vote Authority, запустив solana voice-account ~/vote-account-keypair.json. Это может быть учетная запись удостоверения валидатора (по умолчанию) или какая-то другая пара ключей. Следующие шаги предполагают, что этой парой ключей является ~/validator-keypair.json.
  4. Запустите solana voice-authorize-voter-checked ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json. Планируется, что новое право голоса станет активным, начиная со следующей эпохи.
  5. solana-validator теперь необходимо перезапустить со старой и новой парой ключей полномочий для голосования, чтобы он мог плавно перейти в следующую эпоху. Добавьте два аргумента при перезапуске: --authorized-voter ~/validator-keypair.json --authorized-voter ~/new-vote-authority.json
  6. После того, как кластер достигнет следующей эпохи, удалите аргумент --authorized-voter ~/validator-keypair.json и перезапустите solana-validator, так как старая пара ключей полномочий для голосования больше не требуется.

Аккаунт для голосования Авторизованный отзыв

Никакого специального обращения или временных соображений не требуется. При необходимости используйте команду solana voice-authorize-withdrawer-checked.

Рассмотрите устойчивые одноразовые номера для ненадежной передачи уполномоченного избирателя или отзывающего лица

Если уполномоченный избиратель или отзыватель должен быть передан другому юридическому лицу затем рекомендуется двухэтапный процесс подписания с использованием Durable Nonce.

  1. Объект B создает устойчивый одноразовый номер, используя solana create-nonce-account.
  2. Затем объект B запускает команду solana voice-authorize-voter-checked или solana voice-authorize-withdrawer-checked, включая:
    • аргумент --sign-only
    • аргументы --nonce, --nonce-authority и --blockhash для указания деталей одноразового номера
    • адрес существующих полномочий Объекта А и пара ключей для новых полномочий Объекта Б.
  3. Когда команда solana voice-authorize-...-checked успешно выполняется, она выводит подписи транзакций, которые объект B должен передать объекту A.
  4. Затем объект A запускает аналогичную команду solana voice-authorize-voter-checked или solana voice-authorize-withdrawer-checked со следующими изменениями:
    • аргумент --sign-only удален и заменен аргументом --signer для каждой из подписей, предоставленных объектом B.
    • адрес существующих полномочий объекта А заменяется соответствующей парой ключей, а пара ключей для новых полномочий объекта Б заменяется соответствующим адресом

В случае успеха полномочия теперь меняются без необходимости раскрытия пары ключей другому объекту A или B, даже если оба объекта подписали транзакцию.

Закрыть учетную запись для голосования

Учетная запись для голосования может быть закрыта с помощью команды close-vote-account. Закрытие счета для голосования приводит к выводу всех оставшихся средств SOL на указанный адрес получателя и делает его недействительным в качестве счета для голосования. Невозможно закрыть счет для голосования с активной ставкой.