pow这种算法在1993年被提出来应对垃圾邮件,准确的说到1997年开始才被称之为工作量证明机制(proof-of-work)但事实上,直到中本聪在2009年提出比特币的设想之前,这种算法并没有被广泛应用。中本聪发现pow机制可以用来达成网络节点之间的共识,然后他将这种机制用于了保证比特币区块链的安全上。
pow算法是通过所有的节点去解决一个密码难题,由矿工来解决这个难题,第一个找到答案的矿工将得到挖矿的回报,这导致了参与挖矿的人开始建造越来越大的矿场,花费大量的算力,来获取回报。也因此消耗着巨大的能源。
据统计,光比特币的矿工就用掉了54TWh的电量,相当可观,几乎能支撑一个小一点国家的用电量。
这还不止,pow机制下,拥有更好,更多设备的挖矿者,通常会得到更多的回报,你的hash算力越高,你挖到下一个区块获取回报的概率越高,为了获取更容易获取回报,矿工开始集中起来建立了矿池来达到算力集中,然后在分配挖矿回报。
总的来说,pow机制下,要挖取新的代币,导致矿工消耗了巨大的能源,同时又鼓励了矿池的出现,进而导致了区块链一定程度的中心化,这和区块链去中心化的初衷是相悖的。
那么有没有更好的选择呢?为了解决这些问题,必须找到一种新的比pow更有效或者更好的共识机制。
2011年一个一个叫量子力学(QuantumMechanic)的Bitcointalk论坛用户提出了一种被他叫做proof-of-stake的技术,基本思想就是让所有人认为pow机制竞争挖矿是一种资源浪费。
对应的,pos使用了一种投票程序来随机的选出一个节点来验证下一个区块的方式。
在概念上的区别,pos机制没有”矿工“而是有验证者,也不再是挖这个区块,而是去验证区块。
要成为验证者,节点需要预存一部分的币的保证金到区块链网络,而放入代币的多少决定了一个验证者被选中生成下一个区块的概率,保证金的数量和选中概率是线性相关的。
这看起来好像不太公平,这对代币多的人更友善,但比较与pow机制,这种更公平,pow机制下,人们可以更享受经济规模带来的好处,实际上人们花费在挖矿设备和能源上的代价带给他们的好处是在规模比较大的情景下是高于线性相关的,而购买的规模越大,一般来说价格越优惠。
我们再回到pos机制,如果一个节点被选中来验证下一个区块,他要检测这个区块内的所有交易是否有效,所有验证都完成以后,这节点在这个区块上签名,然后将这个区块接到区块链当中去,作为回报,这个节点会获得每个交易的交易费用。
那么,怎么才能新任网络中的其他验证者呢,保证金的作用就来了,如果验证者批准了欺诈性交易,那么他将失去他的部分保证金,只要保证金的金额大于验证区块的收益,那么我们就可以信任他们会认真完成他们的工作,因为一旦做不好,他们失去的会比得到的更多。
也就是说:只要保证金大于交易费用的总和,这个经济动力会一直起到保证作用。
如果节点不再作为验证者,他的保证金加上他所获得的所有交易费用,在一定周期后会被释放,而不是直接释放,因为一旦你验证的区块被发现欺诈,区块链网络在一定周期内仍需要具备能力处罚你。
pow和pos的区别是很大的。
pow所有人都在挖矿,而pow只有一小部分选中的验证者来生成区块,所以更节省能源。
pos也更去中心化,为什么呢,pow中有矿池的存在,这就导致了矿池控制比特币区块链中相当大一部分,他们中心化了挖矿过程,这是很危险的。
如果三个最大的矿池联合起来,他们将会有超过50%的比例权益,进而有可能来批准欺诈交易。
pos的另外一个重要的优势是,在区块链上建立一个pos的节点的成本比起pow要便宜的多,不需要专业挖矿设备,普通计算机就可以胜任,所以pos激励更多的人成为验证节点,从而使区块链网络更去中心化和更安全。
而pos也并不完美,仍然有一些瑕疵。
你可能会想,等下,如果我买下了区块链网络的绝大多数权益,那么我就能有效地控制区块链,从而来批准虚假交易?
嗯,没错,这就是51%欺诈,在pow机制下也经常被讨论,如果一个或者一群矿工掌握了超过51%的算力,那么他就能有效的控制整个区块链。
pos通过加密货币的价值使这种欺诈变得更不切实际,如果比特币是pos机制,要购买51%的比特币需要79亿美元,所以51%攻击在pos机制下发生的概率会更低
但这并不是唯一的风险,pos必须小心的选择接下来的验证者,由于权益的规模的因素,选择验证者并不是完全随机的,而是对于代币多的人更友善,他们会更容易被选中,从而聚集越来越多的交易费用,变得更富有,进而导致他们被选中的概率更大,已经有很多针对修正这个问题的提议,像基于币龄的选择方案。
另外一个潜在的问题是,当被选中的验证者并没有完成他的工作,这个问题可以通过选取大量的备选验证者来解决。
总的来说pos相对于pow又引入了很多新的问题,所以需要更多的去研究理解和修正这些问题!
以上就是什么是pos,pos的好处和风险。
如果你有什么好的看法,请在文章下方留言与我沟通。
「自由码客:程序员区块链社区www.codingfly.com」