卖家把交付文件放在链外,只将 CID 写入订单合约。CID 使取得内容的买家可以按编码与摘要校验字节,却不能保证卖家确实把文件发给网络或仍有节点提供副本;区块链(04):Merkle 包含证明需要可信根的可信摘要问题在这里变成可检索性和授权可见性问题。IPFS 提供内容寻址与发现工具,具体 pin/复制由参与者负责;Filecoin 的存储证明用于按协议验证存储承诺,不等于任意时刻都能从同一节点快速读到文件。

flowchart LR
  D[合成交付文件] --> H[CID: 编码/内容摘要]
  D --> R[至少一份可用副本与检索路径]
  H --> C[链上订单记录 CID]
  R --> B[买家取回字节]
  B --> V[本地 CID 校验]
  C --> V
  P[Filecoin 存储承诺/证明] -.不自动保证即时检索.-> R

若文件带个人信息,公开内容地址和无访问控制的节点网络可能泄露内容;先加密也要设计密钥分发、撤销和恢复,摘要只覆盖密文或约定的字节版本。链上不应存放真实客户文件或密钥。设定订单“交付已完成”必须有买家可获取、核验及申诉的时限策略,而不是看到 CID 即自动放款。

保存 CID 和收到文件是两个时间点

订单服务登记一个 CID 之后,买家要从某个 pin、网关或提供者取回字节,再按 CID 对应的编码与内容哈希检验。删除唯一 pin 时,已有 CID 仍可以用于验证后来偶然取得的副本,却不能在没有任何副本的情况下重建文件。Filecoin 的存储证明回答提供者在协议挑战下承担并满足怎样的存储承诺;它不保证某一买家此刻知道提供者地址,也不保证下载时延。若订单交付包含“收到内容”,还需规定可访问期限、可验证的下载/买家回执和申诉渠道,单把 CID 写进事件不够。

敏感文件应该先从权限和密钥生命周期设计:加密文件的 CID 通常指向密文字节,买家还需安全取得解密能力;密钥泄漏不能靠更换 CID 撤销已有副本。允许公开网关缓存时更不能把地址保密当作访问控制。真实验收应使用合成文件,分别保存可检索时和删去唯一副本后的原始下载错误,以及再添加副本后同 CID 验证成功的结果。当前没有 IPFS/Filecoin 节点,也没有这些实测输出。

练习一:删除唯一 pin,CID 还能用于验证别人偶然提供的旧副本吗?答案:可以验证取到的字节,但无法保证找到副本。练习二:Filecoin 存储证明有效能直接证明买家下载时延低于一秒吗?答案:不能,检索活性/带宽与证明承诺不同。真实 IPFS/Filecoin 节点、删副本和恢复 NOT_RUN。

可迁移原则:内容完整性、持久性、检索性与访问权限需分别签责任。参考:IPFS、Filecoin(版本/证明范围待核);导航:区块链(E05):DeFi、NFT、DAO 各自在哪一步会失真 · E06 · 区块链(E07):用 Polkadot 对照应用链与共享安全。