7.2 Filecoin 共识

我们提出一个有效工作的一致性协议,选举产生一个矿工去产生新的区块,被选举出来的概率和它当前在网络中已经存储的数据(正在被应用中的数据)占全网数据存储的比例有很大关系。我们设计Filecoin协议,使矿工更愿意投资存储而不是算力,从而达到并行化挖矿计算。矿工提供存储和重新使用计算来证明数据被存储以参与共识。

7.2.1 模型化挖矿能力(power在计算难题的共识中译为算力,此处因为不依靠计算,译为能力)

能力容错 在我们的技术报告[13]中,我们提出了能力容错,这是对在参与者对协议结果的影响方面重新构建拜占庭故障的抽象。每个参与者控制了网络总能力n中的一部分能力,其中f是故障节点或作恶节点所控制的能力占比。

Filecoin能力 在Filecoin中,在时刻t,矿工Mi的能力P^t i是Mi总和的存储任务。Mi的I^t i是网络中Mi总能力的影响因子。

在Filecoin中,功率有以下属性:

7.2.2 用时空证明计算能力值

每个∆proof 区块(∆proof是系统参数),矿工们都必须向网络提交“时空证明”,如果网络中大多数算力认为它们是有效的,才会被成功添加到区块链中。在每个区块中,每个全节点会更新分配表(AllocTable),添加新的存储分配、删除过期的和标记缺少证明的记录。可以通过对分配表的记录来对矿工Mi的能力进行计算和验证。这些可以通过两种方式来完成:

能力计算的安全性来自于“时空证明”的安全性。在这个设置里面,Post保证了矿工无法对他们所分配的存储数量说谎。事实上,他们不能声称能够存储超过他们的存储空间的数据,因为这会花费时间来运行PoSt.Setup,另外PoSt.Prove是串行的计算,并不能并行化的快速生成证明。

7.2.3 使用能力达成共识

我们通过扩展现有的(以及未来的)权益证明一致性协议,预料实现Filecoin协议会有多重的策略,其中股权会被已完成的存储代替。我们预计了权益证明协议的改进,同时也提出了一个基于我们称为预期共识的前期工作的构建[14]。我们的策略是在每一轮选举出一个(或多个)矿工,如此这样矿工赢得选举的概率与他们分配的存储成比例。

预期共识(Expected Consensus) 预期共识的基本直觉是确定性的、不可预测的。并在每个周期内秘密选举一个小的Leader集合。预期的期望是每个周期内当选的Leader是1个,但一些周期内可能有0个或者许多个Leader。Leader们通过创建新区块并广播来扩展区块链网络。在每个周期,每个区块链被延伸一个或多个区块。在某个无Leader的周期内,空区块被添加到区块链中。虽然链中的区块可以被线性排序,但其数据结构是有向无环图。EC是一个概率共识,每个周期都使得比前面的区块更加确定,最终达到了足够的确定性,且出现不同的历史块链的可能性是足够小的。如果大多数的参与者都通过签署区块链来扩展区块链,加大这个区块所属链的权重,那么这个区块就被确认了。

选举矿工 在每个周期,每个矿工检查他们是否被选为Leader,这类似于完成前面的协议:CoA[15],Snow White[16],和Algorand[17]。

在图13中,我们描述了矿工(ProveElect)和网络节点(VerifyElect)之间的协议。这种选举方案提供了三个属性:公平,保密和公开的可验证性。