具有内容寻址功能的P2P数据链接


CID-内容标识符。IPFS中从其内容派生的数据块的唯一地址。

在本教程中,我们将探索IPFS DAG API,该API使我们可以将数据对象存储在IPFS中。(您可以在IPFS中存储更多令人兴奋的东西,例如您喜欢的cat GIF,但是您需要为此使用其他API。)

您可以通过将数据对象传递到ipfs.dag.put方法中来创建新节点,该方法将为新创建的节点返回内容标识符(CID)。

ipfs.dag.put({ hello: 'world'})

CID是IPFS中从其内容派生的数据块的地址。每当有人将相同的{ hello: 'world' }数据放入IPFS中时,他们都会获得与您获得的相同的CID。如果输入它们{ hell0: 'w0rld' },则CID将有所不同。

注意:在整个课程中,我们将使用以下代码编辑器。在run为您预先填充的函数中输入解决方案代码,请确保在该函数中返回请求的值。(您无需return run在最后更新该行;这就是使代码编辑器正常工作的地方。)

DAG-有向无环图。IPFS中的块形成图形,因为它们可以通过其CID指向其他块。这些链接只能指向一个方向(有向),并且在整个图形上没有循环或循环(非循环)。

有向无环图(DAG)的一项重要功能是能够将它们链接在一起。

在IPFS DAG存储中表达链接的方式与CID另一个节点的相同。

当我们给一个字段命名并使其值成为CID的链接时,我们称其为命名链接。

我们可以像添加任何其他数据一样,将命名链接添加到IPFS:

创建一个名为的链接bar,该链接指向我们在第一课中创建的节点。将其放入IPFS并返回其CID。

编辑器中预先装有代码,以创建要链接到的节点。

使用链接读取嵌套数据

您可以使用路径查询从深度嵌套的对象中读取数据。

letcid = awaitipfs.dag.put({

my: {

deep: {

obj: 'is cool'

}

}

})console.log(awaitipfs.dag.get(cid, '/my/deep/obj'))// prints { value: 'is cool', remainderPath: '' }

ipfs.dag.get允许使用IPFS路径进行查询并返回我们称为节点的解码块。返回值是一个对象,其中包含查询的值以及所有未解析的剩余路径。

这个API的优点是它还可以遍历链接。

letcid = awaitipfs.dag.put({ foo: 'bar'})letcid2 = awaitipfs.dag.put({

my: {

other: cid

}

})console.log(awaitipfs.dag.get(cid2, '/my/other/foo'))// prints { value: 'bar', remainderPath: '' }

知道了!请注意上面的方法不返回值本身,而是返回一个包含value属性的对象。value在诺言完成之前,您无法访问该属性,该问题可以通过两种方式解决:

// Option 1: Wrap your await statement in parentheses to let the promise completereturn(awaitipfs.dag.get(cid2, '/my/other/foo')).value// Option 2: Save the result to a variable and then access its valueletnode = awaitipfs.dag.get(cid2, '/my/other/foo')returnnode.value

使用ipfs.dag.get返回的值test通过遍历从对象,你的链接put在前面的挑战。(提示:确保value仅在诺言完成后才能访问该属性。)

本文来源:引擎存储
原文标题:具有内容寻址功能的P2P数据链接

—-

编译者/作者:引擎存储

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

本文来自网络,不代表吾所求区块链新闻网立场,转载请注明出处:http://www.wusuoqiu.cn/tnews/14448.html
分享到