你好,Swarm——以太坊社区大会上关于Swarm的介绍
以下文字回顾了Rinke Hendriksen于2021年7月在以太坊社区大会(EthCC)上的主旨演讲“你好,世界;你好,Swarm”(“Hello World, Swarm”)。在演讲中,他就Swarm网络Bee节点的内部运行机制进行了简洁而完整的介绍。
Swarm,一块全球硬盘
Rinke把Swarm看作是由世界各地计算机所共同托管的全球硬盘,这些计算机之所以相互协作,是因为背后有经济激励的动力。Swarm与一台普通计算机类似,文件和网站内容同样可以被上传和下载到Swarm。
与普通计算机不同的是,在Swarm中,上传的文件被分割成一块一块的数据块(Chunk),接着数据块被存储到遍布全球的节点上。Rinke解释道,此时用户下载文件,本质上就是对文件所对应的这些数据块发出请求并将它们重新组合在一起。只有当人们请求特定内容时,这些组合起来的数据块才有实际意义。
作为全球硬盘,Swarm具有如下特性:
- 保护隐私,上传下载无需授权
- 能够强有力的防御那些阻止或变更内容的访问
- 自适应按需扩容
- 保护内容的完整性
- 最终丢弃那些不再需要保留的内容
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上的去中心化生态应用提供强有力的基础设施支撑。
这些生态应用可以是来自开发者的任何创新。未来,潜力无限!
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! .