IPNS详解
根据Juan Benet推特转发GitHub文章翻译!
关注微信公众号:IPFS后花园,带你了解IPFS、FIlecoin和挖矿最新讯息!
InterPlanetary文件系统(IPFS)是一个内容可寻址的分布式文件系统,它保证由其加密散列标识的文件内容的固定性。文件通过对等网络延迟解决。然而,内容寻址引用本质上是不可变的,因此在每个应用程序中都不实用。例如,如果HTML网页使用其引用嵌入图像,则每次更新图像时都需要更新引用,否则网页仍将引用旧版本的图像。如果许多网页中包含相同的图像,则所有这些图像都需要更新,因此它们自己的哈希值也会改变。这具有级联效应,并且通过引用而非价值来杀死包括对象的主要目的,以实现关注和重用的分离。
为了解决这个问题,IPFS使用InterPlanetary命名系统(IPNS),该系统提供从人类可读URI到其对应的当前IPFS哈希的映射。域名的所有者可以通过用他/她的私钥对请求进行签名来更新该域下所有URI的映射。IPNS可以以多种方式实现,但其当前的实现使用分布式哈希表(DHT)。因此,只有每个URI与其对应的散列的最近映射才可用于解析,而忽略任何历史映射。从档案的角度来看,这并不好,因为以前的文件版本可能仍然存在于IPFS存储中,但是其对应的URI映射却会丢失。
传统的网络档案可能仍然有一些历史观察,可以使用给定的URI来检索旧版本的文件,但这些记录将在IPFS系统之外,并且历史可能是稀疏的而不是事务性的。
我们可以通过对IPNS记录使用区块链来解决这些问题。通过这样做,IPFS可以像事务性存档引擎一样工作,同时将所有历史“URI - >哈希”映射保留在公共区块链中。使用IPNS Blockchain解析URI应该返回当前映射,而使用Datetime解析URI应该返回当时存在的映射。该备忘录框架可用于基于时间的脉冲中子源的分辨率。
预计IPNS区块链系统将提供以下功能:
只有经过授权的用户请求,签名的“URI - >哈希”映射才能与日期时间一起作为交易记录在区块链中
如果已经存在相同URI或具有相应公钥的用户的授权范围中的任何URI的映射(其中范围可以是域名下的整个域名或特定路径)
可以使用传统的基于DNS的挑战添加与用户关联的新授权
可以添加对多点交易的支持,这对组织很有用
通过新验证的URI授权进行的事务隐式地终止了不同用户下相同URI的现有事务链(考虑到所有权的转移)
将URI映射到特殊的空哈希(如全零)的事务被视为显式移除映射(以反映HTTP 404或410)
解决URI涉及以反向时间顺序遍历区块链,直到找到与请求的URI具有事务的区块(它提供与当前基于DHT的实现相同的功能)
使用日期时间解析URI涉及以反向时间顺序遍历区块链,直到在给定日期时间或之前发现具有请求URI的事务的区块
如果遍历达到创建块或潜在的匹配事务映射到特殊的空散列,则认为解决方案失败
系统还提供与给定URI相关联的所有映射及其事务时间的列表
尽管解决区块链中较深的参考文件可能需要一些时间,但它们被认为是不活动的,因此它们可以长时间缓存(作为区块链深度的函数)。另一方面,当使用提供的日期时间解析映射时,不需要从最近的块开始,而是可以使用跳过块的索引(以周期性间隔)来短路查找。这个系统将被用来更频繁地追踪单个URI的链,因此,它可以通过在与相应的URI相关的每个事务中添加前一个块的引用来进行优化以进行更快的查找(除非它是第一个条目或前一个条目位于同一个块中,在这种情况下可以使用特殊值)。
关注微信公众号:IPFS后花园,带你了解IPFS、FIlecoin和挖矿最新讯息!