SWARM 数字社会的存储和通信基础设施

Swarm是一个点对点的节点网络,它集中提供分散的存储和通信服务。该系统是经济上自我维持的, 因为Swarm具有一个内置的激励系统,通过以太坊区块链上的智能合同执行,并由BZZ代币提供动力。

在本文中,我们首先介绍了Swarm实现分布式固定大小数据单元存档的网络层。接下来,我们描述API提供的高级功能,它使Swarm成为去中心化网络可行的开发堆栈和部署环境。

1.简介

Swarm的使命是通过为去中心化的互联网提供可扩展的基础设施,塑造未来走向自我主权的全球性社会和无许可的开放市场。Swarm的愿景是通过对等存储和通信扩展区块链,以实现可以作为去中心化应用程序的操作系统和部署环境的世界计算机。

Swarm提供了持续性的服务,能够防止网络中断和有针对性的拒绝服务器攻击。作为一个不需要发布许可的平台,Swarm促进了信息的自由。Swarm具有其独特的隐私功能,如匿名浏览、不可否认的存储、不可跟踪的消息传递和不泄露元数据的文件表示格式,Swarm响应了对网络安全日益增长的需求。

内置的激励措施寻求优化带宽和存储资源的分配,并使Swarm在经济上能够自我维持。Swarm节点跟踪它们在每个对等连接上的相对带宽贡献,由于不平等消耗导致的超额债务可以在BZZ中解决。Swarm的信息发出方必须花费BZZ购买将数据写入Swarm的权利,并预付一些长期存储的租金。

2.DISC块的分布式不可变存储区

DISC(块的分布式不可变存储)是Swarm的底层存储模型。它由协作存储和服务数据的节点组成, 即假设各个节点追求的是能够最大化其运营商利润的策略,但整个网络的行为将具有以下属性:

  • 保护隐私和无许可的上传和下载
  • 强大的防御(阻止或改变对内容的访问) 随着需求的增加而自动扩展
  • 健全的内容保护机制
  • 最终忘记了不再需要保存的内容

任何拥有备用存储和带宽容量的人都可以作为节点操作员参与DISC并获得奖励。当操作员安装并运行Swarm客户端软件时,将创建一个新节点并成为网络的一部分,主要负责Swarm全球硬盘的一个部分。

在下面,我们定义了DISC,并解释了它是如何产生上述属性的。

2.1链接性,拓扑结构和路由性

DISC的最初职责是建立和维护一个节点网络,以便所有节点之间都可以相互发送消息。这种消息交换是通过节点之间使用点对点网络协议(libp2p1)的持久而安全的通信信道(2p1)实现的。Swarm希望节点能够建立起Kademlia2的连接性。

Kademlia假设每个节点会分配一个不同于网络地址的Swarm地址。通过计算前缀位的数量,两个Swarm地址的共同点,我们可以定义它们的接近程度。彼此最接近的节点形成了一个完全连接的领域(neighbourhood)。此外,每个节点连接到每个离散的接近类的多个对等点。

生成的拓扑保证中继在每次信息传递使消息离预期目标至少一步。这种技术使消息能够在任何两个节点之间进行路由,即使它们不保持直接连接。传递消息所需的跳点数的上限是节点总数中对数的上 限,从而确保任何两个节点始终能够相互到达,即使在一个非常大的网络中也是如此。

2.2数据块和存储性

Swarm中的标准存储单元称为块(chunk)。一个数据块(chunk)由最多4千字节的数据组成,并有一个地址。由于一个块的地址来自与节点的地址相同的地址空间,因此可以计算它们的接近性。Swarm的存储方案声明,每个块由节点存储的地址接近块本身的节点地址。

为了促进数据的机密性,数据块可以填充到4千字节,然后加密,这使得没有解密密钥的人无法将它们与随机数据区分开。即使对于未加密的块,节点操作员也没有简单的方法来确定数据块组成的内 容。由于Swarm节点无法选择它们存储的块,加密、上下文歧义和缺少泄露的元数据都可以保护它们免受所托管内容的责任。

为了将一个块插入到Swarm中,节点通过推送同步协议中继该块,直到它到达它所属的邻居。然后沿同一路径传递回确认块存储的语句。为了检索块,使用检索协议将具有块地址的请求路由到相关的邻居。如果路上的任何节点的本地存储中有相应的块,它将作为响应发送回。

节点使用pull-sync步协议不断同步其块存储。这保证了属于其邻居的所有块都被每个邻居冗余存储。这种冗余增加了弹性,在无法访问附近的一些节点的情况下,保持一个块的可用性。同步协议还确保当节点脱机和新节点加入网络时,邻居的存储保持一致。

2.3转发,隐私权和缓存

在Swarm中,路由消息是通过递归地转发消息从而更接近目的地,然后沿着同一路由传递回响应来实现的。此路由算法可实现两个重要特性:

  •  是谁发出的请求是含糊不清的
  • 随着需求的增加而自动扩展

    发起请求的节点发出的消息与来自简单地转发请求的节点的消息完全相同。这种含糊两可使得请求的发起者能够保护其隐私,从而促进无许可的发布和私人浏览。

启用自动比例分配,因为参与路由检索请求的节点可以选择存储其转发的块。接下来讨论的带宽激励措施提供了这种机会性缓存的经济动机。

2.4Swarm会议协议

Swarm会计协议(SWAP)确保节点操作员在路由消息中协作,同时保护网络免受带宽过度使用。

当节点中继请求和响应时,它们会跟踪它们与每个对等节点的相对带宽消耗。边界内的对等点在一定范围内进行服务对服务的交换。然而,一旦达到限制,债务方可以等待他们的债务随着时间的推移摊销,或者发送能够在区块链上兑现BZZ的支票来支付。

该协议确保Swarm可以免费为那些下载或上传少量内容或愿意等待通过在每个对等连接上提供对等服务的人使用。与此同时,希望付费的人在上传或下载更大量的数据时可以快速的体验。

节点有经济上的动机来帮助每个节点传递消息,因为每个成功地将请求发送到更接近目的地的节点都会获得BZZ。如果该节点本身不存储数据,它需要支付少量钱从更近的节点请求块。通过进行这样的交易,节点在服务请求时可以赚取一点利润。这意味着节点需要缓存块,因为在从更近的节点购买一次块之后,对同一块的任何后续请求都将赚取纯利润。

2.5容量短缺和垃圾收理

随着新内容添加到Swarm,每个节点的有限存储容量将耗尽。此时,节点需要一种策略来决定应该删除哪些块来为新的块让路。

每个Swarm节点的本地存储都有两个子系统:保留系统和缓存系统。

保留是固定大小的存储空间,专门用于存储属于节点相邻块的信息。是否保留由所附的邮戳

(postage stamp)决定。区块链上的一个合约允许为BZZ代币预先购买一批邮资(postage batch)。邮资(postage batch)使所有者有权发行有限数量的邮戳(postage stamp)。这些邮戳然后作为一个信号,告诉用户在Swarm中持久保存相关内容的费用。通过使用这个费用对首先从保留中删除的块进行优先级,存储节点使磁盘的效用最大化。邮戳(postage stamp)的价值随着时间的推移而减少,就像存储租金定期从批处理余额中扣除一样;一旦邮票的价值不再足够,相关的区块将被从储备中剔除,并进入缓存。

缓存的作用是保留由于保证金不足的数据块,或者由于该数据块距离节点地址太远。通过删除最长时间前请求的块,在达到容量时,会定期删除缓存。由于最后一个请求的近期性是流行程度的合理预测因素,具有更多SWAP收入的部分将被优先保留。结合机会性缓存,这种垃圾收集策略使运营商从带宽激励中获得的利润最大化,而在网络层面上,则实现了流行内容的自动扩展。

2.6数据块类型

以前,我们已经将数据块定义为DISC中数据的标准单位。有两种基本的块类型:内容寻址块(content-addressed chunks)和单所有者块(single-owner chunks)。

内容寻址块的地址基于其数据的哈希摘要。使用哈希作为块地址,可以验证块数据的完整性。Swarm 使用基于块数据上二进制Merkle树的BMT哈希函数。

单个所有者块的地址将由所有者地址和标识符的哈希值来计算获得。单所有者块数据的完整性由所有者的加密签名来保证,以证明任意块数据与标识符的关联。换句话说,每个个体都拥有Swarm的部分地址空间,在其中他们可以自由地将内容分配给一个地址。

3.Swarm AIP的功能

除了块之外,Swarm还公开了用于处理更高级概念的API,如文件、具有各种元数据的文件的层次化集合,甚至节点间消息传递。API试图镜像那些已经在网络上使用的程序。更先进的新结构和数据结构可以映射到这些更高的层模式上,为任何希望从DISC提供的隐私和分散的核心产品中获益的人带来丰富和多样化的可能性。

3.1文件和集合

大于单个块中允许的4千字节的数据会被分成多个数据块。一组数据块由一个群哈希树表示,该树编码了文件在上传过程中被分割成块的方式。此树由一组叶节点块组成,其中包含数据本身,由一层或几层中间块引用,每个中间层都包含对其子块的引用。

整个文件的内容地址然后由根块的哈列摘要确定,即跨越整个文件的哈希树的Merkle根目录。这样, 文件的地址将成为其校验和,从而可以验证内容的完整性。表示文件作为平衡的Merkle块树还提供对文件有效的随机访问,因此,可以有效地提供范围查询。

要表示集合,Swarm使用了清单(manifests)。清单编码通用字符串引用映射,允许它对目录树、键值存储或路由表进行建模。这些分别使Swarm能够实现文件系统,作为数据库,甚至为网站和数据应用程序提供虚拟托管。

如果我们将URL的主机部分解释为引用清单,则显示提供基于URL的寻址,而URL路径用作映射中向上查找的键,该URL路径仅到达文件引用。

清单(manifests)编码以压缩的Merkletrie形式表示的map,用数据 块对三角图中的节点进行序列化。查找路径时,我们只需要检索与我们遍历的分支节点对应的块。这确保了有效地查找具有延迟和带宽开销为对数的文件/记录。

3.2跟踪更新:信息输入和区块解决方案

信息输入是一个单一所有者块的示例,它允许对可变资源的影响。此外,信息输入还能够表示可变资源的版本化修订、对主题的顺序更新或由一方在通信渠道中发布的连续消息。

信息输入的工作机制是通过定义单一所有者块的标识符,就像从一个主题或者指标派生出的一样。当发布者和存储用户就什么时候和如何更新指标达成一致时,可以构建和查找对信息输入更新的特定引用。

类似于DNS如何将域解析为主机服务器的IP地址,Swarm通过使Ethereum Name Service(区块链上的一组智能合约)将它们解析为引用来支持人类可读的域名(例如swarm.eth)。

在ENS上注册的引用可能会被更新,这种情况发生在网络应用程序或者其所代表的网站由于更新获取了一个新的swarm引用。或者说,当域名引用一条信息输入时,用户可以从人类可读的域名中受益, 同时也可以更新他们的内容而无需与区块链交互并支付相关的交易成本。

3.3信息传递

PSS(Swarm上的邮政服务)是Swarm中直接的节点与节点之间消息传递的协议。它是通过为目标收件人加密消息,并将主题包装在内容地址块中来实现的。由于数据块的制作方式使其内容地址属于收件人的邻居,因此交付自然会由推送同步协议来处理。

此外,对于任何第三方,该消息与随机加密块无法区分,因此被称为“特洛伊木马(Trojan)”块。希望接收PSS消息的节点将尝试解密和解压到达其附近的所有块。在成功为合法收件人解密和打开木马块后,客户端节点可以将消息明文发送给使用PSS API订阅该主题的应用程序。

PSS还提供异步传递,因为块是持续存在的,并最终会同步到所有邻居节点,即使它们会晚一点上线。

由于PSS允许用户接收来自迄今为止未知身份的消息,它是向公共身份发送匿名消息的理想通信原始语。例如,注册或者通过建立一个使用数据输入的频道来建立一个保密通信以达到初始化合约来启动线程的目的。由于PSS不需要对收件人执行操作(例如,轮询),因此它可以作为推送通知的推荐原语。

3.4配对和恢复

DISC最终会忘记那些很少被访问和不付费的内容。通过匹配数据块,节点可以确保它们将在本地保留特定的内容。然而,这些本地定位器(pinners)可以参与响应性或主动性的内容恢复,以保障所有用户的利益。

反应性恢复涉及一个恢复协议,在检索失败时,通过使用PSS发送恢复请求来通知定位器(pinner) 丢失的块。定位器(pinner)侦听恢复请求,并通过重新上传丢失的块,然后在重试时将可以找到这些数据块。这种备用恢复功能还允许直接从发布者节点获取原始内容,并且类似于一些现有文件共享解决方案(BitTorrent、IPFS)中的主要操作模式。

相反的,主动式恢复,或者说数据管理工作的原理是,在定位器(pinner)主动检查网络中的可用内容并在发现内容缺失的时候重新上传数据块。

4.经济模型

  • 出币机制
     

Swarm的出币机制与传统的爆块挖矿不同,是节点与节点数据交互从而产生代币BZZ,与节点的交互频率越高,收益越高。更注重的是带宽和储存算力。

  • 价格机制

如果Swarm的节点需求增多,在官方购买BZZ的需求就会增加,供大于求就会涨价。

生态越来越完善,热度上升,应用场景增多也会导致BZZ上涨。

官方会通过去中心化交易通道根据价格的波动进行铸造和销毁来使BZZ代币的价格更加稳定。

  • 代币分布
     

5.Swarm和filecoin,chia对比
 


6.总结

1. Swarm旨在构建一个自主数字社会,数据的存储和通讯无需经过本人以外的他人许可,从而真正实现自由开放的网络环境。Swarm所提供的API及其他相关工具均经过精心设计,以支持所有传统的网络浏览器,从而能够即刻提供更注重隐私的、去中心化的替代方案,以替代现有的万维网

(World Wide Web)。

2. Swarm实现了去中心化存储,与filecoin功能类似。与Filecoin进行对比,filecoin网络其实并没有存储太多的有用信息,还处于早期阶段。而Swarm是以太坊基金会投资的项目,其上线后会和eth有更好的交互,eth的热度会使Swarm在存储的应用层面有更显著的优势。因此Swarm具有更好的前景。

3. 针对Swarm目前的主要投资方式为挖矿和二级市场买卖赚取差价。对于挖矿来说,目前还处于早期,具体挖矿情况还不明朗,可等到正式上线,挖矿稳定后再进行投资决策。需要注意的是, BZZ的出币机制与传统区块链方式不同,并不是爆块挖矿,而是基于数据块之间数据交互来产生bzz。对于二级市场而言,长期来看,项目具有巨大潜力。

免责声明:本报告仅代表代表8090投研部观点,仅供分享交流使用,不构成任何投资建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值