区块链 · 数字资产知识 · 行业资讯
文章库关于本站

资料与核验

区块链资料中的CID怎么核对|整文件摘要与导入根块标识分开比对

摘要

同一份文件的SHA256校验和与IPFS的CID通常不能直接比较。前者对原始字节求摘要,后者还涉及导入后的数据结构和标识编码。核对资料前,应先确认比较对象,并保留raw单块时的特殊情况。

区块链ipfs的科技主题配图

先分清要比较的是哪一种值

在区块链资料中看到CID,不能直接把它当作文件校验和的另一种排版。整文件SHA256摘要的输入是文件原始字节;IPFS的CID则标识内容块,包含摘要以及解释数据所需的编码等信息。两项记录可能都与同一文件有关,但计算对象和表示结构不同。

例如,资料包同时列出一份教程PDF的SHA256值和导入后的CID。下载后先对文件字节计算SHA256,应与公布的同类摘要比较,而不是拿它和整个CID字符串逐字符对照。不匹配之前,先确认算法、对象与编码,比直接认定文件被改动更稳妥。

导入会把文件组织成可寻址的结构

IPFS文档解释,文件导入可能经历分块、组织成有向无环图以及编码等步骤。导入结果的根块摘要通常不是直接对整份文件字节求出的摘要。因此,即便把CID内部的摘要提取出来,它也不一定与下载文件的普通校验和相同。

这里必须保留例外:当文件适合放在单个raw数据块中、没有额外包装且使用相同哈希算法时,CID内部的摘要可能等于整文件摘要。相等的是内含摘要,不是说完整CID就等于那串十六进制校验和。不能把“通常不同”改写成“任何情况下绝不相同”。

区块链哈希算法的科技主题配图

记录复现设置而不只记录最后一串字符

同一份文件使用不同的分块策略、图结构、编码方式或哈希算法,可能产生不同CID。CID版本和文本表示也需要分清。因此核对资料时,文件字节相同却看到不同CID,不足以单独证明有人替换了文件,先要比较导入和表示设置。

本文建议发布者保存原文件摘要、使用的导入工具及版本、分块与编码设置、生成的CID。若只是更换CID的文本编码,应与重新导入文件区分记录。这是一份复现清单,不是保证任意工具在未核对参数时都能生成相同结果。

网页摘要工具有自己的输入与内存边界

MDN的SubtleCrypto.digest文档说明,该接口按指定算法对输入字节求摘要,返回ArrayBuffer,随后可以转换为十六进制供比较。它本身不是IPFS导入器,不会替文件构建对应的分块结构或自动产出CID;把输出换一种字符编码,也没有补上这些步骤。

该接口还不支持流式输入,调用前需要把完整输入读入内存,因此不宜把大视频直接套入小文件网页演示。资料核对完成后,也应只记录能够证明的结论:对应摘要匹配可用于核对字节一致性,不能独立证明发布者可信、描述真实或素材具有使用许可。

← 返回全部文章

延伸阅读 · 相关栏目

区块链基础技术原理数字资产知识资料与核验