View All Articles

什么样的去中心化社交协议是有用的?

过去十几年中,人们已经尝试过各种不同类型的协议和网络结构,但什么样的协议对社交媒体是有用的?

去中心化社交媒体出现在比特币之前,已经有十多年的历史。十几年中,社交媒体成为了人们获取信息的主要方式。

去中心化社交媒体和协议一直在演变,但使用人数和影响力一直不及中心化社交媒体。一个重要原因是,它们大都由志愿者开发和维护,没有可持续的商业模式。直到区块链技术成熟,去中心化商业模式才成为可能。

但在引入商业模式之前,需要有开放协议定义社交媒体本身,确定数据存储、通讯方式和使用者之间的关系。过去十几年中,人们已经尝试过各种不同类型的协议和网络结构。那么,什么样的协议对社交媒体是有用的?


我们先来看去中心化社交媒体需要什么。

去中心化社交媒体需要兼顾稳健性与可用性。前者是去中心化最大的优势,让系统在自然灾害或者人为攻击面前仍然保持畅通,只对少部分人和场景有用;后者是去中心化社交媒体常常欠缺的,但也是最多人在意的。

不管是中心化和去中心化社交媒体,另一个需要兼顾的,是言论自由和内容治理。只要另一个人接受,每个人都有权对另一个人说任何事情;同时,我们需要公共空间来传播观点、达成共识,此时又必须有内容好坏和言论边界的标准。我们可以区分出言论(speech)和触达(reach)两层机制:任何人对于自己的追踪者有言论的自由,但公共空间里言论能否触达他人,不同的社群有各自的规范。

能够保障稳健性和言论自由的,是更加去中心化的网络结构;而提升可用性、做好内容治理,常常需要一定程度中心化的服务器。我们可以通过将客户端直接相连得到最去中心化的点对点网络,也可以通过服务器之间的协议形成多中心的服务和治理。这两层结构对于社交媒体都是有用的。

借用著名的“centralized vs decentralized vs distributed 示意图”的话,去中心化社交媒体同时需要 decentralized 和 distributed 两层结构。


点对点协议

点对点网络是最去中心化和稳健的网络结构,每个使用者通过自己的客户端与其他用户直接连接,全权控制自己的内容和软件,甚至在没有互联网的情况下都能正常通讯。

设计良好的点对点协议还有许多其他有用的特性。一个是数据的自验证(self-certifying),让使用者从其他人那里获得数据时,不需要依赖第三方确定数据的真实性。一种常见的设计是,每个发布者拥有一对公私钥,发布的内容通过私钥签署,内容接收者得以验证发布者身份。

另一个有用的特性,是带宽共享。因为点对点网络中数据不需要通过特定的服务器传递,而是可以来自于任何客户端。这在数据大、带宽低的时候尤其有用,也是互联网早期 BitTorrent 下载、快播、迅雷等借助点对点技术的产品的优势。

所以,一个支持自验证的点对点传输协议适合作为去中心化社交网络的基础。它是用户身份的一部分,也是确保言论自由的底层机制。

服务器协议

许多社交软件中常用的功能,在纯点对点网络中难以实现。内容推荐、搜索、评论等需要聚合和索引,提供数据、接收通知等需要随时在线,域名管理、社群治理、账户余额等需要全局状态,都需要服务器才能完成。

需要全局状态的功能可以由区块链等分布式账本来实现,其他功能则可以由用户自行选择的服务器来承担。为了让服务器无法绑定用户、也让不同软件之间更容易配合,我们可以将服务器的通讯方式标准化。一种思路,是标准化服务器与客户端之间的通讯,如 Nostr;另一种思路,是标准化服务器与服务器之间的通讯,如 ActivityPub、AT Protocol。

在这两种思路之中,仅标准化服务器与客户端之间的通讯时,服务器有中心化倾向,因为客户端需要与同一个服务器相连才能通讯;仅标准化服务器与服务器之间的通讯时,客户端可以通过不同的服务器通讯,同时只要有全局的 id 系统,用户也能够方便地在不同的服务器之间迁移。


实现

点对点传输协议中,目前使用最广泛的是 IPFS。它有很高程度的模块化,每个模块的接口也设计得简单易懂,并在开发者中达成了广泛共识。另一个是 Secure Scuttlebutt,通过社交关系决定数据存储,设计精巧,有稳定使用的社交网络,但还没有 IPFS 采用广泛。

ActivityPub 是目前最流行的去中心化社交协议,用户超过一千万,包括著名的软件套件“长毛象(Mastodon)“。ActivityPub 同时包含了服务器与服务器之间的标准和服务器与客户端之间的标准,但两者也可以分开使用。ActivityPub 的问题在于,用户身份与服务器域名绑定,且数据也全部存储在特定服务器中;这两个问题恰好可以通过引入 IPNS(IPFS 中的动态模块)解决。

对于区块链技术,目前最为普及的是以太坊虚拟机(EVM)相关的工具,以太坊本身也提供了最好的流动性。区块链节点可以运行在服务器中,但大部分服务器只需要轻节点、不需要保存全量数据;同时,区块链可以与点对点协议共享数据寻址和传播的算法,提高网络效率。目前的主流区块链设计都可以满足需求,不过区块链技术演变迅速,什么样的链架构最适合轻节点、兼容点对点协议还是未知。