# Mastodon 和 Nostr：两种不同的社交产品，一样的去中心化愿景

By [Yooma](https://paragraph.com/@yooma) · 2023-02-27

---

概述：
---

本文将分析和讲解Mastodon和Nostr这两个社交媒体平台，重点关注它们的产品应用和技术层面，以了解它们如何实现去中心化社交，并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路，并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结，读者将更好地了解这两个平台，以及它们在去中心化社交方面的贡献和发展。

Mastodon
--------

Mastodon(长毛象)成立于2016年，是由Eugen Rochko创建的一个开源的微博客(microblog)平台，旨在为用户提供去中心化、隐私保护的社交体验。

![](https://storage.googleapis.com/papyrus_images/e55accfbbed5b3ff7a2481864360a33ccd0fc29681f3f8d78d22e4329184da98.png)

首先对涉及到的一些名词进行简单解释：

*   **联邦(federation)**：联邦是去中心化的一种形式。在联邦中，不是所有人共同使用一个中心服务，而是使用多个不限人数的服务器。
    
*   **ActivityPub**：Mastodon使用一种标准化的、开放的协议来实现站点之间的互动，这种协议叫做**ActivityPub**。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信，就像Mastodon站点之间的通信一样。
    
*   **实例(instance)**：每个人都可以在自己服务器上配置运行Mastodon服务，这个服务器可以被叫做营运站点，每个营运站点被称为**实例(instance)。**
    

![从左到右：集中式、联邦式、分布式（图片来源：https://docs.joinmastodon.org/）](https://storage.googleapis.com/papyrus_images/ca862556805a30eeec11c8b835cb62c5961d803b183d7b64bd26711ff01c8112.png)

从左到右：集中式、联邦式、分布式（图片来源：https://docs.joinmastodon.org/）

Mastodon在使用体验上非常类似于Twitter，但它是去中化的，这是Mastodon与Twitter，YouTube等社交媒体最大的不同之处。

Mastodon社区是由无数**实例**组成的。Mastodon的用户数据存储在不同的实例中，每个实例都是独立的，用户可以在不同的实例之间无缝连接，这种分散的数据存储方式可以更好地保护用户的隐私。此外，每个Mastodon实例都有自己的隐私政策和使用条款，用户可以自由选择注册哪个实例，选择自己信任的实例来保护自己的数据隐私。 每个人都可以搭建实例，每个实例可以有它自己的主题，比如卡通，休闲，动物，编程等等，也可以没有任何特定主题。

Mastodon采用的是**ActivityPub**协议来实现站点之间的互动。与其他常用的社交媒体不同的是，Mastodon的用户不仅可以互相关注、分享内容、评论和转发。而且可以与来自其他通过ActivityPub实现联合的软件的用户进行互动，这样就扩大了用户的社交范围，促进了社交网络之间的互联互通。 这些软件和社交网络之间的互联互通构成了联邦(federation)的网络结构，而这些软件被统称为联邦宇宙(Fediverse)。包括但不限于以下应用：

*   Pleroma，一个模块化的微博引擎
    
*   Pixelfed，联合图像共享平台，可让您共享和使用媒体帖子
    
*   Misskey，其中包括微博和可定制的仪表板
    
*   PeerTube，可让您将视频上传到频道
    
*   Plume，它可以让你发表长篇文章
    

ActivityPub协议中规定了一些可选的元数据，实例可以选择只存储部分元数据，以减少存储空间的占用和网络带宽的消耗。例如，实例可以选择只存储文章的标题、作者和摘要。 当用户A发布到了实例A上，实例A会储存该文章的所有数据，用户B在实例B关注了用户A，此时实例B也会储存该文章的所有数据，用户C在实例C中未关注用户A，那么实例C储存的就是该文章的部分元数据。

Mastodon还有一个值得一提的特点，就是它没有广告。相较于其他社交网络，Mastodon没有中心化的广告商，也没有实例可以通过插入广告来获利。这是因为Mastodon的分布式结构和ActivityPub协议的应用，使得每个实例都是独立运营的，不会依赖于广告来维持运营。而且，由于Mastodon的用户分散在不同的实例中，广告的效果也很难被量化和追踪，因此广告在Mastodon上不具备实际的商业价值。

由于Mastodon免费开源以及不存在广告，所以只能通过捐款的方式支持开发团队和实例服务器的运营成本。

* * *

Nostr
-----

Nostr 是由fiatjaf开发，于2020年启动的一种简单、开放的社交协议，支持全球、去中心化和抗审查的社交媒体。

![](https://storage.googleapis.com/papyrus_images/bc9cc58eaf4c4dfec839d0beca9494fb98ac152b52bc2cb5e6b7b731352b5ab1.png)

**运行原理：**

*   有两个主要组件：客户端和中继。每个用户运行一个客户端。任何人都可以运行中继。
    
*   每个用户都由公钥标识。每个帖子都有签名。每个客户端都会验证这些签名。（客户端需要用户的私钥对该用户发布的帖子签名。签名可以确保该帖子的创建者）
    
*   客户端从他们选择的中继获取数据以及将数据发布到他们选择的中继。中继之间不互相通信，仅与客户端通信，使用 WebSocket + json 协议。
    
*   要查看某人的帖子，用户只需指示他们的客户端查询它知道的中继以获取来自该公钥的帖子。
    

由于WebSocket协议提供了更好的实时性和可靠性，这对于一个社交媒体平台来说非常重要。在Https中，每个请求都要进行TLS握手，这会导致一定的延迟。而一旦建立了WebSocket连接，后续的消息传输将会更快，因为WebSocket连接是始终打开的，没有额外的TLS握手。此外，WebSocket还支持双向通信，这意味着服务器可以主动向客户端推送数据，这是Https所不具备的。因此，选择使用WebSocket，以提供更好的实时性和可靠性。

**使用：**

*   每个 Nostr 帐户都基于公钥/私钥对，而非电子邮件和密码。公钥相当于是用户名，私钥相当于密码。与密码不同的是，私钥丢失后无法重置。公钥通常以前缀为 npub1 的字符串表示，私钥以前缀 nsec1 表示。
    
*   每个人都运行一个客户端。 它可以是本机客户端、Web 客户端等，连接一个或者多个中继。
    
*   要发布某些内容，例如一篇文章，用私钥对其签名并将其发送到多个中继（由其他人或您自己托管的服务器）。
    
*   要从其他人那里获得更新，您可以询问多个中继是否知道这些其他人。 任何人都可以运行中继。 继电器非常简单。 除了接受某些人的帖子并转发给其他人之外，它什么都不做。不必信任中继， 签名在客户端进行验证。
    

在Nostr中，Event是一种用于描述用户在社交网络中进行的行为（如发布消息、关注某人等）的数据类型。在客户端发送Event时，它会先进行签名，然后才会被发送到中继节点。 比如用户A发布一篇文章到中继A、B：客户端A使用用户A的私钥对其进行签名，获取文章时使用用户A的公钥对其签名进行验证。如果中继A的拥有者对该文章进行更改，则验证也就不通过，客户端也就不会对其进行展示，只会展示从中继B获取的正确的文章内容。

**优势：**

*   Nostr协议是基于分布式的网络模型，这意味着数据被存储在许多不同的节点上，而不是集中在单个服务器上。这种去中心化的架构使得Nostr更加抗审查。
    
*   Nostr协议为用户提供了更好的隐私保护。客户端在用户发布文章后对其进行签名，获取文章时会对该文章签名认证，以确认文章是否被更改。
    
*   Nostr协议的中继也可以向用户收取费用以在此中继发布，这也为中继提供了一种经济支持。
    

由于Nostr是去中心化的，和中心化的服务（如Twitter）不同，所以Nostr的发展方向取决于所有人的意愿。为了让用户更好地参与协议的改进和发展，Nostr引入了NIP（Nostr Improvement Proposals）这一标准化流程，用于提出和讨论对Nostr协议的改进建议。任何人都可以通过提交NIP来对Nostr协议进行改进和发展，这有助于保证协议的发展方向更加民主和开放。NIP的目的是让改进流程更加透明、高效和安全，保证所有人都可以提出协议改进的建议，并且让改进的流程变得更加规范化和公开。

核心特点对比：
-------

![](https://storage.googleapis.com/papyrus_images/ac156884de1e6de0c76d3be4bf8719163212e8771a1b1f7542b4452b4c0a8d43.png)

总结：
---

Mastodon和Nostr都是为了实现去中心化社交

从用户数据隐私层面看，我认为Nostr更占优一点，由于Mastodon的账户模式不同于Nostr的公私钥对，用户登录需要服务器来认证，这本身是一个中心化行为，而且用户需要信任使用的实例，而Nostr的客户端使用用户私钥对其的数据进行签名以验证数据的完整性。

从更宏观的角度来看，由于Mastodon的实例使用**ActivityPub协议**，它可以实现各个软件中的互联互通（前提这些软件应用也集成了**ActivityPub协议**，理论上如果Twitter以及Youtube实现了该协议也可以与Mastodon实例通信），如果集成该协议的应用越来越多，联邦宇宙的规模和潜力就越大，那么也就会更有优势和发展空间。试想一下，我在Twitter中看到了Youtube中的视频以及Instagram中的内容，并且还可以点赞评论和转发。

---

*Originally published on [Yooma](https://paragraph.com/@yooma/mastodon-nostr)*
