美文网首页
IPFS七层协议栈之命名层

IPFS七层协议栈之命名层

作者: 建怀 | 来源:发表于2018-09-14 15:57 被阅读0次

IPFS协议栈之命名层

命名层(Naming)

IPNS:命名以及易变状态

  IPFS形成了一个内容可寻址的DAG对象,可以在IPFS网络中发布不可更改的数据,甚至可以追踪这些对象的版本历史记录。但这样会存在一个严重的问题,当数据对象的内容更新后,发生改变的还有内容地址的命名。我们需要一种能在易变环境中保持固定命名的方案,为此,IPFS的IPNS星际文件命名系统模块就闪亮登场了。

自验证命名

  使用自验证的命名方案给了我们一种在加密环境下,在全局命名空间中,构架可自行认证名称的方式。模式如下:

  • 通过NodeId = hash(node.PubKey),生成IPFS节点信息。
  • 给每个用户分配一个可变的命名空间,由之前生成的节点ID信息作为地址名称,在此路径下: /ipns/ 。
  • 一个用户可以在此路径下发布一个用自己私钥签名的对象,比如说: /ipns/XLF2ip4ii9x0wejs23HD2swlddVmas8kd0Ax/ 。
  • 当其他用户获取对象时,他们可以检测签名是否与公钥和节点信息匹配,从而验证用户发布对象的真实性,达到可变状态的获取。

需要注意的是,这块的动态可变内容是通过设置路由函数来控制的,通过这段源码我们也能了解到为什么命名空间是以绑定NodeId的形式来挂载的了:

routing.setValue(NodeId,<ns-object-hash>)

在命名空间中,所发布的数据对象路径名称可以被当做子名称:

/ipns/XLF2ip4ii9x0wejs23HD2swlddVmas8kd0Ax/
/ipns/XLF2ip4ii9x0wejs23HD2swlddVmas8kd0Ax/docs
/ipns/XLF2ip4ii9x0wejs23HD2swlddVmas8kd0Ax/docs/ipfs

人类友好名称

  IPNS是重新命名地址名称的好方式,但对人类来说,却不是十分友好和记忆,因此,IPFS使用下面的技术来增加IPNS的用户良好度。

1.对等节点链接

  遵循自验证文件系统(SFS)的设计理念,用户可以将其他用户节点的对象直接链接到自己的命名空间下,这有利于创建一个更信任的网络:

# Alice links 到 Bob 上
ipfs link /<alice-pk-hash>/friends/bob /<bob-pk-hash>
# Eve links 到 Alice 上
ipfs link /<eve-pk-hash>/friends/alice /<alice-pk-hash>
# Eve 也可以访问Bob
/<eve-pk-hash>/friends/alice/friends/bob
# 访问Verisign认证域
/<verisign-pk-hash>/foo.com
2.DNS TXT IPNS记录

  在现有的DNS系统中添加TXT记录,这样能够通过域名访问IPFS网络中的文件对象:

# DNS TXT 记录
ipfs.benet.ai. TXT "ipfs=XLF2ip4jD3U..."
# 表现为符号链接
ln -s /ipns/XLF2ip4jD3U... /ipns/fs.benet.ai

# IPFS也支持可读标识符Proquint,可以将二进制编码翻译成可读文件的方法,如下:
# proquint语句
/ipns/dahih-dolij-sozuk-vosah-luvar-fuluh
# 分解为相应的下面形式
/ipns/KhWwNprxYVxKqpDZ

除此之外,IPFS还提供短地址的命名服务,类似我们现在看到的DNS和WebURL链接:

# 用户可以从下面获取一个link
/ipns/shorten.er/foobar
# 然后放到自己的命名空间
/ipns/XLF2ipQ4JD3Udex6xKbgeHrhemUtaA9Vm

文章借鉴《IPFS与区块链:原理与实战》推荐大家购买正版书籍。

相关文章

网友评论

      本文标题:IPFS七层协议栈之命名层

      本文链接:https://www.haomeiwen.com/subject/libogftx.html