# Swarm设计架构之覆盖网络（overlay networks)

By [Mu](https://paragraph.com/@lastshot) · 2022-03-21

---

_写于 2021-06-03，_

因要换电脑，爬丢失，因此上传至Mirror。

这期来说说Swarm的设计架构中底层设计的一部分，东西实在太多，估计整个设计架构要讲好久。

话说上期说到，Swarm是要为“未来自我”的数字主权社会的未来，建立无许可储存和通信基础设施。

Ps：“我说的“未来自我”就是周董那句词“我的地盘我做主”的字面意思。

不论往后Web时代怎么变迁，就像我们不是推翻了1.0，而是在1.0基础上演变迈进了2.0，Web3.0的时代也会是这样转变。

\*\*Swarm为开发者提供了low-level的API可用于复杂应用程序组件，还有可用于3.0开发堆栈的工具和数据库。\*\*通俗的说就是拿现在的任意正常的浏览器（比如Chrome）用他们提供的API和工具直接能连进Swarm的网络，因此Swarm也可以立刻提供一个私有并分散的替代方案来替代WWW。乍一听挺厉害的，但会不会是绣花枕头呢？

Swarm的底层设计能理解为4层。

![](https://storage.googleapis.com/papyrus_images/594532305ba548b30268d861395e0792bf58a1a16536aff61584870fe3f46b28.png)

我先说下哪四层：

*   最底层的互联互通的网络是P2P网络
    
*   第二层是协议覆盖网络powering固定大小数据块
    
*   第三层是提供高级数据的访问和定义的API组件
    
*   最后一层就是应用层了
    

关于第一层，如果你不是技术人员，你就理解成我上一期说的BT协议就好，因为P2P又分好多种，再往深了去又枯燥并对项目理解意义不大。如果你是技术人员，自行Google资料呗。

第二第三层等会后面篇幅再稍微详细地说一下，因为这两层是Swarm的核心层。

至于最后一层应用层也不用细说，就是他们会定义标准和轮廓比，如什么协议啦等等，我们不开发所以我们略过。

\*\*第二层覆盖网络，当你用底层地址和对方建立连接时，在Swarm上的每个节点都会用覆盖地址进行标识，就是这个覆盖地址确定了节点的对接方和消息发送到哪里去。\*\*它里面用到的Keccak算法啦，覆盖拓扑Kademlia啦，用Po概念量化了两个地址的关系什么的都不是我要细说的。

在我看来就是这个覆盖地址是稳定的，满足了以太坊的加密技术提高了安全性，又有好的支持。然后又因为他能定义节点身份，重点是：他能在最后决定或者影响了什么内容是有价值存在本地储存里的。

让我再转回头稍微提下这个Kademlia拓扑。

![上图是 Iterative and Forwarding Kademlia routing](https://storage.googleapis.com/papyrus_images/e4448d01669b207d2e277a36b2752c89bd2834c552cfae2561a45d4e88478670.png)

上图是 Iterative and Forwarding Kademlia routing

鉴于本文不是科普类文章，我就简单的说下，Kademlia这东西有两种算法方式，iterative/zooming 和 recursive/forwarding， 他们选的是第二种recursive/forwarding，项目方自己也承认recursive/forwarding不是主流。但iterative/zooming也有他的问题，比如有可能要解决映射问题啊什么的。Tron曾在一篇“The hard DiSC of the world computer”的文中解释过为什么选了第二种，有兴趣可查看链接：

[https://medium.com/ethereum-swarm/the-hard-disc-of-the-world-computer-4f3d41bf9ddb](https://medium.com/ethereum-swarm/the-hard-disc-of-the-world-computer-4f3d41bf9ddb)

具体运行如何就看后续反馈了，毕竟要每个节点必须遵循引导协议才能达到饱和的Kademlia连接和维护，别误会，我没有看衰他，只是提出我所认知的问题，而且Swarm还在测试网中不是么，BTW这次升级了0.6.x，据说有某个或某些重要协议改变了，都在一步一步变好。

**在第二层中还要求了固定大小的不可变的储存数据块。**

基本只要知道因为储存模型是对块有限制的，所以Swarm现阶段只接受两种块-已经寻址的内容块和单个owner块，简单理解就是一个普通块（块小，减少下载延迟），一个特殊块（块大，可包含普通块，诚信概念偏弱点，只能由single owner创建）。

对于这两种块，Swarm都进行了加密处理。

关于检索，Swarm也做到了不公开请求者身份的完全匿名的检索，通过反向检索也解决了防垃圾邮件，扩展，激励等有关的更多好处。

然后转发节点是要费用的，如果发送量没被邀请的数据块，就可能被拒绝服务啊什么的，严重的就把你放黑名单惩罚了。

---

*Originally published on [Mu](https://paragraph.com/@lastshot/swarm-overlay-networks)*
