Filecoin解读-什么赢得了PoST?

 公司动态     |       2021-09-27 11:03

Filecoin解读|什么赢得了PoST?

发布日期:2020-10-27 分币系统10:17

分币系统

Winpost和windowPoSt一起构建LotusPoSt。

LotusPoSt的一部分已经从活动PoSt更改为两个新的PoSt,一个是winningPoSt,另一个是windowPoSt。

先说winningPoSt。顾名思义,winningPoSt就是你赢的时候的PoSt。赢了就是把街区搞对了。 

简单来说,winningPoSt是一个随机检查的扇区,扇区中随机选择的66条Merkle路径可以是正确的。然后说说代码逻辑。就Lotus代码而言。都是从lotus/miner/miner.go的Miner结构的mineOne函数的块开始的。

func(m*Miner)MineOne(CTXcontext。上下文,地址。地址,基数*最小基数)*类型。BlockMsg,error){mbi,err:=m.API.minergetBaseInfo(CTX,addr,round,base。TipSet.Key())rand,rr:=m.API.chainegetrandomy(CTX,base。提示集密钥(),加密。域名分割标记_赢的费用挑战未预见,基数。TipSet.Height()+base。NullRounds,nil)prand:=abi。post随机性(rand)后置,rr:=m.EPP.ComputeProoof(CTX,mbi。部门,prand)

MinerGetBaseInfo函数用于获取一些基本信息,包括要提取的扇区信息。ComputeProof函数用于计算winningPoSt证明。

因为这些逻辑的具体实现是在rust-fil-校样(即rust语言)中实现的。从防锈到防锈,很多界面都是交叉的:

只介绍了rust-fil-校样提供的两个API函数,中间接口就不介绍了。

挑战树叶的数量。

在rust-fil-校样/filecoin-校样/src/constant.rs中,扇区数量和待挑战的总叶数定义如下:

PubConstWinding_POST_CHALLENGE_COUNT:usize=66;PubConstWinding_POST_SECTOR_COUNT:usize=1;

也就是说,从有效扇区中提取一个扇区,并在该扇区上选择66个受挑战的叶节点。

行业选择逻辑面临挑战。

generate_winding_post_sector_challenge函数实现部门的挑战逻辑。核心逻辑点怎么查部门?具体逻辑在:

在回退::generate_sector_challenges函数中:

letmuthasher=Sha256::new();hasher.input(ASref::