Swarm项目旨在为未来自主的数字社会建立无需许可的存储和通信基础设施。从开发者的角度来看,Swarm最好被看作是支持web2.0时代的实时交互式网络应用的公共基础设施。它为原语提供了一个低级的API,作为复杂应用程序的构建块,以及基于swarm的Web 3.0开发栈的工具和库的基础。API和工具的设计允许从任何传统的网络浏览器访问Swarm网络,这样,Swarm就可以立即为当今的万维网提供一个私有的、去中心化的选择。
该部分详细介绍了系统的设计和体系结构。根据1.3.2的原则,我们将重点放在模块化设计上,并将Swarm设想为具有清晰可分离的层,每一层都依赖于前一层(见图1):
- (1)作为底层传输的点对点网络协议
- (2)一种覆盖网络,具有支持分布式不可变存储的协议块(固定大小的数据块),
- (3)提供高级数据访问和为底层特性定义api的组件
- (4)应用层定义标准,并为更详细的用例概述最佳实践
我们认为(2)和(3)是Swarm的核心。由于网络层依赖于(1),我们也将制定(1)的要求,但我们考虑(1)和(4)的详细处理超出了本书的范围。
回到设计的主题,在第2章中讨论了Swarm覆盖网络的架构(图1中的第2层),并在第3章中进行了补充,描述了使Swarm能够自我维持的经济激励系统。在第四章中,我们将介绍算法和约定,这些算法和约定允许Swarm将数据概念映射到块层,从而实现存储和通信的高级功能,特别是数据结构,如文件系统和数据库,访问控制,索引feed和直接消息传递,它们组成了Swarm的第三层。在第5章中,我们介绍了防止垃圾收集块从网络中消失的方法,包括:擦除代码、钉住和保险,还提供了使用丢失的块通知和保险挑战来监控、恢复和重新上传它们的方法。最后,在第6章中,我们将从用户体验的角度来看功能。