把数据加入IPFS并固定住,和向网络宣告提供这些CID有什么区别?

把数据加入IPFS并固定住,重点在于让某个节点或服务方保留一份可按CID寻址的数据副本;向网络宣告提供这些CID,则是把“本节点可提供该CID对应数据”的提供记录发布到内容路由系统。按IPFS官方文档对数据生命周期的划分,内容寻址、提供、检索是三个不同阶段。固定属于留存层面的操作,提供属于路由层面的操作,两者不能互相替代。本文为IPFS技术说明,非新闻。

CID映射、网络宣告、本地保留
本文涉及的概念与核对环节。

“加入IPFS”首先是一次本地寻址操作。 按官方文档,数据进入IPFS的第一步是按CID寻址:把任意数据编码成可按CID寻址的形式,也就是构造Merkle DAG。文件和目录通常构造成UnixFS Merkle DAG;其他数据类型如dag-cbor,则先编码再哈希生成CID。资料将寻址与提供列为不同阶段,寻址本身不包含提供记录发布。

固定解决的是留存问题。 固定可以理解为请求某个IPFS节点或固定服务保留某CID对应的数据副本。官方文档区分了两种情形:按CID固定,即不上传数据,由固定方自行从提供者处检索,若当时没有可用提供者则可能失败;上传数据固定,即把文件、目录等交给固定方,由其完成merkleize并返回CID。无论哪种,固定后该节点会在本地保留副本,并通常会向网络提供其所固定的CID。适用条件是固定方确实持有数据并能持续保留;资料未对固定期限作承诺。

提供解决的是可发现性问题。 数据被merkleize并得到CID后,节点向IPFS网络宣告自己是这些CID的提供者,从而在CID与节点之间建立公开映射。官方称这一步为providing,也称publishing或advertising。在带过期机制和TTL的Amino DHT等路由系统上,节点需要持续重新提供,即reproviding,以维持提供记录的有效性。IPFS节点可向DHT或IPNI这两类内容路由系统宣告CID。提供记录只说明该节点声称可提供对应数据,不改变数据内容,也不替代本地留存。

两者的关系可以这样理解:固定是把记录留住,提供是把记录说出去。 只固定不提供,数据可能仍在本地,但网络上的其他节点难以通过路由系统发现它;按三阶段划分可推知,只提供不固定,提供记录可能存在,但节点未必长期保留数据,检索仍可能落空。官方文档还指出,固定后节点通常会提供其固定的CID,但这属于常见做法,而非固定动作本身。至于选择哪种固定方式、向哪类路由系统宣告,取决于数据用途和运行条件,本文不涉及具体服务商选择。

回到读者问题:把数据加入IPFS并固定住,重点在留存副本;向网络宣告提供这些CID,重点在发布可被路由系统查询的提供记录。二者可以同时做,但不能互相替代。

原始资料

docs.ipfs.tech

上一篇 BSC出块奖励来自手续费,BNB为何没有增发设定