比特派钱包app官方下载|bft是什么意思

作者: 比特派钱包app官方下载
2024-03-09 22:52:41

什么是 BFT? - 知乎

什么是 BFT? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册拜占庭什么是 BFT?关注者4被浏览11,329关注问题​写回答​邀请回答​好问题​添加评论​分享​2 个回答默认排序小孔5176​ 关注BFT( Byzantine Fault Tolerance)称为 拜占庭容错。拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。拜占庭将军问题拜占庭容错技术来源于拜占庭将军问题。 拜占庭将军问题是Leslie Lamport(2013年的图灵讲得住)用来为描述分布式系统一致性问题(DistributedConsensus)在论文中抽象出来一个著名的例子。拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,已经假定了信道是没有问题的.我们将拜占庭将军问题简化成了,所有忠诚的将军都能够让别的将军接收到自己的真实意图,并最终一致行动;而形式化的要求就是,“一致性”与“正确性”。一致性:每个忠诚的将军必须收到相同的命令值vi(vi是第i个将军的命令)正确性:如果第i个将军是忠诚的,那么他发送的命令和每个忠诚将军收到的vi相同。Lamport 对拜占庭将军的问题的研究表明,当 n > 3m 时,即叛徒的个数 m 小于将军总数的 n 的 1/3 时,通过口头同步通信(假设通信是可靠的),可以构造同时满足“一致性”和“正确性”的解决方法,即将军们可以达成一致的命令。拜占庭容错系统区块链网络的记账共识和拜占庭将军的问题是相似的。参与共识记账的每一个节点相当于将军,节点之间的消息传递相当于信使,某些节点可能由于各种原因而产生错误的信息传递给其他节点。通常这些发生故障的节点被称为拜占庭节点,而正常的节点即为非拜占庭节点。假设分布式系统拥有n台节点,并假设整个系统拜占庭节点不超过m台(n ≥ 3m + 1),拜占庭容错系统需要满足如下两个条件:所有非拜占庭节点使用相同的输入信息,产生同样的结果。在区块链系统中,可以理解为,随机数相同、区块算法相同、原账本相同的时候,计算结果相同。如果输入的信息正确,那么所有非拜占庭节点必须接收这个消息,并计算相应的结果。在区块链系统中,可以理解为,非拜占庭节点需要对客户的请求进行计算并生成区块。另外,拜占庭容错系统需要达成如下两个指标:安全性:任何已经完成的请求都不会被更改,它可以在以后请求看到。在区块链系统中,可以理解为,已经生成的账本不可篡改,并且可以被节点随时查看。灵活性:可以接受并且执行非拜占庭客户端的请求,不会被任何因素影响而导致非拜占庭客户端的请求不能执行。在区块链系统中,可以理解为,系统需要持续生成区块,为用户记账,这主要靠挖矿的激励机制来保证。在分析拜占庭问题的时候,假设信道是可信的。拓展开来,在拜占庭容错系统,普遍采用的假设条件包括:拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;节点之间的错误是不相关的;节点之间通过异步网络连接,网络中的消息可能丢失、乱序并延时到达,但大部分协议假设消息在有限的时间里能传达到目的地;节点之间传递的信息,第三方可以嗅探到,但是不能篡改、伪造信息的内容和破坏信息的完整性。转自黎跃春区块链博客发布于 2018-06-11 16:37​赞同 8​​添加评论​分享​收藏​喜欢收起​WEB3研究院️专注于WEB3.0以及AIGC的科技财经类媒体

独家分享​ 关注证明者如何在Aleo BFT获取奖励?92 播放 · 1 赞同发布于 2023-05-11 10:56· 25 次播放​赞同 1​​添加评论​分享​收藏​喜欢收起​​

风力的级别怎么换算(蒲福风级和节—帆船必备) - 知乎

风力的级别怎么换算(蒲福风级和节—帆船必备) - 知乎切换模式写文章登录/注册风力的级别怎么换算(蒲福风级和节—帆船必备)畅安铑怪一、蒲福风级表蒲福风级(Beaufort scale)是国际通用的风力等级,由英国人弗朗西斯·蒲福(Francis Beaufort)于1805年拟定,用以表示风强度等级。风力等级简称风级,是风强度(风力)的一种表示方法,故又称“蒲福风力等级表”。它最初是根据风对地面物体或海面的影响大小分为0—12级, 共13个等级。 自1946年以来,风力等级又作了扩充,增加到18个等级(0—17级)。蒲福风级表最开始时只运用于海上,经改良后也可用于陆地。1947年第12届国际气象台长会议上被正式承认。蒲福风级表二、关于接【节】的认识【风速单位里一米每秒相当于的节数】1节=1852米/小时=1852÷3600米/秒=0.514米/秒1米/秒=1.944节【节】kts = knots per hour ,海里/小时。是指地球子午线上纬度1分的长度,由于地球略呈椭球体状,不同纬度处的1分弧度略有差异。在赤道上1海里约等于1843米;纬度45°处约等于1852.2 米,两极约等于1861.6 米。1929年国际水文地理学会议,通过用1分平均长度1852米作为1海里;1948年国际海上人命安全会议承认,1852米或6076.115英尺为1海里,故国际上采用1852米为标准海里长度。海水流速、海上风速、鱼雷等水中兵器的运行速度常用“节”来表示三、【节】和【级】之间的换算节级换算表发布于 2022-04-01 14:56帆船三桅帆船风力​赞同 3​​添加评论​分享​喜欢​收藏​申请

从0到1搞懂拜占庭容错共识机制 - 简书

搞懂拜占庭容错共识机制 - 简书登录注册写文章首页下载APP会员IT技术从0到1搞懂拜占庭容错共识机制BTCUP关注赞赏支持从0到1搞懂拜占庭容错共识机制共识机制堪称区块链的核心。我们知道,EOS、Hyperledger以及Stellar等著名的项目,都采用了BFT(拜占庭容错)共识机制,那么,BFT到底是什么鬼?和其它共识机制相比,又有什么优势和特点呢?1、什么是共识机制?所谓共识机制,就是区块链中的节点,其中包括诚实节点和恶意的节点,就如何写入一个区块达成共识。我们以最熟悉的比特币为例,因为有比特币的奖励,所以矿工们都会争夺每十分钟一次的记账权。公平起见,比特币采用了PoW(工作量)证明的共识机制,也就是通过增加算力来增加获得记账权的概率。PoW的容错性是50%,也就是说只要超过一半的节点是诚实的,就可以保证区块链数据的有效性。不过,PoW存在出块慢、吞吐量小、耗电大的局限,因此PoS、BFT等共识机制也在不断被广泛应用。2、BFT的原理下面,我们先回到中世纪的西方世界。想象一下,强大的拜占庭帝国的几支部队在一个敌人的城市之外扎营,每支部队都由自己的将军指挥,将军只能通过信使互相沟通。在观察敌人后,他们必须决定共同的行动计划。然而,其中一些将军可能是叛徒,试图阻止忠诚的将军达成协议。将军必须决定何时攻击这座城市,但他们需要大部分军队同时进行攻击才有胜算。

协同进攻方能取胜,不协同进攻将会失败

为了取得战斗的胜利,将军们必须有一个算法来保证:(a)所有忠诚的将军采取同一行动计划;(b)少数叛徒不能使忠诚的将军采取不良计划。忠诚的将军们都会按照算法所说的去做,但叛徒可以做任何他们想做的事情。无论叛徒做什么,算法都必须保证上述条件(a)。忠诚的将军不仅应该达成协议,而且应该就合理的计划达成一致。在此我们将这个寓言放到区块链中:故事中的“将军”是参与运行区块链(数据库)分布式网络的各方,他们来回进行通讯的信使就是通过网络进行通信的方式。 “忠诚将军”的集体目标是攻占敌军----写入一个大家公认的区块记录。在我们的寓言中,有效的信息将是决定支持攻击的正确机会。对于忠诚的区块链参与者而言,他们有兴趣确保区块链(数据库)的完整性,从而确保只接受正确的信息。另一方面,叛变的将军将是任何试图伪造区块链(数据库)信息的一方,他们的潜在动机有很多种:可能是试图花费他实际上并不拥有的数字货币,或者是不想履行之前已经签署和提交的智能合同中所述义务等等。区块链的力量在于它需要在一个分布式的网络中、其中可能或者肯定有“恶意节点”----如同拜占庭将军们所处的境地,也能达成正确的共识。各种计算机科学家已经从寓言中概述了拜占庭将军问题的一些潜在解决方案,用于在区块链系统中建立共识的实用拜占庭容错算法(PBFT),是那些潜在的解决方案之一。简单地说,PBFT的作用如下:每个“将军”维持一个内部状态(持续的特定信息或状态),当“将军”接收消息时,它们将消息与其内部状态结合使用,以运行计算或操作。这种计算反过来告诉这个“将军”如何思考有关信息。然后,在达成关于新消息的个人决定之后,这个“将军”再与系统中所有其他“将军”共享该决定,最后根据所有将军提交的全部决定,确定共识决定。算法的研究结果显示,当“叛变将军”少于将军总数的三分之一时,“忠诚将军”将可以做出正确的决定并达成一致。下面我们看这个例子,一共三个将军,其中一个是发令将军A、两个是普通将军B和C。当A告诉B攻击而告诉C撤退时,B和C互相发送消息,因为他俩都是忠诚的,都将如实转发A的消息。这样B和C都不能弄清楚到底谁是叛徒----因为不确定A是叛徒、或者是否另一个普通将军可能伪造了据称来自A的信息。可以证明,如果n是将军总数,而t是其中的叛徒数量 ,那么只有当n> 3t并且通信是同步的时候,拜占庭将军问题才能得到解决。3、结论与最传统的PoW共识机制相比,PBFT有以下优势:1、效率高PBFT要求所有节点之间的两两通信,因此这种通信机制要求节点数量不能太多,通常是几十个,在这种模式下,节点达成一致的速度更快,延时更低。2、吞吐量高节点数量的控制,使PBFT网络不用像大型PoW网络那样,受限于处理能力最低的节点;因此带来全网吞吐量的大幅提升。3、节能无须使用工作量证明的耗电模式,因此更加节能环保。所谓有得必有失,相对而言,PBFT又有以下劣势:1、可扩展性及去中心化程度较弱由于节点数量的限制,因此可扩展性较弱;同时节点需要选举、或者许可,不像PoW节点那样可以自由加入,去中心化程度较弱。2、容错性较低PoW网络的容错性是50%,也就是须防范51%攻击;而PBFT容错性只有三分之一,也就是34%的恶意节点即可发起攻击。

表 共识算法对比   

来源:中国信息通信研究院,2018 年8 月

最后再附上目前业内主流的共识算法对比表。由于行文仓促,其中难免有不完备之处,欢迎留言进行探讨。若大家感兴趣,后续还将继续推出更深度的分析。祝您国庆假期愉快!参考文献:https://blockonomi.com/practical-byzantine-fault-tolerance/本文首发于:币投财经作者:币投研究院 李辉转载请注明出处。 ©著作权归作者所有,转载或内容合作请联系作者 人面猴序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...沈念sama阅读 145,866评论 1赞 309死咒序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...沈念sama阅读 62,394评论 1赞 260救了他两次的神仙让他今天三更去死文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...开封第一讲书人阅读 96,852评论 0赞 214道士缉凶录:失踪的卖姜人 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...开封第一讲书人阅读 41,592评论 0赞 186港岛之恋(遗憾婚礼)正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...茶点故事阅读 49,465评论 1赞 263恶毒庶女顶嫁案:这布局不是一般人想出来的文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...开封第一讲书人阅读 39,091评论 1赞 180城市分裂传说那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...沈念sama阅读 30,669评论 2赞 279双鸳鸯连环套:你想象不到人心有多黑文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...开封第一讲书人阅读 29,435评论 0赞 172万荣杀人案实录序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...沈念sama阅读 32,820评论 0赞 217护林员之死正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...茶点故事阅读 29,534评论 2赞 221白月光启示录正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...茶点故事阅读 30,865评论 1赞 233活死人序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...沈念sama阅读 27,312评论 2赞 218日本核电站爆炸内幕正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...茶点故事阅读 31,810评论 3赞 214男人毒药:我在死后第九天来索命文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...开封第一讲书人阅读 25,703评论 0赞 9一桩弑父案,背后竟有这般阴谋文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...开封第一讲书人阅读 26,135评论 0赞 170情欲美人皮我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...沈念sama阅读 33,844评论 2赞 236代替公主和亲正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...茶点故事阅读 33,990评论 2赞 239推荐阅读更多精彩内容深度长文:区块链共识机制转载声明:本文来自微信公众号:火龙果园长,仅供学习交流,禁止用于商业用途,转载需关注公众号取得文章作者同意。 写在...火龙果园长阅读 7,173评论 0赞 18量子学派之区块链课程第四章《区块链的共识机制——从拜占庭共识谈起》读书笔记第四章 区块链的共识机制:从拜占庭共识谈起 · 本文由【区块链研习社】优质内容计划支持,更多关于区块链的深度好文,...丁涌阅读 613评论 0赞 1一位步履蹒跚的老爷爷走进了我的瑜伽课堂昨天中午上课,开课前几分钟,一位老爷爷缓缓走进了瑜伽教室。 从外表来看应该60多岁,身上穿了件长袖的灰色外套,和一...悦己读书小贝阅读 397评论 0赞 3爸爸的花儿已经过去一个星期了,荡荡看了一眼手机,没有一个电话,连骚扰电话都懒得骚扰他的电话。 “嘿,你看看这些花儿,还没...叫卡夫卡的少年阅读 116评论 0赞 0在沃尔玛看书的时光源于知乎上看到的一个问题,有个人提问:“你在这个城市做过最孤独的一件事?”,我想起了07年底08年初那段岁月。 那...haapy等雪阅读 381评论 0赞 2评论0赞1515赞16赞赞赏更

蒲福风级_百度百科

_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心蒲福风级播报讨论上传视频国际通用的风力等级收藏查看我的收藏0有用+10本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。蒲福风级(Beaufort scale)是国际通用的风力等级,由英国人弗朗西斯·蒲福(Francis Beaufort)于1805年拟定,用以表示风强度等级。风力等级简称风级,是风强度(风力)的一种表示方法,故又称“蒲福风力等级表”。它最初是根据风对地面物体或海面的影响大小分为0—12级, 共13个等级。 自1946年以来,风力等级又作了扩充,增加到18个等级(0—17级)。蒲福风级表最开始时只运用于海上,经改良后也可用于陆地。1947年第12届国际气象台长会议上被正式承认。 [1]中文名蒲福风级外文名Beaufort scale、Beaufort wind scale、Beaufort scale table别    名蒲福风力等级表创始人弗朗西斯·蒲福创始时间1805年风力等级17级公布时间2009年 [5]见载刊物《大气科学名词(第三版)》 科学出版社目录1简介2发展历程3蒲福风级表4风速与风力5测量仪器6说明简介播报编辑蒲福风级(Beaufort scale)是根据风对炊烟、沙尘、地物、渔船、渔浪等的的影响程度而定出的风力等级。常用以估计风速的大小。按强弱,将风力划为0-12级,共13个等级,即目前世界气象组织所建议的分级。后来到1950年代,人类的测风仪器的进步,使量度到自然界的风实际上可以大大地超出了12级,于是就把风级扩展到17级,即共18个等级。不过,世界气象组织航海气象服务手册采用的分级只是0至12级,扩展的13至17级并非建议分级。发展历程播报编辑弗朗西斯·蒲福水道测量专家弗朗西斯·蒲福海军少将(Rear Admiral Sir Francis Beaufort, 1774—1857 )出生于爱尔兰,1790年,他加入海军。1805年被任命为舰长。同 时,他还学习了水文地理学。1806年,他发明了蒲福风级(Beaufort Scale ),是一种主观的测量风速的方法。尽管当时罗伯特·胡克(Robert Hooke, 1635— 1703 )已经发明了风速计种测量风速的设备,但在蒲福所处的那个年代,风速计尚未得到广泛的应用。在南美洲沿岸指挥H .M. S.伍尔维奇号(H. M. S. Woolwich )期间,他边做调查边发明了蒲福风力等级和天气符号。虽然风力等级的划分并没有使用任何新的术语,但是蒲福想通过他的努力创造出供科学家 们长期使用的标准符号。他做出的十分详尽的记录受到了上级长官的高度赞扬。1829年,蒲福被任命为海军水道测量专家,但是直到1838年,他使用的分级标准才被皇家海军采用。1848年,他被封为爵士并于1855年退休。1850年代起,一般航海亦使用蒲福氏风级,之后并且开始改以风杯式风速计测量风速。1874年,国际气 象学委员会(International Meteorological Committee )对蒲福风力等级进行了修改,并增加了风对陆地和海洋产生的影响的细节描述。1923年风速计标准化,蒲福氏风级亦略为修改以方便气象学使用。至今航海上仍然普遍使用蒲福氏风级描述不同风速。自1946年以来,人类的测风仪器的进度,使量度到自然界的风实际上可以大大地超出了12级,风力等级又作了扩充,增加到18个等级(0—17级)。后来到1950年代,人类的测风仪器的进度,使量度到自然界的风实际上可以大大地超出了12级,于是就把风级扩展到17级,即共18个等级。蒲福风级表最开始时只运用于海上,经改良后也可用于陆地。1947年第12届国际气象台长会议上被正式承认。2001年中国气象局发布《台风业务和服务规定》,以蒲福风力等级将12级以上台风补充到17级。13-17级分别对应的是台风的风级。 [2]蒲福风级表播报编辑蒲福风级是一种估计及报告风速之方法。十九世纪初期由英国海军上将蒲福(Beaufort)所发明。原系根据各种风速对于满帆战舰所产生之风帆推进效应测量而决定,其后曾作改进。 [3]表1为蒲福风级表及其续表:表1蒲福风级名称高出地面10公尺之相当风速风压风级标准说明约略波高(最大)中文英文m/sn mile/hkm/hmile/h帕斯卡海岸情形海面情形陆地情形公尺英尺0无风Calm0-0.20-0.025风静海面如镜静,烟直上1软风Light air0.3-1.51-31-51-30.056-0.14渔舟正可操舵海面有鳞状波纹,波峰无泡沫炊烟可表示风向,风标不动0.1 (0.1)0.25 (0.25)2轻风Light breeze1.6-3.34-66-114-70.16-6.8渔舟张帆时速1-2 浬微波明显,波峰光滑未破裂风拂面,树叶有声, 普通风标转动0.2 (0.3)0.5 (1)3微风Gentle breeze3.4-5.47-1012-198-127.2-18.2渔舟渐倾侧时速3-4 浬小波,波峰开始破裂,泡沫如珠,波峰偶泛白沫树叶及小枝摇动,旌旗招展0.6 (1)2 (3)4和风Moderate breeze5.5-7.911-1620-2813-1818.9-39渔舟满帆时倾于一方捕鱼好风小波渐高,波峰白沫渐多尘沙飞扬,纸片飞舞,小树干摇动1 (1.5)3.5 (5)5清风Fresh breeze8.0-10.717-2129-3819-2440-71.6渔舟缩帆中浪渐高,波峰泛白沫,偶起浪花有叶之小树摇摆,内陆水面有小波2 (2.5)6 (8.5)6强风Strong breeze10.8-13.822-2739-4925-3172.9-119渔舟张半帆,捕鱼须注意风险大浪形成,白沫范围增大,渐起浪花大树枝摇动,电线呼呼有声,举伞困难3 (4)9.5 (13)7疾风Near gale13.9-17.128-3350-6132-38120.8-182.8渔舟停息港内,海上需船头向风减速海面涌突,浪花白沫沿风成条吹起全树摇动,迎风步行有阻力4 (5.5)13.5(19)8大风Gale17.2-20.734-4062-7439-46184.9-267.8渔舟在港内避风巨浪渐升,波峰破裂,浪花明显成条沿风吹起小枝吹折,逆风前进困难5.5 (7.5)18 (25)9烈风Strong gale20.8-24.441-4775-8847-54270.4-372.1机帆船行驶困难猛浪惊涛,海面渐呈汹涌,浪花白沫增浓,减低能见度烟突屋瓦等将被吹损7 (10)23 (32)10暴风Storm24.5-28.448-5589-10255-63375.2-504.1机帆船航行极危险猛浪翻腾波峰高耸,浪花白沫堆集,海面一片白浪,能见度减低陆上不常见,见则拔树倒屋或有其它损毁9 (12.5)29 (41)11狂风Violent storm28.5-32.656-63103-11764-72507.7-664.2机帆船无法航行狂涛高可掩蔽中小海轮,海面全为白浪掩盖,能见度大减陆上绝少,有则必有重大灾害11.5(16)37 (52)12飓风Hurricane32.7-36.964-71118-13373-82664.2-851骇浪滔天空中充满浪花白沫,能见度恶劣陆上几乎不可见,有则必造成大量人员伤亡14 (-)45 (-)续表风力 级数高出地面10公尺之相当风速mile/hm/skm/h1372~8037.0~41.4134~1491481~8941.5~46.1150~1661590~9946.2~50.9167~18316100~10851.0~56.0184~20117109~11856.1~61.2202~220注:n mile为度量单位,海里的意思,1 n mile=1852m(只适用于航程)风速与风力播报编辑风速与风力的折合关系式为:风速(米/秒)=0.835*F^(1.5),式中F为风力等级数。风速为该风等级的中数(取整数),指相当于10米高处的风速。测量仪器播报编辑轻便风速表图1 轻便风速表野外常用来测量风力大小的装置,一般由感应部分和计数器所组成(图1)。感应部分由三个风杯(也有四个风杯)装于十字架上,风杯在轴承上可以自由转动,外用小框保护风杯。中轴下部与计数器相接,风杯转动,也使计数器随之转动。所以计数器是记录风杯转动的转数的。计数器通常有两个或三个记数盘,大指针指示个位和十位数,两个小记数盘上的指针分别指示百位数和个位数。仪器的下部有一开关(启动杆),将它推上去,可使计数器与感应部分接合,计数器开始工作。把启动杆拉下来计数器则与感应部分离开,计数器停止工作。 轻便风速表 当仪器置于高处,用手直接开动不便时,可用小绳连接开关。观测时拉动小绳即可启闭。轻便风速表一般安置在四周开阔、无高大障碍物的地方,表身垂直。观测前关闭开关,记下指针的示数。等一两分钟后,打开开关,同时开动秒表记录时间。此时,观测员迅速离开风速表,站在仪器的下风方向。开动仪器后将近100秒钟时,观测员迅速走近仪器,在正100秒时关闭开关,记下第二次指针示数。根据前后两次读数算出其差数,此差数表示风速表指针在观测时间内所走的刻度数,记入记录表内。将此差数除以观测时间,就得出风速表每秒钟内所走的刻度数,取一位小数。再根据每秒所走的刻度数,从该风速表的检定证上查出平均风速(单位:米/秒),取一位小数。最好连续观测两次,取其平均值,以减少仪器本身及人为的误差。说明播报编辑蒲福氏风级发明的时候是一种依靠观察海面现象的分级法。各级数根据海情或浪的状况来划分,并没有定明相关连的风速。1830年英国皇家海军以蒲福氏风级为纪录标准。1850年代起,一般航海亦使用蒲福氏风级,之后并且开始改以风杯式风速计测量风速。1923年风速计标准化,蒲福氏风级亦略为修改以方便气象学使用。 [4]不过,世界气象组织航海气象服务手册采用的分级只是0至12级,扩展的13至17级并非建议分级。至今航海上仍然有使用蒲福氏风级0至12级描述不同风速,但由于测风仪器能更准确地量出风速,不少西方国家已在海洋预报中弃用风级,改成以每5节(kt)为一单位(英、法是少数例外)。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple) - 勋爵|X-knight - 博客园

[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple) - 勋爵|X-knight - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

勋爵

X-knight

—— 漫步云端 重构世界

博客园

首页

新随笔

订阅

管理

[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

  近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结。尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理。本篇文章主要参考《区块链技术指南》,首先表示感谢! 

  ---Begin---

  区块链架构是一种分布式的架构。其部署模式有公共链、联盟链、私有链三种,对应的是去中心化分布式系统、部分去中心化分布式系统和弱中心分布式系统。

  在分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。然而,异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。

  所谓共识,简单理解就是指大家都达成一致的意思。其实在现实生活中,有很多需要达成共识的场景,比如开会讨论,双方或多方签订一份合作协议等。而在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点的账本保持一致。如果是在传统的软件结构中,这几乎就不是问题,因为有一个中心服务器存在,也就是所谓的主库,其他的从库向主库看齐就行了。在实际生活中,很多事情人们也都是按照这种思路来的,比如企业老板发布一个通知,员工照着做。但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来。

  所以在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法,实现不同账本节点上的账本数据的一致性和正确性。这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。

  共识算法其实就是一个规则,每个节点都按照这个规则去确认各自的数据。我们暂且抛开算法的原理,先来想一想在生活中我们会如何解决这样一个问题:假设一群人开会,这群人中没有一个领导或者说老大,大家各抒己见,那么最后如何统一出一个决定出来呢?实际处理的时候,我们一般会在某一个时间段中选出一个人,那个人负责汇总大家的内容,然后发布完整的意见,其他人投票表决,每个人都有机会来做汇总发表,最后谁的支持者多就以谁的最终意见为准。这种思路其实就算是一种共识算法了。然而在实际过程中,如果人数不多并且数量是确定的,还好处理;如果人数很多且数量也不固定,那就很难通过这种方式投票决定了,效率太低。我们需要通过一种机制筛选出最有代表性的人,在共识算法中就是筛选出具有代表性的节点。

  那如何筛选呢?其实就是设置一组条件,就像筛选尖子生一样,给一组指标让大家来完成,谁能更好地完成指标,谁就能有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)、Ripple(瑞波)等,各种不同的算法,其实就是不同的游戏玩法。

 

 

一.拜占庭容错技术(Byzantine Fault Tolerance,BFT)

  拜占庭容错技术(Byzantine Fault Tolerance,BFT)是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。

  拜占庭容错技术来源于拜占庭将军问题(猛击!查看该问题)。

  在分布式系统中,特别是在区块链网络环境中,也和拜占庭将军的环境类似,有运行正常的服务器(类似忠诚的拜占庭将军),有故障的服务器,还有破坏者的服务器(类似叛变的拜占庭将军)。共识算法的核心是在正常的节点间形成对网络状态的共识。

  通常,这些发生故障节点被称为拜占庭节点,而正常的节点即为非拜占庭节点。

  拜占庭容错系统是一个拥有n台节点的系统,整个系统对于每一个请求,满足以下条件:

  1)所有非拜占庭节点使用相同的输入信息,产生同样的结果;

  2)如果输入的信息正确,那么所有非拜占庭节点必须接收这个信息,并计算相应的结果。

  拜占庭系统普遍采用的假设条件包括:

  1)拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;

  2)节点之间的错误是不相关的;

  3)节点之间通过异步网络连接,网络中的消息可能丢失、乱序并延时到达,但大部分协议假设消息在有限的时间里能传达到目的地;

  4)服务器之间传递的信息,第三方可以嗅探到,但是不能篡改、伪造信息的内容和验证信息的完整性。

  原始的拜占庭容错系统由于需要展示其理论上的可行性而缺乏实用性。另外,还需要额外的时钟同步机制支持,算法的复杂度也是随节点增加而指数级增加。

二.PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。

  实用拜占庭容错系统(PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别(Polynomial),使拜占庭协议在分布式系统中应用成为可能。

  PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,通常假设故障节点数为m个,整个服务节点数为|R|=3m+1个,这里m是有可能失效的副本的最大个数。尽管可以存在多于3m+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

  PBFT要求共同维护一个状态,所有节点采取的行动一致。为此,需要运行三类基本协议,包括一致性协议、检查点协议和视图更换协议。我们主要关注支持系统日常运行的一致性协议。一致性协议至少包含若干个阶段:请求(request)、序号分配(pre-prepare)和响应(reply)。根据协议设计的不同,可能包含相互交互(prepare),序号确认(commit)等阶段。

PBFT协议通信模式

  上图为PBFT协议通信模式,每一个客户端的请求需要经过5个阶段,通过采用两次两两交互的方式在服务器达成一致之后再执行客户端的请求。由于客户端不能从服务器端获得任何服务器运行状态的信息,PBFT中主节点是否发生错误只能由服务器监测。如果服务器在一段时间内都不能完成客户端的请求,则会触发视图更换协议。其中C为客户端,N0~N3表示服务节点,特别的,N0为主节点,N3为故障节点。整个协议的基本过程如下:

1)客户端发送请求,激活主节点的服务操作。

2)当主节点接收请求后,启动三阶段的协议以向各从节点广播请求。

[2.1]序号分配阶段,主节点给请求赋值一个序列号n,广播序号分配消息和客户端的请求消息m,并将构造PRE-PREPARE消息给各从节点;

[2.2]交互阶段,从节点接收PRE-PREPARE消息,向其他服务节点广播PREPARE消息;

[2.3]序号确认阶段,各节点对视图内的请求和次序进行验证后,广播COMMIT消息,执行收到的客户端的请求并给客户端以响应。

3)客户端等待来自不同节点的响应,若有m+1个响应相同,则该响应即为运算的结果。

 

  PBFT在很多场景都有应用,在区块链场景中,一般适合于对强一致性有要求的私有链和联盟链场景。例如,在IBM主导的区块链超级账本项目中,PBFT是一个可选的共识协议。在Hyperledger的Fabric项目中,共识模块被设计成可插拔的模块,支持像PBFT、Raft等共识算法。

三.Raft协议。

  在这些分布式系统的实用场景下,其假设条件不需要考虑拜占庭故障,而只是处理一般的死机故障。在这种情况下,采用Paxos等协议会更加高效。Paxos是Lamport设计的保持分布式系统一致性的协议。但由于Paxos非常复杂,比较难以理解,因此后来出现了各种不同的实现和变种。Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法。目前,在各种主流语言中都有了一些开源实现,比如本文中将使用的基于JGroups的Raft协议实现。关于Raft的原理,强烈推荐动画版Raft讲解 (猛击!查看该视频)。

  Raft最初是一个用于管理复制日志的共识算法,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。Raft是在非拜占庭故障下达成共识的强一致协议。

  在区块链系统中,使用Raft实现记账共识的过程可以描述如下:首先选举一个leader,接着赋予leader完全的权力管理记账。leader从客户端接收记账请求,完成记账操作,生成区块,并复制到其他记账节点。有了leader简化了记账操作的管理。例如,leader能够决定是否接受新的交易记录项而无需考虑其他的记账节点,leader可能失效或与其他节点失去联系,这时,系统就会选出新的leader。

  在Raft中,每个结点会处于下面三种状态中的一种:

follower:所有结点都以follower的状态开始。如果没收到leader消息则会变成candidate状态

candidate:会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)

leader:所有对系统的修改都会先经过leader。每个修改都会写一条日志(log entry)。leader收到修改请求后的过程如下,这个过程叫做日志复制(Log Replication): 

复制日志到所有follower结点(replicate entry)

大部分结点响应时才提交日志

通知所有follower结点日志已提交

所有follower也提交日志

现在整个系统处于一致的状态

Raft阶段主要分为两个,首先是leader选举过程,然后在选举出来的leader基础上进行正常操作,比如日志复制、记账等。

1.Leader Election 

  当follower在选举超时时间内未收到leader的心跳消息,则转换为candidate状态。为了避免选举冲突,这个超时时间是一个150~300ms之间的随机数。

  一般而言,在Raft系统中:

  1)任何一个服务器都可以成为一个候选者candidate,它向其他服务器follower发出要求选举自己的请求。

  2)其他服务器同意了,发出OK。注意,如果在这个过程中,有一个follower宕机,没有收到请求选举的要求,此时候选者可以自己选自己,只要达到N/2+1的大多数票,候选人还是可以成为leader的。

  3)这样这个候选者就成为了leader领导人,它可以向选民也就是follower发出指令,比如进行记账。

  4)以后通过心跳进行记账的通知。

  5)一旦这个leader崩溃了,那么follower中有一个成为候选者,并发出邀票选举。

  6)follower同意后,其成为leader,继续承担记账等指导工作。

2.Log Replication

  Raft的记账过程按以下步骤完成:

  1)假设leader领导人已经选出,这时客户端发出增加一个日志的要求;

  2)leader要求follower遵从他的指令,都将这个新的日志内容追加到他们各自日志中;

  3)大多数follower服务器将交易记录写入账本后,确认追加成功,发出确认成功信息;

  4)在下一个心跳中,leader会通知所有follower更新确认的项目。

  对于每个新的交易记录,重复上述过程。

  在这一过程中,若发生网络通信故障,使得leader不能访问大多数follower了,那么leader只能正常更新它能访问的那些follower服务器。而大多数的服务器follower因为没有了leader,他们将重新选举一个候选者作为leader,然后这个leader作为代表与外界打交道,如果外界要求其添加新的交易记录,这个新的leader就按上述步骤通知大多数follower。当网络通信恢复,原先的leader就变成follower,在失联阶段,这个老leader的任何更新都不能算确认,必须全部回滚,接收新的leader的新的更新。

四.POW:Proof of Work,工作证明。

  从去中心化账本系统的角度看,每个加入这个系统的节点都要保存一份完整的账本,但每个节点却不能同时记账,因为节点处于不同的环境,接收到不同的信息,如果同时记账的话,必然会导致账本的不一致,造成混乱。因此,需要有共识来达成哪个节点有权记账。比特币区块链通过竞争记账的方式解决去中心化的记账系统的一致性问题, 即以每个节点的计算能力即“算力”来竞争记账权的机制。 

  在比特币系统中,大约每10分钟进行一轮算力竞赛,竞赛的胜利者,就获得一次记账的权力,并向其他节点同步新增账本信息。然而,在一个去中心化的系统中,谁有权判定竞争的结果呢?比特币系统是通过一个称为“工作量证明”(Proof of Work,PoW)的机制完成的。

  简单地说,PoW就是一份确认工作端做过一定量工作的证明。PoW系统的主要特征是计算的不对称性。工作端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查工作端是不是做了相应的工作。

  举个例子,给定字符串“blockchain”,我们给出的工作量要求是,可以在这个字符串后面连接一个称为nonce的整数值串,对连接后的字符串进行SHA256哈希运算,如果得到的哈希结果(以十六进制的形式表示)是以若干个0开头的,则验证通过。为了达到这个工作量证明的目标,我们需要不停地递增nonce值,对得到的新字符串进行SHA256哈希运算。按照这个规则,需要经过2688次计算才能找到前3位均为0的哈希值,而要找到前6位均为0的哈希值,则需进行620969次计算。

1 blockchain1 → 4bfb943cba9fb9926df93f33c17d64b378d56714e8a29c6ba8bdc9690cea8e27

2 blockchain2 → 01181212a283e760929f6b1628d903127c65e6fb5a9ad7fe94b790e699269221 ……

3 blockchain515 → 0074448bea8027bebd6333d3aa12fd11641e051911c5bab661a9b849b83958a7……

4 blockchain2688 → 0009b257eb8cf9eba179ab2be74d446fa1c59f0adfa8814260f52ae0016dd50f……

5 blockchain48851: 00000b3d96b4db1a976d3a69829aabef8bafa35ab5871e084211a16d3a4f385c……

6 blockchain6200969: 000000db7fa334aef754b51792cff6c880cd286c5f490d5cf73f658d9576d424

  通过上面这个计算特定SHA256运算结果的示例,我们对PoW机制有了一个初步的理解。对于特定字符串后接随机nonce值所构成的串,要找到这样的nonce值,满足前n位均为0的SHA256值,需要多次进行哈希值的计算。一般来说,n值越大,需要完成的哈希计算量也越大。由于哈希值的伪随机特性,要寻找4个前导0的哈希值,预期大概要进行216次尝试,这个数学期望的计算次数,就是所要求的“工作量”。

  比特币网络中任何一个节点,如果想生成一个新的区块并写入区块链,必须解出比特币网络出的PoW问题。这道题关键的3个要素是工作量证明函数、区块及难度值。工作量证明函数是这道题的计算方法,区块决定了这道题的输入数据,难度值决定了这道题所需要的计算量。

  1.工作量证明函数 及 区块数据计算过程

  比特币系统中使用的工作量证明函数就是SHA256(猛击!查看该问题)。

  比特币区块结构如下图所示:

  比特币的区块由区块头及该区块所包含的交易列表组成。区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的哈希值、32字节的Merkle根哈希值、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数组成。区块包含的交易列表则附加在区块头后面,其中的第一笔交易是coinbase交易,这是一笔为了让矿工获得奖励及手续费的特殊交易。

  拥有80字节固定长度的区块头,就是用于比特币工作量证明的输入字符串。因此,为了使区块头能体现区块所包含的所有交易,在区块的构造过程中,需要将该区块要包含的交易列表,通过Merkle树算法(猛击)生成Merkle根哈希值,并以此作为交易列表的哈希值存到区块头中。其中Merkle树的算法图解如下图所示。

  

  

  上图展示了一个具有4个交易记录的Merkle树的根哈希值的计算过程。首先以这4个交易作为叶子结点构造一棵完全二叉树,然后通过哈希值的计算,将这棵二叉树转化为Merkle树。

首先对4个交易记录:Txa~Txc,分别计算各自的哈希值HA~HC,然后计算两个中间节点的哈希值HAB=Hash(HA+HB)和HCD=Hash(HC+HD),最后计算出根节点的哈希值HABCD=Hash(HAB+HCD)。

 

  而构造出来的简化的区块链结构如上图所示。We find that: 所有在给定时间范围需要记录的交易信息被构造成一个Merkle树,区块中包含了指向这个Merkle树的哈希指针,关联了与该区块相关的交易数据,同时,区块中也包含了指向前一区块的哈希指针,使得记录了不同交易的单个区块被关联起来,形成区块链。

  2.挖矿难度

  难度值是比特币系统中的节点在生成区块时的重要参考指标,它决定了节点大约需要经过多少次哈希运算才能产生一个合法的区块。比特币的区块大约每10分钟生成一个,如果要在不同的全网算力条件下,新区块的产生都基本保持这个速率,难度值必须根据全网算力的变化进行调整。简单地说,难度值被设定在无论节点计算能力如何,新区块产生速率都保持在每10分钟一个。

  难度的调整是在每个完整节点中独立自动发生的。每2016个区块,所有节点都会按统一的公式自动调整难度,这个公式是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟,即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。 

  这个公式可以总结为:新难度值=旧难度值×(过去2016个区块花费时长/20160分钟)

  工作量证明需要有一个目标值。比特币工作量证明的目标值(Target)的计算公式:目标值=最大目标值/难度值

  其中最大目标值为一个恒定值:0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

  目标值的大小与难度值成反比。比特币工作量证明的达成就是矿工计算出来的区块哈希值必须小于目标值。

  3.PoW过程 

  比特币PoW的过程,可以简单理解成就是将不同的nonce值作为输入,尝试进行SHA256哈希运算,找出满足给定数量前导0的哈希值的过程。而要求的前导0的个数越多,代表难度越大。比特币节点求解工作量证明问题的步骤大致归纳如下:

  1)生成铸币交易,并与其他所有准备打包进区块的交易组成交易列表,通过Merkle树算法生成Merkle根哈希;

  2)把Merkle根哈希及其他相关字段组装成区块头,将区块头的80字节数据作为工作量证明的输入;

  3)不停地变更区块头中的随机数,即nonce的数值,并对每次变更后的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。

  比特币的工作量证明,就是俗称“挖矿”所做的主要工作。

  4.PoW能否解决拜占庭将军问题 

  关于比特币PoW共识机制能否解决拜占庭将军问题一直在业界有争议。2015年,Juan Garay对比特币的PoW共识算法进行了正式的分析,得出的结论是比特币的PoW共识算法是一种概率性的拜占庭协议(Probabilistic BA)。Garay对比特币共识协议的两个重要属性分析如下。

  1)一致性(Agreement)

  在不诚实节点总算力小于50%的情况下,同时每轮同步区块生成的几率很少的情况下,诚实的节点具有相同的区块的概率很高。用数学的严格语言说应该是:当任意两个诚实节点的本地链条截取K个节点,两条剩下的链条的头区块不相同的概率随着K的增加呈指数型递减。

  2)正确性(Validity)

  大多数的区块必须由诚实节点提供。严格来说,当不诚实算力非常小的时候,才能使大多数区块由诚实节点提供。

  因此可以看到,当不诚实的算力小于网络总算力的50%时,同时挖矿难度比较高,在大约10分钟出一个区块情况下,比特币网络达到一致性的概念会随确认区块的数目增多而呈指数型增加。但当不诚实算力具一定规模,甚至不用接近50%的时候,比特币的共识算法并不能保证正确性,也就是,不能保证大多数的区块由诚实节点来提供。

  因此,我们可以看到,比特币的共识算法不适合于私有链和联盟链。其原因首先是它是一个最终一致性共识算法,不是一个强一致性共识算法。第二个原因是其共识效率低。提供共识效率又会牺牲共识协议的安全性。另外,比特币通过巧妙的矿工奖励机制来提升网络的安全性。矿工挖矿获得比特币奖励以及记账所得的交易费用使得矿工更希望维护网络的正常运行,而任何破坏网络的非诚信行为都会损害矿工自身的利益。因此,即使有些比特币矿池具备强大的算力,它们都没有作恶的动机,反而有动力维护比特币的正常运行,因为这和它们的切实利益相关。

  PoW机制存在明显的弊端。一方面,PoW的前提是,节点和算力是均匀分布的,因为通过CPU的计算能力来进行投票,拥有钱包(节点)数和算力值应该是大致匹配的,然而随着人们将CPU挖矿逐渐升级到GPU、FPGA,直至ASIC矿机挖矿,节点数和算力值也渐渐失配。另一方面,PoW太浪费了。比特币网络每秒可完成数百万亿次SHA256计算,但这些计算除了使恶意攻击者不能轻易地伪装成几百万个节点和打垮比特币网络,并没有更多实际或科学价值。当然,相对于允许世界上任何一个人在瞬间就能通过去中心化和半匿名的全球货币网络,给其他人几乎没有手续费地转账所带来的巨大好处,它的浪费也许只算是很小的代价。

  有鉴于此,人们提出了权益证明(Proof of Stake,PoS)。

五.POS:Proof of Stake,股权证明。

  PoS类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。   简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明PoS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个PoS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。

  点点币(Peercoin)是首先采用权益证明的货币,点点币在SHA256的哈希运算的难度方面引入了币龄的概念,使得难度与交易输入的币龄成反比。在点点币中,币龄被定义为币的数量与币所拥有的天数的乘积,这使得币龄能够反映交易时刻用户所拥有的货币数量。实际上,点点币的权益证明机制结合了随机化与币龄的概念,未使用至少30天的币可以参与竞争下一区块,越久和越大的币集有更大的可能去签名下一区块。

  然而,一旦币的权益被用于签名一个区块,则币龄将清为零,这样必须等待至少30日才能签署另一区块。同时,为防止非常老或非常大的权益控制区块链,寻找下一区块的最大概率在90天后达到最大值,这一过程保护了网络,并随着时间逐渐生成新的币而无需消耗大量的计算能力。点点币的开发者声称这将使得恶意攻击变得困难,因为没有中心化的挖矿池需求,而且购买半数以上的币的开销似乎超过获得51%的工作量证明的哈希计算能力。

  权益证明必须采用某种方法定义任意区块链中的下一合法区块,依据账户结余来选择将导致中心化,例如单个首富成员可能会拥有长久的优势。为此,人们还设计了其他不同的方法来选择下一合法区块。

  PoS机制虽然考虑到了PoW的不足,但依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权。股份授权证明机制(Delegated Proof of Stake,DPoS)的出现正是基于解决PoW机制和PoS机制的这类不足。

六.DPOS:Delegated Proof of Stake,委任权益证明

  比特股(Bitshare)是一类采用DPoS机制的密码货币,它期望通过引入一个技术民主层来减少中心化的负面影响。

  比特股的DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

  比特股引入了见证人这个概念,见证人可以生成区块,每一个持有比特股的人都可以投票选举见证人。得到总同意票数中的前N个(N通常定义为101)候选者可以当选为见证人,当选见证人的个数(N)需满足:至少一半的参与投票者相信N已经充分地去中心化。

  见证人的候选名单每个维护周期(1天)更新一次。见证人然后随机排列,每个见证人按序有2秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。

  DPoS充分利用了持股人的投票,以公平民主的方式达成共识,他们投票选出的N个见证人,可以视为N个矿池,而这N个矿池彼此的权利是完全相等的。持股人可以随时通过投票更换这些见证人(矿池),只要他们提供的算力不稳定,计算机宕机,或者试图利用手中的权力作恶。

  比特股还设计了另外一类竞选,代表竞选。选出的代表拥有提出改变网络参数的特权,包括交易费用、区块大小、见证人费用和区块区间。若大多数代表同意所提出的改变,持股人有两周的审查期,这期间可以罢免代表并废止所提出的改变。这一设计确保代表技术上没有直接修改参数的权利以及所有的网络参数的改变最终需得到持股人的同意。

七.Ripple共识算法。

  Ripple(瑞波)是一种基于互联网的开源支付协议,可以实现去中心化的货币兑换、支付与清算功能。在Ripple的网络中,交易由客户端(应用)发起,经过追踪节点(tracking node)或验证节点(validating node)把交易广播到整个网络中。追踪节点的主要功能是分发交易信息以及响应客户端的账本请求。验证节点除包含追踪节点的所有功能外,还能够通过共识协议,在账本中增加新的账本实例数据。  

  Ripple的共识达成发生在验证节点之间,每个验证节点都预先配置了一份可信任节点名单,称为UNL(Unique Node List)。在名单上的节点可对交易达成进行投票。每隔几秒,Ripple网络将进行如下共识过程:

  1)每个验证节点会不断收到从网络发送过来的交易,通过与本地账本数据验证后,不合法的交易直接丢弃,合法的交易将汇总成交易候选集(candidate set)。交易候选集里面还包括之前共识过程无法确认而遗留下来的交易。

  2)每个验证节点把自己的交易候选集作为提案发送给其他验证节点。

  3)验证节点在收到其他节点发来的提案后,如果不是来自UNL上的节点,则忽略该提案;如果是来自UNL上的节点,就会对比提案中的交易和本地的交易候选集,如果有相同的交易,该交易就获得一票。在一定时间内,当交易获得超过50%的票数时,则该交易进入下一轮。没有超过50%的交易,将留待下一次共识过程去确认。  

  4)验证节点把超过50%票数的交易作为提案发给其他节点,同时提高所需票数的阈值到60%,重复步骤3)、步骤4),直到阈值达到80%。

  5)验证节点把经过80%UNL节点确认的交易正式写入本地的账本数据中,称为最后关闭账本(Last Closed Ledger),即账本最后(最新)的状态。

 Ripple共识过程节点交互示意图

 

Ripple共识算法流程

  在Ripple的共识算法中,参与投票节点的身份是事先知道的,因此,算法的效率比PoW等匿名共识算法要高效,交易的确认时间只需几秒钟。当然,这点也决定了该共识算法只适合于权限链(Permissioned chain)的场景。Ripple共识算法的拜占庭容错(BFT)能力为(n-1)/5,即可以容忍整个网络中20%的节点出现拜占庭错误而不影响正确的共识。

 

 

  以上主要是目前主流的共识算法。 但说起哪种共识机制更好或更具替代作用? 我认为DPOS来单独替代POW,POS或者POW+POS不太可能,毕竟存在即合理。每种算法都在特定的时间段、场景下具有各自的意义,无论是技术上,还是业务上。如果跳出技术者的角度,更多结合政治与经济的思考方式在里面,或许还会不断出现更多的共识机制。

  对于算法的选择,一句话总结如下:

“ 在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。一般来说,在私有链和联盟链情况下,对一致性、正确性有很强的要求。一般来说要采用强一致性的共识算法。而在公有链情况下,对一致性和正确性通常没法做到百分之百,通常采用最终一致性(Eventual Consistency)的共识算法。”

  通俗点就是:共识算法的选择与应用场景高度相关,可信环境使用paxos 或者raft,带许可的联盟可使用pbft ,非许可链可以是pow,pos,ripple共识等,根据对手方信任度分级,自由选择共识机制。

 

【时间仓促,如有错误,欢迎指正! ||   欢迎留下您的评语!  大家一起探讨、学习区块链!】

【转载请注明出处!http://www.cnblogs.com/X-knight/】

 

REFERENCE

Diego Ongaro and John Ousterhout Stanford University In Search of an Understandable Consensus Algorithm (Extended Version)

《区块链技术指南》邹均,张海宁,唐屹,李磊 著

Raft协议 https://blog.csdn.net/dc_726/article/details/48832405/

posted @

2018-06-08 23:02 

勋爵|X-knight 

阅读(55539) 

评论(6) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 勋爵|X-knight

Powered by .NET 8.0 on Kubernetes

拜占庭容错算法BFT - 知乎

拜占庭容错算法BFT - 知乎首发于区块链+切换模式写文章登录/注册拜占庭容错算法BFT弹剑听潮​中国地质大学(北京) 工商管理硕士拜占庭容错,英文全称Byzantine Fault Tolerance,简称BFT。拜占庭错误:恶意节点,它为了阻挠真实信息的传递以及有效一致的达成,会向各个节点发送前后不一致的信息。能够处理拜占庭错误的这种容错性,就叫做拜占庭容错。拜占庭容错共识算法,就是假设区块链网络环境包括运行正常的服务器、故障的服务器和破坏者的服务器情况下,如何在正常的节点间形成对网络状态的共识。拜占庭容错共识算法的种类1. 实用拜占庭容错算法2. 授权拜占庭容错算法3. 联邦拜占庭协议这些算法在具体的实现形式上有所不同,但都有速度快、支持高并发、可扩展的特点,通常被用于私有链或者联盟链。实用拜占庭容错算法实用拜占庭容错算法,英文全称,Practical Byzantine Fault Tolerance,简称PBFT。Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。在超级账本Fabric0.6中主要使用的就是这种算法。它可以在失效节点不超过总节点数1/3的情况下保证消息传递的正确可靠。PBFT,本质上就是利用通信次数换取可靠性。每个命令的执行都需要节点间两两交互去核验消息,这产生了比较高的通信代价。PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。所有的副本在一个被称为视图的轮换过程中运作。在某个视图中,一个副本作为主节点,其它的副本节点作为备份节点。主节点通过随机算法选出,用来负责与提案的客户端通信。主节点选出后,客户端发送提案给主节点,主节点将客户端请求进行编号,然后发送预准备消息给所有的副本节点。每一个副本节点在收到来自主节点的预准备消息之后,都要检查消息的正确性,然后发送准备消息给除了自己以外的其他所有副本节点。同时它也会收到其他副本节点发来的准备消息。在收到消息后,副本节点对其他节点的准备消息进行验证,如果正确就将准备消息写入消息日志,集齐规定数量的准备消息之后,它就进入准备状态。副本节点进入准备状态后,在全网范围内广播commit消息,当副本节点集齐规定数量个验证过的commit消息后,就表示请求处理完毕,当前网络中的大部分节点已经达成共识,于是发送处理结果给客户端,运行客户端的请求。PBFT举例当节点数大于等于4个的时候,1个无效节点的存在并不会影响消息的传递。推广来说,当存在n个无效节点时,只要总节点数超过3n个,消息传递的正确性就能得到保证,这也是拜占庭算法的容错率。发布于 2020-07-04 11:49授权拜占庭容错算法区块链(Blockchain)节点​赞同 4​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录区块链+区块链知识及一

BFT是什么意思? - BFT的全称 | 在线英文缩略词查询

BFT是什么意思? - BFT的全称 | 在线英文缩略词查询

↓ 跳到主内容

EnglishالعربيةБългарскиCatalàČeštinaCymraegDanskDeutschΕλληνικάEspañolEestiفارسیSuomiFrançaisעִבְרִיתहिन्दीJezikAyititMagyarBahasa IndonesiaItaliano日本語한국어LietuviųLatviešuMelayuMaltiNorskNederlandsPolskiPortuguêsRomânăРусскийSlovenčinaslovenščinaSvenskaไทยTürkçeукраїнськаاردوViệt Nam繁體中文

首页 › 3 个字母 › BFT

BFT 是什么意思?

你在寻找BFT的含义吗?在下图中,您可以看到BFT的主要定义。 如果需要,您还可以下载要打印的图像文件,或者您可以通过Facebook,Twitter,Pinterest,Google等与您的朋友分享。要查看BFT的所有含义,请向下滚动。 完整的定义列表按字母顺序显示在下表中。

BFT的主要含义

下图显示了BFT最常用的含义。 您可以将图像文件下载为PNG格式以供离线使用,或通过电子邮件发送给您的朋友。如果您是非商业网站的网站管理员,请随时在您的网站上发布BFT定义的图像。

BFT的所有定义

如上所述,您将在下表中看到BFT的所有含义。 请注意,所有定义都按字母顺序列出。您可以单击右侧的链接以查看每个定义的详细信息,包括英语和您当地语言的定义。

首字母缩写词定义BFTBoardfeetBFT业务基本表BFT二进制文件传输BFT北方蓝鳍金枪鱼BFT博斯 et Forêts des 热带BFT博福特BFT国际贸易学士学位BFT坦克部队BFT基本体能测试BFT基本的战斗机过渡BFT基本飞行训练BFT外贸银行BFT大胖目标BFT大胖肚子BFT大脚怪BFT巴佩拉家庭信托基金BFT布莱克家谱BFT布里瓦德教师联合会BFT建的福特强硬BFT建立了牵引BFT战斗体能测试BFT战斗集中培训师BFT拜占庭容错能力BFT本 · 富兰克林过境BFT框中自由思维BFT波束形成技术BFT申办旅行BFT电路板功能测试BFT脱色花式牛油BFT蓝力跟踪BFT蓝力跟踪器BFT蓝鳍金枪鱼BFT该死的大卡车BFT该死的时候BFT赤脚的真相BFT赤脚的青少年BFT钝性损伤BFT食品技术学士学位BFT黑色的女权主义思想

‹ BFS

BFX ›

语言

EnglishالعربيةБългарскиCatalàČeštinaCymraegDanskDeutschΕλληνικάEspañolEestiفارسیSuomiFrançaisעִבְרִיתहिन्दीJezikAyititMagyarBahasa IndonesiaItaliano日本語한국어LietuviųLatviešuMelayuMaltiNorskNederlandsPolskiPortuguêsRomânăРусскийSlovenčinaslovenščinaSvenskaไทยTürkçeукраїнськаاردوViệt Nam繁體中文

简体中文

Recent Posts

文章分类  

>>   

1   

2   

3   

4   

5   

6   

7   

8   

9   

10   

A   

B   

C   

D   

E   

F   

G   

H   

I   

J   

K   

L   

M   

N   

O   

P   

Q   

R   

S   

T   

U   

V   

W   

X   

Y   

Z   

© 2014 - 2023

Abbreviation Finder. 站点地图 | Recent Posts

Terms of Use | Privacy Policy | About Us | Blog

BFT考试_百度百科

试_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10BFT考试播报讨论上传视频教育领域术语“中国国际化人才外语考试 [1]”(Business Foreign Language Test,简称BFT)是国家外国专家局于1985 年6月设立的国家级标准化外语考试。自设立,BFT对选拔党政领导人才、设计企业人才和专业技术人才出国培训学习,确保出国培训质量,提高出国培训效益和成就,开发大批国际化人才,服务国家建设,发挥了非常重要的作用。中文名BFT考试外文名Business Foreign Language Test简    称BFT考试语种英语、日语、德语、俄语目录1简介2分级3考试办法4优势简介播报编辑全国出国培训备选人员外语考试,是由国家外国专家局主办的国家级标准化外语水平测试,是衡量出国培训人员外语水平的国家级标准。适用于我国政府、工商企业、财政金融等部门出国培训人员和已在或准备到国内外资企业工作的各类英语学习者及参加中、高级专业技术资格评定的各类专业技术员。已有十多万名考生参加了考试。随着我国改革开放的逐步深入,BFT考试 [2]从仅服务于国家计划培训工作,已发展为面向全社会的标准化外语水平测试。BFT考试不仅适用于我国党政机关及企事业单位出国培训人员,也适用于已在或准备到国内的外资企业工作的各类人员及参加中、高级专业技术资格评定的各类专业技术人员。由于原外专局培训司主要职能并入科技部新设立的引进国外智力管理司,新“三定”方案不再负责BFT考试相关职能,自2019年上半年起取消该考试 [3]。分级播报编辑作为国家级标准化综合外语能力测评体系,BFT按照公务、商务、国际交流及其他各类工作的需求,对不同人员在各种生活、学习及工作环境下运用外语的能力从听、说、读、写四个方面进行全面考查和评价。参加BFT培训和考试,学员可以大幅提高其外语应用能力,迅速达到出国培训学习使用外语的要求,并在外事工作环境中得以应用。BFT考试现设有英语、日语、俄语、德语四个语种;分为初级(C级)、中级(B级)和高级(A级)三个级别。笔试包括阅读理解、书面表达(写作)等内容。考试在一天内完成。上午进行听力及笔试的测试,下午进行口试。具体考试项目分为听力理解25%、阅读理解35%、书面表达15%、口头表达25%。BFT高级合格证和高级单科证有效期为四年,中、初级合格证及中、初级单科合格证有效期为三年。考试办法播报编辑BFT英语考试每年两次,分别安排在6月和12月举行;BFT日语、俄语、德语考试每年组织一次,安排在6月举行。BFT考试 [1]办公室于每次考试之前的两个月向各有关部门和地方下达考试通知,并通过新闻媒介发布考试消息,考生可据此向设在各地的BFT考试中心就近报名参加考试。考生可参加全部考试,也可根据考试目的选择相应测试科目。三个科目全部合格,根据成绩发给全国出国培训人员外语考试办公室负责印刷的相应BFT合格证。只参加某一科目考试的考生,成绩合格者可获得单科合格证。国家外国专家局批准的中长期(三个月及以上)出国培训人员及短期出国培训团组翻译,必须通过BFT高级考试才能获准出国培训;鼓励参加短期(三个月以下)出国培训、年龄在45岁以下(含45岁)的人员参加BFT初级水平考试。初、中级合格证及初、中级单科合格证有效期为两年,高级合格证和高级单科合格证有效期为三年。优势播报编辑获得高级进入备选人才库据了解,考试通知在报名日期前一个月颁发。得BFT高级合格证者,其个人资料将存入全国出国培训备选人员库,国家外国专家局在执行国家派遣的中、长期出国项目时,将从中优先挑选。根据人事部相关文件的规定,BFT考试 [1]成绩可作为评定职称依据,并逐渐成为国家机关、企事业单位招工、招干的参考标准。同时BFT以其完善科学的测试体系已成为国有大中企业、外资、合资企业人力资源评测的重要手段。可获单科合格证这其中英语考试分高中级和初级两种。中长期出国培训人员需参加高中级考试,并达到高级要求;短期出国培训人员需参加初级考试。其他各语种暂不设初级考试,级别划分标准不变。考生可参加全部考试,也可以根据考试目的选择相应测试科目。三个科目全部合格,根据成绩发给全国出国培训人员外语考试办公室负责印制的相应BFT合格证,参加某一科目考试的考生,成绩合格者可获得单科合格证。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

[区块链] 拜占庭将军问题 [BFT] - 勋爵|X-knight - 博客园

[区块链] 拜占庭将军问题 [BFT] - 勋爵|X-knight - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

勋爵

X-knight

—— 漫步云端 重构世界

博客园

首页

新随笔

订阅

管理

[区块链] 拜占庭将军问题 [BFT]

背景:

  拜占庭将军问题很多人可能听过,但不知道具体是什么意思。那么究竟什么是拜占庭将军问题呢? 本文从最通俗的故事讲起,并对该问题进行抽象,并告诉大家拜占庭将军问题为什么在区块链领域作为一个重点研究问题。

什么是拜占庭将军问题:

  “拜占庭将军问题”也被称为“拜占庭容错”。

  拜占庭将军问题是Leslie Lamport(2013年的图灵讲得住)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。

  这个例子大意是这样的:

  拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗? 

注:“  拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,已经假定了信道是没有问题的。 ”

  

 通俗分析:

  单从上面的说明可能无法理解这个问题的复杂性,我们来简单分析一下:

  先看在没有叛徒情况下,假如一个将军A提一个进攻提议(如:明日下午1点进攻,你愿意加入吗?)由通信兵通信分别告诉其他的将军,如果幸运中的幸运,他收到了其他6位将军以上的同意,发起进攻。如果不幸,其他的将军也在此时发出不同的进攻提议(如:明日下午2点、3点进攻,你愿意加入吗?),由于时间上的差异,不同的将军收到(并认可)的进攻提议可能是不一样的,这是可能出现A提议有3个支持者,B提议有4个支持者,C提议有2个支持者等等。

  再加一点复杂性,在有叛徒情况下,一个叛徒会向不同的将军发出不同的进攻提议(通知A明日下午1点进攻, 通知B明日下午2点进攻等等),一个叛徒也会可能同意多个进攻提议(即同意下午1点进攻又同意下午2点进攻)。

  叛徒发送前后不一致的进攻提议,被称为“拜占庭错误”,而能够处理拜占庭错误的这种容错性称为「Byzantine fault tolerance」,简称为BFT。

 

问题抽象:

  求解拜占庭将军问题,隐含要满足以下两个条件:

  1)每个忠诚的将军必须收到相同的命令值vi(vi是第i个将军的命令)。

  2)如果第i个将军是忠诚的,那么他发送的命令和每个忠诚将军收到的vi相同。

  于是,拜占庭将军问题的可以描述为:一个发送命令的将军要发送一个命令给其余n-1个将军,使得:

  IC1.所有忠诚的接收命令的将军遵守相同的命令;

  IC2.如果发送命令的将军是忠诚的,那么所有忠诚的接收命令的将军遵守所接收的命令。

  Lamport对拜占庭将军问题的研究表明,当n>3m时,即叛徒的个数m小于将军总数n的1/3时,通过口头同步通信(假设通信是可靠的),可以构造同时满足IC1和IC2的解决方案,即将军们可以达成一致的命令。但如果通信是可认证、防篡改伪造的(如采用PKI认证,消息签名等),则在任意多的叛徒(至少得有两个忠诚将军)的情况下都可以找到解决方案。

  而在异步通信情况下,情况就没有这么乐观。Fischer-Lynch-Paterson定理证明了,只要有一个叛徒存在,拜占庭将军问题就无解。翻译成分布式计算语言,在一个多进程异步系统中,只要有一个进程不可靠,那么就不存在一个协议,此协议能保证有限时间内使所有进程达成一致。

  由此可见,拜占庭将军问题在一个分布式系统中,是一个非常有挑战性的问题。因为分布式系统不能依靠同步通信,否则性能和效率将非常低。因此寻找一种实用的解决拜占庭将军问题的算法一直是分布式计算领域中的一个重要问题。

在这里,我们先给出分布式计算中有关拜占庭缺陷和故障的两个定义:

  定义1:拜占庭缺陷(Byzantine Fault):任何观察者从不同角度看,表现出不同症状的缺陷。

  定义2:拜占庭故障(Byzantine Failure):在需要共识的系统中由于拜占庭缺陷导致丧失系统服务。 

  在分布式系统中,不是所有的缺陷或故障都能称作拜占庭缺陷或故障。像死机、丢消息等缺陷或故障不能算为拜占庭缺陷或故障。拜占庭缺陷或故障是最严重缺陷或故障,拜占庭缺陷有不可预测、任意性的缺陷,例如遭黑客破坏,中木马的服务器就是一个拜占庭服务器。

  在一个有拜占庭缺陷存在的分布式系统中,所有的进程都有一个初始值。在这种情况下,共识问题(Consensus Problem),就是要寻找一个算法和协议,使得该协议满足以下三个属性。

  1)一致性(Agreement):所有的非缺陷进程都必须同意同一个值。

  2)正确性(Validity):如果所有的非缺陷的进程有相同的初始值,那么所有非缺陷的进程所同意的值必须是同一个初始值。

  3)可结束性(Termination):每个非缺陷的进程必须最终确定一个值。

  根据Fischer-Lynch-Paterson的理论,在异步通信的分布式系统中,只要有一个拜占庭缺陷的进程,就不可能找到一个共识算法,可同时满足上述要求的一致性、正确性和可结束性要求。在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来。这些算法各有优势和局限。算法的假设条件有以下几种情况:

  1)故障模型:非拜占庭故障/拜占庭故障。

  2)通信类型:同步/异步。

  3)通信网络连接:节点间直连数。

  4)信息发送者身份:实名/匿名。

  5)通信通道稳定性:通道可靠/不可靠。

  6)消息认证性:认证消息/非认证消息。

 

中本聪的解决方案:

  在出现比特币之前,解决分布式系统一致性问题主要是Lamport提出的Paxos算法或其衍生算法。Paxos类算法仅适用于中心化的分布式系统,这样的系统的没有不诚实的节点(不会发送虚假错误消息,但允许出现网络不通或宕机出现的消息延迟)。

  中本聪在比特币中创造性的引入了“工作量证明(POW : Proof of Work)”来解决这个问题,有兴趣可进一步阅读工作量证明(猛击!)。

  通过工作量证明就增加了发送信息的成本,降低节点发送消息速率,这样就以保证在一个时间只有一个节点(或是很少)在进行广播,同时在广播时会附上自己的签名。

  这个过程就像一位将军A在向其他的将军(B、C、D…)发起一个进攻提议一样,将军B、C、D…看到将军A签过名的进攻提议书,如果是诚实的将军就会立刻同意进攻提议,而不会发起自己新的进攻提议。

  以上就是比特币网络中是单个区块(账本)达成共识的方法(取得一致性)。

  理解了单个区块取得一致性的方法,那么整个区块链(总账本)如果达成一致也好理解。

  我们稍微把将军问题改一下:

  假设攻下一个城堡需要多次的进攻,每次进攻的提议必须基于之前最多次数的胜利进攻下提出的(只有这样敌方已有损失最大,我方进攻胜利的可能性就更大),这样约定之后,将军A在收到进攻提议时,就会检查一下这个提议是不是基于最多的胜利提出的,如果不是(基于最多的胜利)将军A就不会同意这样的提议,如果是的,将军A就会把这次提议记下来。这就是比特币网络最长链选择 (猛击!)。

 经济学分析

  工作量证明其实相当于提高了做叛徒(发布虚假区块)的成本,在工作量证明下,只有第一个完成证明的节点才能广播区块,竞争难度非常大,需要很高的算力,如果不成功其算力就白白的耗费了(算力是需要成本的),如果有这样的算力作为诚实的节点,同样也可以获得很大的收益(这就是矿工所作的工作),这也实际就不会有做叛徒的动机,整个系统也因此而更稳定。

  矿工挖矿获得比特币奖励以及记账所得的交易费用使得矿工更希望维护网络的正常运行,而任何破坏网络的非诚信行为都会损害矿工自身的利益。因此,即使有些比特币矿池具备强大的算力,它们都没有作恶的动机,反而有动力维护比特币的正常运行,因为这和它们的切实利益相关。

 

  注:原始的拜占庭容错系统由于需要展示其理论上的可行性而缺乏实用性。另外,还需要额外的时钟同步机制支持,算法的复杂度也是随节点增加而指数级增加。实用拜占庭容错系统(PBFT)(猛击!)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别(Polynomial),使拜占庭协议在分布式系统中应用成为可能。

 

总结:共识算法的核心就是解决拜占庭将军问题(分布式网络一致性问题)。

  

 REFERENCE

Lamport L,Shostak R,Pease M.The Byzantine generals problem.ACM Trans.on Programming Languages and Systems,1982,4(3):382-401.

Fischer,M.J.,Lynch,N.A.,Paterson,M.:Impossibility of distributed consensus with one faulty process.J.ACM 32(2),374-382(1985).

《区块链技术指南》邹均,张海宁,唐屹,李磊 著

 

【时间仓促,如有错误,欢迎指正! ||   欢迎留下您的评语!  大家一起探讨、学习区块链!】

【转载请注明出处!http://www.cnblogs.com/X-knight/】

 

posted @

2018-06-25 22:15 

勋爵|X-knight 

阅读(9099) 

评论(2) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 勋爵|X-knight

Powered by .NET 8.0 on Kubernetes