权益证明(PoS)最近十分火热,Ethereum Casper,Cardano Ouroboros等都采用了它。对PoS协议不断提升的兴趣大概是出于对区块链扩展性的渴望,以及认为PoW “浪费能源” 的错误观念。

一个关于PoS协议的话题没有得到足够的强调,那就是其缺乏应对最糟糕情况的韧性。比如:发生不寻常的事件,会导致一部分,甚至整个网络下线,或是能够将一部分网络分割隔离,或者私钥遭到盗窃或者被他人购买的情况。

人们可能认为这些情况十分罕见,但是:1)他们并不一定如你认为的那般罕见,2)即使某些事只有0.1%的几率发生,这也意味着以较长的时间尺度来看他们一定会发生,这些就是黑天鹅事件(blackswan events)。

简单来说,这些事件很难发生,但当它们确实发生时,结果往往是灾难性的。我们人类倾向于周期性的低估这些影响力深远的长尾事件(long tail events),比如,仅仅由于过去的十年或者一百年都是安全的,我们就会有明天也会安全的错觉。

对于设计一个有潜力成为全球经济主心骨的协议来说,仔细考虑长尾事件尤其重要,因为数亿人和无数商业机构将会依赖它。

在对待比特币的软件时,我们必须秉持与对待核反应堆软件相同的认真。在工程学文献中,这一类软件被称为关键系统(critical systems),一共存在三种关键性系统:安全关键型,任务关键性,和商业关键型。比特币符合上述全部三种的定义(财富流失可能闹出人命)。所以对错误绝对是零容忍的。

甚至就拿当下比特币的安全程度来说,它足以让有经验的工程师晚上睡不好觉,也就是说它还远称不上完美。工程师们知道我们离灾难只有一步之遥,不管这东西从理论上有多么成熟,不管它迄今为止运转多么流畅。

过去有许多十分醒目的工程学失败都能够清楚的说明这种潜在的危险,比如:

1) 协和飞机坠毁(2003)

协和(1976-2003)是世界上仅有的两架超音速客机。它的坠毁是由于一个破损的轮胎在起飞过程中击中了燃料箱,并引发一系列链式反应。这架飞机曾被认为是“世界上最安全的飞机之一”

2) 挑战者号的灾难(1986)

NASA最初估计挑战者号失败的几率是十万分之一。理查德费曼领导了这次的调查,并发现灾难的原因是O型环(机械结构部件,用于密封)在温度32度的天气下没能展开,而真正的几率是接近百分之一。一个一千倍的错误!

3) 福岛核电站事故(2011)

日本是世界上应对地震能力最强的国家之一。

福岛核电站事故由于9级地震发生,一次日本有记录以来最强烈的地震,同时还伴随着15米级,千年一遇的海啸。

考虑到最糟糕的情况绝对是有必要的,特别是在应对关键系统的时候。而当这些系统又是全球规模的时候,重要性更加不言而喻。

现在,让我们来检测一下PoW和PoS是如何应对网络隔离和意外停运的。

事先提及一下,这类情况并没有一些人想象的那么遥远:在阿拉伯之春运动期间,土耳其政府成功的使用了BGP屏蔽土耳其人使用twitter。

你也能想象在战争期间,一些国家可能试图使他们敌对势力的通讯基础设施失效,通常这是首要目标,因为通讯上有优势的一方在战争中处于有利位置。

那么PoW与PoS在这些情况下到底有多么强的韧性呢?让我们来看一些例子。

场景1:整个网络被迫下线一段时间。然后重启。

由于可能并不是整个地区同时重启并彼此之间重建联系,我们遇到的情况可能是,几个地区从网络停止之前的最后一个区块开始开启他们自己彼此独立的区块链,从而建立多个分裂链。

当跨地区通讯设备得到重建,这些独立区域的区块链上的节点会建立彼此之间的联系。

在PoW中,节点会自动的自行组织,并向同一条链靠拢:最长的那条链(也是最安全的)。这一过程会是痛苦的,因为有一些链在这个过程中会被抹去。但这么做是有效的,这一行为可以确定的。

在PoS中,节点们将不知道哪一条链更正确。不像PoW,PoS没有客观的标准来将两条链进行比较并决定哪一条更“真实”。这意味着在形成新的统一的区块链的过程中,若不引入一些其他的规则(这会让系统更容易受到攻击),节点的行为往往不具确定性,且不能自动化。这种分裂可能是永久的(无法再形成一条统一的链),由于一些PoS协议使回溯到过去的区块成为不可能。

PoS协议的设计者们通常强调对于犯错者们的惩罚。而他们并没有考虑到一种可能性:即使所有的节点都是诚实的,但依然有可能存在多条链!

场景2:一部分网络从主网被分割开。

在这种情况下我们也会得出与案例1相似的结果。被分割的区域会继续运行,就像什么也没发生一样——除了活跃的节点数量减少了。当被分割区域与主网再次连接上的时候,问题便接踵而至。结点不知道哪条链才是正确的。

案例1与案例2有一个至关重要的不同点——案例2发生的可能性更高。重导数据流相对于关停整个网络来说要更容易一些——我们已经见到过这种情况发生。由于隔离分区可以小到一个小镇的级别,我们能够想象这种事每隔几年就会发生,甚至更加频繁。

场景3:PoS的表现在其它的最糟糕情况下也更差,比如私钥遭到盗窃。

财富分布通常遵循权力法则,这一点在加密货币中也不例外。前1%的加密货币拥有者,可能只是一小批人,却很有可能持有大部分的代币。

这些最富有的PoS权益拥有者的私钥有可能遭到盗窃,原因可能是复杂的社会攻击(绑架,折磨,勒索等等)。通过盗窃私钥而不是租赁或者在市场上购买代币,攻击者避免了抬高代币价格。

奇怪的是,在考虑这种情况的时候,PoS设计者们通常只是假设从市场上购买货币是唯一的获得主要控制权的方式,从而错误的认为攻击一个PoS加密货币的代价仅由市场价值决定。盗窃私钥这一可能性让他们的假设有问题,并显著下降了进攻的代价。

(这种进攻还有一个衍生变种:从一个曾经拥有大额权益但已对该代币失去兴趣的人那里购买私钥)

在PoW中,这相当于取得主要哈希算力的控制权。

在PoW中,一个拥有主要哈希算力控制权的人能做什么?TA可以尝试双重支付,或重写交易历史,但获得主要控制权只是第一步。虽然听起来很糟糕,即使在这种情况下,协议依然能按预期运行,只有一条区块链能被认为是有效的(虽然SPV(Simplified Payment Verification)节点可能会感到困惑,这也是为什么运行全节点应该得到鼓励)。

要重写历史的需要花费更多的金钱,所以用户失去存款的风险很低。用户可以选择等待风暴平息,或者采取行动来改变PoW的算法

总的来说,情况依然会十分糟糕。但是我们可以发现获得PoW中主要的哈希算力并不等于获得了无限制的权力。你必须获得主要控制权然后另外花钱去发起一次攻击。可以把这种机制看作是两层防御机制。

当存在一次进攻时,这个行为是确定性的,并且关于哪一条链是合法方面并没有疑问。在充满敌意的环境下依然能够保持的韧性这一点没有得到足够的重视。

相比之下,在PoS中获得主要控制权就相当于获得了无限的权力,你能够不花任何额外的钱来达到双重支付,这在PoW中是做不到的。你同样能够:1)重写交易历史,如果协议没有检查点;或者2)在协议有检查点的情况下引起不可协调的区块链分叉。改变PoS算法并不能帮上什么忙,因为在PoS中不存在任何更换开销,而不像PoW中有大量的矿机投资。

总的来说,在安全方面PoW给了你两个好处:

  1. PoW保护了未来:当存在区块链分叉,它给了我们一个客观的,可以自动化的机制来解决冲突并决定哪条链才是合法的,并且这种机制不需要人为干预或第三方介入。

  2. PoW保护了过去:得到主要哈希算力的控制权仍然需要花费进攻者大量的时间和金钱去改写历史,所以用户的余额某种程度上是安全的。

PoS无法提供这两项中的任何一项。PoS支持者可能会宣称检查点的设立能够缓解这些问题,但是事实上检查点只是把问题从一个领域转移到了另一个领域。因为检查点是一个中心化的解决方式,这种方式又会暴露其他一系列问题。

总之,在比特币与区块链协议的开发中有正确的思维模式是非常重要的。这一类软件属于关键系统,值得人们以最高级别的工程学加以应对。

PoS协议建立在缺陷而又天真的假设之上,这些假设可能很快就会在最糟糕的情况下土崩瓦解。PoS正驶向错误的方向:是在降低而不是提升质量标准。

【权益证明与错误的工程学思维模式】PoS正驶向错误的方向:是在降低而不是提升质量....相关推荐

  1. 区块链:权益证明与错误的工程思维

    近期,许多权益证明(Proof-of-Stake, PoS)项目涌现出来.以太坊 Casper,卡尔达诺(Cardano)的 Ouroboros,等等.对权益证明协议日益高涨的兴趣可能源于无限扩展区块 ...

  2. 区块链共识算法Proof-of-Stake (PoS/权益证明) 常见问题解答 (1)

    Original post: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ 什么是Proof-of-Stake 权益证明(PoS)是 ...

  3. 如何从“固定型”思维模式转化为“成长型”思维模式

    #前言 看Bill给我回复的日报,看到了"成长型"思维这个概念,当时没有仔细的思考,就一掠而过,没想到,这次回去再看的时候,看到了思维模式,现在对思维模式比较敏感,所以查了一下,在 ...

  4. [区块链]DPoS(委托权益证明机制)官方共识机制详解——BTS、EOS

    写在前面 官方原文即解析 Delegated Proof-of-Stake Consensus ------------ 委托权益证明的共识一个强大而灵活的共识协议一个具有高鲁棒性,的灵活协议共识 一 ...

  5. 端粒效应《The Telemere Effect》程序员的养生指南(二)情绪、思维模式与健康

    身为程序员,面临着久坐,工作时间长,工作量大等种种问题.健康显得至关重要.接下来,打算借助一本诺奖得主写的书,来探讨下怎么能够更加健康的做好程序员的工作.端粒效应<The Telomere Ef ...

  6. 权益证明问题 —— Proof of Stake FAQ

    ethereum wiki 中的汉语繁体翻译实在是读不通顺,还不如看英文,顺便翻译下.原文:Proof of Stake FAQ 什么是权益证明 权益证明(Proof of Stake,PoS)是一种 ...

  7. [转]如果我有jQuery背景,我应该如何切换到AngularJS的思维模式?

    导言 stackoverflow上有一个人问了一个问题:如果我有jQuery背景,我应该如何切换到AngularJS的思维模式? 有一个回复非常经典,获得了两千多票. 为了让国内开发者也能领略到其中的 ...

  8. 效率思维模式与Zombie Scrum

    Scrum是由Ken Schwaber和Jeff Sutherland在20世纪90年代提出的概念,并在1995年首次正式确定.起初Scrum是为了解决产品和软件开发固有的复杂性,然而现在Scrum被 ...

  9. 区块链去中心化的生命之源:“DPOS(委托权益证明)共识机制”

    区块链去中心化的生命之源:"DPOS(委托权益证明)共识机制" 原创2018-04-24[水伯]战略忽悠局政委水伯 移动网络时代唯一壁垒就是认知,周二有约给思想洗澡让认知破壁! D ...

  10. 共识机制-权益证明 PoS

    共识机制-权益证明 PoS 什么是权益证明 权益证明( Proof of Stake,PoS )最早在2013年被提出,并在 Peercoin 系统中实现,类似于现实生活中的股东机制,拥有股份越多的人 ...

最新文章

  1. 数据格式、类型系统与展示
  2. junit编写测试代码_编写数据访问代码测试-不测试框架
  3. SQL SERVER 中 GO 的用法2
  4. golang ajax jquery,golang - 从http请求返回json字符串的库/包
  5. WebAssembly系列1-从 ASM.JS 到 WebAssembly
  6. VS2015中搭建lua环境
  7. 快速启动器工具 Maye(转载)
  8. mysql关键字了解
  9. 算法 后减前最大值,zt
  10. HDU 2258 Continuous Same Game
  11. 三维空间数据建模——Smart3D的安装
  12. 小程序长按图片识别二维码
  13. 博客美化——页面白天黑夜切换
  14. 如何在服务器上部署静态网页,让所有人都能访看到?
  15. 莫道君行早更有早来人(二)几点网络技术的想法
  16. 如何实现基于微信小程序的人脸识别
  17. MYSQl 多实例部署
  18. zhs16gbk对应mysql_NLS_LANG 数据库字符集中文乱码问题分析和解决
  19. 【MAC、Windows系统的node版本管理工具——nvm】nvm的安装、nvm常用命令、nvm设置默认 node 版本
  20. 政务大数据资源平台项目可研方案(ppt可编辑)

热门文章

  1. 阿里云网盘资源免费分享论坛正式上线
  2. win10电脑录教学视频的时候有回声或者通话的时候有回声,严重干扰录制效果,解决方式。...
  3. eNSP配置路由器IP地址
  4. CSS3+jquery实现图片万花筒3D旋转动画特效
  5. linux系统安装pidgin,linux 下安装pidgin-lwqq
  6. 数介牵手亿阳,ALEIYE深入运营商大数据
  7. 21 个人所得税计算
  8. 高淇python400集课堂笔记_2020六年级上第十七课《古诗三首》手抄笔记及图文讲解...
  9. Nhanes临床数据库挖掘教程1----数据库下载
  10. cocos creator实现读取白鹭movieClip组件(尝试)