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

WantPool

    作者:超级蜂巢
    这期来说说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层。
    
    我先说下哪四层:
    
  • 最底层的互联互通的网络是P2P网络
  • 第二层是协议覆盖网络powering固定大小数据块
  • 第三层是提供高级数据的访问和定义的API组件
  • 最后一层就是应用层了

    关于第一层,如果你不是技术人员,你就理解成我上一期说的BT协议就好,因为P2P又分好多种,再往深了去又枯燥并对项目理解意义不大。如果你是技术人员,自行Google资料呗。
    第二第三层等会后面篇幅再稍微详细地说一下,因为这两层是Swarm的核心层。
    至于最后一层应用层也不用细说,就是他们会定义标准和轮廓比,如什么协议啦等等,我们不开发所以我们略过。
    第二层覆盖网络,当你用底层地址和对方建立连接时,在Swarm上的每个节点都会用覆盖地址进行标识,就是这个覆盖地址确定了节点的对接方和消息发送到哪里去。它里面用到的Keccak算法啦,覆盖拓扑Kademlia啦,用Po概念量化了两个地址的关系什么的都不是我要细说的。
    在我看来就是这个覆盖地址是稳定的,满足了以太坊的加密技术提高了安全性,又有好的支持。然后又因为他能定义节点身份,重点是:他能在最后决定或者影响了什么内容是有价值存在本地储存里的。
    让我再转回头稍微提下这个Kademlia拓扑。
    
    上图是 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
    具体运行如何就看后续反馈了,毕竟要每个节点必须遵循引导协议才能达到饱和的Kademlia连接和维护,别误会,我没有看衰他,只是提出我所认知的问题,而且Swarm还在测试网中不是么,BTW这次升级了0.6.x,据说有某个或某些重要协议改变了,都在一步一步变好。
    在第二层中还要求了固定大小的不可变的储存数据块。
    基本只要知道因为储存模型是对块有限制的,所以Swarm现阶段只接受两种块-已经寻址的内容块和单个owner块,简单理解就是一个普通块(块小,减少下载延迟),一个特殊块(块大,可包含普通块,诚信概念偏弱点,只能由single owner创建)。
    对于这两种块,Swarm都进行了加密处理。
    关于检索,Swarm也做到了不公开请求者身份的完全匿名的检索,通过反向检索也解决了防垃圾邮件,扩展,激励等有关的更多好处。
    然后转发节点是要费用的,如果发送量没被邀请的数据块,就可能被拒绝服务啊什么的,严重的就把你放黑名单惩罚了。
    关于第二层就说这么多吧。下篇聊聊Swam的一些好玩的激励设计。