当前位置:首页 行业动态 正文

Swarm最新官方白皮书

2025-01-01

1 简介

Swarm的使命,是通过为去中心化的互联网提供可扩展的底层基础设施,去塑造自我主权的全球化社会和无需许可的开放市场。Swarm的愿景,是通过点对点的存储和通信系统来延展区块链,从而让“世界计算机”成为现实,这台“世界计算机”将可以作为去中心化应用程序的操作系统和部署环境。

Swarm可以提供不间断的服务,更有效地抵御网络中断或有针对性的DoS攻击。Swarm作为一个无需许可的发布平台,有效促进了信息自由。Swarm以其独特的隐私特性,如匿名浏览、可拒存储(deniable storage)、不可追踪的消息传递和不泄漏元数据的文件格式等,响应了日益增长的网络安全需求。

Swarm内置的激励措施旨在优化带宽和存储资源的分配,使其在经济上能够自我维持。Swarm节点在与每个节点的连接中追踪它们的相应带宽贡献,并且通过BZZ来解决由于不平等消耗而产生的额外债务。Swarm中的发布者必须花费BZZ去购买向Swarm写入数据的权利,并对一些长期的存储预付租金。

Swarm的模块化设计由清晰可分的层(layer)组成(见图1)。从技术上讲,层2“不可变存储的覆盖网络”和层3“通过API的高等级数据存取”构成了Swarm的核心。

Swarm最新官方白皮书

图1

2 DISC: 块的分布式不可变存储

DISC(Distributed Immutable Storage of Chunks)是Swarm的底层存储模型。它由存储和提供数据的节点组成,在这些节点之间的协作中,假设每个节点追求使其运营者利润最大化的策略,那么网络作为一个整体,其行为将显现出以下特性:

  • 隐私保护和无需许可的上传和下载

  • 强大的防御措施,内容一经发布便很难再对其进行屏蔽或更改访问权限

  • 随着需求的增加可自动扩展

  • 得到完整性保护的内容

  • 无需再保存的内容最终会被遗忘

任何拥有多余存储空间及带宽的人,都可以以节点运营者的身份参与DISC,并由此获得奖励。当运营者安装并运行Swarm客户端软件时,会创建一个新节点并成为Swarm网络的一部分,基本上相当于负责照管Swarm这一全球硬盘的一小部分。

接下来,我们将进一步定义DISC,并解释它为何会产生上述特性。

2.1 连接、拓扑和路由

DISC的最初职责是建立和维护一个节点网络,使得所有节点都可以在彼此之间发送消息。这种消息交换是通过使用p2p网络协议(libp2p)的节点之间存在的持久而安全的通信信道进行的。Swarm期望节点建立Kademlia连接:连接到其他特定的节点集时,节点对发送地址作出的本地决定,最终会让消息的传导找到全局最优路由。

Kademlia假设每个节点都分配了一个与其网络地址不同的Swarm地址。通过计算前缀位(prefix bits)的数值中两个Swarm地址的共同值,我们可以定义它们的接近度。彼此最接近的节点们将形成一个完全连通的邻域(neighbourhood)。此外,每个节点连接到来自每个离散邻近类(discrete proximity class)的多个对等节点(见图2)。

Swarm最新官方白皮书

图2

(注1:Libp2p 是一个便于使用者开发去中心化点对点应用的网络框架。)

(注2:Kademlia 是由 Petar Maymounkov 与 David Mazières 所设计的P2P 重叠网络传输协议,以构建分布式的P2P电脑网络。是一种基于异或运算的P2P信息系统。它制定了网络的结构及规范了节点间通讯和交换资讯的方式。)

由此产生的拓扑结构保证了中继(relaying)在每次信息跃迁中至少将消息向其预期目的地移近一步(见图3)。这种技术使消息能够在任意两个节点之间路由,即使这两个节点之间不保持直接连接。传递消息所需的跃迁数上限是节点总数的对数,这样即便在一个极其庞大的网络中,也能确保任意两个节点始终能够相互联系。

Swarm最新官方白皮书

图3

2.2 块和存储 

Swarm中的标准存储单元称为块(chunk)。块最多由4千字节的数据组成,并且附有一个地址。由于块的地址与节点的地址来自同一地址空间,因此可以计算它们的接近度。Swarm的存储方案声明每个块都由节点存储,其地址接近块本身的地址。

为了方便数据的保密性,块可以在填充到4千字节后进行加密,使得没有密钥的人无法将其与其它随机数据进行区分。即使对于未加密的块,节点运营者也无法轻易确定每个块来自于哪些内容。由于Swarm节点无法自己选择存储、加密哪些数据块,这种来源的模糊性以及元数据的无法泄露都为它们提供了有效的保护,使它们免于承担与其所存储内容相关的责任。

为了将块插入到Swarm中,节点通过同步推送协议(push-sync protocol)将区块进行转送,直到到达它所属的邻域。然后,块的存储确认函将沿着相同的路径被传回。想要检索一个块,只需使用检索协议,将具有块地址的请求路由到相关邻域。如果途中的任何节点在其本地存有相应的块,则会将其以响应的形式发回。

Swarm最新官方白皮书

图4

节点们使用同步回送协议(pull-sync protocol)持续同步其块存储。这保证了每个邻域都冗余地