Filecoin 封装流程(sealing)

Filecoin的sealing主要分为以下4个步骤:Precommit1这一步骤主要生一个G的node节点(32byte),可以当作一个“加密”Key对piecefile(原数据)做labelingencoding。labelingencoding算法可以看成第11层的各个nod

sealing主要流程

Filecoin 的sealing主要分为以下4个步骤:

  1. Precommit 1

    这一步骤主要生一个G的node节点(32byte),可以当作一个“加密”Key对piecefile(原数据)做labeling encoding。labeling encoding算法可以看成第11层的各个node和piecefile的各个node,相同index的进行“加法”,从而得出replica(sealedfile)。

    第一层的数据主要是根据replica_id(sectorid,minerid,随机数ticket等等)一些公共参数hash计算得出。

    为了保证没有人可以并行,或者机器很好,能极快算出来11层数据。所采用的办法是每个node的计算都需要利用到前面的6node和上层的8个node。类似于如下算法:node = hash(exp(6), parent(8))。

    当然了,到底选择哪些exp(6)和parent(8),是算法决定的,有规律的,不能完全随机。

    所以p1阶段是CPU密集型的。 这个还需要计算原数据的默克尔叔计算(tree_d)

  2. Precommit 2

    p2是tree_c的。也就是11层竖向node进行hash后,根据得到的hash然后在进行的默克尔树。这里明显可以并行。所以是GPU密集型的。 对replica做默克尔叔计算,即:tree_r。为了以后验证方便,会缓存默克尔的最上面几层的(因为最上层数据量少,且经常使用)。 做完后需要发送preCommit消息上链。因为每个sector都发送消息的话,费用比较高,所以支持对preCommit消息进行聚合签名,然后上链。

  3. commit 1

    这边主要是等到一个seed(150epoch后的vrf随机数),然后根据随机数抽出144个node,算出他们的默克尔路径。为什么抽取144个节点的路径,是因为全部node的路径生成的零知识证明的电路太大了。

  4. commit 2

    对c1得到路径,p1的步骤等计算零知识证明压缩,然后发送provcommit消息上链。因为每个sector都发送消息的话,费用比较高,所以支持对provcommit消息进行聚合签名,然后上链。

snapdeal

  1. 不需要重新计算p1,就是在p2开始进行snapdeal。
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
杜满想Elvin
杜满想Elvin
老程序员,区块链架构师