实验13-6:区块链存储实验

去中心化存储按“内容是什么”而不是“放在哪里”找数据:IPFS 用内容哈希生成 CID、用 Merkle DAG 组织分块,下载后可自行验证;Filecoin 用存储证明和抵押罚没让矿工老实保存数据。本实验的哈希、CID、Merkle 证明、节点距离都在浏览器里真实计算

  1. 生成 CID:改一个字,看 CID 和 Merkle 树哪些节点变了,再做一次单块验证
  2. IPFS 网络:看 CID 存到哪几个节点,点节点让它离线,检查还能否取回
  3. Filecoin:模拟矿工偷删数据被存储证明抓住,用收益计算器比较诚实与作弊
  4. 比较去中心化存储的优势与风险,提出一项改进或拓展方案

当前内容

0字节
0数据块

根 CID

—

四个要点

内容寻址:同样的内容永远得到同样的 CID,天然去重、防篡改。
Merkle DAG:只要根 CID 可信,任何一块都能单独验证。
DHT 路由:按 CID 与节点 ID 的异或距离决定由谁记录“谁有这份数据”。
存储证明:随机抽查 + 抵押罚没,作弊不划算。

要注意的风险

IPFS 本身不保证数据长期在线,没人“钉住”(pin)的内容会被回收;数据一旦公开分发就很难删除,不适合存放个人信息;代币价格波动影响矿工收益;在国内使用还要符合《网络安全法》《数据安全法》和区块链信息服务备案等规定。

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 树演示同样的原理。

点“生成 CID”。
记下根 CID,然后改动内容中的一个字(或点“篡改一个字节”),再生成一次,看哪些节点变了。

单块验证(Merkle 证明)

只下载第 k 块和沿途 log₂(n) 个兄弟哈希,就能证明这一块确实属于根 CID 所代表的内容,不必下载全部数据。

IPFS 网络寻址

16 个节点的 ID 都是 256 位哈希。按 Kademlia 规则,与 CID 异或距离最近的节点负责保存“谁有这份数据”的记录;数据本身由“钉住”(pin)它的节点保存。点击节点让它离线,再从“我的节点”取回数据,看副本数够不够。

先在 ① 生成 CID。

NFT 元数据:链上只存一个 CID

数字藏品的图片和元数据放在 IPFS,区块链上的合约只记录 tokenURI = ipfs://元数据CID。图片一改,图片 CID 变,元数据 CID 也跟着变,与链上记录对不上——这就是防篡改。

Filecoin 存储证明

矿工声称保存了 64 个扇区的数据。网络每隔一段时间随机抽查 k 个扇区,矿工必须当场算出证明(时空证明 WindowPoSt,每天 48 轮)。如果矿工偷偷删掉一部分数据省成本,每轮被抓到的概率是 1 −(1 − 删除比例)k,抓到就罚没抵押。

偷删比例:10%
每轮抽查扇区数 k:3
模拟轮数:48(1 天)
设好参数后点“运行抽查”。蓝色 = 证明通过,粉色 = 抽到被删的扇区。

收益计算器

存储容量(TiB)
合约时长(月)
存储单价(FIL / TiB / 月)
FIL 折合人民币(元,示例值)
运营成本(元 / TiB / 月)
质押(FIL / TiB)

FIL 价格、单价和质押额都是可修改的示例值,真实数值随市场变化,请以 Filecoin 网络的实时数据为准。作弊的期望损失按“合约期内被抓概率 × 质押”计算。

比较与方案

方案怎样找到数据谁保证数据还在能否删除 / 修改适合主要风险
中心化云存储按位置(域名 + 路径)云厂商合同与多副本可以随时删改大多数业务数据、个人信息单一厂商故障、被篡改难自证
IPFS按内容(CID)谁钉住谁负责,没有激励内容不可变,改了就是新 CID;已传播的副本难以删除公开素材分发、版本可追溯无人钉住会丢失;隐私数据不宜上传
FilecoinCID + 链上存储合约矿工抵押 + 存储证明合约到期可不续长期归档、公开数据集代币价格波动、取回较慢、合规要求
Arweave交易 ID一次付费的捐赠基金设计上永久保存需要永久公开的存证无法删除,错误或违法内容也删不掉

你的改进或拓展方案

结合前三步的结果,为“文博机构的数字藏品资源”设计一项改进或拓展方案:例如哪些数据放 IPFS、哪些仍放云存储,怎样保证长期可用、怎样处理隐私与删除需求。至少 60 字。

0 / 280 字