首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

怎么理解POW和POS机制

2018 / 4.1星期日

◆◆◆

文 | 七叔

来源:链比特七叔(Ccjh9918)

xx证明这类共识机制的核心是,每发一条消息,你需要证明你付出了一定代价(或者你拥有一些东西),然后诚实的人会收到奖励,于是两者相加就相当于不诚实的人受到惩罚。

但是,既然需要付出代价,每个人又都是利己主义者,自然,如果有方法可以作弊,也就是在没有付出代价的情况下证明自己付出了代价,那么自然大家就都会去做。所以,在付出代价之后,你要给出一个证明,证明你确实付出了一些代价。

POW的方法最直观——哈希函数是密码学上计算难度经过反复验证的东西,所以用它来做证明是最有效不过的。每发一条消息(上传一个区块)的时候,你要证明你付出了一定的算力,你的证据就是某串你加在区块里的无意义字符串,而加上这个字符串之后,你的区块的哈希值正好小于某个数。哈希函数的特性告诉我们,你没有任何取巧的方法可以做到这一点——唯一的可能是,你真的一个一个字符串地去试了。所以,我们知道你确实付出了很多的代价才能给出这么一个字符串。

然而,POW不是没有缺陷,除了大量消耗能源之外,POW的另外一个问题是它的价值回路必须要通过外部输入。也就是说,采用POW的数字货币仍旧不是理想状态的数字货币,因为它们的安全性不直接与使用者相关,而是要通过矿工这个媒介(这个请见我的专栏)。

于是POS就被提出来了。POS的设想是非常好的——采用POS的货币的安全性直接与使用者相关,省去了矿工这个媒介。POS简单说就是,每当发表一条消息的时候,不用证明你付出了什么代价,而要证明你拥有一定数量的钱。而拥有钱代表着,如果你作弊损害了这个系统的安全性,你的钱会贬值,这变相地让你付出了代价。这东西更好的一点是,如果采用POS,实际上连挖矿奖励都不需要,因为POS实际上不需要付出任何代价。

需要注意的是,POW基本上原理都类似,而且,说到POW基本上就指的是比特币那种。可是POS是一类共识算法,或者说是一类共识算法的设计思想,而不是一个,最早采用POS的是peercoin,于是几乎所有的科普文章都把Peercoin的POS当做是POS的定义。这是不对的——因为Peercoin的POS是有漏洞的,漏洞简单说就是——越有钱的人,作弊付出的代价就越大,所以51%攻击在POS里面更不可行。然而,对于没钱的人而言,他们没代价可付,所以一些恶意行为对于他们是有益的,这就会导致著名的公地悲剧。这种叫Nothing-at-stake attack(无利益攻击),所有POS算法,必须有对付这种攻击的机制,否则就不能用。

目前,还没有一个区块链真正采用了POS,所以POS仍旧是一个缺乏足够实践检验的机制。但是从理论上来看,Ethereum的casper,ALGORAND和Ouroboros是几个比较成熟的POS算法。

至于POS的一个变种DPOS,实际上是解决Nothing-at-stake attack(无利益攻击)的另一种方式——没钱的滚蛋,只有有钱才能参加共识。所以,DPOS的本质实际上是一个中心化的共识机制。

——————————————————————————————————

既然题主的主要目的是自问自答,并且还回复了我,那么我回应一下。

题主自己的答案里的POS,就是peercoin里的POS,目前几乎所有中文的科普中,都只写这一种POS,这正是我反复强调的几乎整个中文社区的误区。然而,第一,我已经介绍了,这种POS是有重大缺陷的,就是它不防止无利益攻击,我再强调一遍,任何没有防止无利益攻击的POS都不能称之为完整的共识算法,这是个非常严重的问题。

第二,币龄这个概念并不是POS的必要概念之一,加入了币龄之后其实就不是权益证明,而是财产抵押证明了,也就是你证明的是你有一笔一段时间没有动用过的财产,而不是你有某笔财产。这个东西其实是很有争议的,因为它不仅改变了模型(例如这样的模型不鼓励交易而鼓励所有人都攒钱挖矿),而且带来了许多新的攻击例如save-up attack。

最后,再强调一遍——POS是一类共识算法,他们的特点就是字面上的意义——每发布一个消息,要证明自己拥有某些财产。许多共识算法可以归到此类,但POS并不特指某个共识算法,尤其不是peercoin的共识算法。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180402G00H6A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券