Filecoin - 深入理解NSE算法

本文详细介绍了Filecoin的新型PoREP算法——NSE(Narrow Stacked Expander PoRep)。NSE通过Narrow窗口处理数据,经过mask、expander和butterfly多层处理生成Replica,并构建Merkle树。每层处理包括mask layer利用节点编号计算,expander layer通过ExpanderGraph生成依赖节点,以及butterfly layer依赖特定间隔的前一层节点。最后,通过butterfly计算和原始数据加法操作生成Replica。NSE算法是SDR算法的优化,旨在平衡安全性与性能。
摘要由CSDN通过智能技术生成

PoREP算法,从window SDR改成SDR,时间并不长。新的PoREP算法NSE已经在酝酿中。NSE算法的全称:Narrow Stacked Expander PoRep。在rust-fil-proofs的feat/nse分支,可以查看NSE算法的实现。

文章使用的源代码的最后一个提交信息如下:

commit af4bdcb6da4b371230eed441218c459e99d32068 (HEAD -> feat/nse, origin/feat/nse)
Merge: 7e7eab2 578d12c
Author: porcuquine <1746729+porcuquine@users.noreply.github.com>
Date:   Wed May 20 12:11:43 2020 -0700

    Merge pull request #1118 from filecoin-project/feat/nse-update-neptune-alt
    
    Feat/nse update neptune alt

理解NSE算法,可以从storage-proofs/porep/src/nse/vanilla/porep.rs中NarrowStackedExpander结构的replicate函数看起。

整体流程

NSE,之所以称为NSE,因为N,Narrow。Narrow的意思是比之前的SDR算法,窄,每次处理的数据为一个Window。

在这里插入图片描述

每个Window经过层层的处理,都会生成对应的Replica。所有Window对应的每一层的数据一起构建成Merkle树。所有Window对应的Replica的数据也一起构建成Merkle树。这两棵树树根的Poseidon Hash的结果作为comm_r。comm_d以及comm_r是需要上链的数据。

多层处理

每个window需要经过很多层的处理,这些层分为mask layer,expander layer, butterfly layer。核心逻辑在storage-proofs/porep/src/nse/vanilla/labels.rs的encode_with_trees函数中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值