gpt4 book ai didi

javascript - 生成与 IPFS-Desktop CID 匹配的 CID 的无节点方式

转载 作者:行者123 更新时间:2023-12-04 12:40:08 25 4
gpt4 key购买 nike

我想在 javascript 中为文件生成 CID(内容标识符),而无需访问 IPFS 节点或互联网。我试过使用 js-multihashing-async首先散列文件和js-cid从哈希生成 CID,但我得到的 CID 与将文件添加到 ipfs-desktop 时不同.看起来问题出在 IPFS 节点 block 数据上,而 CID 用于链接文件 block 的 DAG。我试过这个library但它不会为同一文件生成与 ipfs-desktop 相同的 CID。 This问题与我的基本相同,但没有一个答案给出与 ipfs-desktop 生成的 CID 匹配的 CID。

最佳答案

ipfs-only-hash是用于从文件或缓冲区创建 IPFS CID 的正确模块,无需启动 IPFS 守护进程。对于相同的输入文件和相同的选项,它应该产生相同的 CID。

这个例子来自 ipfs-only-hash测试,它验证它是否将相同的缓冲区散列到与 js-ipfs 节点相同的 CID。

test('should produce the same hash as IPFS', async t => {
const data = Buffer.from('TEST' + Date.now())
const ipfs = new Ipfs({ repo: path.join(os.tmpdir(), `${Date.now()}`) })

await new Promise((resolve, reject) => {
ipfs.on('ready', resolve).on('error', reject)
})

const files = await ipfs.add(data)
const hash = await Hash.of(data)

t.is(files[0].hash, hash)
})

https://github.com/alanshaw/ipfs-only-hash/blob/dbb72ccfff45ffca5fbea6a7b1704222f6aa4354/test.js#L21-L33

我是 IPFS Desktop 的维护者之一,在后台,该应用程序调用 ipfs.add关于本地 IPFS 守护进程的 http api here

通过 api 手动添加或散列文件时,可以选择更改文件如何分 block 成 block 、这些 block 如何链接在一起以及 block 如何散列。如果任何选项值不同,那么即使输入文件相同,生成的哈希值和包含它的 CID 也会不同。

您可以尝试这些选项并在此处查看生成的 DAG(有向无环图)结构的可视化: https://dag.ipfs.io/

要深入了解 IPFS 如何对文件进行分 block 和哈希处理,您可以查看 ipfs-only-hash 的作者和 js-ipfs 的维护者在这里解释一下 https://www.youtube.com/watch?v=Z5zNPwMDYGg

关于javascript - 生成与 IPFS-Desktop CID 匹配的 CID 的无节点方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60046604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com