以太坊的存储极其昂贵:存储 1 KB 数据约需 20,000 Gas,即数百美元。NFT 的元数据和 DApp 前端显然不能上链。去中心化存储网络在链下提供"类 HTTP"的数据持久性,但用密码学证明替代了中心化服务器的可信度。
9.7.1 IPFS:内容寻址而非位置寻址
HTTP 的缺陷:https://server.com/cat.jpg 通过位置寻址——如果服务器下线,链接失效。
IPFS 的内容寻址:通过内容的哈希寻址:
CID(Content Identifier):
只要内容不变,CID 不变;内容微小改动,CID 完全不同。这天然支持不可篡改性和重复内容去重。
Merkle DAG 结构:
IPFS 内部用 Merkle DAG(有向无环图)组织数据:
- 大文件分块(256 KB/块),每个块有 CID;
- 文件对象是一个指向块 CID 列表的节点;
- 目录是指向文件 CID 的节点。
graph TD
A[目录 CID: QmRoot] --> B[子目录: QmDir1]
A --> C[文件: QmFile1<br>指向块列表]
B --> D[块1: QmB1
hash=...]
B --> E[块2: QmB2
hash=...]
C --> F[块1: QmF1]
C --> G[块2: QmF2]
C --> H[块3: QmF3]
style A fill:#ccffcc
9.7.2 问题:IPFS 不保证持久性
IPFS 节点是自愿的——如果最后一个持有某 CID 的节点下线,该内容就"消失"。
解决方案:
- Pinning Service:如 Pinata、Infura——中心化服务承诺长期保存特定 CID;
- Filecoin:去中心化的 IPFS 激励层,通过经济激励让矿工存储数据。
9.7.3 Filecoin:存储的激励层
核心机制:
- 存储提供者(矿工)质押 FIL,承诺存储客户数据;
- 网络定期检查——要求矿工提供时空证明(Proof of Spacetime, PoSt);
- 如果矿工无法提供证明,质押被削减;
复制证明(Proof of Replication, PoRep):
证明者需要证明:
- 数据已被物理存储(不是计算生成);
- 数据的 N 个独立副本存在。
时空证明(PoSt):
每隔一段时间,网络向存储者发起挑战,要求证明特定时间窗口内数据持续存在。
9.7.4 Arweave:永久存储的一次性付费
哲学差异:
- Filecoin:按时间租赁存储(需持续付费);
- Arweave:一次性付费,永久存储。
经济模型:用户支付 AR 代币时,费用的主要部分进入捐赠基金(Endowment)。该基金的预期投资收益覆盖未来数十年的存储成本。假设:存储成本每 2-3 年下降 50%,只需当前费用的很小部分就能"自我维持"未来 200 年的存储。
访问证明(Proof of Access, PoA):
矿工需要证明他们能访问一个随机选择的"回忆区块"(recall block)——一个历史区块。这迫使矿工存储整个区块历史,而非仅存储当前"热门"数据。
9.7.5 三种方案的对比
| 维度 | IPFS | Filecoin | Arweave |
|---|---|---|---|
| 持久性 | 不保证(依赖节点上线) | 经济上激励持久化 | 永久保证 |
| 付费模式 | 免费 | 持续租赁/拍卖 | 一次性付费 |
| 检索延迟 | 低(P2P 近距离) | 中(矿工竞价) | 中(按访问激励机制) |
| 内容过滤 | 无(理论上) | 无 | 无 |
| 区块链集成 | 无(纯 P2P) | 独立链 | 独立链 |
| 最佳场景 | NFT 元数据、DApp 前端 | 企业级大文件存储 | 档案、证据保存 |
// storage-compare-sim.ts
// 纯内置:比较三种存储方案的 10 年总成本与持久性概率
interface StoragePolicy {
name: string;
upfrontCost: number;
recurringCost: number;
storageHalvingYears: number;
siberRisk: number; // 网络失败概率/年
}
function lifetimeCostAndDurance(policy: StoragePolicy, years: number): { totalCost: number; survivalProb: number } {
let cost = policy.upfrontCost;
for (let y = 0; y < years; y++) {
const halvings = Math.floor(y / policy.storageHalvingYears);
cost += policy.recurringCost / Math.pow(2, halvings);
}
const survival = Math.pow(1 - policy.siberRisk, years);
return { totalCost: cost, survivalProb: survival };
}
const policies: StoragePolicy[] = [
{ name: 'IPFS Pinning', upfrontCost: 0, recurringCost: 50, storageHalvingYears: 5, siberRisk: 0.05 },
{ name: 'Filecoin 租赁', upfrontCost: 10, recurringCost: 30, storageHalvingYears: 2, siberRisk: 0.02 },
{ name: 'Arweave', upfrontCost: 80, recurringCost: 0, storageHalvingYears: 100, siberRisk: 0.01 },
];
for (const p of policies) {
const r = lifetimeCostAndDurance(p, 10);
console.log(`${p.name}: 10年成本 $${r.totalCost.toFixed(0)}, 存留概率 ${(r.survivalProb * 100).toFixed(1)}%`);
}
// 输出: Arweave 虽然前期高,但 10 年总成本可能最低且持久性最佳关键认知七:去中心化存储的"免费"是错觉——有人必须物理保存数据并支付硬盘+带宽成本。IPFS 假设有人自愿服务;Filecoin 假设经济激励足以覆盖替代服务器;Arweave 假设存储成本将持续下降。这三个假设各有风险,但共同构成了 Web3 的数据层。
← 9.6 DAO 治理 | 前往 → 9.8 预言机
评论
0评论加载中…