如何生成一个区块链Filecoin的测试网络

如何生成一个区块链Filecoin的测试网络,第1张

今天IPFS/Filecoin的各种群炸开了锅,原因是Filecoin内部开发人员透露,下一个Filecoin的测试网络需要搭配GPU。而且Filecoin内部测试使用的是2080TI的显卡。

同时,聊天记录表明,下一个测试网络需要在一个块时间内完成PoST的计算。晚上下了一下最新的go-filecoin的代码,看了看。奇怪的是,最新代码的共识部分(EC)以及节点选举流程和之前没有多大的差别。

1. 目前节点选举流程

核心逻辑在go-filecoin/internal/pkg/mining/worker.go文件中的Mine函数,由以下几步组成:

· 创建下一个区块的TIcket

获取上一个TIpset中的最小的TIcket,并使用NextTicket函数生成下一个区块的Ticket。计算方式非常简单,就是对上一个Tipset中的最小的Ticket进行签名。目前签名支持两种算法:BLS以及SECP256K1。默认采用SECP256K1算法。

如何生成一个区块链Filecoin的测试网络,如何生成一个区块链Filecoin的测试网络,第2张

· 延迟一个区块时间

一个区块时间(BlockTime)默认是30秒。目前的代码实现直接采用Delay。从TODO可以看出,这一部分设计中是想采用VDF。但是,目前代码还没有完全实现。

如何生成一个区块链Filecoin的测试网络,如何生成一个区块链Filecoin的测试网络,第3张

· 从前面一些区块获取Election Ticket

从前面一些区块中获取最小的Ticket,作为Election Ticket。从前面一些区块选举,是为了保证随机性。

如何生成一个区块链Filecoin的测试网络,如何生成一个区块链Filecoin的测试网络,第4张

· 生成Election Proof

获取了Election Ticket,并对其签名,生成Election Proof。

如何生成一个区块链Filecoin的测试网络,如何生成一个区块链Filecoin的测试网络,第5张

· 确定是否是Winner

通过IsElectionWinner函数判断是否是Winner。逻辑也非常明了,查看Election Proof是否小于有效存储率。如果小于,说明是Winner,可以生产区块。

如何生成一个区块链Filecoin的测试网络,如何生成一个区块链Filecoin的测试网络,第6张

整个逻辑非常清楚,计算过程也没有复杂的计算,最复杂的计算也就是签名。目前的区块生成流程没有必要使用GPU。问题来了,下一版本的区块生成流程变了。

2. 下一版本的节点选举流程

下一版本的区块链生成流程,没有公开源代码。但是,在Filecoin的设计文档已经有体现:

https://filecoin-project.github.io/specs/#algorithms__proof_of_spacetime__election_post

如何生成一个区块链Filecoin的测试网络,如何生成一个区块链Filecoin的测试网络,第7张

PoST的部分多了一个算法:Election PoST。Election PoST,目的是在生成区块的时候,绑定PoST的计算。也就是说,一个节点需要生成区块,必须提供PoST的计算和证明。

设计文档给出了大致的生成区块的算法:

· 随机数生成(Sample randomness)

也就是从前面一些区块获取一个Ticket,并签名,签名结果作为随机数。

· 确定Partial Ticket

从上述获取的随机数,确定K次挑战的Sector以及相应的数据。由这些数据,上一步骤生成的随机数和节点的ID生成Partial Ticket。

· 生成PoST证明

如果Partial Ticket的系数小于节点的存储率的话,说明节点是Winner,可以生成区块。在生成区块前,必须生成PoST证明。

显而易见,新的区块生成流程,需要在一个区块时间内,生成PoST证明。PoST证明生成,涉及K次零知识证明(zk-SNARK)的证明计算,相当来说,计算时间较长。通过GPU加速,可以缩短PoST证明的时间。

总结:

Filecoin采用了新的节点选举算法,在区块生成时,必须提供PoST的证明。新的设计导致对PoST证明的性能有要求。GPU是目前加速PoST证明生成的可行方案。
责任编辑;zl

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2541925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存