LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > js-IPFS0.48.0发布具有连接性改进和较小的块存储

js-IPFS0.48.0发布具有连接性改进和较小的块存储

2020-07-23 星际大陆 来源:区块链网络

亮点

js-IPFS 0.48.0 具有更好的默认连接,更小的块存储和更直观的API的新闻

default默认情况下启用代理节点

传统上,JS IPFS主要针对浏览器,如果您想使用DHT,则浏览器是一个糟糕的地方。通常,您在页面上的时间不足以进行或响应DHT查询,也无法拨号,因此即使您能够宣传自己作为给定区块的提供者,也没有人可以与您建立联系检索该块,导致每个人的服务质量下降。更糟糕的是,通过DHT查找更多同伴和内容的方式使您陷入困境。

有多种方法可以为浏览器内IPFS节点提供更好的网络体验,其中一种是Delegate ? Nodes。委托节点是一个网络对等体,代表网络上的其他节点执行某些操作。在这种情况下,它将代表我们进行DHT查询,因此我们可以找到比以往更多的同伴和更多的内容。

js-IPFS 0.48.0 默认情况下在配置中启用委托节点,这意味着您应该看到比以前更多的对等节点,并且能够更快,更可靠地找到内容。

默认情况下,它使用公共委托节点为您提供最佳的即用型体验。这些节点是共享的公共点,但没有可用性保证,并且可能是资源争用的源头。如果要在生产环境中部署JS IPFS,则应托管自己的委托节点并相应地配置JS IPFS。

DHT配置

JS IPFS 的完整DHT实施以及Go IPFS 0.5中进行的所有更改要到今年晚些时候才能发布,但是暂时您可以运行实验性DHT实施。此实现尚不完整,因此某些功能可能无法按预期工作,但是您的节点可能会随着时间的推移而降低性能,但您应该能够使用它来解析内容并查找对等对象。

DHT对等方以客户端模式或服务器模式运行。DHT客户端可以进行查询以查找内容和其他对等方,但不会将自己宣传为内容的提供者或回答任何查询。您可能出于多种原因而处于客户端模式,但主要的原因是大多数DHT对等方都位于NAT防火墙之后,这意味着其他网络上的对等方无法通过ipfs.swarm.connect对其进行拨号。除非您知道您的节点将具有公共地址,否则应在客户端模式下运行它。

Go IPFS节点使用libp2p-autonat软件包来确定它们是否可以被外部网络上的对等方拨号 -如果可以,则它们将自己从DHT客户端升级到DHT服务器。JS IPFS正在支持Autonat ,但在它登陆之前,它将仅在客户端模式下运行,这是获得完全DHT支持的垫脚石。

block更小,更快的区块存储

在IPFS的早期,所有CID均为v0。这意味着它们只是一个简单的多重哈希 -一个以一些前缀字节为前缀的字节数组,该字节数组告诉您其余代表的字节(sha2-256,blake2s-128等等)是哪种哈希,以及存在多少字节。所述multihash通过在散列数据创建块,然后将其存储在包含在内的块存储IPFS回购。

后来的v1 CID到达了,他们在字节数组中添加了版本号和编解码器,但是CID仍然包含multihash-一个块可以对应于多个CID,只要它们包含相同的multihash即可。

块存储将CID转换为字节数组,并使用它们来生成块的密钥,这意味着可能会针对v0 CID和v1 CID存储同一块。由于块数据相同,因此,回购还在每个传递的CID上进行两次查找-一次作为v0 CID,如果未找到该块,则再次作为v1 CID。

随着版本的发布js-IPFS 0.48.0,现在所有块都针对从CID提取的base32编码的多哈希存储了。这意味着不再重复,也不再需要重复查找,但这是以需要从v7到v8进行回购迁移为代价的,以确保所有块都存储在正确的密钥下。

更直观的API

随着IPFS生态系统的发展,越来越多的开发人员对该项目产生兴趣,并开始使用我们的API。随着时间的流逝,其中许多有机增长,但并非所有人都有相等的时间投入其中。

ipfs.add()

随着时间的流逝,我们试图消除理解其他框架和开始使用IPFS的JavaScript语言怪异方面的要求。我们删除了拉流,以使开发人员可以专注于开发环境的自然原语-例如,节点中的流以及浏览器中的文件 / Blob。我们删除了将字符串转换为缓冲区的要求,使人们只需将字符串化的JSON作为文件添加到IPFS。

我们将整个API重构为从回调到Promises,然后从将Arrays返回到AsyncIterators,以允许在不使用外部库的情况下流式传输大量数据。

使用js-IPFS 0.48.0,ipfs.add现在返回单个项目。这个看似无害的更改带来了许多可用性方面的改进,因为一个非常常见的问题是“我添加了一个文件,然后又回来了,那是什么?” 然后您必须拿出白板和笔,在不知不觉中,您已经作了很长的解释,而他们想要做的就是收回CID。

带有可选参数的API

最近,我们发布了一项更改,允许将AbortSignal传递给所有API方法。这就需要向options每个尚未调用的API调用添加一个对象。这使我们陷入怪异的境地,其中一些参数是可选的,但没有出现在options参数中。更糟糕的是,某些API调用的操作会根据是否传递选项而发生巨大变化。

当您将诸如undefinedin的内容传递给可选的arg位置并且不传递options参数时,所有这些都会导致奇怪的行为和细微的错误,以及难以处理的,容易出错的内部代码,这些内部代码试图根据类型或类型猜测您传递的内容类型相同的对象的属性。

使用js-IPFS 0.48.0,API方法的所有可选参数现在都进入options对象。行为发生巨大变化的所有API均已分为更直观的命令。

—-

编译者/作者:星际大陆

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

LOADING...
LOADING...