一个merkle-link是链接两个对象的方式。目标对象和源对象都使用加密Hash的内容寻址。同时,目标对象的hash也会嵌入到源对象中。包含merkle-links的内容寻址可以做到:
一个merkle-link通过如下的IPLD对象模型表示:一个包含 / 映射到一个 “映射值”(“link value”),例如:
一个链接,在json中可以表示为一个“链接对象”(“link object”)。
{
"/" : "/ipfs/QmUmg7BZC1YP1ca66rRtWKxpXp77WgVHrnv263JtDuvs2k"
}
// "/" 是一个链接键
// "/ipfs/QmUmg7BZC1YP1ca66rRtWKxpXp77WgVHrnv263JtDuvs2k" 是链接值
一个在foo/baz有链接的对象:
{
"foo": {
"bar": "/ipfs/QmUmg7BZC1YP1ca66rRtWKxp77WgVHrnv263JtDuvs2k", // 不是一个链接
"baz":
{"/": "/ipfs/QmUmg7BZC11ca66rRtWKxpXp77WgVHrnv263JtDuvs2k"}
// 一个链接
}
}
一下结构中又一个 有一个伪”链接对象” 在 files/cat.jpg ,而实际的链接在 files/cat.jpg/link
{
"files": {
"cat.jpg": {
// 链接的属性包含在其他对象中
"link": {
"/": "/ipfs/QmUmg7BZC1YP1ca66rRtWKxpXp77WgVHrnv263JtDuvs2k"}, // 链接
"mode": 0755,
"owner": "jbenet"
}
}
}
当链接被修改时,映射本身将被其指向的对象替换,除非链接路径无效。
这个链接可以是multihash, 也就是说它假设这个链接是在 /ipfs 层级下的,或者是对象的绝对路径。但目前只有 /ipfs 层级路径可以使用。
如果应用需要使用 /表示其他内容,那么应用自身需要保证解析的时候不冲突。