LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > Swarm白皮书发布:详解Swarm存储机制和API函数

Swarm白皮书发布:详解Swarm存储机制和API函数

2021-06-18 区块链小柴 来源:区块链网络

SWARM 1.0 主网已经上线,让我们来看看它有什么特点。

原标题:《Swarm 最新官方白皮书》作者:Swarm

本文为Swarm最新发布的白皮书全文。内容仅供参考。请以官方白皮书为准。

介绍

Swarm 的使命是通过为去中心化互联网提供可扩展的底层基础设施,在未经许可的情况下塑造一个自治的全球社会和一个开放的市场。Swarm 的愿景是通过点对点的存储和通信系统扩展区块链,使“世界计算机”成为现实。这台“世界计算机”将被用作去中心化应用程序的操作系统和部署环境。

Swarm 可以提供不间断的服务,更有效地抵御网络中断或有针对性的 DoS 攻击。Swarm 作为免授权的发布平台,有效地促进了信息自由。Swarm 以其独特的隐私功能响应不断增长的网络安全需求,例如匿名浏览、可拒绝存储、不可追踪的消息传递和不泄露元数据的文件格式。

Swarm 的内置激励机制旨在优化带宽和存储资源的分配,使其在经济上能够自我维持。Swarm 节点在与每个节点的连接中跟踪其相应的带宽贡献,并使用 BZZ 解决因消费不均造成的额外债务。Swarm 中的发布者必须花费 BZZ 购买将数据写入 Swarm 的权利,并为一些长期存储预付租金。

Swarm 的模块化设计由明显可分离的层组成。从技术上讲,第 2 层“不可变存储覆盖网络”和第 3 层“通过 API 进行高级数据访问”构成了 Swarm 的核心。

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

DISC(Distributed Immutable Storage of Chunks)是Swarm的底层存储模型。它由存储和提供数据的节点组成。在这些节点之间的协作中,假设每个节点都追求其运营商利润最大化的策略,那么整个网络将表现出以下特征:

隐私保护和免许可上传下载

强大的防御措施,内容一旦发布,就很难屏蔽或更改访问权限

随着需求的增加自动扩展

受完整性保护的内容

不再需要保存的内容最终会被遗忘

任何拥有多余存储空间和带宽的人都可以作为节点运营商参与 DISC 并获得奖励。当运营商安装并运行 Swarm 客户端软件时,会创建一个新的节点,成为 Swarm 网络的一部分,这基本上相当于照顾了 Swarm 的一小部分,一个全局硬盘。

接下来,我们将进一步定义 DISC 并解释为什么它会产生上述特性。

连接、拓扑和路由

DISC 的最初职责是建立和维护一个节点网络,以便所有节点可以相互发送消息。此消息交换是通过使用 p2p 网络协议 (libp2p) 存在于节点之间的持久且安全的通信通道进行的。Swarm 期望节点建立 Kademlia 连接:当连接到其他特定节点集时,节点对发送地址的本地决定最终会允许消息的传输找到全局最优路由。

Kademlia 假设每个节点都分配了一个与其网络地址不同的 Swarm 地址。通过计算前缀位值中两个 Swarm 地址的公共值,我们可以定义它们的接近度。彼此最接近的节点将形成一个完全连接的邻域。此外,每个节点都连接到来自每个离散邻近类的多个对等节点。

注1:Libp2p是一个方便用户开发去中心化点对点应用的网络框架。

注2:Kademlia是Petar Maymounkov和David Mazières为构建分布式P2P计算机网络而设计的P2P覆盖网络传输协议。它是一个基于异或运算的 P2P 信息系统。它规定了网络的结构,并规范了节点之间的通信和信息交换方式。

由此产生的拓扑结构确保在每个信息转换中,中继将消息至少移动到更接近其预期目的地的一步。这种技术使消息能够在任何两个节点之间路由,即使这两个节点不保持直接连接。传递消息所需的转换次数上限是节点总数的对数,因此即使在非常大的网络中,任何两个节点都可以始终相互连接。

块和存储

Swarm 中的标准存储单元称为块。该块由最多 4 KB 的数据组成,并附有一个地址。由于块的地址和节点的地址来自同一个地址空间,因此可以计算它们的接近度。Swarm 的存储方案规定,每个区块由节点存储,其地址接近于区块本身的地址。

为了方便数据的保密性,可以将块填充到 4 KB 后进行加密,使没有密钥的人无法将其与其他随机数据区分开来。即使对于未加密的区块,节点运营商也无法轻易确定每个区块来自什么内容。由于 Swarm 节点无法自行选择存储和加密哪些数据块,来源的模糊性和无法泄露元数据为它们提供了有效的保护,使它们免于对其存储的内容负责。

为了将区块插入到 Swarm 中,节点通过推送同步协议转发区块,直到它到达它所属的邻居。然后,该块的存储确认将沿着相同的路径发回。要检索块,只需使用检索协议将带有块地址的请求路由到相关邻域。如果途中任何节点在其本地有相应的块,它将以响应的形式发回。

节点使用拉同步协议来持续同步它们的块存储。这确保每个邻域冗余存储属于其邻域的所有块。这种冗余增加了数据传输的灵活性,即使在某个邻域中的某些节点无法访问时也可以保持块的可用性。同步协议还确保在节点离线和新节点加入网络时,邻居的存储内容保持一致。

转发、隐私和缓存

在 Swarm 中,消息的路由是通过将消息递归地转发到更接近其目的地的位置,然后沿着相同的路由返回响应来实现的。这种路由算法有两个重要的属性:

提出要求的人含糊其辞。

随着需求的增加自动扩展。

发起请求的节点发送的消息与只转发请求的节点发送的消息相同。这种模糊性允许请求的发起者确保他们的隐私不被侵犯,从而促进无许可的内容发布和隐私浏览。

由于参与路由检索请求的节点可能会选择存储他们转发的区块,因此必须启用可自动扩展的分发系统。下面讨论的带宽激励机制为这种机会性缓存提供了经济动机。

Swarm 会计协议

Swarm Accounting Protocol(Swarm Accounting Protocol,SWAP)确保节点运营商在路由消息时会进行协作,同时保护网络免受随机使用带宽的影响。

当节点转发请求和响应时,它们会跟踪它们与每个节点之间的相对带宽消耗。在一定限度内,服务在节点之间交换。但是,一旦达到限额,债务人可以选择等到其债务随时间摊销,也可以通过发送支票来支付,支票可以在区块链上兑现为 BZZ。

该协议可以保证下载或上传少量内容的人可以免费使用Swarm,愿意等待的人也可以在与各个节点互惠服务后免费使用Swarm,直到获得足够的信用。同时,在上传或下载大量内容时,为希望付费的用户提供更快的体验。

当帮助每个节点转发消息时,节点具有经济动机,因为每个节点成功将请求路由到更接近目的地的节点,当请求成功传递时,可以获得 BZZ。如果节点本身不存储数据,那么它只需要支付少量费用就可以向更近的节点请求数据块。通过这样的交易,节点在处理请求时可以获得一点收益。这意味着节点有缓存区块的动机,因为在从更近的节点购买区块后,对同一区块的任何后续请求都将获得纯利润。

容量不足和垃圾收集

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

每个 Swarm 节点的本地存储都有两个内置子系统,即“reserve”和“cache”。

“Reserve”是一个固定大小的存储空间,专用于存储属于节点邻域的块。一个区块是否留在“储备”中取决于它所附的“邮票”。区块链上的合约允许通过 BZZ 购买“邮资批次”。“批次”的所有者有权发行有限数量的邮戳。这些邮戳作为一种信任标记,向用户表明在 Swarm 中存储某些相关内容的具体价值。通过使用这个值的大小来决定应该先删除“reserve”中的哪些块,这样store的节点才能最大化DISC的效用。每个邮戳的价值会随着时间的推移而减少,就像定期从“批次”的余额中扣除仓储租金一样;一旦邮戳价值不足,

“cache”的作用是保留因“batch”值不足或离节点地址太远而不受“reserve”保护的块。当容量达到限制时,缓存会被定期修剪,最长时间未请求的块将被删除。可以通过最后一次请求的时间来预测区块的受欢迎程度,具有更多 SWAP 收入的区块将首先被保留。这种垃圾回收策略结合投机缓存,最大化运营商的带宽激励收益,并在网络层面实现了热门内容的自动扩展。

块类型

在上面,我们将块定义为 DISC 中的标准数据单元。Swarm 中有两种基本块类型:内容寻址块和单一所有者块。

内容寻址块的地址基于其数据的哈希摘要。使用哈希作为区块地址可以验证区块数据的完整性。Swarm 在一小部分区块数据上使用基于 Merkle 树的 BMT(Binary Merkle Tree)哈希算法。

单个所有者块的地址是通过对所有者地址和标识符进行哈希处理而获得的。单一拥有者的区块数据的完整性由拥有者的加密签名来保证,这证明了任何区块的数据与标识符之间的关联。换句话说,每个身份都有一部分 Swarm 地址空间,在那里他们可以自由地将内容分配给一个地址。

Swarm API 的特性

除了块之外,Swarm 还公开了用于实现更高级别概念的 API,例如文件、具有各种元数据的文件的分层集合,甚至节点间消息传递。这些 API 试图反映那些已经在网络上使用的 API。可以在这些更高层次上汲取更多新颖的想法和数据结构,从而为每个想要从 DISC 提供的隐私和去中心化核心产品中受益的人带来丰富多样的可能性。

文件和集合

大于单个块中允许的 4 KB 的数据将被拆分为多个块。一组相同的块由一个 Swarm 哈希树(hash-tree)表示,它对文件在上传过程中分成块的方式进行编码。这棵树由一组叶节点块组成,其中包含数据本身,由一层或多层中间块引用,每个中间块包含对其子块的引用。

然后,整个文件的内容地址由根块的哈希摘要确定,即跨越整个文件的哈希树的默克尔根。这样,文件的地址就变成了它的校验和(checksum),从而可以验证内容的完整性。将文件表示为块的平衡默克尔树也提供了对文件的高效随机访问,因此可以高效地执行范围查询。

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

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

列表以压缩的 Merkle trie 的形式对它们表示的映射进行编码,并且块序列化前缀树的节点。在搜索路径时,我们只需要沿着我们遍历的分支的节点检索对应的块。这确保了文件/记录的高效搜索,其延迟和带宽是集合大小的对数。

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

跟踪更新:提要和域解析

提要是允许展示可变资源的单一所有者块的示例。提要可以表示可变资源的版本修订、主题的顺序更新或通信渠道中一方发布的连续消息。

提要的工作方式是定义从主题和索引派生的单一所有者块的标识符。当发布者和内容用户就索引的更新方法和更新时间达成一致后,他们就可以构建并找到特定的提要更新引用。

类似于 DNS 将域解析为主机服务器的 IP 地址,Swarm 使用以太坊域名解析服务 ENS(Ehereum-Name Service)——区块链上的一组智能合约将其解析为支持人类可读域的引用名称(例如,Swarm.eth)。

每当 Web 应用程序或其代表的网站因更新而获得新的 Swarm 引用时,就可以更新在 ENS 中注册的引用。或者,当域名引用提要时,用户可以从人类可读的域名中受益,同时更新其内容,而无需每次更改都与区块链交互并支付相关的交易费用。

消息传递

PSS(Postal Service on Swarm)是 Swarm 中节点之间的直接消息传递协议。它是通过加密预期接收者的消息并将其与内容寻址块中的主题包装在一起来实现的。由于块是以这样一种方式创建的,即它的内容地址落在接收者的邻居中,因此传送自然由同步推送协议处理。

此外,对于任何第三方而言,该消息无法与随机加密的块区分开来,因此也称为“木马”块。期望接收 PSS 消息的节点将尝试解密并打开所有到达其邻居的块。客户端节点作为合法接收者成功解密解压木马块后,可以将消息以明文形式发送给使用PSS API订阅主题的应用程序。

PSS 还提供异步传递,因为区块将继续存在并最终同步到所有相邻节点,即使这些节点稍后在线。

由于 PSS 允许用户接收来自未知个人的消息,因此它是一种理想的通信原语,用于向公众个人发送匿名消息(例如注册),或者通过 feeds 建立安全的通信通道来启动一个信息流到联系人。由于 PSS 不需要接收者执行任何操作(例如轮询),因此它可以用作推送通知的推荐原语。

固定和恢复

DISC 最终会忘记很少访问和未付费的内容。通过“固定”区块,节点可以确保它们在本地保留特定的内容。同时,这个“将钉钉内容保存在本地的钉钉者”可以参与内容的被动或主动回收,让所有用户受益。

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

相反,Swarm 还提供主动恢复或数据管理,所以当 Pinner 主动检查网络中内容的可用性,发现某些块丢失时,他们可以主动重新部署这些丢失的块。

综上所述

Swarm 是一个点对点网络,它的所有节点协同工作,提供去中心化的存储和通信服务。免许可和私有的 Swarm 满足了言论自由、数据主权和网络开放市场的需求,同时通过完整性保护、反审查和反攻击来确保其安全。本文介绍了 Bee1.0 初始主网上线所包含的功能。

这是一个里程碑,旅程才刚刚开始:加入 Swarm,共同完成赋予数字自由的使命。

Swarm 主网即将上线!现Swarm Bzz 超级服务器物理节点抢购,超级服务器启用,无需封装期,主网上线后第一时间部署开机抢挖头矿!节点赠送Bzz,可用于质押或者自由交易!错过了chia,跟上bzz头矿福利!

S:以上仅为星际区块链研究院发布,我们对数据的真实性负责,若转载,抄袭请联系作者,否者后果自负!

-END-

星际区块链星链社区成立于2018年3月,是一支专注于区块链一级市场金融项目投资孵化的机构,拥有千万级别的一级市场投资基金,并与币圈多个币圈头部资本达成战略合作。星链投研致力于发现、投资并孵化更多具有潜力价值的项目,从而推动赋能行业进步和应用落地,进一步建立投资生态,全面联合各个领域的资源,帮助项目更好地发展。

我们会不定期整理一级市场IDO LBP IEO前沿咨询和项目点评,如果你也对一级市场和暴涨山寨币感兴趣,可以加入我们的交流群一起讨论。

QQ:95510419

微信:wb9551_gz

微博:懂币的小柴

△风险提示:数字资产价格波动剧烈,投资数字资产风险非常大请币友注意投资风险,理性投资,盈亏自负

—-

编译者/作者:区块链小柴

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...