January 28, 2022
ZH

你好,Swarm——以太坊社区大会上关于Swarm的介绍

你好,Swarm——以太坊社区大会上关于 Swarm 的介绍

以下文字回顾了 Rinke Hendriksen 于 2021 年 7 月在以太坊社区大会(EthCC)上的主旨演讲“你好,世界;你好,Swarm”(“Hello World, Swarm”)。在演讲中,他就 Swarm 网络 Bee 节点的内部运行机制进行了简洁而完整的介绍。

Swarm,一块全球硬盘

Rinke 把 Swarm 看作是由世界各地计算机所共同托管的全球硬盘,这些计算机之所以相互协作,是因为背后有经济激励的动力。Swarm 与一台普通计算机类似,文件和网站内容同样可以被上传和下载到 Swarm。

与普通计算机不同的是,在 Swarm 中,上传的文件被分割成一块一块的数据块(Chunk),接着数据块被存储到遍布全球的节点上。Rinke 解释道,此时用户下载文件,本质上就是对文件所对应的这些数据块发出请求并将它们重新组合在一起。只有当人们请求特定内容时,这些组合起来的数据块才有实际意义。

作为全球硬盘,Swarm 具有如下特性:

  1. 保护隐私,上传下载无需授权
  2. 能够强有力的防御那些阻止或变更内容的访问
  3. 自适应按需扩容
  4. 保护内容的完整性
  5. 最终丢弃那些不再需要保留的内容

Swarm 的工作原理

Rinke 接着介绍,首先要记住的是,Swarm 不是一款常规的软件。Swarm 并不单单运行在一台计算机上,而是运行在采用相同协议进行交流、运行相同软件的所有计算机上,这些计算机也被称为 Bee 节点。

Rinke 继续指出,成为 Swarm 节点运营商的好处:“人们愿意运行自己的节点通常有两大原因。第一,他们可以接入 Swarm 网络,这样就可以方便上传和下载文件。如果你手头恰好有一台旧电脑闲置在那里,那么实际上你可以利用你的闲置带宽和闲置硬盘来赚钱。”

Swarm 的第二个重要特点是,其网络使用了一种特定类型的分布式哈希表,称为转发式 Kademlia(Forwarding Kademlia)。比如说 Alice(地址 0000)想要向 Dave(地址 1111)发送消息。问题是,Alice 必须遵循怎样的连通性规则,才能始终确保将信息发送到 Dave 那里?

下图对消息传递路径进行了解释。Alice 把要发给 Dave 的消息首先发给了 Bob。Bob 并不知道 Dave 是谁,但他认识 Carol 并知道 Carol 有可能认识 Dave。于是,Bob 把消息转发给了 Carol。由于 Carol 实际上恰恰就认识 Dave,所以 Carol 就将消息最终发送给了 Dave。当 Dave 向 Alice 返回消息时,则消息会沿着刚好相反的路径进行。

数据块是关键

但 Swarm 节点不仅用于消息转发,它们还可进行数据的上传和下载。节点存储数据块,每个数据块包含部分数据并拥有一个块地址(chunk address)。正如 Rinke 在他的演讲中指出的那样,块地址非常重要,因为这些块地址决定了哪些数据块将存储到哪些节点中。节点会存储块地址相似的数据块。此外,同一数据块会由多个节点存储,达成数据冗余,防止因节点加入或退出网络而带来的数据丢失。

块地址既可由数据的哈希提供,也可由上传者的数字签名来验证,以保证数据的完整性。

这种设计的核心是,在转发链中,转发节点并不知道最初是由谁发起的请求。单个转发节点只知道请求来自它的上一节点。“这将极大保护用户在 Swarm 中下载数据时的隐私”Rinke 说。

为什么节点要协作?

节点以这种协作的方式进行,是因为他们有经济动力这么做。Alice 必须付费才能获得所需的数据块,而付费的金额与数据块的传递路径息息相关。费用会沿着转发链依次分发,以便每个途经节点都有一定的奖励(见下图)。奖励以 Swarm 的原生币 BZZ 支付或互惠的形式支付。

如果 Swarm 的空间用完了怎么办?

就像任何其他硬盘一样,Swarm 的存储容量是有限的。但和常规硬盘不同的是,内容一旦发布到 Swarm 上便无法更改,任何人都无法撤销所有人对内容的访问权限。正如 Rinke 所说,Swarm 上没有删除操作。

“基本上,我们是这样做的:每个数据块都有一个费用参照,这表明了数据块的价值。节点根据这些链上支付和利润进行测算,对数据块的价值进行排序。因此 Swarm 中只有最相关和最有价值的数据块被保留下来。那些请求不多的数据块最终会被替换” Rinke 介绍了 Swarm 的垃圾回收(Garbage collection)框架。因此,Swarm 总是保留一定时期内最相关和最有价值的数据。

Swarm 和 Web3

虽然大部分演讲都围绕 Swarm 的数据块分布式存储(DISC,Distributed Storage of Chunks)展开,但演讲的最后一部分集中讨论了 Swarm 是如何融入 Web3 的。

“就像硬盘本身并不能真正赋予数据意义一样,DISC 也不能赋予数据块意义。赋予它们意义的是数据结构和我们如何诠释这些数据块,”Rinke 补充道。

通过 Bee 节点,你可以请求文件、目录和动态内容,发送消息,这些方式均可无需授权且受隐私保护。这些特性让数据碎片顺利拼接在一起,为 Swarm 上的去中心化生态应用提供强有力的基础设施支撑。

这些生态应用可以是来自开发者的任何创新。未来,潜力无限!

Follow Swarm community news on X / Twitter.
Discussions about Swarm can be found on Reddit.
All tech support and other channels have moved to Discord!
Please feel free to reach out via info@ethswarm.org
Join the newsletter! .

By clicking on Subscribe you consent to usage of your given e-mail address for receiving communication and news about the Swarm project and news. Data will be controlled and processed by Swarm Foundation.