浅谈 PoW 共识与 PoS 共识差别

在秘猿小课堂 16- 25 期,咱们给读者介绍了构建加密经济网络的技术实现的两个部分,即 Cell 模型和 CKB-VM 虚拟机。在本期中,咱们将会进入构建加密经济背后的三大支柱之一的共识部分(加密经济的三大支柱:技术实现、共识协议、经济模型。)在这一部分,咱们会给你们讲解,秘猿科技技术团队在深刻研究 PoW 和 PoS 以及其余共识后,为何坚决选择 PoW 做为底层公链 CKB 的共识协议缘由。

秘猿科技区块链小课堂第 26 期算法


关于 PoW 和 PoS 的误解太多,想要在一篇文章中讲个明白实在是一个极高难度的任务,因此这里只简单讨论两点,一个是从经济学上思考 PoS 给出的美好承诺是否可靠,另外一个是 PoS 本质上是一种许可机制。之因此拿这两点出来是由于不少讨论很是纠结一些技术性的细节,忽视了这两个根本性的问题。segmentfault

成本悖论

区块链技术提供的价值是去中心化的安全,而安全是能够用攻击成原本衡量的。一条链的攻击成本有多高,它就有多安全。安全

区块链的共识节点提供的产品是安全,共识节点是网络服务的生产者。咱们也知道,经济学里面有一个基本定律,在彻底竞争市场中,生产者在均衡状态下的边际收益等于边际成本。也就是说,若是区块链的共识算法创造了一个彻底竞争市场,提供多少安全,就须要多少生产成本:微信

攻击成本 = 安全程度 = 生产成本

想要提供多少边际安全,就须要付出多少边际成本。如今 PoS 告诉咱们,咱们能够提供等量的安全,可是只须要 10% 甚至 1% 的成本,你不会以为很奇怪吗?为何 PoS 这么容易就打破了经济规律?网络

一种状况是,同等安全程度的PoS须要的实际成本是同样的,只是一部分被隐藏起来了。以 DPOS 为例,若是你想要作 Validator,就须要经过某些方法搜集足够多的票投给本身,进入前 X 个 Validator 的列表才行。搜集足够多的票的成本是多少呢?这个成本对于不一样的人/机构是同样的吗?若是不同,这是一件好事仍是坏事呢?这个成本是一个公开信息吗?若是不是一个公开信息,这是一件好事仍是坏事呢?架构

我很喜欢一句话:less

Financial institutions make people feel safe by hiding risk behind
layers of complexity. Crypto brings risk front and center and brags
about it on the internet.

而把成本以最清楚的方式公开在全部人面前,正是 PoW 的特色。工具

PoS 不是真正的 Permissionless

还有一种状况是,PoS 没有创造一个彻底竞争市场。区块链

在 PoS 中,将来的共识群体是由今天的共识群体决定的。任何新的节点想要参与共识都须要经过至少一个交易来实现(e.g. 抵押,投票,etc.),而这个交易是否被处理是由今天的共识群体决定,他们能够处理这个交易,也能够不处理这个交易,若是不处理这个交易,新的节点永远都没法参与共识。同时,「不处理交易」是容易假装而难于惩罚的行为,我尚未看到能在共识协议中解决这个问题的方案。PoS 每每是根据 Stake 的权重来分配出块比例(和节点数量不要紧),考虑到大部分系统中 stake 的集中程度,这是一个很是实际的问题。加密

PoW 是完全的 Permissionless。不管何时,只要你愿意,均可以买矿机和电力加入出块者的行列,不须要今天的矿工给你任何形式的许可。你也许会说,我仍是须要购买矿机和电力呀,这是否是一种形式的许可呢?是的,从更低一层来讲,这也是一种许可。但遗憾的是,在全部的 Proof of XXX 中,这已是最去中心化的许可形式了,毕竟矿机生产和电力资源的去中心化程度远高于各类 Tokens。咱们老是应该追求尽量的去中心化,不然用回中心化系统就行了。

或许又有人问:若是设计一种不须要向链上发送任何交易,只要 Token 放在那里就能够参与共识的 PoS,不是就解决了你说的问题吗?

这会带来两个问题:

  1. 若是 Token 放在那儿就能参与共识,意味着用户对参与共识没有任何承诺,不参与共识也没有任何成本和惩罚(用户可能根本都没上线),这样的共识是很难设计的;
  2. 会有 Nothing at Stake 的问题,这里再也不多言。

Layer 1 必须用 PoW

Layer 1 是加密经济的基础,承担 Layer 1 角色的区块链必须是一个无需许可的网络,由于 Layer 1 必须是全球共享的、中立的设施,就像互联网,而"须要许可“则意味着它是受到某一群人控制的,与这个目标是根本冲突的。从上面的分析咱们能够得出一个结论,若是咱们但愿 Layer 1 尽量的去中心化和安全,Layer 1 就只有PoW 一个选项。PoS 不是不能用,只是不适合 Layer 1。

更多讨论

这两天在「橙皮书」的微信群里面产生了 PoW 和 PoS 的大讨论,甚是精彩,从讨论中我看到了许多有价值的观点。

因为微信群自己是一个很是不适合讨论的工具,讨论到后来不少回复被忽略,不少问题被反复提出来车轱辘说,效率实在过低,所以我在这里将讨论中提出的问题整理出来,统一回复一次,避免重复劳动。

A:POS 大户坐着得到的资本利得,是小散没法逾越的鸿沟,且没法约束他的权利。
B:这个问题是社会正常现象吧,有钱的人挣钱自己就是比平民容易,他投入这么多钱收入却比别人少,那才是不公平啊,如今是你们得到的比例是同样的,大户投入的钱多,就是会得到更多的回报

这是一个 PoW 和 PoS 讨论中常见的对话。A 提出了两个问题:

  1. (公平性问题)PoS 大户坐着获利,普通人没有;
  2. (没法制约)PoS 大户的权利没法约束。B 回答了 1。

对于问题 1, 我赞成 B 的见解。投入多回报可能是合理的,不管是 PoW 仍是 PoS 都是这样, 区块链是帮助实现过程公平而不是结果公平的工具。在区块链里面咱们依然会看到马太效应。试图用区块链去解决结果公平的后果是区块链治理的内涵无限扩大,将本该由协议解决的各类问题(后面会看到)通通推给投票去解决。

然而不管是历史仍是理论早就告诉咱们,世界上并无完美的群体选择制度。区块链是一个可以记录数据,保证数据不被篡改,为全部人提供数据的工具,经过这样一个工具帮助咱们更好的实现过程公平,已是很是很是大的进步了。

问题 2,是一个在讨论中被忽略的关键问题。投入资源换取回报天经地义,但前提是你想投入就能投入吗?举个例子,一个明星创业团队融资,是否是任何 VC 想投就能投进去呢?PoW 具备很是好的开放性,使得后来的共识参与者老是能够加入共识群体,而 PoS 不具备这样的开放性。引用这里的讨论:

在 PoS 中,将来的共识群体是由今天的共识群体决定的。任何新的节点想要参与共识都须要经过至少一个交易来实现(e.g.抵押,投票,etc.),而这个交易是否被处理是由今天的共识群体决定,他们能够处理这个交易,也能够不处理这个交易, 若是不处理这个交易,新的节点永远都没法参与共识。

同时,「不处理交易」是容易假装而难于惩罚的行为,我尚未看到能在共识协议中解决这个问题的方案。PoS 每每是根据 Stake
的权重来分配出块比例(和节点数量不要紧),考虑到大部分系统中 Stake 的集中程度,这是一个很是实际的问题。

PoW 是完全的 Permissionless。不管何时,只要你愿意,均可以买矿机和电力加入出块者的行列,不须要今天的矿工给你任何形式的许可。你也许会说,我仍是须要购买矿机和电力呀,这是否是一种形式的许可呢?

是的,从更低一层来讲,这也是一种许可。但遗憾的是,在全部的 Proof of XXX
中,这已是最去中心化的许可形式了,毕竟矿机生产和电力资源的去中心化程度远高于各类Tokens(的分散程度)。咱们老是应该追求尽量的去中心化,不然用回中心化系统就行了。

「是否可以投入」自己能够看做一种 Option,有很是高的价值。PoW 能有这样的性质,是由于工做量证实的计算是一种不依赖历史的计算,不管你在任什么时候间点购买算力加入计算,你都和其余矿工在同一个起跑线上,这是一个很是独特的、反直觉的性质,正是这个性质使得后来者老是能打破了早期参与者的优点。

PoS 不一样,由于 Stake 是系统中内生的资产,资产的全部权是由系统历史决定的,交易顺序是由系统历史决定的,所以不管是须要抵押 Token 加入的 PoS,仍是只须要持有 Token 就能够参与的 PoS,其 Validator 集合都是这个系统自身的历史决定,PoS 和 PoW 在「参与共识是否须要依赖历史」上是大相径庭的。咱们很容易能看出,这是一个本质不一样,不管什么样的上层设计都解决不了这一点。

所以 PoW 和 PoS 的设计,从根本上是两种不一样的思路,体现两种不一样的理念:

  1. (PoS)系统应该让先发者得到自然的优点
  2. (PoW)系统不该该让先发者得到自然的优点

注意主语是「系统」,共识参与者在系统外的优点不是任何协议设计能够解决的。若是你认为1是对的,天然应该支持 PoS,反之你应该会更赞同 PoW。CKB 在设计中选择 PoW,是由于 CKB 的设计目标是 Layer 1,一个全世界共用的基础设施,咱们但愿它能够长久并且中立的运行,要作到这一点,系统不该该让先发者(包括系统设计者本身)得到自然的优点。

A:PoS 买币 Staking 不就是投入了吗?

确实是投入,可是这里的「投入得到回报」中的「回报」已经变了。对于投入得到的回报咱们须要分开来看,一种回报是 Token 收益,最近的 PoS 基本都支持 Delegate,因此基本上全部人都有这个 Option。另外一种是参与共识的权利,根据上面的回答,它能够被现有的 Validator 垄断,大部分人没有 Option。权利有不少种,分成只是其中一种,并且不是关键的那一种。

那么共识的权利为何重要,它有什么用呢?它意味着你能够对交易排序,而交易排序决定了链上众筹时你的交易能不能及时上链,在 DEX 里面交易时你的订单能不能及时成交,等等等等。在 PoS 的系统上作 DeFi?你须要认真考虑一下 Validator 自己是作什么的,是否和你的发送的交易有利益相关?

咱们知道,DeFi 的交易极可能是价值含量很是高的交易,e.g. DEX 里面一个巨大的买单,这时候 Validator 若是安排一个插队的交易怎么办?仅仅是交易顺序的不一样就能够形成巨大的获利,况且共识节点能作的远大于此?

聪明的你必定会想到:「那 PoW 的矿工 / 矿池不是同样有这样的问题吗?」没错,PoW 的矿工同样有这样的权利,但 PoW 有两个优势能够削弱这个问题:

一、出块节点和生态中的关键用户是解耦的。生态中的关键用户,指的是交易所、钱包等围绕区块链提供服务的服务商,它们为大量的用户提供优质的服务,汇集了大量的用户和交易。

在 PoS 中,因为拥有大量用户和交易,Stake 会天然的往生态中的关键用户集中,造成自然的 Stake Pool,所以关键用户在业务上的优点能够转化成在共识和治理上的优点(在某些链里面已经体现的很是明显了),使得先行者的优点更增强化。

在 PoW 中,矿工群体和交易所 / 钱包是独立的,他们有不一样的专业分工,经过不一样的专业知识,不一样的方式获取回报,关键用户不能将本身的业务优点转化为协议中的优点,矿工也没办法将本身在协议中的优点转化为上层业务的优点。在 PoW 中,开发者、用户和共识节点之间能够造成制衡。

二、PoW 的共识是开放的(见上文),充满了激烈的竞争。也许一个矿池 / 矿工能够在短期内作到这一点,但因为新的矿工老是能够自由加入,想要长久的作到这一点是很是困难的,激烈竞争将会造就一个愈来愈公平的充分竞争的市场,这须要时间(30年?Maybe)。

反过来,在 PoS 中,因为自然的先行者的优点,以及业务优点和共识优点的绑定,先行者的优点只会愈来愈大,竞争将逐渐消失,最后造成垄断或寡头。在基础设施级的协议里面,咱们应该尽量的去避免垄断。

区块链自己是一个大的排队机,决定排序的权利是这个系统中最关键的权利。

A:(Bitcoin)一小时 51 攻击的成本区区 44.3 万美金……

A 想要表达的是,Bitcoin 并不安全,由于只要 44.3 万美金就能攻击它了,而后 PoS 的 Token 是有限的,没有攻击者能够从市场上购买到足够多的 Stake 来攻击。

这个观点忽略了一个问题:在某一时刻,地球上的算力一样是有上限的。若是一条 PoW 的链只有 10% 的 SHA256 算力,这样算是没有问题的。可是若是比特币已经集中了 90%(估计值)的 SHA256 算力,你从哪里去得到另外 90% 的 SHA256 算力呢?量变会引发质变,算力地位的变化会影响安全性。

不安全的不是 PoW,是没有得到足够算力的 PoW 链。使用 PoW 的区块链都会遇到比使用 PoS 的区块链更大的起步问题,然而正是这样真实而残酷的考验才能证实区块链的安全。否则,我也跑一条 PoS 链,99% 的 Token 都归我本身,1% 在市场上想炒多高炒多高,安全性岂不是分分钟超过 Bitcoin?Bitcoin 已经运行 10 年了,上面承载的价值这么多,为何攻击没发生呢?相反,某些链运行了不到一年,上面存了价值区区几十万元的智能合约被偷了无数次……理论须要不断用事实修正,当理论和事实不符的时候,必定是理论错了。

一样是有上限,在 PoW 链中参与共识所须要的资源上限是随着时间变化的,由科技的进步、人类的进取心和激烈的竞争不断推进前进,所须要的天然资源的获取是彻底去中心化的;而 PoS 链中所须要的资源上限是协议规定好的,增发的 Token 所有进入现有 Validator 的手中,再经过 Validator 在市场上的售卖或是 Staking Pool 的分成分发出去,会不会有些似曾相识?

A:这二者抽象到最后都是资本,PoW 是以资本开支和 Opex 计算资本成本;PoS 是以抵押物市场价值计算机会成本。这两种成本都是不可逆的。

我不赞同这种逻辑,忽略中间过程直接捅到本质刚好忽略了关键。过程是关键,过程会产生摩擦,过程会产生损耗。即便都是资本,资本的流动性和产生垄断的速度也是有差别的,协议是否能从垄断中回复也是有差别的,见前文。

A:我不以为 PoS 的持币者会一直不卖;
A:过分集中,谁会给生态贡献;
A:若是筹码 90% 在你手里,这个生态也就作不下去;
A:对你来讲,高度集中持币是没有价值的;
A:你都垄断 90% 代币,没有人给你交租。

垄断也是能够创建生态的,腾讯、苹果都是例子。不管是历史仍是经济学原理仍是《从 0 到 1》都很清楚的告诉咱们,垄断才能获取暴利。

同时,垄断存在不表明,你知道有垄断存在。Token 是世界上最具备流动性的资本,即便我拥有 90% 的 Token,我也会把它分散投入到 100 个 Staking Pool 里面去,而不会集中在一个 Staking Pool 里面。垄断者不会喜欢跳出来讲「Hey,我垄断了这个系统!」。

A:潜在做恶垄断者会由于短时间利益卖出 Token;
A:做恶就是为了短时间利益;
A:即,潜在谋求短时间利益垄断者会由于短时间利益卖出 Token;
B:头部抵押者都被看的很清楚,解抵押了,或者提币去交易所了,自己会致使价格下跌,他还没砸呢,就已经反映了;
A:我也是这个意思,垄断者不做恶不也是安全的么

这里混淆了垄断和做恶的概念。做恶指的是显式的攻击,例如双花一笔交易,做恶是能够被观察到的,系统或者生态也能够做出相应的反制。 垄断是隐式的 ,垄断者不须要也不会攻击这个系统,可是它依然能够利用本身的共识权利得到更多的利益,正如前文说的,只要能操控交易排序,你就能操控一切。

操控交易排序是没法被发现的 。在 PoS 系统中,操控交易排序也意味着操控将来的 Validator 集合,意味着垄断地位能够轻易的维持,这是根据系统历史来保证系统安全的必然结果,这一点在 PoW 中是不存在的。

咱们如今尚未找到一个方法能够在全部时间排除一切垄断的可能,可是 PoW 至少给了咱们一个更长的时间维度上使得垄断难以存在的设计,我以为这一点对于 Layer 1 相当重要。

A:第一点,PoS 链后来者为何不能参与?买币比买矿机门槛低多了,PoS 里面长期存在垄断者这个结论我是不认同的,没有经济规模效应;第二点,攻击 PoS 的成本比较,收购 Stake 只是一方面,还有 Reputation 系统,PoS 里面节点是很是在乎本身 Reputation 的,这个成本对节点是巨大的。

第一点问题中,垄断的问题上面已经有回答。关于门槛问题,我认为这是不少人甚至包括协议设计者经常犯的错误。区块链的首要目标是安全和去中心化,而门槛以致于一切易用性问题都不是区块链的目标。

在区块链协议里面讨论门槛问题就像是在说「你让普通人怎么去构造 TCP 请求包」同样,将不一样层次的目标混为一谈。要下降门槛,提升易用性,咱们能够在上层作不少工做,作钱包,作云挖矿,设计各类金融产品,为何要在区块链协议里面考虑门槛的事情呢?

Nervos 追求分层的协议架构,也是由于看到了易用性问题和安全问题必须分开考虑,易用性 / 门槛和安全从本质上就存在矛盾,强行扭在一块儿只会让咱们一无所得。将来区块链协议的直接参与者必定是专业用户,这些专业用户经过搭建(可信的)服务、下降使用门槛、提供易用性来获取生态中普通用户的支持和收益。

第二点,Reputation 是一个没法量化,区块链协议也没法判断的东西。将区块链的安全寄托在 Reputation 上,只会让区块链走回现有信任体系的老路。同时 Reputation 还有 没法转让 的特色,基于一个没法转让的事物创建安全模型,会不会又有些似曾相识?

A:其实这里面有不少隐含的假设,若是一个 PoS 链出现你说的一个 Cartel 控制 1/3 的 Token ,社区是能够经过硬分叉 Fork out cartel;我不以为一个 PoW 链被 51% 算力控制的链,也面临一样严重的问题;另外我以为节点隐藏最后长时间造成多数控制这种可能性是不大的。

将协议中解决不了的问题推给链外治理(注意在 Cartel 控制 1/3 Stake 而且产生足够大的威胁以致于社区想要 Fork 的时候,链上治理已经没有用了)和硬分叉,确实能够解决一切问题,但这应该是一种成本极大的最后手段,不该该成为随便使用的工具,区块链的协议应该尽量的避免陷入这个场景。

使用链外治理和硬分叉等价于认可协议的不足,须要人来接手了。我赞同一个区块链生态最终是须要人来治理的,可是我认为人介入的频率越低越好,若是不追求这一点,为何还须要区块链呢?只有下降人参与的频率,协做的自动化成本才能下降,协做所须要的信任基础才能减少。

「节点隐藏最后长时间造成多数控制这种可能性是不大的」——只要时间足够长,不管多小几率的时间都会发生。金融市场的黑天鹅告诉过咱们无数次了,愿咱们的记忆不仅是 7 秒。

A:xxx 的筹码在不断分散;
A:xxx 的钱包地址从 ICO 1000 多个,不到一个月上万个。

根据 Top 100 的地址或者 Top 20 Staking Pool 的分散程度是没法证实 Token 是分散的。道理很简单,咱们谈论的都是无需许可(Permissionless)的系统,地址表明的只是一个公私钥对而已,不表明一个身份。产生地址几乎是零成本的,存有 Stake 的地址数量没法表明持有这些 Stake 的是不一样的用户。不要混淆地址和用户。

在 PoS 中,Validator 集合中的 Validator 数目是可有可无的,并不能表明 Stake 分散。如前文所说,若是你有 99% 的 Stake ,你应该把它们分散到 100 个甚至 1000 个 Validator 上去。

PoW 中一样会有算力集中在大矿工手中的问题,可是因为 PoW 的开放性以及系统没有给后来者制造劣势(见上文),这样的集中只会是暂时的,算力将在激烈的竞争中不停的从一我的手中转移到另外一我的手中。PoW 赞美竞争,PoW 是一个开放的系统,只有开放的系统才可能远离热力学的终局,保持长久的生机。

PoS 有其价值,也有其问题,所以没法适用全部场景。Layer 1 的区块链协议必须使用 PoW,只有使用 PoW 的 Layer 1 才能解决咱们但愿解决的问题,实现咱们但愿的将来。

相关文章
相关标签/搜索