swarm主网3.swarm的白皮书精简版

Posted weixin_46596227

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swarm主网3.swarm的白皮书精简版相关的知识,希望对你有一定的参考价值。

读前说明

本文原文来自: https://www.ethswarm.org/swarm-whitepaper.pdf

简要介绍

Swarm 节点跟踪它们在每个对等连接上的相对带宽贡献,分配不合理的超额债务问题均可以在 BZZ 中解决。 Swarm 中的数据发布者必须花费购买 BZZ 以享有将数据写入 Swarm网络 的权利并预付一些租金以进行长期存储。

1.底层对等网络

用作对等传输的对等网络协议;

2.具有不变存储的覆盖网络 (swarm核心)

该协议为块(固定大小的数据块)的分布式不可变存储;

3.高级别的数据访问API (swarm核心)

提供高级数据访问并为基础定义 API的组件层功能;

4.应用层

定义标准并概述最佳实践的应用层,以用于更精细的用例。

分布式不可变存储的块

DISC 是Swarm的底层存储模型,这里面包括了节点之间的数据存储,供应等服务方式。假设单个节点都做了利益最大化的策略,那么整个网络会有以下属性:

  • 隐私保护和禁止未经许可的上传和下载
  • 强大的防御措施可防止在发布后阻止或更改对内容的访问
  • 随着需求的增加自动扩展
  • 保护内容的完整性
  • 销毁不再需要保留的内容

任何拥有备用存储和带宽容量的人都可以作为节点运营商参与 DISC 并因此获得奖励,当节点运营商安装并运行SWARM的客户端软件。一个新节点就被创建并成为SWARM网络的一部分,成为 Swarm 全球硬盘驱动器的一个扇区。

在下文中,我们将解释DISC是如何产生上述属性。

连接、拓扑和路由

DISC 的最初职责是构建和维护一个节点间的网络,使所有节点都可以相互发送消息。节点之间使用对等网络协议 (libp2p) 的持久安全的通信管道进行消息交换。Swarm 希望节点建立基于 Kademlia算法的连接: 以这样一种节点连接到其他节点的特定子集,节点关于转发相应位置的决策会引申出消息的全局最优流动路径。

Kademlia 假设每个节点都被分配了一个Swarm 地址。 通过计算前缀位数,计算出两个 Swarm 地址的共同点,我们可以定义它们的相互接近的程度。 彼此最接近的节点形成一个完全连接的邻域。 此外,每个节点都连接到来自若干邻近层级的多个对等点(见图 2)。
在这里插入图片描述

图2: Kademlia 连通性. The fully connected neighbourhood containing minimum 8 nodes is defined by proximity order d, The node is also connected to at least 8 balanced peers in each shallower proximity bucket d − 1, . . . , 0.

由此产生的拓扑结构,保证了消息中继在每一次消息跳跃移动到距其预期目的地越来越近(见图 3)。 这种技术使消息能够在任意两个节点之间路由,即使它们不直接连接。 传递消息所需的跳跃数有一个上限,它是节点总数的对数,从而确保任何两个节点始终能够相互访问,即使在非常大的网络中也是如此。

在这里插入图片描述
图 3: Request–response round-trips in forwarding Kademlia. Here a node with overlay address …0000… is sending a request to target …1111… to which the closest online node is …1110… The leading ellipsis represents the prefix shared by the requestor and target which has a length of n bits, the trailing ellipsis represents part of the address that is not relevant for routing as at that depth nodes are already unique. The requestor forwards a message to the connected peer they know that is nearest to the destination (yellow). The recipient peer does the same. Applying this strategy recursively relays the message via a chain of peers (yellow, orange, blue) each at least one PO closer to the destination. Relaying nodes on the way remember the peer a request came from so that when the response arrives, they can backward it (i.e. pass it back) along the same route.

块和存储

Swarm 中的规范存储单位,称为:块。 一个块最多包含 4 KB 的数据并有一个地址。 由于块的地址取自与节点地址相同的地址空间,因此可以计算它们的接近度。 Swarm 的存储方案声明每个块由地址接近块本身的节点存储。

为了促进数据的机密性,可以将数据块填充到 4 KB 然后加密,使任何没有解密密钥的人都无法将它们与随机数据区分开来。 即使对于未加密的块,节点操作员也没有简单的方法来确定数据块属于哪些内容的一部分。 由于 Swarm 节点无法选择它们存储的数据块,因此加密、上下文的模糊性和没有泄露的元数据都为它们提供了保护。

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

在这里插入图片描述
图 4: Push, Pull and Retrieve Protocols

节点使用拉取同步协议持续同步其块存储。 这保证了属于其邻域的所有块都被每个邻域能够冗余存储。 这种冗余增加了弹性,在附近的某些节点无法访问的情况下维持块的可用性。 同步协议还确保当节点离线和新节点加入网络时,社区的存储是一致的。

转发、隐私和缓存

在 swarm 中,路由消息是通过递归地将消息转发到离目的地更近的地方来实现的,然后沿着相同的路由传回响应。这种路由算法具有两个重要的特性:

发起请求的人不明确

节点发起请求的消息在各方面都与来自节点的消息简单转发的请求相同。 这种模糊性使请求的发起者能够保护他们的隐私。

随着需求的增加自动扩容

由于参与路由检索请求的节点可以选择存储他们转发的块,因此启用了分布的自动缩放。 这种机会缓存的经济动机是由接下来讨论的带宽激励作为支撑的。

Swarm 记帐协议

Swarm 记帐协议 (SWAP) 确保了节点运营者能够在消息路由层进行协作。从而保护了网络的稳定性。

每当节点中继请求和响应时,它们会对比对等节点间的带宽消耗量。 在一定范围内,同行参与服务换服务交换。 但是,一旦差额达到限定值,债务方可以等到他们负债随时间摊销,或者可以通过发送支付BZZ 以兑现支票来消除债务(见图5)这会在区块链上进行记账。

该协议通过在每个对等连接上提供互惠服务,确保那些正在下载或上传少量内容或愿意等到获得信用的人可以免费使用 Swarm。 同时,为那些希望付费的人提供了上传或下载更高容量时的快速体验。

节点在经济上的动机是帮助每个节点中继转发消息,因为每个成功地将请求路由到更接近目的地的节点在请求被成功服务时获得 BZZ奖励。 如果该节点本身不存储数据,则它会支付少量费用从更近的节点请求数据块。 通过进行此类交易,节点在处理数据请求的服务时,可以赚取少量的利润。 这意味着节点有动力缓存数据块,因为在从附近的节点购买了一次数据块之后,对相同数据块的任何后续数据请求处理,赚取的都将是纯利润。

容量短缺和垃圾收集

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

每个 Swarm 节点的本地存储都有两个子系统,备用和缓存。

储备是一个固定大小的存储空间,专用于存储属于节点邻域的块。 每个数据块是否保留在保护区中,取决于它所附的邮票。 区块链上的合同允许为 BZZ 代币预先购买一批邮资。 一批赋予所有者发行有限数量的邮票的权利。 然后,这些邮戳用作指示用户在 Swarm 中保留相关内容的价值的受信信号。 通过使用这个值来优先考虑首先从保留中删除哪些块,存储节点最大化了 DISC 的效用(见图 6)。 邮票的价值随着时间的推移而下降,就像定期从批次余额中扣除仓储租金一样; 一旦标记的值不再足够,相关的块就会从保留区中驱逐并放入缓存中。

在这里插入图片描述
图 5: Swarm Accounting Protocol. This figure illustrates how peers keep track of each other’s bandwidth contribution. Starting from zero balance on both sides at step 0 is followed by a period of message exchange and leads through step 1, to step n, all the way where the debt on one side reaches a threshold. The debt can be reduced over time or the peer in credit gets compensation.

缓存的作用是保留由于批处理值不足或距离节点地址太远而不受保留保护的数据块。 当容量达到时,通过删除长时间不用的数据块来定期修剪缓存。 由于数据块的受欢迎程度做指标预测,因此将优先保留具有更多贡献收入的块。 结合随机缓存,这种垃圾收集策略最大化了运营商从带宽激励中获得的利润,同时在网络层面上,实现了热门内容的自动缩放。

在这里插入图片描述
图 6: Postage Stamp Priority

块类型

之前,我们已将数据块定义为 DISC 中的规范数据单元。 有两种基本的块类型:内容寻址的块和单一所有者的块。

内容寻址块的地址基于其数据的散列摘要(见图 7)。 使用散列作为块地址可以验证块数据的完整性。 Swarm 使用基于二叉 Merkle 树的 BMT 哈希函数在块数据的段上。

在这里插入图片描述
图 7: A content addressed chunk has an at most 4KB payload. The address is calculated as the hash of the span and the Binary Merkle Tree hash of the payload.

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

Swarm API 的功能

除了块之外,Swarm 还公开了用于处理更高级别概念的 API,例如文件、具有各种元数据的分层文件集合,甚至节点间消息传递。
在这里插入图片描述
图 8: Single-owner chunk. The chunk content is composed of headers followed by an at most 4KB payload. The last header field is the 8 byte span prepended just like in content addressed chunks. The first two header fields provide single owner attestation of integrity: an identifier and a signature signing off on the identifier and the BMT hash of span and payload. The address is the hash of the id and the signer account.

文件和集合

大于单个块中允许的 4 KB 的数据被拆分为多个。 一组在一起连续的数据块由一个群哈希树表示,它对文件在上传过程中被拆分成块的方式进行编码。 这棵树由一组叶节点块组成,包含数据本身,这些数据由一层或多层中间块引用,每一层都包含对其子块的引用(见图 9)。

然后整个文件的内容地址由根数据块的哈希摘要确定,即跨越整个文件的哈希树的 Merkle根。 通过这种方式,文件的地址成为其校验和,从而能够验证内容的完整性。将文件表示为块的平衡 Merkle 树还提供了文件中的高效随机访问,因此可以有效地提供一定范围的模糊查询。

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

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

在这里插入图片描述
图 9: Swarm hash: data input is segmented to 4-kilobyte chunks (gray), that are BMT hashed. Their hashes are packaged into intermediate chunks starting on level 0, all the way until a single chunk remains on level n.

清单以压缩的 Merkle trie 的形式对它们表示的映射进行编码,使用块序列化了 trie 的节点(见图 10)。 当查找路径时,我们只需要检索与我们遍历的分支上的节点对应的块。这确保了文件/记录的高效查找,延迟和带宽开销是集合大小的对数。

在这里插入图片描述
图 10: Manifest chunks represent nodes of a compacted trie: they enlist continuations indexed by the next byte of the key. The continuation specifies the reference to a file with the remainder of the key or, if there are still several continuations, the reference to the trie node corresponding to the next fork on the path together with the longest shared prefix.

文件的哈希树中间块中的子节点引用和集合的清单树节点在位置上与 BMT 哈希的段对齐。 因此,Swarm 支持紧凑证明,即特定数据段是给定偏移量的给定 URL 上的文件的一部分,这是公开可证明的数据库索引和去信任聚合的基础。

跟踪更新:提要和域解析

提要是一个单一所有者块的示例,它允许保留对可变资源的记录。 除其他外,提要能够表示可变资源的版本修订、主题的顺序更新或一方在通信渠道中发布的连续消息。

提要通过定义从主题和索引派生的单一所有者块的标识符来工作。 当发布者和内容消费者就索引更新的方式和时间达成一致时,可以构建和查找对提要更新的特定引用。

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

每当它代表的 Web 应用程序或网站由于更新而获得新的群引用时,在 ENS 中注册的引用可能会更新。 或者,当域名引用提要时,用户可以从可读的域名中获益,同时还可以更新他们的内容,而无需为每次更改与区块链交互并支付相关的交易成本。

消息传递

PSS (Postal Service on Swarm) 是 Swarm 中直接节点到节点消息传递的协议。它通过为预期收件人加密消息并将其与主题包装在内容寻址块中来实现。 由于数据块的制作方式使其内容地址落入接收者的临近节点中,因此推送同步协议自然会负责传递。

此外,对于任何第三方,该消息与随机加密的块无法区分,因此称为“特洛伊木马”块。 期望接收 PSS 消息的节点将尝试解密和解包到达其邻居的所有块。

在作为合法接收者成功解密并解开木马块后,客户端节点可以将消息明文发送到使用 PSS API 订阅该主题的应用程序。

PSS 还提供异步传送,数据块上线后,被持久化并最终同步到所有邻居节点。

由于 PSS 允许用户从迄今为止未知的身份接收消息,因此它是一种理想的通信原语,用于将匿名消息发送到公共身份,例如注册或通过使用提要设置安全通信通道来启动线程的初始联系人。 由于 PSS 不需要接收者的操作(例如,轮询),因此它用作推送通知的推荐原语。

固定和恢复

DISC 最终会忘记很少访问且未付费的内容。 通过固定块,节点可以确保它们将在本地保留特定内容。 然而,为了所有用户的利益,这种本地订阅者可以参与内容的被动或主动恢复。

响应性恢复涉及恢复协议,在检索失败的情况下,通过使用 PSS 发送恢复请求来通知 pinner 丢失的块。 Pinner 侦听恢复请求并通过重新上传下载器将在重试时找到的丢失块来响应。 这种回退恢复功能还支持直接从发布者节点播种原始内容,并且类似于一些现有文件共享解决方案(BitTorrent、IPFS)中的主要操作模式。

相反,当 pinner 主动检查网络中内容的可用性并在发现它们丢失时重新上传块时,就会提供主动恢复或数据管理。

结论

Swarm 被引入作为节点的对等网络,这些节点共同提供分散的存储和通信服务。 Swarm 无需许可且私密,可满足网络上的言论自由、数据主权和开放市场的需求,同时通过完整性保护、抗审查和攻击弹性来保持安全性。 本文涵盖了使用 Bee 1.0 初始主网启动中包含的功能。

其他相关参考

https://github.com/ethersphere/bee/
https://ethswarm.org/
https://www.ethswarm.org/The-Book-of-Swarm.pdf

以上是关于swarm主网3.swarm的白皮书精简版的主要内容,如果未能解决你的问题,请参考以下文章

币图科技_分析Swarm最新官方白皮书

币图科技_分析Swarm最新官方白皮书

币图科技_分析Swarm最新官方白皮书

了解Swarm的流量奖励机制才能更好挖矿

EOS的危险信号——记主网上线一周年后

EOS的危险信号——记主网上线一周年后