在共识上寻求共识—Dpos和两军悖论

在共识上寻求共识—Dpos和两军悖论

蓝狐笔记 发布在 区块链 17686

前言:共识机制一直是区块链领域最核心的问题之一。PoW、PoS、DPoS、PBFT等,不同的算法都有自己的优劣点,在共识问题上的争论从来就没有停止过,这也是理解区块链的关键问题所在。本文对于理解区块链共识很有帮助,原文作者iang,源自于Steemit.com,由蓝狐笔记社群李熙和翻译。

铺设基于区块链的高性能金融生态系统的架构备受争议,原因在于有很多方式可以选择——集中式,分布式,无须许可,封闭式。

除开以上提及的这些,我们还有一个让人烦恼的问题,就是如何应对竞态条件(计算机科学术语:多进程间通信中,两个或多个进程对共享的数据进行读或写的操作时,最终的结果取决于这些进程的执行顺序)。

不论和中涉及,总有一些你想做的事和其他人想做的事不能兼得。或者说,你想要某件事发生,并且想要其他人能知道这件事会发生,这种情况在计算机科学的世界被称为两军悖论:

两支各由将军领导的军队准备进攻一座要塞。军队各自在城外的两个山谷驻扎。有另一个山谷将这两座山谷分割开来,两支军队的将军想要交流的唯一方式就是派出信使穿越这座山谷。

然而,中间的山谷被城中的守军占据,因此任何被排除的信使都有一定几率被驻扎在山谷中的守军俘获。当两个将军同意他们将进攻但还未就进攻时间达成共识时,他们必须满足同时进攻的条件才能成功的拿下要塞。

因此他们必须与彼此交流已在进攻时间上达成共识,并且两位将军都必须知道另一位将军也知道他们已经就此达成共识,原因在于确认收到对方消息的这一条信息也有同样的概率丢失,这就导致:两人需要就一个潜在的无限条信息组成的信息流需要达成共识。

思想实验包含:考虑他们该怎样达成共识。在这个最简单的形式之中,已知一个将军是领袖,决定进攻时间,并且必须将这个时间告知另外一位将军。现在问题在于我们需要一套算法能够让将军用来发送消息和处理已被收到的消息,并允许他们正确的涵盖以下内容:

是的,我们将在已达成共识的时间发起进攻。

要做到这一点是很容易的。两军悖论的微妙之处在于设计一套真正安全并能满足以上条件的系统是几乎不可能的(引自:维基百科)

在区块链中我们称为的共识问题(同样也可称为协调问题),在金融密码学的世界,被称为双重支付问题,而在数据库中这被称为原子性。也就是说,这在计算机科学是一个十分底层的问题,且并不是什么新鲜事儿。

现在让我们了解一下这个问题的前世今生:

中心化的双重支付保护

加密金融中的原始机制是一个简单的客户-服务器或受信任的第三方(比如SOX,一种支付系统),这就是说支持双重支付的价值发行者(这个发行者是一种货币)仅仅依靠一个服务器在双重支付中进行调解。十分典型的是,请求遵循先入先出(FIFO)排队方式,这在今天的数据库已经是标准了。

微信图片_20181022172632

图1-SOX,一种早期的电子现金系统,这种系统使用了一种客户-服务器发行者(Issuer)的结构来解决双重支付的问题

盲现金(BlindedCash)

一个中心化双重支付保护的显著变种就是对货币的盲签名,这个概念由David Chaum于上世纪80年代末期发明。盲货币作为一种货币token可以单独被使用(可验证),但是就像所有的数据一样,Alice可以将其同时给Bob和Carol。

对Bob而言,针对这种情况的解决方案就是将其收到的货币退还给发行的服务器,也就是印钞厂,并索要被重新签过名的另一份货币。同理,Carol也可以这么做,甚至以更快的速度。

微信图片_20181022172638

图2-盲电子现金系统使用了复杂的数学

现在,盲签名在被用于Token上时存在一个特殊把戏:当Token完成一次被修改的RSA加密算法时,其能够创造一个之前未被使用过的全新签名,但这个签名却依然有效,因此这个货币依然是被承认的。

因此,盲签名的“盲”字表示,货币的发行者不能追踪Alice用这些货币干了什么,这显然是十分有价值的!另一个关于电子现金的把戏是如果Alice确实尝试两次使用同一笔货币,造币厂可以使用加密手段来将这两笔被消费的货币合并,去掉匿名保护,并揪出罪魁祸首。

我涉及了部分关于盲双倍支付的内容,因为这是一个非常复杂的用于管制双重支付的系统中的一个例子,也因为这是我们诞生于上世纪80-90年代的金融密码学领域的开端。

投票

多服务器的选择变得流行主要是为了追求可靠性。比如,早期NASA的航天飞机就有以三个IBM主框架形成的投票环(以及一些备用框架)。在每一个投票系统中,都是占大多数的获胜,其余的小部分会被断开连接,并被取代。

早期的建议投票系统事实上被证明有许多不足,而现在在行业中流行的关键词是Paxos(一种基于消息传递且具有高度容错特性的一致性算法)和PBFT(practical byzantine fault tolerant,拜占庭容错),而且支撑着这些内容的是Lamport(Paxos提出者),以及大量理论,PhD,论文,图灵奖!总之就是各种复杂的东西。

以上提到的这些内容都有一些挺严重的局限性,主要有:

· 从管理上来说他们是中心化的,并且/或者/因此 · 所有的参与者都是已知的。

换句话说,拜占庭将军问题的解决方案中我们知道谁是将军的假设,在以上提到的这些情况中并不适用。

工作证明(Proof of Work)

中本聪发现任何中心化的部件都能够被攻击,并会受到攻击。这个发现是准确的:MTB关停了eCash系统就是因为遭遇了意料之外的成人购物,DigiCash被政府当局干预致残,WebMoney遭到名誉上的攻击,e-gold和LibertyReserve被美联储扳倒。

这个名单可以一直列下去,即使是作者本人也比预想中里这些灾难更近。你可以自己做一些调查来终结这些指责,以及其他一些偏见。

觉察到这个缺陷的人不止一个,但是是比特币给出了解决方案。

因此,中本聪说,我们需要终结这种易受攻击的中心化机构(CVP,也称TTP)。并且,通过推测我们也知道并不能信任已知机构的投票系统,我们必须分享并验证这些数据是相同的,并且同时我们必须有容易接入的出入口,即匿名性。

这个东西很棒,但是仍不能让我们解决双重支付问题,我们只是将数据从单个地方挪到了一个大的多的地方(从一个节点到多个节点)。

一个优雅且著名的解决方案是工作证明(PoW)或者中本签名,一个基于用哈希数学问题来确认正确区块交易的彩票系统。这个彩票系统的密码学的本质随机选择一个制造区块的矿机。

将被称为挖矿的昂贵的哈希搜索和奖励耦合,并加上一些繁琐的博弈论和概率问题,所有这些元素都被用来将系统设计得能够驱使矿机不停工作。

微信图片_20181022172819

图 3. 在PoW中,机器人必须从一大堆错误的数字中找出诸如000000000374af72…的正确答案

比特币是一个出色并且优雅的解决方案,因为它开阔了我们的思维,让我们想到了完全的分布式的应用(或货币)的可能性。但是PoW消耗了太多能量,多到市场无法承受,多到能够成为一项附着在货币上的吓人的税(比特币4%,以太坊11%!)。

而随着使用比特币的费用越来越高,大多数人将无法使用它。高额回报和上升的价格同样也导致了大规模的挖矿,并不可避免的导致了矿机的中心化。虽然系统本身依旧毫无问题的运行,但这由能够抵御审查的设计方案完成的系统却落入了少数几个公司,而这几个公司几乎都坐落在一个以审查严格而闻名的国家。

权益证明(Proof of Stake)

有人提出我们只需要将以CPU投票的模式改为以价值投票的模式来选择谁对(下个区块中)双重支付的问题做出决策。毕竟,区块链十分准确的建立在货币拥有的制度上,因此拥有更多货币的人更可能选择保护系统,因此这个偏向性是合理的。

虽然可能让小额货币拥有者感到不适,也对民主制度有所冒犯。

这个理论也因为一下原因受到批判:(1)将权力交给最多价值拥有者手中;(2)“无风险”问题(the “nothing at stake” problem):不断试图分叉不需要任何代价,而对于矿机来说最优的策略是尽可能多的挖矿(制造区块),因此不论矿机挖的区块所属于的区块链最终是否获胜成为正确的那一条链,都能获得交易费。

简单的权益证明似乎并不奏效,究竟什么系统才奏效呢?让我们将问题逐步分解。

让我们去参与一个挖矿中心化的会议

当我们观察比特币矿工由中国垄断的现状时,很明显他们互相之间时认识的,因此他们能够相互交流。而当面对今天的大到能将国家变暖的挖矿规模的,我们知道比特币开始对矿工的匿名假设早已变得如履薄冰了,因为我们只需要看电力消费就能知道谁在挖矿,或参与任意一个比特币会议。

另一方面,他们可以相互勾结。至今他们并没有选择这么做,或者至少我们不知道。因为从历史上说这个情况还不能被证明是可靠的,也许动机与道德能够被改进提高?

只有他们的动机和道德能够让他们不相互勾结;在这种情况下矿工又回到了乌龙指失误(键盘输入导致的错误)的时候,有的交易者会意外的将一定数量的比特币而不是satoshi设为交易费,所以道德在这里确实起着一定的作用。另一方面,一些矿机会挖出空的区块,即使有成堆的被延迟的交易排成长龙。

今天的矿机中心化不仅是意料之外的,也不符合比特币最初的设想。矿工的正直会是一个可持续的未来吗,从历史角度来讲,正直并未被证明是可靠的,想想银行就知道,所以我们真的应该继续支持依靠动机和道德来支撑的区块链吗?

如果我们退一步接受矿工可以中心化的事实呢?并且我们知道他们是谁?或者更矛盾的讲,矿工应该中心化并通过身份验证?

如果我们接受矿工中心化和矿工身份验证,我们可以指定矿工。但是指定ASIC矿机只会将我们带回在开始的易受攻击的中心化局面。

DPoS —— 如何管理将军

那么我们究竟该如何更好的管理矿工呢?如果我们可以指派他们,我们同样可以解雇,这就将我们带回了两军悖论

微信图片_20181022172859

图 4. 生产者制造区块, 1.验证交易,2.添加生产者奖励,3.计划每一个接收的信息,4.根据内部状态进行处理,5.批准交易为/非双重支付/,6.发布已被签名的交易

考虑到现实和经验带来的一连串新的需求,设计一种新的双重支付系统似乎可行,DPoS(Delegated Proof of Stake)就是这样的再设计,并使用了以下工具:

1. 一个生产者被选为决策者来避免一个区块中的双重支付,见图4,每制造新的区块获得新诞生的货币作为奖励;

2. 很多生产者被选择并被给予一个由一圈区块构成的罗宾环,从而在环内创造出一个存在竞争的市场,以保证可靠性并解决分叉,见图5;

3. 链上运行者一个开放的社区通过投票来管理生产者,每个成员通过PoS原理进行投票。选择和解雇生产者使用的是同一原理,即多轮拍卖式。见图6。

微信图片_20181022172932

图 5. 七个将军解决七个生产者问题组成的圈

之后社区会被要求通过以下手段管理他们自己的链:

· 检查和同意他们进行的交易

· 投票选举或解雇生产者,根据他们的记录和其他参考选项(比如生产者可以自由的提供其他动机比如降低收入)

· 维护他们的权益(stake)或投票权

微信图片_20181022173017

图 6. 社区通过投票取代不合格的生产者

一个政治化的经济体?

从共识的角度来说,DPoS是基于证据(proof)的代理权益(stake-delegation),即生产者向社区提供自己制造区块的证据,然后社区使用其权益来管理生产者。

从政治的角度来说,DPoS与基于土地拥有者投票的两层代理民主制度(two-layerrepresentative democracy with landowner suffrage)较为相似。在这种制度中:

· 代表(representatives)即为那些由社区选举出的生产者,有生产者来处理那些日常的问题;

· 对代表的投票权被给予那些拥有一定资产的人。这笔资产可以是承诺给社区的一笔积蓄,也可以是冻结起来的积蓄;这笔资产从更广义上代表着历史上的土地拥有者的投票权,作为对商人阶层带给社会的财富与贸易的认可。

这种机制的准确设计——存款帐号,有多少生产者,多就诞生一个区块,多久一个环,以及众多其他元素,显然是更深层次也是更有趣的问题,今天就不做讨论了。

它该如何运作?

这个机制以及被不少具有一定规模的系统使用,Bitshare,Steem,EOS,Tezos,PeerPlays,Ark.io等等。

虽然可以对其批判,但迄今为止评论似乎更频繁的讨论其特点以及与其他机制比较,而不是其弱点:

1. PoS因为“无风险(nothing at stake)”问题而变得脆弱,但只有当权益(stake)被用来直接参与区块建设的时候这个问题才会出现。而DPoS则解决了这个问题,因为在DPoS中对区块的处理被交给了生产者,这种责任的分离解决了“无风险问题”;

2. 有几种生产者会出现恶意行为的可能——他们可能会对交易进行干涉。但这事实上可以被转换为好吃,因为不合格的生产者会通过投票被解雇,这就是DPoS的意义。与比特币现在制造空区块的非法行为相比,DPoS的表现要强得多,因为它有一个惩罚机制;

3. 勾结依然存在可能性。当然,勾结在其他区块链也存在可能性。重要的是哪一种机制在勾结存在的情况下运行的更好,至今为止这我们的钱都得到了妥善的管理,因为惩罚机制的存在。而在缺乏管理的纯PoW中,不管矿工做什么都不会受到惩罚,即使是51%攻击。在DPoS中,只要勾结被发现了,不管是1%还是51%我们都可以通过调整管理方式来对付。

4. 纯粹的比特币使用者会指出,添加管理层打破了区块链的无信任本质。然而并非如此,因为关于无信任有以下谬误:

a. 其他区块链没有管理层的谬误。这并不正确,事实上是由管理层的,只不过没有被明写出来,被拒绝承认,以及不稳定。从本质上来说,我们使用有明确规章制度和透明的管理取代了专设的管理。问题不在于这么做是否加强了管理程度,而在一明确的管理是否比暗地里管理更好。

b. 比特币的设计然我们不需要信任矿工。在考虑一下空区块的问题:我们现在必须相信矿工会生产有效的区块,而事实并非如此,这就将区块链的数学上本质和“信任”的人性本质分离开来。PoW下的区块链终结了一部分信任,但并不是所有,而在这种情况下,当我们真正需要信任时,我们却无法再建立信任。

DPoS还有一些值得被提及的优点:

1. 由于其废除了哈希挖矿,DPoS会比PoW便宜得多。而收益的会是社区,因为我们会将这部分税归还给社区(如前面写到的比特币4%,以太坊11%)。

2. DPoS更加环保。

3. 通过添加正式的管理层,我哦们也能够有计划的为软件进行升级。这意味着,用户将会有机会对系统的改变做出投票,生产者根据投票结果行动。这个机制几乎使恶意分叉成为不可能,并使区块链充满活力,由于它可以随着不断变化的需求而进化。比如:仍未解决的PoW中DAO(decentralizedautonomous organization,去中心化自治组织)的梦魇,以及关于区块大小的争论都是在DPoS中得到解决的问题。

4. 正式的管理机制也给了社区对改进区块链提出建议的机会。

5. DPoS致力于使做决策变得高效,从而使系统真正能被大规模使用。让我们把关于性能的讨论留给其他文章,但这里值得一提的是,测试中Bitshare实现了1000倍于但当下比特币的性能。这样的性能让人变得能够容忍很多其他的瑕疵。

这些优点当然也意味着存在尚未被发现的缺点,但他们会是企业和个人能够容忍的缺点。

风险警示:蓝狐所有文章都不构成投资推荐,投资有风险,建议对项目进行深入考察,慎重做好自己的投资决策。

文章标签: dpos
评论
登录 账号发表你的看法,还没有账号?立即免费 注册