Перейти к содержимому

Кошельки и ключи

casty касается двух ключей. Custody-адрес, аккаунт Ethereum, который владеет вашим fid, подписывает одну вещь: запрос ключа приложения. Ключ приложения, ключ Ed25519, который создаёт casty, подписывает всё остальное: касты, реакции, подписки. Эта страница рассказывает, как это работает.

Что Где хранится Когда используется
Seed-фраза Нигде: вводится один раз в casty init или casty key revoke, обнуляется после использования Чтобы вывести custody-адрес и подписать запрос ключа или отзыв
Ключ приложения ~/.config/casty/keys.enc.json, scrypt и XChaCha20-Poly1305, режим 0600; с 1-node.sh serve ещё и на хосте ноды Каждое сообщение; истекает после своего TTL без использования (по умолчанию 30 дней, не больше 90), и каждое сообщение продлевает его
Пароль хранилища ключей Вводится в скрытом поле или Docker-секрет на хосте Чтобы открыть хранилище

casty init выводит custody-аккаунт из фразы (--address-index выбирает другой аккаунт той же фразы), спрашивает ноду, каким fid он владеет, создаёт ключ приложения, даёт custody-аккаунту подписать запрос ключа (типизированные данные EIP-712 в том виде, в каком их собирает @farcaster/core) и отправляет сообщение KEY_ADD через ноду. Без транзакции, без газа, без API-ключа. casty key list показывает каждый ключ, который нода перечисляет для вашего fid; casty key revoke удаляет один, с фразой или, с --self, самим ключом. Страница в разделе о вас показывает ключи, предупреждает за неделю до того, как ключ этого casty истечёт, и добавляет ключ кошельком в браузере (ниже).

Подпись custody — это обычные типизированные данные EIP-712, поэтому всё, что подписывает типизированные данные для custody-адреса, может одобрить ключ приложения: приложение-кошелёк, аппаратный кошелёк за ним, расширение браузера.

В разделе о вас «add a key with your wallet»: casty создаёт ключ Ed25519 и два сообщения с типизированными данными, страница передаёт их кошельку в браузере (eth_signTypedData_v4 поверх EIP-1193: MetaMask, Rabby, Rainbow и другие, Ledger за любым из них), кошелёк подписывает custody-адресом, casty проверяет обе подписи относительно этого адреса, отправляет KEY_ADD через ноду и сохраняет ключ. Seed-фраза никогда не покидает кошелёк, и casty её никогда не видит. casty init --fid <fid> настраивает без фразы и без ключа, чтобы страница добавила первый. Путь через терминал остаётся для аккаунта, у которого custody — это голая фраза восстановления и ничего больше. Шаги описаны в В браузере и на телефоне.

  • На телефоне без кошелька в браузере страница предлагает открыть себя внутри MetaMask, Coinbase Wallet или Trust Wallet, включая связывание; кошельки, которые объявляют о себе (EIP-6963), находятся рядом друг с другом; кошелёк на неверном аккаунте просят дать вам выбрать. WalletConnect, зависимость и ретранслятор под чужим управлением, исключён намеренно.
  • Аккаунт, у которого custody — это фраза восстановления, выданная farcaster.xyz, один раз импортирует эту фразу в один из этих кошельков; с этого момента подписывает кошелёк, а фраза не вводится ни во что из casty.

Протокол переносит сообщения VerificationAddAddress, доказательство аккаунта, что он владеет адресом Ethereum или Solana, а нода отвечает на verificationsByFid. Профиль на странице перечисляет их, каждый со ссылкой на свой обозреватель и копированием; ваши тоже есть в разделе о вас. Их чтение ничего не стоит и не обращается к третьим сторонам; ничего не читается из блокчейна.

Ключ без газа истекает после своего TTL без использования, и каждое подписанное им сообщение продлевает его. casty никогда не публикует от вашего имени, чтобы сохранить ключ живым; страница предупреждает за неделю, а casty init --ttl 90d — самый долгий срок, который допускает протокол.

  • Платежей, чаевых и обменов. Каждому из них нужны RPC блокчейна, кошелёк со средствами и состояние блокчейна, которые casty намеренно держит в стороне от своего пути (см. Безопасность). Подтверждённый адрес в профиле можно скопировать в кошелёк, которому вы доверяете.
  • WalletConnect. Он добавил бы зависимость и ретранслятор под чужим управлением; кошельки в браузере и встроенные браузеры приложений-кошельков покрывают то же самое.
  • Связывания через passkey и системной связки ключей. Страница связывается 256-битным токеном, который передаётся во фрагменте ссылки, а casty web спрашивает пароль один раз за запуск.