(转)从拜占庭将军问题谈谈为什么pow是目前最好的共识机制
我们知道基于区块链技术现在有很多的共识机制,包括不限于POW,POS,DPOS,PBFT……,我先不说为什么我最认可POW,我们先来看看著名的拜占庭将军问题:
拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。
然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
在拜占庭将军问题里,最重要的事情是如何让所有将军达成一致,如果中间出现了被拜占庭帝国收买的将军导致只有半数以下的将军攻打拜占庭,那么基本上这些国家将会灭亡,所以建立信任是攻打拜占庭帝国最关键的一环!
而这个经典的问题其实在我们现实的生活场景也会经常发生,如果这些将军中出现了叛徒,他们会产生很多坏的作用,如:
- 叛徒欺骗忠诚的将军自己采取行动
- 叛徒可能怂恿其它将军行动
- 叛徒发出干扰指令,迷惑将军使他们感到无所适从
模型假设一:假设只有3个将军A,B,C,假如只有一个人A是叛徒。A告诉B进攻,但告诉C撤退,B告诉C接收A的命令是进攻,而C接收到A的命令是撤退,这时候B和C都会迷惑,B和C都会怀疑对方或者A是叛徒!
模型假设二:假设只有4个将军A,B,C,D,假如只有一个人A是叛徒。A怎么传达消息都会造成有两个人是一样的消息,另一个人是另外对立的消息!假如A告诉B,C进攻,但告诉D撤退,B从C和D接收的是”A发送给他们的一个是进攻一个是撤退“,C从B和D接收和B的情况一样,那么B认为C和A都是进攻命令,C同理B,所以B和C都会发起进攻,而D也接收到B和C从A接收的信息是进攻,少数服从多数的原则,D也会发起进攻,这样总共有三个人发起进攻,就能保证拿下拜占庭了!
所以科学家针对拜占庭问题进行研究得出结论:如果将军总数为m,叛徒数量为n,当m<3n+1的时候(即叛徒数量大于或等于总人数的三分之一),拜占庭问题是不能被解决的!,这个时候信任是不能被建立的。
但实际上,可能是所有忠诚的将军永远不知道会有多少叛徒,即使实际上没有叛徒他们也不敢冒险去相信别的将军,他们永远不会把家国的命运赌在那三分之一上!
到最后这就变成了大家都不进攻的局面!,所以如果谁能解决这个信任问题,那么我想十个将军会拿出无数具有异国风情的失足少女来让他拯救一下!
而解决这个问题的方案在2008年让中本聪找到了,就是区块链技术。
假如10个将军每个人都有一台电脑,区块链在一段时间内只允许一个将军发出信息,这在某种程度上防止了各个将军各说各的进攻方案造成混乱,当然由谁来第一个发出又有最后一个发出呢?
这个问题问到点子上了,中本聪巧妙的提出了工作量证明(pow),每个将军都必须完成一个10以内加减法后才能发出消息,当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。而中本聪在这里使用现代加密技术为这个信息签名。
这种加密技术——非对称加密完全可以解决古代难以解决的签名问题,它具有以下特点:
消息传送的私密性
能够确认身份
签名不可伪造、篡改。
非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的公钥和私钥。
非对称加密的作用有两个,一来保护消息的内容,二来让接收方确认发送方的身份
假如将军A想给将军B发送消息,为防止消息泄露,将军A只需要使用B的公钥对信息加密,而B的公钥是公开的,只有B使用它的私匙才能解密。
将军B想要在信件上声明自己的身份,他可以自己写一段”签名信息“,并用私钥签名,最后发布出去,所有人可以根据B的公钥来验证该签名,确定的B的身份。
由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事在达成一致。
好,那么网络信任的问题解决了,那么如果10个将军都做出了第一个算术题,谁来第一个发送呢?
所以中本聪又巧妙的设计了时间戳,每个将军解题的时间盖上了时间戳,第一个解题的人就拥有本轮的发送消息的权利,对应到区块链上就是第一个完成有效计算的矿工的区块是有效的。
那么问题又来了,将军第一个发消息和最后一个发没什么区别,为什么要第一个发呢去做加减法呢?
中本聪就用比特币来奖励完成计算挖出区块的矿工来激励有人不断的打包区块。同样对将军来说,第一个发消息的人可以获得更多的战利品,可以拯救更多的失足少女。
到这里,我们应该明白了区块链建立信任是可行的,但是必须有激励机制来保证它的稳健运行!所以工作量证明在此时显得非常有意义,挖矿在某种程度上是信任建立的基础,因为建立信任的成本永远不可能是0,除非有天实现了大同社会,否则消耗那些能源来进行挖矿来建立信任完全是不用计较的。
但是有人会说比特币是每四年减半的,代表着以后每个区块挖出来比特币奖励会很少,这可能会导致矿工打包交易的手续费会变高,否则矿工不会有动力去挖区块,参与的人减少,算力减少,区块链的安全不安全了,会承受51%攻击。实际上矿工如果不是诚实挖矿来伪造交易的话,比特币持有人将会对比特币失去信心,只有第一批伪造交易的人会受益,后面伪造交易的矿工获得再多的比特币也没有意义!实际上由于比特币的先发优势,全球的算力已经很分算了,就算是传说掌握了70%算力的中国除非是几大矿池联合才能伪造交易,但是如此劳神费力去让他们已经挖出的很多比特币变得没有意义他们会做吗?而且我们可以等到六个确认之后才确认交易完成,因为六个确认表示伪造者必须成功连续计算出六个区块才能伪造成功!
所以在我看来pow是目前最合适的共识机制,而在权益证明机制POS中,权益越大的人获得记录权利的概率越高,而记录的人就会有奖励token ,这样一来这些人就会越来越富有,贫富差距就会越来越大。持有token少的人几乎都没有话语权了。
权利掌握在少数人手中,这有违区块链去中心化理念,而在PBFT中,由所有人投票,如果一个没有任何token余额的人想要捣乱,那他几乎是完全没有利益损失。
一直被鼓吹的EOS就是由十几个超级节点来进行公示信息,所以才能达到那么高的tps,那么个人愚见这和中心化的支付宝有何区别,当然支付宝tps可能更高。所以我们不得不承认比pow效率高的去中心化必然没有它高。
安全、去中心化、效率在现在看来是不可能三角,三者只能取其二,而且我们不难发现区块链在某种程度上和互联网互为镜像,我们更不能用互联网思维来看区块链,所以我们也不能说中心化就一定不好,去中心化就一定要吹上天,尺有所长,寸有所短,我们应该辩证且理性的看来这两个领域,让时间说话,二者都必然会在自己适合的领域更好的服务经济、服务整个社会!
闲来无事瞎聊聊自己的想法,可能还很初级,请多指教!
转自:https://zhuanlan.zhihu.com/p/33766317
(转)从拜占庭将军问题谈谈为什么pow是目前最好的共识机制的更多相关文章
- [区块链] 拜占庭将军问题 [BFT]
背景: 拜占庭将军问题很多人可能听过,但不知道具体是什么意思.那么究竟什么是拜占庭将军问题呢? 本文从最通俗的故事讲起,并对该问题进行抽象,并告诉大家拜占庭将军问题为什么在区块链领域作为一个重点研究问 ...
- 两将军问题、拜占庭将军问题、TCP三路握手过程的联系
2015年初时产生了一个疑问:基于不可靠的通信链路,为什么在两将军问题中永远无法达到共识,而在TCP三路握手中可以? 今天抽出了一些时间进行研究发现,实际上TCP三路握手也不是完全可靠的,只是一个近似 ...
- 一致性hash理解、拜占庭将军问题解读和CAP理论总结
一致性hash理解 白话概述: 比如说存储图片,有10台服务器用来存储,对图片名进行hash(pic_name)%10得到的值就是图片存放的服务器序号.这是正常的hash算法分散图片存储.但是有一天, ...
- 拜占庭将军问题(Byzantine Generals Problem),一个关于分布式系统容错问题故事
拜占庭将军问题(Byzantine Generals Problem),一个关于分布式系统容错问题故事 背景:拜占庭帝国派出10支军队,去包围进攻一个强大的敌人,至少6支军队同时进攻才能攻下敌国. 难 ...
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技 ...
- 区块链共识机制:POW、POS、DPOS、PBFT、POOL
共识机制作为区块链的关键技术之一,在业务吞吐量.交易速度.不可篡改性.准入门槛等等方面发挥重要的作用. 区块链是去中心化的,没有中心记账节点,所以需要全网对账本达成共识.目前有POW.POS.DPOS ...
- 区块链共识机制(POW、POS、DPOS等)的优缺点
一.POW:工作量证明机制 基本原理: 第一代共识机制,比特币的基础.理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币).在网络世界里,这里的劳动就是你为网络提 ...
- 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- (转)区块链共识机制分析——论PoW,PoS,DPos和DAG的优缺点
近期,随着区块链技术在社区中的声音越来越大,业界已经开始从技术角度对区块链进行全方位的解读.作为第一批区块链技术的实现,传统比特币与以太坊在共识机制.存储机制.智能合约机制.跨链通讯机制等领域并没有非 ...
随机推荐
- Bitcoin源代码编译安装详解
一.安装准备 安装环境:虚拟机Ubuntu 16.04 内存:2G 错误1:如果这里内存分配为1G,则会产生如下错误: g++ : internal compiler error: Killed (p ...
- [转]pycharm active code
43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...
- vue编程式路由实现新窗口打开
一. 标签实现新窗口打开: 官方文档中说 v-link 指令被 组件指令替代,且 不支持 target=”_blank” 属性,如果需要打开一个新窗口必须要用标签,但事实上vue2版本的 是支持 ta ...
- 10.18正式开发stark组件*(三)
2018-10-18 19:15:54 等这个stark组件做完了再上传到github上面,然后再整理博客!这就到周末啦! 因为models导入的时候出现bug,所以只有源码没有测试数据! 源码都有注 ...
- 遍历form表单里面的表单元素,取其value
form.elements 获取所有表单元素 form 表单 <form action="http://localhost:1995/api/post" class=&quo ...
- ubuntu-18.04 root登录图形界面失败问题解决方案
一.设置root密码 二.进入/etc/pam.d目录 主要修改两个文件(圈了红色框框),记得命令行下切换root账户(sudo -i)进行vim修改,刚安装的ubuntu没有vim支持,请根据提示进 ...
- jexus手动跨域设置
AP.NET MVC默认跨域方法如下: <system.webServer> <validation validateIntegratedModeConfiguration=&quo ...
- ado.net EF学习系列----深入理解查询延迟加载技术(转载)
ado.net EF是微软的一个ORM框架,使用过EF的同学都知道EF有一个延迟加载的技术. 如果你是一个老鸟,你可能了解一些,如果下面的学习过程中哪些方面讲解的不对,欢迎批评指教.如果一个菜鸟,那我 ...
- git bash 常用命令
1. cd : 切换到哪个目录下, 如 cd e:\fff 切换 E 盘下面的fff 目录. 当我们用cd 进入文件夹时,我们可以使用 通配符*, cd f*, 如果E盘下只有一个f开头的文件 ...
- python-----双色球实现(实例1)
#输出用户指定组数的双色球信息,其中一组信息 6个红色号码获取范围(1-33),1个蓝色号码获取范围(1-16),要求一组信息中红球内号码不可重复 import randomdef get_ball( ...