区块链 区块链技术 比特币公众号手机端

Filecoin 封装流程(sealing)

liumuhui 2年前 (2023-06-28) 阅读数 189 #技术
文章标签 sealing封装

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。
版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门