Swarm主要是由以太坊基金会开发,始于以太坊,为以太坊生态内Dapp提供数据存储和共享带宽服务,Swarm适配以太坊的存储协议,共识流程、基础架构。以太坊是一个去中心化的网络,这表示以太坊协议的文件存储也遵循此原理。
Swarm作为Web3.0的三大支柱之一,是整个去中心化生态系统的核心部分。主要目的是成为Dapp代码、用户数据、区块链数据和状态数据的去中心化存储。Swarm为Web 3.0提供各种基础服务,包括节点到节点的消息传递、媒体流、去中心化的数据库服务和用于去中心化服务经济的可扩展状态通道基础设施。Swarm团队试图创建一个不停机、零故障和防审查的点对点存储和服务解决方案。
Swarm是如何运行的?
首先说说Swarm的激励系统
Swarm是如何记录、存储和维护数据,检索器又是如何随时访问数据。
其原理是随机节点存储文档。通过图1可以看出,节点只保留根哈希(root-hash)和后续目录哈希(subsequent directory hashes)的标记。实质上,请求者只是从清单条目中提取page.html来呈现文档,这就非常简单了。
Swarm如何呈现请求?
Swarm各个节点都可以为彼此贡献资源,这些贡献是在点对点基础上准确计算的。节点以资源交换资源,同时会向消耗较少的节点提供代币补偿。
看看Swarm的数据结构,Swarm去中心化存储系统主要由三个部分组成:
▶ Chunks:这是一个限制大小(最大4K)的数据块,是Swarm中存储和检索的基本单元。
▶ Reference:文件唯一标识符,允许客户端检索和访问内容。
▶ Manifest:描述文件集合的数据结构。用于指定路径和相应的内容哈希,允许基于URL的内容检索。
图1显示了Swarm如何呈现一个请求。从本质上讲,chunk表示“page.html”或“page.css”等散列信息。每个块包含Manifest中的一个引用,告诉请求者如何检索和呈现信息。
图1
Swarm的架构,以及不同节点如何向网络写入和上传数据。
Swarm堆栈:上传
分布式预映像存档(DPA)将每个blob分割成许多数据块(chunks)。DPA随机选择要存储哪些块的节点。之后,这些节点在本地存储块。这些数据块被标记并放入随机节点的容器中。接收到数据后,节点将与同一网络或地址空间上的其他节点通信。
Swarm如何存储每条数据?
节点会根据每个块的时间戳自动同步数据。因此,不会有任何数据丢失或blob损坏。最后,每个bin(0-31)显示了相同地址上的节点如何存储相关的块。
每个节点都有存储、同步以及信息共享的功能,所以给定的节点可以将整个数据段发送回检索器。
请求者可在任意时间检索一段数据(异步模型)。
图2
Swarm存储层概述
Swarm的实际存储层由两个主要组件组成:LocalStore和NetStore。内存中的快速缓存(Memstore)和持久磁盘存储(DBStore) 编写LocalStore。NetStore将LocalStore扩展为Swarm的分布式存储并实现DPA。
FileStore是存储和检索文件的本地接口。当文件交给FileStore存储时,FileStore将文档分块到一个Merkle哈希树中,并将其根密钥交还给调用者。此根密钥之后可用于检索文档。
最后,FileStore使用Swarm散列,并使用NetStore为用户检索文档的根块。
图3
概述
从终端用户的角度来看,Swarm不会影响导航或行为。但是在后端,点对点存储网络承载内容,而不是单个服务器。由于内置的激励系统,这种点对点网络是自我维持的。只有通过使用允许交易资源进行支付的公共区块链,才有可能激励。
Swarm还深度集成了以太坊的 DevP2P多协议网络层。DevP2P是一组网络协议,本质上构成了以太坊点对点网络。
除此之外,Swarm还链接到以太坊区块链,用于域名解析(ENS)、服务支付和内容可用性保险。