EOS一直是大家关注的焦点,但最近一提到它,后面总是满嘴DPOS:“BM抛弃DPOS”“DPOS不安全”
李笑来在文章中直言EOS最大的风险是DPOS。就算有些居心不良,各种会议总说DPOS不好,某某项目XX共识真的很棒。至于DPOS是什么,作者穷到只能找到大众浅薄模糊的判断。查了一下,原来我们很少有人能真正理解DPOS机制的原理,也很少有一篇通俗易懂的文章告诉你DPOS是什么。
插图DPOS分块
DPOS机制可以简单地分为两部分:选举节点和分块机制。节点选举的目的主要是服务于区块选举。但事实上,我们对DPOS的抱怨都集中在第一部分,而街区的安全是DPOS机制的核心。确保集团层面的共识是确保你我资产的关键。接下来提到的技术解释结合了BM对dpos的解释和dantheman的《DPOS Consensus Algorithm The Missing White Paper》
。为了更方便地理解DPOS的机制,我们将DPOS从EOS中的21个节点缩减为3个节点,在最小尺度下考察DPOS的运行。
正常情况
假设只有三个节点A、B、C,它们按顺序互相遮挡。完成一轮的一系列方块。没有一个节点出问题,自然就形成了一个最长的链条,这个最长的链条就是所有节点的共识。
几个恶节点
在封锁过程中,假设节点C是恶意分叉节点,A和B是诚实节点。
因为限制必须按照A-B-C的顺序,所以C节点只有在轮到它阻塞时才有机会进行分叉阻塞。但是,当轮到节点A进行封锁时,根据最长链原理,它不会选择跟随C,而会选择原来的主链。如果节点C坚持在自己的分叉链中产生方块,那么在一个回合中,主链可以产生两个方块,分叉链只能产生一个方块。主链的长度始终是叉链的两倍,是安全的。
尚力财经小编2022
那么其他节点需要一种方式来判断原链为主链,不会选择叉链。这就需要不可逆阻塞的概念。比如打开你的EOS钱包,可以看到每一笔新的转账都会有一个12块的验证指示。每个新的积木实际上是在加强前一个积木。同样,当一个节点判断该链为主链时,只需要看链中的前一个块是否已经被2/3个1节点批准。
比如下图,区块2被区块链3和区块链4确认。也就是说,它由C和A节点确认。
尚力财经小编2022
网络问题
假设节点A、B、C之间的通信因网络问题而中断、延迟。然后A、B、C还是在特定的时间出来,会形成三条长度相同的“主链”。当网络恢复时,第一个面临主链选择的节点决定哪一个将是最长的链。
从图中可以看出,每个节点在网络中断中有两个块。为了利益,选择加入另一条链,就意味着在断网期间放弃了自己区块的利益。当节点B和C拒绝加入节点A的链,继续在各自的链中进行封锁时,就会形成死锁。但DPOS机制中有一种可以轻松解决这类问题:它会在一定时间内对各个节点的分块顺序进行重新排序,所以当死锁被打破时,肯定会出现最长的链,网络问题也不会导致不安全。
超过2/3的恶意节点
如图:假设节点C和A是联合恶意节点。当C处于阻断期时,可以同时产生三个分叉的阻断,形成三个链。而节点A也会在三条链上进行屏蔽,这样经过2/3节点确认后,三条链都可以存在。这时候就需要“最后一个不可逆块”来确认主链。什么是不可逆块?在比特币中,“链条最长”是所有人的共识。每个矿工都可以发动攻击,从一个旧区块再生一条链来竞争成为主链。但是,要想赶上已经出了几块的主链,就要付出巨大的经济成本。正是巨大的经济成本构成了比特币的不可逆性。块越老,就越不可逆 在DPOS中,由2/3个1节点确认的块是不可逆块,最后一个不可逆块可以决定哪一个成为主链。这个问题,回到时间点5,节点B产生一个块,经过时间6和时间7,每个节点产生一个块,也就是时间点5产生的块。由A、B、C三个节点(大于2/3 ^ 1)确认该块是不可逆的,也是当前链中最后一个不可逆的块。因此,可以确认其所在的链条1成为主链条。以上所有DPOS共识的简明版本都可以安全运行。在真实情况下,EOS已经使确保共识更加安全,拥有21个超级节点和100个备选节点。如果一个节点打破了共识,它将被投票否决。如果一个超级节点出现问题,它将被一个备用节点替换。可见,DPOS的共识并没有公众说的那么不安全,那么大家对DPOS的误解在哪里呢?对DPOS的误解随着区块链的迅速升温,共识算法越来越多。但很少有经过长期检验,为大众所熟知的。尤其是在EOS本身巨大的光环效应下,DPOS被放大在聚光灯下进行审视、判断和怀疑。其实讨论是好事,但只有在正确认知的前提下才可行。“一票一票”“一票一票”我听过的关于DPOS最大的非理性判断是:“一票一票”假民主。诚然,在社会生产活动中,在各级市县国家的重要选举中,在每一次重要的岗位变动中,在好声音和相声小品的晋级比赛中,人类都在尽力做到一人一票。努力做到对社会每个人公平公正,一人一票。作为社会的一员,我很感激这个机制。但这并不意味着“一人一票”适用于所有场景,尤其是在金融界。自1606年荷兰发行面值150荷兰盾的东印度公司股票以来,很少听到反对“一票一票”的声音。时至今日,社会早已认可金融界的投票制,即使你愿意,也可以花钱购买一家公司的所有权。仔细想想,“一票一票”更深层次的含义是,你比别人花的钱多,你就有更多的风险,你就应该获得更多的回报和控制权。DPOS的共识机制之所以选择“一票一票”,是为了保证在共识被破坏、运作不畅时,投入资金最多的节点损失最大。只有这种约束才是有效的,如果手握1EOS的人拥有和手握百万EOS的人一样的权力,那才是最大的不公。去中心化=基层存储值?足够的去中心化是否等同于作为存储价值的基础层?实际上,用这句话攻击DPOS是站不住脚的。5月26日,Bitkin遭受了51%的双花攻击,11月29日至12月2日,加密货币Vertcoin遭受了51%的双花攻击。已经证明,简单的一致性算法不能保证连续例子的安全性。我们要知道,无论有什么共识,它的最终目的都是为了保证存储在上面的价值的安全。谈到权力下放,我们必须谈谈BTC,它被宣传为彻底的权力下放。真的是完全去中心化吗?前段时间,吴表示,在与奥奔聪的电脑大战打响之前,比特币的价格会受损。结果接下来几天就跌了。与以煤矿为主的BTC相比,DPOS不是更分散吗?DPOS仍在发展对DPOS共识的合理看法并不完美。比如选举21个超级节点,是否可以加入一定比例的考核,最后100个候选节点的回报是否太低导致积极性不高,是否存在一定的贿选行为,如何界定和防范。不过这些问题都是选举节点内的,不会影响到离任部分。真正支撑DPOS的核心仍然是健康。当DPOS面临一些批评时,一些潜在的信息也应该让公众知道。 EOS不是唯一采用DPOS机制的公司。Bitshare有101个节点,Steemit有21个节点,Lisk有101个节点,Ark有51个节点,Torn有27个节点,EOS Force有23个超级节点。在BM的帮助下,Btishare首次采用DPOS机制已经3年了,在此期间得到了Steemit的验证。我们可以看到,DPOS机制并没有被证伪或破坏,它已经被越来越多的项目所采用和接受。如果一个共识有问题,如何在更多的项目中使用?DPOS并没有止步于此。BM和他的团队还在补充和完善共识机制。2018年5月3日,在eos.io 3.0版本中,BM强化了最后一个不可逆区块导致的DPOS共识的丧失。有兴趣的可以去看看https://github.com/eosio/eos/issues/2718DPOS,目前还在健康发展。(本文作者:两个帮派头目)