Professional Documents
Culture Documents
IPFS&Filecoin
IPFS&Filecoin
# IPFS
## 简介
**HTTP**采用的是“**地址寻址**”,依靠 ip 或者域名进行文件寻址;而**IPFS**采用的是“**内容寻址*
*”
## 底层基础
### DHT(分布式哈希表)
**主要思想:**全网维护一个文件索引哈希表,key 通常是文件的哈希值(文件名或者文件内容描述),value
则是存储文件的 IP 地址。哈希表会被分割成小块,按照一定算法和规则分布到全网各个节点上,每个节点只需要
存储一小块哈希表。
文件快照机制,保存某一时刻的全部文件状态(没有修改的文件只存储一个指向之前文件的引用)
前者常用于数据验证,后者常用于文件存储。
# Filecoin
- Filecoin 是一个基于区块链的分布式存储协议,用来解决数据的存储问题,降低数据存储和使用成本。
- IPFS 主要是解决数据分发和定位问题,类似于 HTTP 协议。
Filecoin 选举新区块矿工是根据它当前**已用存储空间占全网存储空间的比值**决定的,类似于权益证明的方
式。每个存储矿工为网络提供的有效存储空间占比定义为**存储算力**。这样可以激励矿工投入更多资源在存储
空间上而不是算力上。
Filecoin 选举打包矿工的大致过程为:在每个产生新区块的周期内,**矿工利用这一周期内生成的存储证明生
成选票**,每个矿工会检查自己的选票的哈希值是否小于该矿工的存储算力,如果满足,则说明该矿工当选本轮
的领导节点,下一个区块可以由该矿工创建并发送给全网其他节点进行验证。
### 复制证明(PoRep)
核心思想是:确保证明者保存了承诺数量的独立备份。
------
为了应对**女巫攻击**、**外源攻击**(可以理解成“找外援”)、**生成攻击**【*IPFS 原理与实践*,
p236】,复制证明使用**可验证时延加密算法**(Verifiable Time-Delay Encoding
Function,VDF)。
该类算法理想条件下满足:
1. **加密时间长,解密时间短**;【解密时间短为了更方便地提取这些被加密的文件;加密时间长是保证恶意
矿工无法通过临时生成加密文件完成随机挑战】
<img src="C:\Users\82621\Desktop\笔记\IPFS&Filecoin\VDF.jpg"
style="zoom:80%;" />
2. **使用加密后的文件生成存储证明的复杂度低**。【这是因为每隔一段时间就要提交一次存储证明,通过加
密文件生成存储证明应当高效快速】
目前主要使用的是通过**BLS2-381**(Zcash 中使用的一种椭圆曲线)加密算法,多次迭代完成。
------
$$PoRep.Setup(1^\lambda,D,id)\rarr R,S_p,S_v$$
$$\lambda$$是安全参数,$$\lambda$$越大时延越长;$$id$$是生成副本的唯一序号;$$D$$是原文件;
$$R$$是生成的副本;$$S_P$$是验证$$R$$的必要信息;$$S_V$$是调用$$PoRep.Prove$$和$
$PoRep.Verify$$的参数之一。
- $$Prove$$
$$PoRep.Prove(S_P,R,C)\rarr\pi^C$$
$$C$$是验证人$$V$$发出的随即挑战,$$\pi^C$$是证明者$$P$$生成数据$$D$$的特定副本$$R$$的存储
证明。
- $$Verify$$
$$PoRep.Verify(S_V,C,\pi^C)\rarr{0,1}$$
验证者$$V$$检测证明是否正确,结果正确说明证明者$$P$$已经存储了$$R$$。证明者$$P$$只需要提供一
条从随即片段$$C$$到整个文件的默克尔根的路径即可。
------
### 时空证明(PoSt)