区块链新一代共识算法:VRF分布式可验证随机函数

背景

共识分代

假设一个小岛,没有法币,由101个对等的没有隶属关系的记账人来记录小岛的经济活动(也就是所谓去中心化记账)。这样的设计,冗余性应该非常好,某个记账人出问题了不影响整个系统,最大的麻烦是这么多人同记一本账,而且没有中心化的统一指挥,会不会出现不同人记的不一致?以谁为准?那么不同人分布式各自记账的前提下,怎么用规则保证各自记的账相互核对是一致的?这个就是所谓共识问题

第一代 POW “以力取胜”

101个人在小岛的沙滩上围成一圈,刚开始规定:每个人记完账后,就将本页账本高举过头顶并高喊“完成”,谁先完成这个动作就以谁记的账为准,就可以拿到记账奖励!结果这个做法刚试运行就乱套了,因为记账这个动作不是很难的动作,每个人都可以轻松完成,而且速度大家也差不多,都很快,结果每轮记账,总有好几个声音同时在喊“完成”,也搞不清楚谁先谁后,结果让人无所适从。在记账奖励刺激下,还有的记账人其实没有完成也喊“完成”,想浑水摸鱼,让所有人白白核对一遍账本却没有进展,让试运行根本没办法继续下去。

怎么办?先贤们想了个办法,核心思想是增加难度,记账是个严肃的事情,经过共识后的账本是历史的一部分,不能随便阿猫阿狗拿这个来开玩笑,记账人要证明自己确实在严肃认真地进行记账工作,这个过程称为POW(Proof of Work, 工作量证明)。于是先贤们给每个人的账本加上一对20公斤的哑铃作为配重,这下问题缓解了,就算同时记账完成,举到头顶也要时间了,每个人力气有大小,好几个声音同时在喊“完成”的现象大大减少;至于对作假的记账人,没有完成也喊“完成”的,作假也不是没有代价了,首先,光喊“完成”但是没有举起哑铃的,大家一眼就看出来了,自动过滤;其次,对于举起了哑铃但是记账错误的或没有完成的,大家核对后也不会承认其有记账奖励,结果是白费力气,拿自己开涮。几次下来,所有人都明白了,加了配重后,唯一的正途就是认真记账,抢在人先。大家掀起了一股强身健体的高潮,力求增加力气,记账后能快点举起账本。哑铃很快就不足以区分难度了,规则换成了举杠铃。很快举重记录就超过了奥运记录,因为用上了机械手。接下来事情就越来越变味了,起重机、龙门吊之类纷纷粉墨登场,一个小岛用的重型机械比三峡工程还多,而用途只是在记账过程中将配重举到头顶,空耗能源,浪费资源,引起了国际社会巨大的争议和批评。

真实世界中,比特币和以太坊用的就是POW,以力量取胜(即芯片算力),目前已经发展了好几代专用芯片,消耗了巨额的设备购置资金,POW挖矿过程中也消耗了很多能源。另外,POW的性能也不好,比特币和以太坊的tps(每秒处理的事务)都不高。POW最大的优点是久经考验,比特币运行到现在十年了,POW算法证明是行之有效;以太坊POW运行到现在也好几年了,想换成其他算法一直没换成。可见POW现阶段是有其存在的道理的。

第二代 POS/DPOS “民主投票”

第一代POW虽然行之有效,但是也带来了很多问题,小岛居民决定从历史吸取经验,采用人类社会普遍采用的“民主投票”方式来达成共识,一币一票(Proof of stake),决定以谁的账本为准。在以跳楼价卖掉了去年巨资买进的世界最强的龙门吊后,小岛的用电量又恢复到了农业时代的水平。换共识算法这么大的事情,好在“民主投票”方式比较容易理解,基本上都接触过,所以除了血亏的龙门吊购买者和代理商之外,其他人基本都同意了。小岛居民每天投票一次从101个记账人选举21个“超级节点”,每个被选中的按本轮次事先确定的次序记账一页。所有选中的记账人完成一遍后,重新洗牌。如果记账出现了纠纷,也按投票方式确定以谁为准。

真实世界中,以太坊准备从POW换成POS,EOS的共识算法是DPOS(DPOS和POS的差别可以认为是间接民主和直接民主的区别,POS是一币一票直接投票;DPOS是一币一票先选举出人大代表,再由人大代表对具体议题投票)。实践中效果很一般:

  • POS虽然不浪费能源,但是别忘了人类社会永恒的不均衡性,很多时候,巨额财富只掌握在小部分人手里。以太坊大部分都只掌握在少数“巨鲸”手里,改成POS,小散没什么话语权,也不会取关心投票,建设生态,和去中心化的理念相违背

  • DPOS在EOS的实践也有待考验,目前看普通使用者也没有什么动力去投票,一是对被选举者不了解,二是投票也花费时间,更何况普通人的票也起不了太大作用,因为抵不上“巨鲸”手里一个零头。

其实细究之下,“民主投票”方式比较适合决定重大的事项和发展方向,有协商过程的,效率高不到哪里去,区块链事务属于例行事务,最关键的不是谁来记账(只要认真记账,阿猫阿狗都可以),而是赶紧达成一致,流程别中断,别分叉。所以“民主投票”方式是否是这种场景的最优解,这个要商榷。

第三代 VRF “运气抽签”

之前提到,共识算法,最关键的不是谁来记账,而是赶紧达成一致,流程别中断,别分叉。除了投票外,人类社会还有一个解决办法是抽签,不过不是排队轮流从一个筒子里面抽签(那样太中心化了,中心的那个抽签筒容易动手脚),而是每个人一个抽签桶,各自抽完了再亮相出来比大小,最小的为准;两人抽中同一个签,可以这两人再抽一轮。

那么怎么防止作弊呢?比如每个人都挑最小的签,然后宣称自己是抽中呢。这样的分布式抽签永远没有结果了。现实世界针对这样的问题,采取一种叫做“零知识证明”的数学机制,没做实际抽签动作,是凑不出实际的结果的,也通不过大家的校验。在区块链小岛上,你可以想象成,每个人边抽签边用手机录下抽签过程和轮次标志,如果大家有疑问可以回放录像。

总之,这个解决方案我感觉很接近于中本聪原来设想的那个区块链世界。不再有矿场和矿机浪费能源,损害去中心化;效率也很高;而且保证了尾部参与者也能有机会参与记账,有一定的公平性。下一代的共识算法已来

VRF原理

推论

共识算法是区块链技术框架中最重要的组织部分。过去区块链的乱象,和初期共识算法的不成熟不完善是直接相关的。

POW靠蛮力取胜,中本聪设想的“一cpu一票”的乌托邦并没有到来,他忘记了人类社会的不均衡性,POW形成了一个个中心化的大矿场,利益的集中化导致普罗大众并不关心区块链;矿场主本身也是逐利而来,并不关心生态;资源和利益集中在少部分大矿场和大交易所手里,普罗大众只求炒币分一杯羹,结果被“割韭菜”。

DPOS也存在同样的问题,投票制度最早是希腊雅典在面对波斯人入侵时被发明出来决定是战是降的生死存亡问题(参见民主的起源);DPOS现在投票率很低,票又集中在少数人手中,那些炒作eos的普通人有几个真正关心生态并花时间认真行使投票权?

**解决这个问题,需要长时间探索。也许抽签制的VRF是个解决方法。**至少这个制度下,尾部的参与者也是有可能获得利益的,利益分配没有像过去那么集中。

  • POW算法相形见绌,后续新的公链,采用POW的应该不多

    • 矿机厂商长远发展受限,需要加快转型

    • 矿场转型迫在眉睫,区块链挖矿已经是“夕阳产业”,又不像矿机生产商那样可以同时生产AI芯片,不要再新增设备了,更不要去抄底低价矿机,减少矿场主在区块链的影响,有利于后续健康发展(加上中国政府的态度)

  • EOS发展受限,需要发挥性能优势,尽快落地

    • 曾经比较看好eos,但是目前看落地速度太慢,比如将加密猫应用搬到eos,应该可以大大提升体验;比如联合大游戏公司,将虚拟资产上链
  • 公链和联盟链合流

    • 目前看VRF性能还好,可以上千tps,之前很多公链是拿以太坊将POW改为PBFT之类的算法,大大牺牲了去中心化,提升了性能,性能也就上千;现在VRF性能差不多,去中心化程度大大加强;而且PBFT再提升性能到单链上万也是很难的,与其这样,不如直接一步到位改成VRF,加上跨链技术,多条链,速度可以进一步提升

    • 联盟链很多情况下本来就是“伪需求”,线下场景已经有信任了,何必再区块链,原来数据库不行么。笔者接触的项目,很多也是瞄准公链去的,一开始先只开放部分入链权限给合作方企业,将来搞大了,开放冷钱包,面向社会公众,变为公链。为了这个需求,对技术要求是比较高的,要求支持可插拔的共识机制,一个链要支持POW,PBFT等等多种算法,造成技术复杂,要考虑可扩展性等复杂问题,以太坊说是要从POW切换到POS,规划了好几年,现在还没切换过去。没这么简单!

    • 假如一种算法,性能可以,同时又去中心化,能同时支撑公链和联盟链的性能需求,一开始就支持各种业务场景,那么原来的联盟链就没有单独开发的必要了,之后只是会分许可链和非许可链,按中国的强监管国情和世界金融业的KYC&AML需求,公链也会有许可和身份认证要求,所以许可链和非许可链也会合流。终于,区块链的技术选型,可以不用那么复杂了

合流后的区块链特征

  • 公链的底子。设计就是面向社会公众。可以支撑千万级别的用户数量

  • 算法采用去中心化程度好,性能又好的算法,不再为了性能牺牲去中心化或者为了去中心化牺牲性能。

  • 企业级应用的区块链,进入普遍需要许可,但是许可程度会有区别。

你可能感兴趣的:(区块链)