如果您曾在 KheAi 上为某个商家留下点评,那么您其实已经在不知不觉中用过 Nostr 了。下面就来说说 “使用 Google 登录” 这个按钮背后到底发生了什么,以及我们为什么选择这样构建它,而不是采用更常见的做法——一个普通的星级评分数据库。
Nostr 究竟是什么
Nostr(Notes and Other Stuff Transmitted by Relays)是一个开放协议,用于将经过加密签名的短消息(称为“事件”)发布到由独立服务器组成的网络中,这些服务器被称为“中继”(relay)。这个协议不属于任何人,也没有任何一家公司拥有这些中继服务器。任何人都可以运行一个中继,任何人也都可以从接受其连接的中继读取或发布内容。发布在 KheAi 上的点评并不是存放在 KheAi 完全掌控的数据库里——它是公共中继服务器上的一条已签名事件,KheAi 只是恰好读取并展示它。
为什么不像大家一样直接用星级评分
传统的点评系统会把评分存放在平台完全掌控的数据库中——这意味着平台也可以编辑、删除,或者悄悄地重新加权这些评分,外界完全无法验证某条点评事后是否被改动过。这也意味着每一条点评都与那一个平台共存亡;如果 KheAi 明天就消失了,普通数据库里的点评也会跟着一起消失。
Nostr 点评在这两点上都不一样。每一条点评都由点评者自己的加密密钥签名,绑定在一个持久的身份上,而不是一次匿名的表单提交——这和真实邻居的点评比匿名账号的星级评分更值得信赖是同一个道理。而且,由于底层的事件存放在公共中继服务器上,而不仅仅存在于 KheAi 自己的系统里,它可以被独立验证,即使 KheAi 这门生意不在了,它也不会消失。
“Web2.5” 的小技巧:您永远看不到密钥
Nostr 身份通常是一对公钥/私钥,这恰恰是最容易吓退非技术用户的地方。KheAi 完全绕开了这个问题:您第一次用 Google 登录时,KheAi 会在后台为您生成一对 Nostr 密钥,加密其中的私钥,并保存在服务器端。您永远不会看到它、复制它,或需要管理它——您只需像在任何其他网站一样用 Google 登录,KheAi 就会使用那把托管的密钥代您签署点评。这在今天确实是原型阶段的安全方案,并不是宣称一套经过生产环境完整审计的密钥管理系统——如果您是喜欢刨根问底的技术型用户,这一点值得了解。
提交点评或评论时到底发生了什么
当您提交一条点评(或者,就像最近新增的功能一样,为一篇博客文章留言)时,KheAi 会短暂解密您托管的密钥,仅用于签署一条简短的文本记录,为它打上标签以便日后能被找到(关联到具体的商家或文章,再加上一个通用的 KheAi 标签),然后同时发布到多个公共中继服务器——只要有一个中继接受,就算发布成功。下一次 KheAi 网站重新构建时,它会读取所有为该商家或文章打上标签的内容并展示出来。KheAi 从不撰写这些内容——它只是转发真实用户实际签署并发布的内容。
坦诚说说其中的取舍
这套方案并非没有缺点,我们宁愿坦诚说明,也不愿假装没有问题。Nostr 没有像成熟平台那样内置的信誉或垃圾内容过滤机制,所以基础的反垃圾信息工作需要 KheAi 主动去做,而不是协议免费提供的。另外,由于点评只有在下一次计划内的重新构建之后才会重新出现,而不是即时显示,为了让网站保持静态、运行成本低廉,这里确实存在实实在在的及时性取舍。这两点都是刻意的选择,而不是疏漏——另一种选择是让 KheAi 完全拥有并可以悄悄编辑的点评系统,而这正是这套设计要避免的事情。
本文描述的是 KheAi 的 Nostr 集成目前的运作方式。和任何早期系统一样,具体细节(使用哪些中继、密钥如何保护、反垃圾信息措施)会随着平台的发展持续演变——本文反映的是当前的构建情况,而非一成不变的架构。