1. 首页
  2. 技术分享

新年新版本,js-ipfs 0.34.0来啦💥

速度更快,运作更灵活的IPFS横空出世了

🔦亮点

读取Protobuf DAG节点的速度非常快🏎

读取protobuf-dag节点的速度会大大提高,内存也会减少。以前的protobuf dag节点(简称dag-pb节点)带有多重哈希属性(CIDV0),从而耗尽了计算给定节点哈希的CPU时间负载,因为它是从存储中检索到的,随着CIDV1的出现,无法保证哈希算法和长度是正确的。

所以,我们移除了它!🦖…但这不幸的是,在编写数据时,对象API就变得不那么有用-您返回的DAG节点基本上就是您输入的数据。因此,对象API被重构为返回CID而不是DAG节点来执行写操作……从此以后,我们都过着幸福的生活。

快速添加内容🚤

我们发现了一个瓶颈,这意味着添加到IPFS中的文件越大,所需时间越长——哦,不 😭!好消息,伙伴们,我们已经看到添加大文件的速度在某些情况下增加了50%或更多!💥

注释中阅读所有相关内容。

添加到MFS的HAMT支持🎄

我们把所有的新产品管理都放到了IPFS上!如今,NPM就像是5.3terabytes的数据,而且都是在MFS中进行的。这是超级RAD,但我们需要一个好的切分策略,因为5TB是一个lorra lorra文件。

如果你对IPFS上的NPM很好奇,可以在这里查看这个项目。

Pubsub和DHT上的IPNS📣

了解IPNS记录更新,并将您的IPNS记录读取并发布到DHT。一切都在那里,一切都很棒。对于那些刚接触IPNS的人,让我告诉你真相——IPNS把易变变量放在不可变中——这是一个古老的问题 🤣,内容寻址是RAD等等,但是如果我改变了一些东西,散列会改变——boo👎……但是,IPNS解决了这个问题,你会得到一个可改变内容的永久地址——欧耶!

当IPNS记录更改时,Pubsub上的IPNS可以更快地向感兴趣的同行发出消息。DHT上的IPNS同行可以首先找到并将您的IPNS地址解析为内容!在下一个JSIPFS版本(0.35)中,默认情况下将启用DHT,此版本将是史诗级的。

CID处理改进⚾️

CID简化成个人喜欢的版本——现在您可以在版本0的CID下添加数据,并使用版本1的CID将其恢复,反之亦然。这样一来,您可以用喜欢的任何多基编码对它们进行编码。版本0的CID都是base58btc,但如果您转换为版本1的CID,则可以使用base2、base32、base64url或其他代码对其进行编码:

# base2
010111000000010010001000000100011011010100010010000001010010111001110001011010111100010100000111000011101010101010101101111100000001011101110001011110100001000100111010101101010111111001000111110001001010000101100010110000001000011110101110100100010101110110100010110100110000001110
# base32
bafybeicg2rebjoofv4kbyovkw7af3rpiitvnl6i7ckcywaq6xjcxnc2mby
# base58btc
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
# base64url
uAXASIEbUSBS5xa8UHDqqt8BdxehE6tX5HxKFiwIeukV2i0wO

这一切都是为了在默认情况下顺利过渡到base32 cidv1——允许cid用作有效的URL源。了解更多信息

为了帮助您手动制作CID,我们为一组CLI命令引入了 --cid-base基本选项(以及?cid-base 一组HTTP API端点的cid base选项)。如下: jsipfs add file.txt --cid-base=base32
added bafybeibns4lrebrxaymvyshgmki5biwh6cd53idxfpen6ysomzrywtsm44 file.txt

DEPS升级了!💪

我们为您提供了WebUI 2.3(Quic支持、响应式导航栏和语言选择器)、libp2p 0.24和许多其他升级,使您获得更快、更小的JS IPFS。

API的更改🏗

现在编写DAG节点的方法对象是返回CID而不是dag节点。方法:

    • ipfs.object.patch.addLink
    • ipfs.object.patch.appendData
    • ipfs.object.patch.rmLink
    • ipfs.object.patch.setData
    • ipfs.object.put

作为IPLD DAG PB格式的一部分的DAGNode实例已被重构。这些实例不再具有multihash, cidserialized。这将影响以下返回这些类型对象的API方法:

        • ipfs.object.get
        • ipfs.dag.get
文件api方法add*, cat*, get*已从files移动到根命名空间。具体来说,已经进行了以下更改:
  • ipfs.files.add => ipfs.add
  • ipfs.files.addPullStream => ipfs.addPullStream
  • ipfs.files.addReadableStream => ipfs.addReadableStream
  • ipfs.files.cat => ipfs.cat
  • ipfs.files.catPullStream => ipfs.catPullStream
  • ipfs.files.catReadableStream => ipfs.catReadableStream
  • ipfs.files.get => ipfs.get
  • ipfs.files.getPullStream => ipfs.getPullStream
  • ipfs.files.getReadableStream => ipfs.getReadableStream

添加了新的核心文件API方法:

重命名的DHT API方法,以及更改的返回类型

  • ipfs.dht.query 返回PeerInfo阵列
  • ipfs.dht.findpeer更名为 ipfs.dht.findPeer 并返回 PeerInfo
  • ipfs.dht.findprovs 更名为 ipfs.dht.findProvs 并返回PeerInfo阵列
  • More info

在cli、http api和core中有一个新的选项,可以以字符串形式返回的任何CID指定多基编码。

已将--cid-base选项添加到以下CLI命令中:

  • jsipfs bitswap stat
  • jsipfs bitswap unwant
  • jsipfs bitswap wantlist
  • jsipfs block put
  • jsipfs block stat
  • jsipfs add
  • jsipfs ls
  • jsipfs object get
  • jsipfs object links
  • jsipfs object new
  • jsipfs object patch add-link
  • jsipfs object patch append-data
  • jsipfs object patch rm-link
  • jsipfs object patch set-data
  • jsipfs object put
  • jsipfs object stat
  • jsipfs pin add
  • jsipfs pin ls
  • jsipfs pin rm
  • jsipfs resolve
    • 注意:这两个MFS命令已经应用到 --cid-base 选项:
  • jsipfs files ls
  • jsipfs files stat

?cid-base= 查询选项已添加到以下HTTP端点:

  • /api/v0/bitswap/wantlist
  • /api/v0/bitswap/stat
  • /api/v0/bitswap/unwant
  • /api/v0/block/put
  • /api/v0/block/stat
  • /api/v0/add
  • /api/v0/ls
  • /api/v0/object/new
  • /api/v0/object/get
  • /api/v0/object/put
  • /api/v0/object/stat
  • /api/v0/object/links
  • /api/v0/object/patch/append-data
  • /api/v0/object/patch/set-data
  • /api/v0/object/patch/add-link
  • /api/v0/object/patch/rm-link
  • /api/v0/pin/ls
  • /api/v0/pin/add
  • /api/v0/pin/rm
  • /api/v0/resolve

cidBase 选项已添加到以下核心功能

  • resolve

注意:如果cid是v0 cid,那么使用bitswap, dag and objectAPIS中的cid base选项不会自动将cid升级到v1,也不会应用指定的编码。这是因为这些API返回带有链接的IPLD对象,如果要重新添加该节点,更改链接的版本会导致该节点不同哈希。另外,用于检索节点的cid实际上不再引用您返回的节点。阅读本文了解更多内容。

所有返回 big.js 实例的API方法现在都返回 bignumber.js 实例。

原创文章,作者:三色団子,如若转载,请注明出处:https://ipfsdrop.com/tech/xinnianxinbanbenjs-ipfs-0-34-0laila%f0%9f%92%a5/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

(+86)18301922335

在线咨询:点击这里给我发消息

邮件:haskell@freechains.cn

工作时间:7×24小时

QR code