作者: 陈致佳、蒙绎泽、江泽武
自2009年第一枚比特币被挖出以来,区块链行业逐渐拓展为一个巨大的全球市场。除BTC以外,LTC、ETH、EOS等各式各样的区块链项目层出不穷。目前,仅以太坊上的ERC20代币项目,就超过11万个;而发布项目白皮书的公司更是不可胜数。
POW(工作量证明)共识算法
比特币实现了一种点对点的电子支付系统,而这一分布式系统的诞生,有赖于其采取的POW(工作量证明)共识算法。目前,绝大多数具备主链的区块链项目,仍采用POW或改良后的POW共识算法,仅有一部分项目采用POS(权益证明)或DPOS(股权代理证明)等算法。
POW为分布式账本带来简明、有效的共识产生机制,然而也产生一些问题:在计算哈希函数的过程中,大量能源被浪费——
有报道称,2017年因比特币挖矿而浪费的电量,超过了丹麦一个国家全年的耗电量。[1]此外,由于ASIC等芯片的产生,比特币也面临这越来越中心化的挑战。比特币的现状与中本聪最早的设计已经相去甚远。
而POS、DPOS机制同样具有中心化的问题,而且投票过程往往较为繁琐,两者显然并非最佳的解决方案。值得一提的是,市面上曾出现一些采用如“交易即挖矿”、“锁仓即挖矿”、“投保即挖矿”、“挖矿即挖矿”等方案的区块链项目。但本质上,这些项目所发行的还仅仅是以太坊上的ERC20代币。由于不具备主链,这些项目均不需要共识机制;所谓的挖矿方案,本质上属于空投方案,是一种激励手段,与区块链的核心技术无必然关联。
真正要解决POW所衍生的浪费能源、中心化的问题,开发多样化的挖矿方案,至少需要解决以下一系列技术问题:
(1) 如果不耗费工作量,以什么作为用户付出代价的证明?
(2) 该种证明如何被校验?
(3) 如何确定挖矿竞赛的优胜者?
(4) 如果避免主链分叉等?
Proof of Space,空间证明
在技术进展的过程中,PoSpace方案作出了重要的探索。PoSpace即Proof of Space,空间证明。PoSpace意在取代比特币中的PoW机制,成为一种新型的共识机制解决方案。
这一方案目前已在一些区块链项目实施落地。它以用户支付的硬盘空间作为付出代价的证明,通过下载文件占据硬盘空间,所占的空间越大,说明用户付出越大。
PoSpace可带来以下好处:极大减少资源浪费;用户一次性付出硬盘空间后,后续挖矿不需额外增加付出等等。根据一些团队的测算,PoSpace里的用户行为可视作一种拓展性的博弈模型,随着时间增长,会有越来越多的用户加入进来。[1]
为应对硬盘空间造假的问题,PoSpace把节点分为两种角色:证明人和校验人。证明人即普通节点,需要存储较大的信息数据(如100G),而校验人存储数据库以及证明人的一小部分存储信息,以便验证。
当用户/证明人初次加入网络,他需要根据选择的存储空间大小,存储一部分具有特定序列的数据(存储的数据由用户的公钥决定,因此各用户的数据并不相同)。这些数据以有向无环图的结构存储,而每个数据块之间的关联关系,以Merkle树的形式发送给校验人。
由此一来,校验人可由公钥知道证明人存储的是哪些数据、由发送的Merkle树知道这些数据以怎样的结构存储。
在验证环节,校验人向证明人发送一份“挑战”。这份挑战是证明人存储数据块的某种随机组合。证明人需要根据挑战信息,生成对应组合数据的hash值,返还给校验人,由校验人验证该hash值是否正确。
由于挑战是数据的一种随机组合,而略微不同的数据都将使得hash值完全不同。因此证明人必须的确存储了“挑战”所指明的数据块,才能生成正确的hash值。而校验人由于存储了完整的数据库,他也可对证明人发回的hash值进行校验。
证明人有可能仅存储小部分数据,而仍然通过校验人的挑战(证明人所存储的小部分数据,恰好囊括挑战所包含的数据组合)。然而随着“挑战”的过程多次进行,证明人通过存储少量数据而生成出正确反馈的概率大幅下降。
因此可通过多次验证来避免证明人的作弊行为。这就是PoSpace里的空间确认过程。
“质量函数”的解决方案
而有了校验用户存储空间的方法,仍需通过一些方式来确定挖矿竞赛的获胜者。比较合理的方式应是,存储空间越大的矿工,越有可能在挖矿竞赛中胜出。PoSpace则通过设计一个“质量函数”来实现这个目标。
“质量函数”需要保持一定的随机性,而同时按照贡献空间的大小来区分各个矿工获胜的概率。因此一个简化的做法是,应对校验人的挑战,矿工反馈的hash值(一串数字)直接作为随机量,并根据矿工所占的空间对这串数字进行增减。譬如假若矿工存储的空间总大小为N,则对hash值开N次平方,得到质量函数。这样一来,矿工存储的空间越大,质量函数的数值越小。我们可以规定单次挖矿竞赛中,质量函数最小的矿工获胜。
但此时仍存问题:
由于矿工在一次性付出硬盘空间后,在挖矿过程中不需有后续付出,因此参加挖矿竞赛不需要付出代价,进行主链分叉几乎没有成本。为避免矿工随意分叉造成双花等混乱情形,我们仍需要一种规则来确定某链是唯一链,而所有用户均只记录这个唯一链,这才是真正达成共识。
由于每个区块由具有最小“质量函数”的矿工挖出,一个自然的想法便是:由质量函数来确定唯一主链。我们设定一个数量i,规定从最新的区块往前i个区块的质量函数相加,得到链的总质量函数。总质量函数最小的那条链,可判定为主链,在此基础上,为强调越早的区块所占的比重越高,可增加一个折扣函数,对早期的区块进行缩减(以提高其重要性)。
因此当主链出现分叉时,对两条(或多条)分叉链的总质量函数进行计算,即可确定唯一链,由此保证仅有一条主链,从而使各用户之间建立起一个分布式、同时又统一的账本系统。
总结
PoSpace使用物理硬盘空间作为付出代价的证明,解决了比特币里POW持续浪费大量资源的问题,同时可建立一个与比特币作用相同的电子支付系统。
PoSpace可认为是共识机制在POW基础上的一大进步。但与此同时,PoSpace仍存在一些问题:如引入了校验人角色,增加了系统的风险;如何设计和安排校验人,仍是一个问题;以硬盘空间为证明,存在着中心化的风险,因为少部分人可以通过巨大财力购置大量硬盘空间,持续垄断挖矿,造成类“51%攻击”等。中本聪“一枚CPU芯片代表一个个体,每个个体拥有平等挖矿机会”的构想,仍然难以实现。
但不得不说,PoSpace的思路为我们提供了许多启发,如通过随机的方式对用户付出的代价进行校验;通过设计区块质量函数确定挖矿竞赛的获胜方式;通过设计链质量函数来避免主链分叉等。沿着这一思路,我们完全有可能开发出适应不同使用场景的共识机制,如“注意力证明”、“时间证明”等。
此外,PoSpace中硬盘所存储的空间,若从无意义的字节,改为有意义的内容(如影片等资料),PoSpace或许天然地适用于建立网络资源共享社区。相信在不远的将来,空间证明共识机制将迎来更多发展和应用。
参考文献:
[1]Park S, Pietrzak K, Alwen J, et al. Spacecoin: A cryptocurrency based on proofs of space[R]. IACR Cryptology ePrint Archive 2015, 2015.
[2] Dziembowski S, Faust S, Kolmogorov V, et al. Proofs of space[C]//Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2015: 585-605.
文章版权为哈希未来所有,如需转载,请联系哈希未来工作人员。