Filecoin技术文档学习9 PoRep协议与PoSt协议

在Filecoin的存储逻辑中,需要使用2种证明机制,来证明矿机正确的存储了数据的多个备份并且能够被任意的人在任意时刻检验数据的有效性,只有满足这两个条件,才能说明存储矿机安全可靠的存储了这些数据。

Proof-of-Replication:简称PoRep协议,解决了在数据上传初期,矿机证明自己生成了适当的数据备份,并保存在相对独立的存储设备上的问题。

Proof-of-Spacetime:简称PoSt协议,检查矿机是否仍然存储某个数据的备份,最直接的办法就是定期检查矿机的存储数据,这样可以保证矿机在检查点忠实的存储了用户的数据,但是这样会造成复杂的交互过程,并且会成为系统的瓶颈,因此通过PoSt协议,可以在无交互的情况下检查矿机的存储情况。

这些协议的具体实现,依赖于zk-NSARKs机制即零知识证明机制,这个我们在前面的几个章节中进行了详细的论证,有兴趣的同学可以翻一下前几节,我们本节重点讨论在已知此机制可用的情况下,Filecoin是如何实现数据的存储以及存储的校验。

PoRep协议:

SEAL(封装)操作:

用户将数据发送给矿机之后,矿机需要根据SEAL方法来存储数据,这个过程是为了保证诚实的矿机把数据存储独立的N份并且保证有足够的时间允许检查者生成检查的Challenge。

1, Setup:

输入:

prover key pair (pkP , skP ) 矿机的钥匙对

prover SEAL key pkSEAL 数据封装产生的公钥

data D :用户提供的数据。

输出:

replica R, 数据D的一个副本

Merkle root rt of R, 副本的hash树根

Proof πSEAL 副本存储证明

过程:

1) 计算数据的hash值 hD := CRH(D)

2) 封装数据 R:=Sealτ(D,skP)

3) 计算副本的hash树根 rt := MerkleCRH(R)

4) 令 ⃗x := (pkP,hD,rt)

5) 令 w⃗ := (skP,D)

6) 计算副本的存储证明 πSEAL := SCIP.Prove(pkSEAL , ⃗x , w⃗ )

7) 输出结果 R, rt, πSEAL

2,Prove:

输入:

prover Proof-of-Storage key pkPOS 数据存储公钥

replica R 数据副本

random challenge c 检查者发出的一个随机数,代表副本hash树的某个野子节点的下标

输出:

πPOS,存储的证明

过程:

1) 计算副本数据的hash树根 rt := MerkleCRH(R)

2) 从Rc到数个rt的路径 path := Merkle path from rt to leaf Rc

3) 令 ⃗x := (rt, c)

4) 令 w⃗ :=(path,Rc)

5) 计算一个存储证明 πPOS := SCIP.Prove(pkPOS , ⃗x , w⃗ )

6) 输出存储证明πPOS

3,Verify:

输入:

prover public key, pkP 矿机的公钥

verifier SEAL and POS keys vkSEAL, vkPOS – hash of data D, hD 数据和数据的hash值,数据封装的验证用公钥和存储用公钥

Merkle root of replica R, rt 副本数据的hash树根

random challenge, c 用来检查矿机的,数据副本hash树叶索引

tuple of proofs, (πSEAL, πPOS),存储证明和封装证明

输出:

bit b, 如果是1表示验证通过

过程:

1)令x⃗1 :=(pkP,hD,rt)

2) 计算数据封装的有效性b1 := SCIP.Verify(vkSEAL,x⃗1 ,πSEAL)

3)令x⃗2 :=(rt,c)

4) 计算数据存储的有效性b2 := SCIP.Verify(vkPOS,x⃗2 ,πPOS)

5) 输出检验结果 b1 ∧ b2

PoSt协议:

1,Setup:

输入:

prover key pair (pkP , skP ) 矿机的钥匙对

prover POST key pair pkPOST 存储时空公钥

data D 数据

输出:

replica R, 数据的副本

Merkle root rt of R, 数据副本的hash树根

Proof πSEAL 数据的封装证明

过程:

1) 封装数据,生成数据副本,副本的hash树根和封装证明

R, rt, πSEAL := PoRep.Setup(pkP,

skP , pkSEAL, D)

2) 输出封装结果 R, rt, πSEAL

2,Prove:

输入:

prover PoSt key pkPOST 矿机的数据时空公钥

replica R 数据副本

random challenge c – time parameter t 检查者定期检查的检查次数

输出:

数据的时空证明 πPOST,即证明在某一时刻对某一数据进行了有效的存储

过程:

1) 令 πPOST := ⊥

2) 计算数据副本的hash树根 rt := MerkleCRH(R)

3) 设置循环次数 i = 0...t:

a) 令c′ := CRH(πPOST||c||i)

b) 计算数据存储证明 πPOS := PoRep.Prove(pkPOS, R, c′)

c) 令 ⃗x := (rt, c, i)

d) 令 w⃗ := (πPOS,πPOST)

e) 计算数据的时空证明πPOST := SCIP.Prove(pkPOST , ⃗x , w⃗ )

4) 输出证明πPOST

3,Verify:

输入:

prover public key pkP 矿机的公钥

verifier SEAL and POST keys vkSEAL, vkPOST – hash of some data hD 数据的封装证明公钥,存储时空证明公钥,要检查的数据及数据的hash值

Merkle root of some replica rt 部分副本的hash树根

random challenge c 随机选择的hash树叶节点

time parameter t 循环检查次数

tuple of proofs (πSEAL, πPOST) 封装证明和数据时空证明

输出:

bit b, 检查是否通过

过程:

1)令x⃗1 :=(pkP,hD,rt)

2) 计算封装证明是否有效b1 := SCIP.Verify(vkSEAL,x⃗1 ,πSEAL)

3)令x⃗2 :=(rt,c,t)

4) 计算数据时空证明是否有效b2 := SCIP.Verify(vkPOST,x⃗2 ,πPOST)

5) 输入检查结果b1 ∧ b2

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • FileCoin技术文档学习笔记1 1. 概述: FileCoin协议是在IPFS存储协议基础之上增加的奖励协议层...
    西二旗李老师阅读 1,689评论 0 2
  • 三体终极大点评:四个人物、两点收获 《三体》系列小说,成功塑造了四个主要人物,分别是:一个成功的好人,罗辑;一个失...
    雲端猫阅读 2,401评论 0 1
  • 爱是什么?爱仅仅是一个条件和背景。我们都知道动物也爱它自己的孩子,我们知道动物对自己孩子的爱,可能在某种程度上要...
    VanAllen阅读 357评论 0 0