Кошельки и ключи
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 — самый долгий срок, который допускает протокол.
Чего casty не делает
Заголовок раздела «Чего casty не делает»- Платежей, чаевых и обменов. Каждому из них нужны RPC блокчейна, кошелёк со средствами и состояние блокчейна, которые casty намеренно держит в стороне от своего пути (см. Безопасность). Подтверждённый адрес в профиле можно скопировать в кошелёк, которому вы доверяете.
- WalletConnect. Он добавил бы зависимость и ретранслятор под чужим управлением; кошельки в браузере и встроенные браузеры приложений-кошельков покрывают то же самое.
- Связывания через passkey и системной связки ключей. Страница связывается 256-битным токеном, который передаётся во
фрагменте ссылки, а
casty webспрашивает пароль один раз за запуск.