Filecoin共识协议是决定在一个周期内由谁产生TipSet的算法,这个协议中的矿工更愿意投身于存储而不是计算能力,并以此来平衡挖矿计算。矿工提供存储,并利用自己的计算能力生成数据已被存储的证明,以此参与到这个共识协议中。因为矿工的有效存储空间占比越大,算力越强,竞争选票获胜的概率就越高。
(1)公开性:
网络中正在使用的存储总量是公开的。通过读取区块链,每个人都可以计算任意矿工被分配的存储任务——因此任何人在任意时间点都可以计算出每个矿工的功率和全网总功率。
(2)公开验证性:
对于每个存储任务,矿工都需要生成时空证明来证明自己确实在提供存储服务。通过读取区块链,任何人都可以验证矿工声明的功率是否正确。
(3)可变性:
在任意时间点,矿工都可以通过新增抵押扇区和填充扇区来增加新的存储,这样矿工就能对功率大小进行调整。
功率会计与时空证明
在每个∆proof区块(∆proof为一个系统参数)中,矿工们都必须向网络提交时空证明,如果网络中大多数功率认为它们有效,证明就可以被成功添加到区块链。在每个区块中,每个完整节点都会更新AllocTable,添加新的存储任务分配,删除过期和缺少标记的证明。
矿工Mi的功率可以通过分析AllocTable来计算和验证,分析主要有两种方式:
(1) 全节点验证
如果节点拥有完整的区块链记录,则可以从初始区块开始,运行NetworkProtocol读取Mi的AllocTable直到当前区块。这个过程可以验证当前每一个分配给Mi的存储的时空证明。
(2) 简单存储验证
假设一个轻客户端可以访问一个可以广播最新区块的信任源,轻客户端可以从网络节点中请求:
1、矿工Mi当前AllocTable的入口;
2、能够证明入口包含在最新区块的状态树中的Merkle路径;
3、从初始区块到当前区块的头文件,这样轻客户端就可以将时空证明的验证托付给网络。
功率计算的安全性来自于时空证明的安全性,在这个设置里面,PoSt保证了矿工无法对他们所分配的存储量说谎。事实上,他们不能声称存储过量的数据,因为这会耗费很多时间来获取和运行PoSt.Setup,并且PoSt.Prove是顺序算法,他们无法通过并行计算快速生成证明。
使用功率达成共识
Filecoin团队曾经给与了这样的说明:我们预见了通过扩展权益证明共识协议的当下规模(和未来预期)来实现Filecoin共识的多种策略,其中权益被替换为分配式存储。同时我们预见了权益证明协议的改进,我们提出了一个架构,这个架构基于我们前期“预期共识”的工作。我们的策略是在每一轮中选出一个(或多个)矿工,赢得选举的概率与矿工被分配的存储量成正比。
预期共识(Expected Consensus,EC)的基本直觉是确切地、不可预测地、并且秘密地在每个周期中选举一小组领导人集合。在预期中,每个周期内当选的领导人数是1,但也有一些周期内可能有零个或者许多个领导人。每个周期中,区块链网络都会扩展一个或多个区块。如果某个周期内没有领导人,网络就会被添加一个空的区块。虽然链中的区块可以被线性排列,但其数据结构是一个有向无环图。EC是一个概率共识,每个周期都比前面的区块更具有确定性,所以最终可以达到足够的确定性,使得出现不同历史的可能性足够小。如果大多数的参与者都通过扩展区块链或签署区块来将自己的权重附加到链上,这个区块就稳固了。
留言与评论(共有 0 条评论) |