简介
今天我们将探讨一个备受关注的话题:Nostr的 Spam(垃圾邮件)问题,作为一种去中心化协议,Nostr 协议在全球范围内实现了社交媒体的去中心化,自主性和抗审查特性。同时,这种协议也存在着一些挑战,其中 Spam 问题是最为突出的一种,我们今天的讨论不会局限于 Spam 问题,还将着重探讨它对社交媒体的未来,去中心化技术的进展以及隐私保护方面的影响,为此 DAOrayaki 社区有幸邀请到了来自 Nostr CN 社区的数据科学家 Sherry 老师,从专业研究人员的角度,跟我们一起开启今天的话题:Nostr 的“去 Spam”之路还有多远?
主持人:Shaun(DAOrayaki 负责人)
嘉宾:Sherry(数据科学家)
正文
Q:在开启正式话题之前,大家应该很好奇您的背景,您为什么会对 Nostr 感兴趣呢?是跟您所研究或正在探索的领域相关联吗?
其实相关性并不大,起初大概是在三四个月前,一个朋友向我介绍 Nostr,他是一个有很多年经验的比特币核心(Bitcoin Core)开发者,后来逐步转到了 Nostr 的开发上。最开始尝试了解 Nostr 的时候,我并没有意识到 Nostr 的迷人之处,我对它的认识仅仅是“又一个关于 Social Media 的协议。”
其实自从 Twitter 流行开始,就不断有人提出,APP(应用程序)不应该是社交媒体的载体,应该把它变成一个协议,也有人在不断地尝试,但都没有得到广泛的应用。所以在两三个月后,我决定 Get hands dirty(亲自实践),真正参与一些 Nostr 方向的开发。
Q:经过几个月的接触,您觉得 Nostr 的发展现状是怎样的?我们知道最初经历了“爆火”的阶段。
其实从开发者的体感上来讲并没有那么火,我认为诸如 Twitter,Instagram 的社交媒体都遵循一个规律:用户是依照波浪形一波一波进入的。有一些用户觉得这个东西可用,解决了他们的问题,就会留下来,而绝大部分人是不会留下来的,直到下一波到来。
我们要做的就是在两波间做好准备,建立好基础设施,优化用户体验,等待下一波用户的到来。另外我每周都会追踪 Nostr 上的统计数据,我个人感觉,其实还是不断的有人在加入,只是人数上有上下起伏。到目前为止,Nostr 上的账号数量已经接近 100 万了,虽然在现阶段其中有很多 Spam 账号。
我觉得这个数量的用户群体意味着,不管你想做什么实验,我们都有足够大的用户群保证方案验证的有效性。
Q:刚才谈到每个“浪”之间,都会有一些急需解决的问题。那现阶段在 Nostr 生态上,除了我们过后要谈的 Spam 问题,还有哪些问题急需去解决呢?
在 Nostr 里只有两个角色,一个叫 Client(客户端),一个叫 Relay(中继)。Relay 和服务器是一个很类似的概念,Client 负责从众多 Relay 上抓取信息。作一个简单的比喻,我们可以把 Twitter 看成只有一个 Relay 的架构,客户端只从这一个 Relay 里抓取信息,相当于你把自己全部的用户行为“托付”给了这个单一且唯一的 Relay,如果它禁止你发布消息或宕机,你的用户行为也被强行中断,你在这个生态里也没有第二个选择。
但在 Nostr 上有非常多的 Relay,甚至任何人都可以运行一个自己的 Relay,Client 也可以选择只抓取一部分 Relay 的信息,或者全不抓取,但是你可以把自己的信息发送到全部 Relay 上。
同时在 Nostr 的身份验证体系里,它抛弃了传统的用户名和密码的概念,而是使用密钥对的概念,你手里掌握着你的私钥,每次发布消息的时候,附带上公钥的同时用你的私钥来对整个信息进行签名,证明这条消息是你“亲自”发出去的。
而但凡涉及到密钥对,就有一个绕不开的问题:密钥管理。
是的,我在使用 Damus 的时候,它自动生成了密钥对,但下次再需要登录它的时候,我必须要使用类似“账本”的功能,否则我是记不住公钥和私钥的,必须有一个复制粘贴的动作。
没错,这样的一个复制粘贴的过程,其实就存在了很大的泄密风险。所以我感觉任何一个有丢失加密货币经历的人,都会对如何管理一对或多对密钥以及丢失了如何弥补的问题比较敏感。所以对于新用户来讲,如何通过完善的 UI(用户界面)或 UX(用户体验),把密钥的公钥私钥概念介绍给他们,并引导他们创建自己的账户,管理自己的账户,是必要的。
但其实我并不是特别担心这件事,因为我感觉正是这个特性,让 Nostr 变成了通往 Bitcoin 的桥梁。因为在 Nostr 上,最坏的事情就是用户丢失了 Post 的帖子或丢失了 Follower,但其实你是可以通过一些途径把 Follower 再找回来,并不会有任何经济上的损失。
Q:所以密钥的保管与保存确实是一个问题,但并不是想象中那么严重和急迫解决的问题。而且从另一方面讲,其实它也帮助 Nostr 在快速的破圈,因为 Web 3 钱包其实还是有着“壁垒”存在,也阻挡了很多 Web 2 的用户。
那除了这个问题,还有哪些比较迫切的,摆在“台面”上的问题?
再就是随着用户的陆续涌入,整个网络的流量会变得非常大。这时候想象一个极端情况,如果大家为了保存自己所有的历史消息,把全部信息向每一个 Relay 发送一遍,当这个情况成为普遍,绝大部分的 Relay 上就会存储大量重复的信息,Client 在抓取信息的时候,也会将包含重复信息的 Relay 从头到尾扫描一遍,这个方案相对而言就非常低效。
在早先第一波用户快速增长的时候,有很多的开发者会有一种非常“崩溃”的情绪,他们会觉得很多方案并不奏效,这么多人进来了网络要瘫痪了怎么办?所以我觉得这些确实是在下一波用户增长之前,尽可能需要解决的问题。如果不解决,会给用户带来很多不好的用户体验,比如信息无法加载,客户端的渲染与加载缓慢之类的问题,很难留下更多的用户。
Q:是的,试想如果我是一个内容生产者,在 Nostr 的 Relay 上发布内容,在时间成本允许的情况下,如果操作还不复杂,我可能也会选择多 Relay 发送,这样确实就会存在重复信息导致整体运行与加载速度变慢的情况。
这个问题目前有两个主流解决方案,一个是在 Nostr 上加一层 Layer,相当于在整个 Nostr 协议外架一层Layer 2 ,上面只运行有限个节点,数量较整个 Relay 数量更少,每一个节点对它选择的 Relay 数据做缓存,客户端只和缓存节点沟通,这样会完善用户体验。目前有一个客户端实现了这个功能,上面的信息加载也非常流畅,但这个方式遭到了很多人反对,原因是我们好不容易做出了去中心化协议,最后却回到客户端只和少数或单一节点沟通,又回到了中心化的路线。
还有一个叫 Gossip model,因为最初实现这个模型的客户端叫 Gossip。它的运行方式是用户发布一条信息,信息上会写清楚,用户从哪个 Relay 上读取信息,向哪个 Relay 写信息。这样客户端在抓取全部信息的时候,它只会去关联节点抓取请求用户的读写信息,这样就会减少重复 Post 的情况。
Q:前面我们聊了关于公钥的隐私安全,也谈了 Relay 设置的利弊以及衍生问题的担忧。
接下来我们聊聊 Spam 的问题,这可能目前的热点话题了,您觉得为什么 Spam 问题在 Nostr 会这么突出?
首先是因为 Nostr 很新,目前有一些 Anti Spam 的办法,但大部分的措施核心都是关键词过滤,我觉得对于英文圈的用户来说,这可能是他们遇到过的最复杂情况,但对我们来说可能不一样,如果我发送一个火星文,关键词过滤就完全不起作用。
再一个就是目前绝大部分 Relay 是免费的,在初期大家可能觉得无所谓,可以免费把我的 Relay 拿来用,也不设置任何规则,全部的人都可以来读写,但这也导致 Spam 没有任何成本。账户的生成也非常容易,传统的账户可能需要和邮箱,手机号绑定,但在 Nostr,只要点击 Generate Key(生成密钥),就可以立刻获得一个新身份,因此批量生成 Spam 账号是完全可行的,而且非常的简单,也约等于 0 成本。
Q:其实我有一点没明白的是,为什么他们要生成大量的 Spam 账号呢?因为这个系统中也不存在某种代币激励或经济激励,这么做的目的是什么?就是为了发垃圾广告,钓鱼广告?
主要的目的是引流,此外也不只是 Spam 的问题,也还会有一些敏感信息的存在。
Q:虽然 Spam 问题在现阶段的 Nostr 中出现,但其实在其它领域也是个老问题了,那在已经成熟的生态或领域里,都有哪些方法解决 Spam 问题?
一种是使用深度学习技术,通过文字或是图像识别。另外一种是做用户行为的分析,在中心化系统里,Spam 账号的行为一定和普通用户的行为是有所不同的,比如它的发送频率可能会突然改变,某个账号已经半年没有任何行为了,但它突然变得特别活跃,通过诸如此类用户行为的分析,可以达到一种比较精准的防范 Spam 的功能。
Q:刚才我们聊到,现在所有的 Relay 节点都是免费的,那如果收费会不会是一种行之有效的方法?
并不是所有的 Relay 都免费,只是大多数的,现在已经存在收费的 Relay,收费 Relay 确实没有 Spam 问题。因为在 Spam 大量出现之前,收费 Relay 相对而言使用的人更少,直到突然有非常多中国大陆和中国香港的 IP 进入(因为很多 Spam 的服务器架设在香港)以后,大家才想到去寻找收费 Relay,所以在那一段时间收费 Relay 的用户订阅量有显著的增长。
Q:也就是说目前关于 Spam 的解法,收费作为一种小规模的尝试,起到了一定的效果。说起解法,接下来就要聊到 NIP(Nostr Implementation Possibilities,Nostr 功能实施可行性),目前 Nostr 上的 NIP 还是比较多的,也不断在更新,而您也是相关的中文编译者,我有两个问题:一是现在整体的 NIP 提案是什么状况,进展如何?二是这其中有没有您觉得比较有趣的,能针对 Spam 问题的一些措施?
最开始的时候,NIP 的标准是比较低的,只要有 1 到 2 个 Client 实现了协议,就会被 Merge(合并),现在要求会高一点,因为用户不断在增加,可能需要 3 到 5 个 Client,或 5 个以上实现某个 NIP,它才会被 Merge 到主分支。
之前有过两个协议和 Spam 有一些关系,一个算是主动,一个算是被动。主动的就是存在一个 sensitive content warning(敏感信息警告),如果用户发布了未成年人不适宜的内容,就会标注 Warning,这也算是一种比较良性的 Spam。另一个是叫 Report 的协议,也就是可以举报某个用户。我记得在上个月 Nostr 发生了一件事,有一个女孩子发了一张自拍,评论区就有人对她进行了侮辱,很多人就对评论点击了举报。
而之后一个绕不开的话题就是,用举报等方式剥夺他人发言权和 Nostr 所谓的自由是不是相悖的?审核一定会存在,但到底由谁来审核,我们有没有可能通过 Relay 把它区分开等等都是问题。当然也有很多人觉得,或许可以专门有一个 Spam Relay,比如全是暗网黑市信息的 Relay,一个都是黄色信息的 Relay 等等,因为 Nostr 的核心就是不会阻止你去做任何事。
Report 的 NIP 产生其实也很有意思,它最开始出现是因为 Damus 的创作者,基于 Apple 商店的要求,也就是上架之前必须要加一个 Report 的功能,直到最后演变成了一个 NIP。
Q:对的,当时 Damus 在 Apple 应用商店上架时还是挺波折的,说不定正是有这层关系在,所以需要对它增加一些底层机制。
是的,遇到了不少阻力也是因为很多在 Web 2 里执行起来非常简单的事,转移到 Nostr 的架构上,它反倒会变得更复杂。
Q:其实有关审查和举报的话题我觉得还是挺有意思的,就是去中心化这件事到底应不应该有边界,是不是有一个所谓的“底线”呢?您怎么看待这件事?
我觉得这可能是谁来做“筛选”的问题,也就是审核的权力到底谁该赋予,赋予谁,怎么赋予,为什么赋予。
Q:但前提是一定要有“筛选”?
是的,我认为“筛选”是必要的。尤其是考虑到可以接触到互联网的人群包括未成年人,这是我支持一定要筛选的主要原因。
Q:那么同理,这件事在 Relay 中也是一样,如果一些 Relay 通过某些机制或是方式,运转的非常良好,又提供了很多优质内容,那不就会产生这个(些)Relay 变得更加庞大,更加中心化,然后其它 Relay 没人用的情况吗?会这样吗?
从用户使用体验的角度来讲,Relay 几乎是一个隐身的存在,也就是用户很难直观体会到某个 Relay 明显好过另一个 Relay。另外目前使用 Nostr 的主要目标群,都是对自己产出的内容比较在意的人,他们想夺回属于自己的内容的控制权,其实 Nostr 整个协议运行的一个基本原理就是,客户端一定会把消息发送到多个 Relay,不可能只发送到一个 Relay,发送到一个 Relay 就变“回”Twitter 的模式了。像目前有很多个 Relay,它们之间几乎没有明显的优劣势区别,能致使用户非要保留其中的某几个 Relay。
Q:坦诚来讲,现阶段我觉得没有什么太明显区别的原因在于,大家都差不多,都没什么内容。最开始的时候我们可能对于 Relay 没有一个区分标准,可能随机进到某个 Relay,被一大堆乱七八糟的消息淹没,但假如现在我们知道某些 Relay 可能有很多的 Spam,那么这类的 Relay 我就不用,或许这也是环境在“教育”用户的过程。虽然现阶段的 Relay 并没有参差不齐,并没有给用户强烈的感知驱使人们选择某些 Relay,但原因可能是因为大家都差不多,都不怎么好,我是这么认为的。
但这样的话你们想做的是客户端吗?这个客户端是只和一个 Relay 沟通吗?
Q:只是一个比喻或是类比,我们只是希望通过某些方式,不管在协议层或是客户端,在 Nostr 的整体生态中呈现出更多优质性的内容。但至少从 Jack 的喊单开始,到大面积流行,目前确实还没有看到,能在某个赛道或在某个领域有特别突出的优势。当然我觉得这和时间也有关,肯定要给予时间去发展。
从 Nostr 设计上来讲,我觉得可以简化为“Start Client dumb Relay”。也就是 Relay 其实没有什么功能,它唯一的功能就是存储,此外 Client 请求信息的时候,它本身就会做一个筛选。比如有一个客户端,它的 Global(全局)信息显示的就不是未经过滤的 Relay 信息,显示的是三层社交网络里的联系人所发出的信息,这样其实 Spam 就已经很少了。
Q:从这个角度讲,我觉得这也是 Nostr 在设计极简方面的聪明之处,有时候越极简,就会有越多的设计空间在里面。聊到这个话题,我们知道 Nostr 支持闪电网络(Lightning Network),而 Nostr 上的激励与支付也是未来发展不可避免的话题,它目前是只支持 Bitcoin 支付吗?
是的,它目前只支持 Lightning Network。
Q:在我看来这反而会限制用户?因为现在使用比特币作为支付手段的人群始终是有限?
这可能和 Nostr 的发展历史有关,Nostr 的早期开发者绝大部分都曾是闪电网络的开发者,其中非常多的人都曾经做过闪电网络协议,包括钱包相关的开发。此外我不认为 Nostr 会被闪电网络限制住,Nostr 是一个比闪电网络更广的东西,用户可以选择只用它的社交功能,不使用支付功能。归根结底它吸引的核心人群还是想要掌握自己产出内容的人群。
Q:您怎么看待 Nostr 未来的发展?
其实有很多人问过我一个问题:“我该怎么投资 Nostr?”,说实话我真的不知道怎么去具体回答这个问题,我觉得只要去建设某些东西就好了,我觉得 Nostr 其实并不属于 Web 3 的范畴,它只是一个去中心化协议。
比如 Nostr 上有一个协议叫 Badge(徽章),就是用户可以签名一个图像,然后发送给其它用户,这样客户端上就会将徽章展示在头像下面,然而很多人把它当NFT来用。当然,如果有一天获得 Badge 需要收费,我也不会很吃惊,它们之间可能有一些相似之处,但其实差别还是很大的。此外,我觉得未来任何一个想做信息交换生意的公司,如果不融入到 Nostr,那等待这个公司的结果可能就是逐渐的消失。
Q:信息交换?我觉得这是一个很好的思考方向。
我觉得任何一个体验过 Nostr 功能的人,都会认同这个看法。用户的一个账号,一个密钥对就可以通行全部 APP,也就不用再受任何平台的限制。你在某一平台上的粉丝,可以随时带去另一个平台,大家的竞争维度也会变得更加公平,所有用户在同一个维度上竞争,所有客户端在同一个层面上竞争,所有 Relay 在同一个层面上竞争。而不会存在一种情况,一个水平较低的内容生产者,仅仅因为依托的平台非常强,就收获非常多的流量。
在这种情况下,如果你是个内容生产者,你分散在所有平台上的所有用户受众,都可以看到你生产的内容,这是我认为最重要的一点,而且也是保证 Nostr 生生不息的一点。
另外 Nostr 除了 Social Media,也可以做其它事。比如有一个项目叫 Nostrocket,这个项目做的是一个基于 Nostr 的共识层,换言之我们可以在 Nostr 上使用它来组建一个 DAO,实现一些与智能合约不完全类似的功能,也会比智能合约更加的灵活。
Q:好的,感谢 Sherry 老师的分享,有关今天的话题您还有什么想补充的内容吗?
欢迎大家参加香港的 Meetup 哈哈哈,欢迎大家。
Q:对的哈哈哈,我们 4 月 14 号准备在香港联合举办一场线下的 Meetup,这可能也是中文社区第一次相对有些规模的 Nostr 线下会议。当然整个大背景是我们会在近期启动全球的 Nostr Hackathon,我们也欢迎与 Sherry 一样的 Builder 参与到项目的竞赛中来,竞赛的奖金还是非常丰厚的。欢迎爱好者,开发者,项目方,协议研究者,各种提案的人员都来参与。
此外现阶段的 Nostr 很多东西都不是很完美,所以有很多的 Idea 暂时没有机会实现,如果有 Nostr 开发者在听这期播客的话可以尝试。
一是对于内容生产者,我个人感觉一个项目终究要产生利润,才有可能运转下去,如果它对于参与其中的人没有任何利润可言的话,最终结果未必会好。我曾经有一个设想就是关于音乐创作者,假设我在三天后要发布一首音乐,那么有用户想提前听,那就可以使用 Pay to listen(付费提前收听)的模式,因为我们已经有支付工具(闪电网络)的支持,又有了 Nostr,在这样的用户场景下,它最大的问题就是用户付费了以后,他可能会把内容泄露出去,这样潜在的付费人群就会减少。那么就可以将购买音乐的付费人的相关信息 Encode(编码),也就是在音乐上加一层人耳几乎听不到的频率,再通过 Client 层面 Decode(解码)用户的公钥和私钥,这样一旦有人购买然后泄露,通过 Decode 追溯到他,可以对其造成类似于“社死”的心理压力。
再一个就是在 Nostr 层面上没有类似于知乎或 Quora(与知乎类似的问答类网站)的功能出现。因为 Nostr 缺乏一个比较好的内容推荐机制,用户很难找到有意思的内容,而传统的机制又有一定局限性,因为在 Nostr 的场景下,账户的生成没有任何成本,相当于可以无限制的 Like。
还有一个就是所谓的加密群聊,这个方向的需求也很大。而现在的聊天软件,比如Telegram,虽然叫群聊,但在创建 Channel(类似于聊天群)后,所有人都可以看到里面的人谈了什么,所有人都可以随意进入退出,就相当于“在广场上裸奔”,我觉得真正的群聊是类似于“在澡堂里裸奔”。
Q:是的,它有一个大环境和小环境的区分。
所以这些内容在 Nostr 上还是有缺失的,也欢迎有想法的贡献者一同来构建 Nostr。