这两天在橙皮书的微信群里面产生了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的设计,从根本上是两种不同的思路,体现两种不同的理念:
- (PoS) 系统应该让先发者获得天然的优势
- (PoW) 系统不应该让先发者获得天然的优势
注意主语是“系统”,共识参与者在系统外的优势不是任何协议设计可以解决的。如果你认为1是对的,自然应该支持PoS,反之你应该会更赞同PoW。CKB在设计中选择PoW,是因为CKB的设计目标是Layer1,一个全世界共用的基础设施,我们希望它可以长久而且中立的运行,要做到这一点,系统不应该让先发者(包括系统设计者自己)获得天然的优势。
A: pos买币staking不就是投入了吗
确实是投入,但是这里的“投入获得回报”中的”回报”已经变了。对于投入获得的回报我们需要分开来看,一种回报是token收益,最近的pos基本都支持delegate, 所以基本上所有人都有这个option. 另一种是参与共识的权利,根据上面的回答,它可以被现有的validator垄断,大部分人没有option。权利有很多种,分红只是其中一种,而且不是关键的那一种。
那么共识的权利为什么重要,它有什么用呢?它意味着你可以对交易排序,而交易排序决定了链上众筹时你的交易能不能及时上链,在DEX里面交易时你的订单能不能及时成交,等等等等。在PoS的系统上做DeFi?你需要认真考虑一下validator本身是做什么的,是否和你的发送的交易有利益相关?
我们知道,DeFi的交易很可能是价值含量非常高的交易,e.g. DEX里面一个巨大的买单,这时候validator如果安排一个插队的交易怎么办?仅仅是交易顺序的不同就可以造成巨大的获利,何况共识节点能做的远大于此?
聪明的你一定会想到:“那PoW的矿工/矿池不是一样有这样的问题吗?” 没错,PoW的矿工一样有这样的权利,但PoW有两个优点可以削弱这个问题:
1、出块节点和生态中的关键用户是解耦的。生态中的关键用户,指的是交易所、钱包等围绕区块链提供服务的服务商,它们为大量的用户提供优质的服务,聚集了大量的用户和交易。
在PoS中,由于拥有大量用户和交易,stake会自然的往生态中的关键用户集中,形成天然的stake pool,因此关键用户在业务上的优势可以转化成在共识和治理上的优势(在某些链里面已经体现的非常明显了),使得先行者的优势更加强化。
在PoW中,矿工群体和交易所/钱包是独立的,他们有不同的专业分工,通过不同的专业知识,不同的方式获取回报,关键用户不能将自己的业务优势转化为协议中的优势,矿工也没办法将自己在协议中的优势转化为上层业务的优势。在PoW中,开发者、用户和共识节点之间可以形成制衡。
2、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至少给了我们一个更长的时间维度上使得垄断难以存在的设计,我觉得这一点对于Layer1至关重要。
A: 第一点,pos链后来者为什么不能参与?买币比买矿机门槛低多了,pos里面长期存在垄断者这个结论我是不认同的,没有经济规模效应;2 攻击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才能解决我们希望解决的问题,实现我们希望的未来。
(完)
作者:Nervos 首席架构师 Jan
来源:https://talk.nervos.org/t/pow-vs-pos/1732?u=janx
https://mp.weixin.qq.com/s/sKipObE4G1towIuei29CmA