第33章 【IPFS一问一答】解析IPFS应用层IPLD之merkle-link

33. 【IPFS一问一答】解析IPFS应用层IPLD之merkle-link

一个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 层级路径可以使用。

如果应用需要使用 /表示其他内容,那么应用自身需要保证解析的时候不冲突。