[博客翻译]Bluesky是如何工作的?


原文地址:https://steveklabnik.com/writing/how-does-bluesky-work


BlueSky工作原理解析

BlueSky是一个去中心化社交平台。我对BlueSky充满热情的一个原因是其工作方式。因此,在这篇文章中,我将阐述我所理解的BlueSky设计及其背后的原则。我不是BlueSky团队的成员,所以这些都是我个人的观点。

3.png

让我们开始吧。

BlueSky存在的意义是什么?

BlueSky官网目前是这样表述的:

社交媒体对于被少数几家公司控制来说太重要了。我们正在为社交互联网构建一个开放的基础设施,以便我们共同塑造其未来。

这就是宏观愿景。

那么,这是一个很好的理念,但具体意味着什么呢?目前,BlueSky是一个类似于Twitter和Mastodon的微博应用。这如何与宏观愿景相契合呢?虽然BlueSky确实是一个微博应用,但这并不是全部故事:BlueSky是一个初步应用,用以证明认证传输协议(Authenticated Transfer Protocol,简称AT、ATP或"atproto")的可行性。BlueSky是“建筑物”,而atproto则是“社交互联网的开放基础”。

需要注意的一点是:BlueSky也是一家公司。有些人对公司宣称“嘿,我们正在构建一些大到不能被公司控制的东西!”持怀疑态度。我认为这是一个健康的出发点,但对我来说答案在于atproto。

这两者之间的相互作用很重要,但我们将首先探索atproto,然后讨论BlueSky如何在其之上构建。

这是一种加密货币吗?

首先要澄清的是:如果你听到“哦,这是一个叫做‘某协议’的分布式网络”,你可能会在脑中想到“这是加密货币?”的警报。

别担心,这不是加密货币。它确实使用了一些起源于加密货币领域的技术,但这并不是区块链、DAO、NFT或其他任何东西。只是一些密码学和默克尔树之类的技术。

atproto的宏观愿景是什么?

AT协议概述是这样说的:

认证传输协议,又名atproto,是一个用于大规模分布式社交应用的联邦协议。

让我们分解一下:

一个联邦协议

atproto是联邦的。这意味着系统的各个部分可以由多个人运行,并且它们之间相互通信。选择联邦是atproto实现“不能被一个组织控制”承诺的重要部分。还有其他部分,但这是解决这一问题的重要方面。

适用于大规模

如果你想扩展,你必须考虑扩展性。atproto做出了几个有趣的选择,以便将运行系统的负载更多地分配给能够处理负载的参与者,而不是那些不能处理的参与者。这样,运行在atproto之上的应用可以扩展到大型用户群,而不会出现问题。

至少这是希望。就在本周早些时候,BlueSky达到了五百万用户,并且比Twitter早期更稳定。这并不像许多社交应用那样大,但也不是小数目。我们将看到这在实践中如何运作。

分布式社交应用

atproto是为了连接他人而设计的,所以它专注于社交应用。它目前是100%公开的,没有私人消息或类似的东西。这样做的原因是,在联邦系统中实现私密性非常棘手,他们宁愿做对而不是匆忙推出带有严重警告的东西。最好现在只使用这些东西来处理你希望公开的事情。

这些应用是“分布式”的,因为运行它们涉及到直接在网络上运行。没有“BlueSky服务器”,只有运行atproto的服务器将消息相互分发,包括BlueSky消息和任何其他人创建的其他应用的消息。

那么,这个高级别的概念具体意味着什么呢?

在atproto中,用户创建记录,并通过加密签名来证明作者身份。记录有一个称为词汇表(Lexicon)的模式。

这些存储在仓库中。仓库作为服务运行,暴露HTTP和WebSockets。然后它们可以相互通信并联合记录。这些通常被称为PDS,即“个人数据服务器”。用户要么运行自己的PDS,要么使用其他人托管的PDS。

应用可以通过查看网络中存储的各种记录,并对它们进行操作来构建。这些服务都称为应用视图(App Views),因为它们展示了存储在网络中的信息的特定视图。通过词汇表系统创建这个视图:构建一个应用意味着你定义一个词汇表,构建你想要处理的数据结构,然后查看使用你的词汇表的记录,忽略其他的。

然而,如果这就是全部内容,那么会有相当严重的扩展问题。例如,如果每次我在BlueSky上发布新更新,我都必须将我的帖子发送到我每个追随者的仓库,那将是极其低效的,并且使得运行一个受欢迎的仓库变得非常昂贵。为了解决这个问题,有了一种额外的服务类型,称为中继(relay),它汇总网络中的信息,并以消防软管的形式向其他人暴露。所以实际上,应用视图不是查看仓库,而是查看中继。当我发帖时,我的仓库不会单独通知我的追随者的仓库。我的仓库会通知一个中继,我的追随者会使用一个应用视图,该视图过滤中继的输出,只显示他们关注的人的帖子。这确实意味着中继通常是巨大的并且运行成本高昂,然而你可以想象运行一个较小的中继,它只传播来自较小用户子集的帖子。它们不必显示网络上的所有内容,尽管更大的中继当然会这样做。

以下是ASCII艺术表示:

┌─────┐ ┌──────────┐

│ PDS ├───────┐ │ App View │

└─────┘ │ └──────────┘

┌▼────────┐ ▲

┌─────┐ │ ├───────┘

│ PDS ├──────► Relay │

└─────┘ │ ├───────┐

└▲────────┘ ▼

┌─────┐ │ ┌──────────┐

│ PDS ├───────┘ │ App View │

└─────┘ └──────────┘

要理解atproto的核心,你真正需要知道的就是:人们创建数据,它在网络中共享,应用可以与那些数据交互。

然而,还有其他类型的服务正在引入,未来可能还会有更多。但在我们谈论这些之前,我们必须解释一些意识形态承诺,以理解为什么事物是这样构建的。

什么是“言论与影响”?

鉴于atproto是有意创建以支持社交应用的,它需要考虑不仅是连接人们,还要考虑断开人们的联系。适度是任何社交应用的核心组成部分:“没有适度”也是一种适度策略。BlueSky通过承认不同的人在适度方面会有不同的偏好,并且认识到大规模适度是困难的,来处理这类问题。

因此,协议采取了“言论与影响”方法对待适度。我们到目前为止描述的内容属于“言论”层。它纯粹关注于在网络中复制你的内容,而不关心内容的语义内容是什么。适度工具属于“影响”层:你获取所有的言论,但提供一种方式来限制你不愿意看到的内容的影响力。

有时,人们会说BlueSky“完全关于自由言论”或“不进行适度。”这是简单不准确的。适度工具编码进了协议本身,以便它可以与网络上的所有内容一起工作,甚至是非BlueSky应用。此外,它让你有能力选择你自己的适度者,这样你就不会受任何其他人的适度选择或缺乏适度的束缚。但我有点跑题了:让我们谈谈Feed生成器和标签器。

什么是Feed生成器?

大多数社交应用都有内容的“Feed”概念。这在atproto中被分解为自己的一种服务,称为Feed生成器。一个典型的Feed例子是“计算机,按时间逆序显示我关注的人的帖子。”近来,算法Feed在社交网络中变得流行,以至于一些非技术用户将它们称为“算法”。

Feed生成器获取中继产生的消防软管,然后根据Feed生成器所需的任何度量来过滤和排序内容,向你展示内容列表。然后你可以与其他用户分享这些Feed。

作为一个实际例子,我最喜欢的Feed之一是安静发布者Feed。这个Feed显示不经常发帖的人的帖子。这使得跟上那些在我的主Feed中淹没的人变得容易多了。有像‘Gram这样的Feed,只显示附有图片的帖子。或者我的热门帖子,它展示了你最受欢迎的帖子。

对我来说,这是BlueSky超越其他微博工具的杀手级特性之一:完全的用户选择。如果我想做我自己的算法,我可以这样做。而且我可以轻松地与他人分享。如果你使用BlueSky,你也可以访问任何这些Feed并关注它们。

Feed是atproto最近添加的,因此,虽然它们确实存在,但它们可能还不是功能完备的,未来可能会有一些变化。我们将看到。从我的角度来看,它们工作得很好,但我没有跟进底层技术细节。

什么是标签器?

标签器是一种将标签应用于内容或账户的服务。作为用户,你可以订阅特定的标签器,然后根据帖子上的标签改变你的体验。

标签器可以通过它喜欢的任何方式做到这一点:通过在帖子上运行某种算法自动进行,通过让某人手动给出赞成或反对,或者标签服务运行者想要的任何方法。

一个标签服务的例子是黑名单:对你不想看到其内容的人所发帖子的标签。另一个例子是NSFW过滤器,它可能在帖子中的图片上运行某种算法,并在它们认为包含NSFW内容时标记它们。