Войдите в ERPC CLI и узнайте, где хранятся ваши ключи

Выполните вход на этой машине, и ERPC CLI сохранит сессию в вашей связке ключей или в 1Password. На этой странице также показано, где хранятся ключи нод и какие файлы хранит erpc.
Эта страница описывает ERPC CLI v0.1.0-rc.4 — пререлиз.

Вход

bash
erpc signup     # opens the sign-up page
erpc login      # signs this machine in; the session goes to the keychain or 1Password
erpc whoami
erpc login получает сессию через OAuth device authorization grant. На машине без браузера erpc login --no-browser выводит URL и код вместо того, чтобы открыть браузер, а erpc signup --no-browser выводит URL страницы регистрации. erpc whoami показывает, кому принадлежит сохранённая сессия, а erpc logout выполняет выход и удаляет сохранённую сессию.

Выбор места хранения сессии

В терминале erpc login спрашивает, какое место хранения использовать: связку ключей операционной системы (по умолчанию) или 1Password, если он отвечает. --store и --vault задают выбор без вопросов, и этот выбор записывается в config.toml, откуда его читают остальные команды.
--storeГде хранится сессия
keychainВ связке ключей операционной системы
1password-desktop (также 1password, op)В 1Password, через настольное приложение
1password-service-accountВ 1Password, через токен сервисного аккаунта
fileВ файле на диске. При этом на этой машине остаётся секрет
Если выбор не задан и не записан, erpc использует сервисный аккаунт 1Password, когда задана OP_SERVICE_ACCOUNT_TOKEN, иначе связку ключей операционной системы, если она есть, иначе файл в своём каталоге состояния. erpc doctor сообщает, какое место хранения используется и почему. При работе с сервисным аккаунтом erpc передаёт OP_SERVICE_ACCOUNT_TOKEN только процессам op, которые сам запускает, и нигде этот токен не записывает.
Элемент 1Password называется по имени машины, чтобы две машины никогда не делили одну сессию. ERPC_HOST_LABEL переопределяет это имя.

В Linux

Связка ключей — это Secret Service, если он отвечает. В противном случае это постоянный keyring ядра для вашего пользователя, который находится в памяти и никогда не попадает на диск: сессия действует до перезагрузки или нескольких дней без использования, после чего снова потребуется erpc login. Оболочка, запущенная без собственного входа (su без -, sudo -E), не может использовать этот keyring, и erpc отказывается работать и сообщает об этом.

В macOS

erpc обращается к связке ключей через /usr/bin/security. Любая другая программа, запущенная от вашего имени, может прочитать сессию, тоже вызвав security, при этом связка ключей по-прежнему хранит сессию зашифрованной на диске и недоступной для других пользователей.

Когда сессия хранится на диске

erpc записывает сессию в свой каталог состояния в трёх случаях: при использовании места хранения file, для отложенной сессии (refresh-токена после ротации, который не удалось передать в место хранения) и после прерванной записи. erpc doctor сообщает о каждом таком файле, пока он существует. В Unix эти файлы создаются с режимом 0600; в Windows erpc не задаёт собственных прав доступа.

Где хранятся ключи нод

Реестр нод и резервные копии исходных ключей, которые указаны в руководстве по каждому блокчейну, хранятся в 1Password. Не каждый ключ находится в 1Password, и нода может хранить ключ, который нужен ей для работы. Резервную копию того, что находится на хосте, делайте сами: если пересобрать хост без резервной копии, это будет потеряно. Кроме того, активный валидатор Sui или избранный witness TRON отказывается переезжать на новый хост.
НодаВ 1PasswordНа хосте
Валидатор Solana (native)Identity и созданный вами sync keypair. Vote account и withdraw authority передаются erpc только как открытые ключиSync keypair, зашифрованный для этого хоста, а начиная с --activate-validator — также identity. Ключи vote account и withdrawal никогда не импортируются
Валидатор Solana (solv)Застейканный identity, а также withdraw authority, если вы не передали только его открытый ключ. Ключ vote account удаляется, как только аккаунт будет проверенОдноразовый unstaked-identity.json в открытом виде. Развёртывание никогда не копирует на ноду застейканный ключ или withdraw authority
Solana RPC (native)Созданный вами identityТот же identity, зашифрованный для этого хоста
Solana RPC (solv)РеестрIdentity, созданный там же. Он никогда не покидает хост
Валидатор EthereumРеестрKeystore-файлы, пароль для их разблокировки и история slashing. История в резервной копии заканчивается на её снимке, поэтому восстановление ключа, который подписывал после него, может привести к slashing: переносите подписанта с помощью erpc v --chain eth migrate
Arc RPCКонсенсусный ключКонсенсусный ключ в зашифрованном виде
AvalancheРезервная копия ключей staking и BLSТе же ключи, созданные там же при первом развёртывании
Валидатор SuiКлючи protocol, network и worker, созданные на вашей собственной машинеТе же три ключа, зашифрованные с помощью systemd-creds для этого хоста. Ключ аккаунта — никогда
Полная нода SuiРеестрСетевые учётные данные, зашифрованные для этого хоста. Другой копии нет
Witness TRONЗашифрованный keystore и его парольТо же самое, в виде зашифрованных учётных данных systemd
Валидатор PolygonКлюч подписанта, который генерирует init. Ключ владельца стейка никогда не запрашиваетсяТот же ключ, зашифрованный для этого хоста. Пока нода только наблюдает, она работает под отдельным identity
Валидатор BNB ChainРезервная копия материала для подписи и peer identityКонсенсусный ключ в зашифрованном keystore, ключ голосования в зашифрованном кошельке и их пароли, зашифрованные для этого хоста
Валидатор Kaia (консенсусная или прокси-нода)Резервная копия identity нодыIdentity ноды, созданный на хосте и зашифрованный для него. Кошельки оператора остаются вне erpc
Нода Monad (RPC или валидатор)Оба исходных keystoreТе же keystore, зашифрованные для этого хоста
Валидатор HyperliquidГорячий консенсусный ключ. Ключ холодного аккаунта никогда не запрашиваетсяГорячий ключ, зашифрованный для этого хоста и загружаемый только активированными юнитами валидатора
Hyperliquid AQA publisherЕго выделенный API-ключ или ключ агентаТот же ключ, зашифрованный для этого хоста
Валидатор NEARКонсенсусный ключТот же ключ, зашифрованный для этого хоста
Валидатор ArbitrumКошелёк, который генерирует init, и учётные данные провайдераУчётные данные провайдера в зашифрованном виде, а начиная с --activate-signer — также кошелёк, принадлежащий root и зашифрованный
Валидатор Robinhood ChainКошелёк, который генерирует init, и конфигурация провайдераКонфигурация провайдера в зашифрованном виде, а начиная с --activate-signer — также кошелёк, принадлежащий root и зашифрованный
RPC семейства OPРеестр и значения провайдераУчётные данные провайдера, JWT движка и peer identity в зашифрованном виде. Сделайте резервную копию записи владельца и секрета шифрования хоста
Nitro RPCРеестр и учётные данные upstreamУчётные данные upstream в зашифрованном виде
Другие RPC-ноды не хранят ключа подписи для валидатора, но на их хостах остаётся то, что клиент создаёт для себя, например JWT движка, peer identity или RPC cookie.
Одна лишь резервная копия ключа не делает восстановление валидатора безопасным. Прежде чем заменять сервер или восстанавливать его данные, выполните процедуру восстановления для этого блокчейна; в руководстве по каждому блокчейну описано, как восстановить его ключи (Ноды).
Только одна команда записывает ключи нод на диск вашей машины: erpc validator vote-account записывает ключи identity и vote в файлы с режимом 0600 в каталоге состояния, пока работает Solana CLI, и затем стирает их. Если процесс аварийно завершится, файл может остаться, пока его не удалит один из следующих запусков.
Торговый ключ и секреты приложения erpc worker хранятся отдельно от них: Ключи и секреты.

Файлы, которые хранит erpc

ПутьЧто в нём хранится
~/.erpc/config.tomlПубличные настройки (erpc config)
~/.erpc/state/Сессия и блокировки (erpc doctor сообщает, как хранится сессия)
~/.erpc/conversations/Сохранённые диалоги ERPC AI
~/.erpc/memory.jsonЧто запоминает ERPC AI
~/.erpc/vps_hosts.jsonКлючи хостов VPS, на которые входил ERPC AI
~/.erpc/skills/Навыки, записанные командой erpc skills install
~/.erpc/storage-keyКлюч шифрования хранилища, если erpc login хранит сессию в файле
~/.erpc/backup-password, ~/.erpc/backup-admin-keyМастер-пароль резервного копирования и ключ read_write, если erpc login хранит сессию в файле
~/.erpc/keystore/Keystore воркеров: секреты и торговый ключ приложения, каждый в файле, зашифрованном вашей парольной фразой, — на машине, где нет ни 1Password, ни долговременной связки ключей
~/.erpc/workers.tomlСписок приложений erpc worker на этой машине
~/.erpc/backup.envУчётные данные резервного копирования этой машины (0600)
~/.erpc/bin/restic-0.19.1Зафиксированная версия restic, которую устанавливает erpc backup