pal*_*one 2 javascript sha256 ipfs
我想在 javascript 中为文件生成 CID(内容标识符),而无需访问 IPFS 节点或互联网。我尝试使用js-multihashing-async首先对文件进行散列,然后使用js-cid从散列生成 CID,但是我得到的 CID 与将文件添加到ipfs-desktop 不同。看起来问题出在 IPFS 节点数据块上,而 CID 用于链接文件块的 DAG。我已经尝试过这个库,但它不会产生与 ipfs-desktop 为同一个文件所做的相同的 CID。这个问题与我的问题基本相同,但没有一个答案给出与 ipfs-desktop-generated CID 匹配的 CID。
小智 5
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)
})
Run Code Online (Sandbox Code Playgroud)
我IPFS桌面的维护者之一,并在引擎盖下,该应用程序调用ipfs.add上的HTTP API为当地IPFS守护进程在这里
通过 api 手动添加或散列文件时,可以选择更改文件如何分块成块、这些块如何链接在一起以及如何散列块。如果任何选项值不同,则生成的散列和包含它的 CID 将不同,即使输入文件相同。
您可以尝试这些选项,并在此处查看生成的 DAG(有向无环图)结构的可视化:https : //dag.ipfs.io/
要深入了解 IPFS 块和哈希文件的方式,您可以在此处查看解释的作者ipfs-only-hash和维护者https://www.youtube.com/watch?v=Z5zNPwMDYGgjs-ipfs
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |