CID 与 Merkle DAG
内容被切成固定大小的数据块,每块算 SHA-256,组成 CIDv1(版本 1 + raw 编码 0x55 + sha2-256 多重哈希,再用 base32 编码,以 bafkrei 开头)。相邻两块的哈希再拼起来求哈希,一层层往上得到根。只有一块时,这里的 CID 与 ipfs add --cid-version=1 --raw-leaves 的结果一致;多块时真实 IPFS 用 UnixFS 的 dag-pb 节点组织(根 CID 以 bafybei 开头),这里用二叉 Merkle 树演示同样的原理。
单块验证(Merkle 证明)
只下载第 k 块和沿途 log₂(n) 个兄弟哈希,就能证明这一块确实属于根 CID 所代表的内容,不必下载全部数据。
IPFS 网络寻址
16 个节点的 ID 都是 256 位哈希。按 Kademlia 规则,与 CID 异或距离最近的节点负责保存“谁有这份数据”的记录;数据本身由“钉住”(pin)它的节点保存。点击节点让它离线,再从“我的节点”取回数据,看副本数够不够。
NFT 元数据:链上只存一个 CID
数字藏品的图片和元数据放在 IPFS,区块链上的合约只记录 tokenURI = ipfs://元数据CID。图片一改,图片 CID 变,元数据 CID 也跟着变,与链上记录对不上——这就是防篡改。
Filecoin 存储证明
矿工声称保存了 64 个扇区的数据。网络每隔一段时间随机抽查 k 个扇区,矿工必须当场算出证明(时空证明 WindowPoSt,每天 48 轮)。如果矿工偷偷删掉一部分数据省成本,每轮被抓到的概率是 1 −(1 − 删除比例)k,抓到就罚没抵押。
收益计算器
FIL 价格、单价和质押额都是可修改的示例值,真实数值随市场变化,请以 Filecoin 网络的实时数据为准。作弊的期望损失按“合约期内被抓概率 × 质押”计算。
比较与方案
| 方案 | 怎样找到数据 | 谁保证数据还在 | 能否删除 / 修改 | 适合 | 主要风险 |
|---|---|---|---|---|---|
| 中心化云存储 | 按位置(域名 + 路径) | 云厂商合同与多副本 | 可以随时删改 | 大多数业务数据、个人信息 | 单一厂商故障、被篡改难自证 |
| IPFS | 按内容(CID) | 谁钉住谁负责,没有激励 | 内容不可变,改了就是新 CID;已传播的副本难以删除 | 公开素材分发、版本可追溯 | 无人钉住会丢失;隐私数据不宜上传 |
| Filecoin | CID + 链上存储合约 | 矿工抵押 + 存储证明 | 合约到期可不续 | 长期归档、公开数据集 | 代币价格波动、取回较慢、合规要求 |
| Arweave | 交易 ID | 一次付费的捐赠基金 | 设计上永久保存 | 需要永久公开的存证 | 无法删除,错误或违法内容也删不掉 |
你的改进或拓展方案
结合前三步的结果,为“文博机构的数字藏品资源”设计一项改进或拓展方案:例如哪些数据放 IPFS、哪些仍放云存储,怎样保证长期可用、怎样处理隐私与删除需求。至少 60 字。