钱包与密钥
casty 涉及两个密钥。托管地址是一个拥有你的 fid 的 Ethereum 账户,它只签署一件事:应用密钥的请求。 应用密钥是 casty 生成的一个 Ed25519 密钥,它签署其他一切:cast、反应、关注。本页说明这是如何运作的。
| 内容 | 存放位置 | 何时使用 |
|---|---|---|
| 助记词 | 无处存放:在 casty init 或 casty key revoke 中输入一次,使用后清零 |
推导托管地址并签署密钥请求,或签署撤销 |
| 应用密钥 | ~/.config/casty/keys.enc.json,scrypt 和 XChaCha20-Poly1305,权限 0600;使用 1-node.sh serve 时节点主机上也有 |
每条消息;超过 TTL 未使用后失效(默认 30 天,最多 90 天),每条消息都会让它续期 |
| 密钥库口令 | 在隐藏输入的提示符下输入,或在主机上作为 Docker secret | 打开密钥库 |
casty init 从助记词推导出托管账户(--address-index 选择同一助记词的另一个账户),询问节点它持有
哪个 fid,生成应用密钥,让托管账户签署密钥请求(EIP-712 类型化数据,由 @farcaster/core 构建),
然后通过节点发送 KEY_ADD 消息。没有交易,没有 gas,也没有 API 密钥。
casty key list 显示节点为你的 fid 列出的每个密钥;casty key revoke 移除其中一个,
使用助记词,或者使用 --self 时用密钥本身。“你”页面显示这些密钥,在这个 casty 的密钥失效前一周发出警告,
并用浏览器中的钱包添加密钥(见下文)。
用钱包添加密钥
Section titled “用钱包添加密钥”托管签名是普通的 EIP-712 类型化数据,所以任何能为托管地址签署类型化数据的东西都可以授权应用密钥: 钱包应用、钱包应用背后的硬件钱包、浏览器扩展。
在“你”页面中选择 “add a key with your wallet”:casty 生成 Ed25519 密钥和两条类型化数据消息,
页面把它们交给浏览器中的钱包(通过 EIP-1193 调用 eth_signTypedData_v4:MetaMask、Rabby、Rainbow
等,以及它们背后的 Ledger),钱包用托管地址签名,casty 对照该地址检查两个签名,通过节点发送
KEY_ADD 并保存密钥。助记词从不离开钱包,casty 也从不会看到它。casty init --fid <fid>
在没有助记词、没有密钥的情况下完成设置,由页面添加第一个密钥。对于托管仅仅是一个恢复助记词而别无其他的账户,
终端流程依然保留。在浏览器和手机上给出了具体步骤。
- 在浏览器中没有钱包的手机上,页面提供在 MetaMask、Coinbase Wallet 或 Trust Wallet 中打开自己的选项, 包括配对;宣告自身的钱包(EIP-6963)可以同时被发现;账户不对的钱包会被请求让你选择。 WalletConnect 是一个依赖,也是一个由别人运行的中继,因此被有意排除在外。
- 托管是 farcaster.xyz 所提供的恢复助记词的账户,可以把该助记词一次性导入上述某个钱包; 从那以后由钱包签名,助记词不会输入 casty 的任何部分。
已验证的地址
Section titled “已验证的地址”协议中有 VerificationAddAddress 消息,即账户对其拥有某个 Ethereum 或 Solana 地址的证明,
节点会应答 verificationsByFid。页面上的个人资料列出这些地址,每个都链接到对应的浏览器并可复制;
你的地址也在“你”页面中。读取它们不花费任何费用,也不询问任何第三方;不从任何链上读取数据。
密钥能存活多久
Section titled “密钥能存活多久”不需要 gas 的密钥在超过 TTL 未使用后失效,它签署的每条消息都会让它续期。casty 从不为了让密钥保持有效而
以你的名义发帖;页面会提前一周发出警告,casty init --ttl 90d 是协议允许的最长期限。
casty 不做什么
Section titled “casty 不做什么”- 支付、打赏和兑换。每一项都需要链 RPC、有资金的钱包和链上状态,而 casty 有意让它们不出现在自己的路径上 (见安全)。个人资料上已验证的地址可以复制到你信任的钱包中。
- WalletConnect。它会增加一个依赖和一个由别人运行的中继;浏览器中的钱包和钱包应用自带的浏览器 覆盖了同样的场景。
- 通行密钥配对和操作系统钥匙串。页面用一个放在链接片段中传递的 256 位令牌配对,
casty web每次启动时询问一次口令。