作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我像这样向 IPFS 添加数据:
$ echo Hello World | ipfs add
QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
- 一个 CID,它是一个 Base58 编码的 Multihash。
12 - 20 - 74410577111096cd817a3faed78630f2245636beded412d3b212a2e09ba593ca
<hash-type> - <hash-length> - <hash-digest>
74410577111096cd817a3faed78630f2245636beded412d3b212a2e09ba593ca
,但我不确定如何获得包含数据的 Unixfs protobuf 的已创建 dag。
$ ipfs block get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u > /tmp/block.raw
$ protoc --decode_raw < /tmp/block.raw
1 {
1: 2
2: "Hello World\n"
3: 12
}
$ protoc --decode_raw < /tmp/block.raw | shasum -a 256
ipfs dag get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
会给我一个可以解码的多散列,但事实证明它返回了一些我不知道如何检查的其他数据散列:
$ ipfs dag get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
$ {"data":"CAISDEhlbGxvIFdvcmxkChgM","links":[]}
data
的任何想法?
data
是原始数据的 Base64 表示:
https://github.com/ipfs/go-ipfs/issues/4115
最佳答案
您要查找的哈希值是 ipfs block get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
的输出的哈希值。 . IPFS 对编码值进行哈希处理。
而不是运行:
protoc --decode_raw < /tmp/block.raw | shasum -a 256
shasum -a 256 < /tmp/block.raw
but it turns out it returns some other data hash that I don't know how to inspect
{Data: DATA, Links: [{Name: ..., Size: ..., Hash: ...}]}
.
1 {
1: 2
2: "Hello World\n"
3: 12
}
1 { ... }
part是外层protobuf的Data字段。然而,
protoc --decode_raw *recursively* decodes this object so it decodes the
数据`字段到:
// An IPFS MerkleDAG Link
message PBLink {
// multihash of the target object
optional bytes Hash = 1;
// utf string name. should be unique per object
optional string Name = 2;
// cumulative size of target object
optional uint64 Tsize = 3;
}
// An IPFS MerkleDAG Node
message PBNode {
// refs to other objects
repeated PBLink Links = 2;
// opaque user data
optional bytes Data = 1;
}
message Data {
enum DataType {
Raw = 0;
Directory = 1;
File = 2;
Metadata = 3;
Symlink = 4;
HAMTShard = 5;
}
required DataType Type = 1;
optional bytes Data = 2;
optional uint64 filesize = 3;
repeated uint64 blocksizes = 4;
optional uint64 hashType = 5;
optional uint64 fanout = 6;
}
message Metadata {
optional string MimeType = 1;
}
关于ipfs - 如何在 IPFS 中重新创建多哈希的哈希摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51655352/
我是一名优秀的程序员,十分优秀!