拜占庭将军问题
含义
拜占庭将军问题(Byzantine failures),又称两军问题,1982年在莱斯利·兰波特研究分布式对等网络通信容错问题的论文中提出。在分布式系统的通讯过程中,可能会出现一些局部问题导致计算机发送错误信息,破坏系统一致性。因此,拜占庭将军问题本质上是关于点对点通信中的共识问题。
起源
拜占庭将军问题起源于中世纪时期,由于拜占庭国土辽阔,军队之间通信只能依靠信差传递上层的作战信息。如果有叛徒故意错传上层领导作战信息,会导致作战方案不一致,从而出现“拜占庭将军问题”。为解决这个问题,出现了两种解决方案:一是以口头协议的方式互相派信差传递消息,采用少数服从多数的决策方式达成共识,但如果存在叛徒很难分辨;二是以书面协议的方式派信差传递带有专属签章的书面信息,每个军队都要附议,但传递速度过慢,签章可能丢失。由于两种方案都只能解决一部分问题,而且达成共识所需要花费的时间和资源过大,所以都不受用。
互联网中的拜占庭将军问题
互联网中的拜占庭将军问题是指在信道传输的过程中,部分节点可能会由于工作量过大或遭到某些恶意攻击而导致难以实现信息同步。1999年,Miguel Castro和Barbara Liskov提出了拜占庭容错算法,认为:如果系统中有 2/3 的节点是正常工作的,可以保证系统的一致性和正确性。后来中本聪提出比特币的工作量证明机制和非对称加密算法,又为拜占庭将军问题提供了一种新的解决方法。
拜占庭容错算法
假设有n个将军,t个叛徒。当 n=3,t=1,此时A、B、C三人中有一人是叛徒。若A发出【进攻】命令,但叛徒B告诉C【撤退】,这时候C就无法做出判断;若叛徒B向A发出【进攻】命令,向C发出【撤退】命令,此时A、C就无法保持一致,因此当叛徒数大于或等于1/3时,拜占庭问题无法解决。
同理,假设网络节点总数为N,恶意节点数为T,只有当 Ngt;=3T+1,即网络中的正常节点数至少有(2/3)N时,问题才能被解决,从而保证信息的一致性。在网络通信可靠的情况下,拜占庭容错算法可以在一定程度上解决节点故障问题,使系统达成共识。
工作量证明(PoW)机制
假设将军A首先发出【进攻】命令并附上自己的签章,其他将军接收后,如果也打算进攻,就会在将军A的命令后面跟上【进攻】命令以及自己的签章。如果A发出【进攻】命令后却没执行,其他将军就可判断A是叛徒,并借此来分辨信息正误。
同理,多个参与节点会通过一系列工作得出一个结果,第一个得出结果的节点会进行全网广播。如果该结果正确,则其他节点会把结果添加到自己的账本中,为争取到下一笔交易的记账权做好计算准备。
黑客必须拥有超过51%的算力才能够破坏网络安全或发布虚假区块,这种做法的花费远大于收益。因此,使用该机制能够降低虚假信息出现的可能性,使系统能够更快达成共识。
非对称加密算法
非对称加密算法的加密和解密需要两个不同的秘钥——公钥和私钥,两者一般成对出现。如果A想给B发消息,那么A需用B公开的公钥对信息加密,B则需用自己的私钥对信息解密。如果B想表明自己的身份,可以私钥签名写一段“签名文本”并进行广播,其他人可以根据B的公钥来验证他的身份。
由于身份和签名是不可伪造的,非对称加密算法保证了传输过程的私密性和签名不完全可信问题。
-
什么是侧链?比特币区块是一直在运行且不可篡改的,一旦出错就会涉及到大量资金,另外比特币区块自身机制存在问题需要不断改进,侧链是目前诸多问题的解决方案中的一种。 2013 年 12 月,侧链这个概念在比特币社区被提出,侧链协议则是一种可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的协议。
-
什么是联邦拜占庭协议?联邦拜占庭协议的主要特性是去中心化和任意行为容错,通过分布式的方法,达到法定人数或者节点足够的群体能达成共识,每一个节点不需要依赖相同的参与者就能决定信任的对象来完成共识。 拜占庭协议采用的方法是确保可以通过分布式的方法达成共识,即使出现了拜占庭式的失败也不会影响。拜占庭失败指的则是分布式系统中算法执行过程中的任意一个错误,也包括非理性的行为。
-
什么是雷电网络?雷电网络是一种以太坊链下扩容解决方案,它使得使用以太坊技术的加密货币能够即时和低成本交易。交易双方只要在链上存在交易信道,就能在链下根据被锁定的余额进行 高频、双向的即时确认交易,将这样多个通道形成的支付路径构成雷电网络。 以太坊提高交易处理能力的方式主要有两个,一个是分片技术(shard),另一个就是状态通道技术(state channels)。
-
什么是侧链协议?侧链协议是一种实现双向锚定(Two-wayPeg)的协议,通过侧链协议实现资产在主链和其它链之间互相转换,或是以独立的、隔离系统的形式,降低核心区块链上发生交易的次数。 侧链协议本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。
-
什么是分布式存储?传统上的分布式存储本质上是一个中心化的系统,是将数据去中心化存储在多台独立的设备上,采用可扩展的系统结构、利用多台存储服务器分担存储负荷、利用位置服务器定位存储信息。而基于P2P 网络的分布式存储是区块链的核心技术,是将数据存储于区块上并通过开放节点的存储空间建立的一种分布式数据库,解决传统分布式存储的问题。
-
什么是改进型拜占庭容错?PBET 共识机制是少数服从多数,根据信息在分布式网络中节点间互相交换后各节点列出所有得到的信息,一个节点代表一票,选择大多数的结果作为解决办法。PBET 将容错量控制在全部节点数的1/3,即如只要有超过2/3 的正常节点,整个系统便可正常运作。
-
什么是竞争记账?竞争记账是比特币系统的记账方式,它解决了如何在去中心化的记账系统中,保证比特币账本一致性的问题。比特币系统中没有中心化的记账机构,每一个节点都有记账权,如何保证账本一致性是一个重要的问题。 在比特币网络中,全网矿工共同参与算力竞争,算力高的矿工算力更强,更容易获得记账权。成功抢到记账权的矿工负责记账,并将账本信息同步给整个网络。作为回报,矿工将获得系统新生成的比特币奖励。
-
什么是双花攻击?双花攻击是指单个或者多个单位/组织能控制全网51%的算力,从而改变区块链中区块的交易次序的攻击问题。 双花攻击实现原理: 比特币等区块链通过分布式账本实现去中心化,具有公信力和安全性。区块链中的事物需要网络中的大部分节点都认同后,才会被记录下来。矿工节点们也会主动验证其他节点是否遵循区块链协议,确保每笔交易诚实可信。
-
什么是工作量证明?共识算法解决的是区块链的信任问题,即通过特定的算法去证明某一节点拥有记账权,从而使得区块网络中的各个节点达成共识。共识算法规定了挖矿的规则。 区块链的去中心化意味着区块网络中每个节点拥有相同的权力,同时区块网络中的信息都是公开透明的。想要确保每个节点主动地维护区块信息,保证链上信息的安全和不可篡改,就需要一套机制来实现。
-
什么是共识算法?共识算法解决的是区块链的信任问题,即通过特定的算法去证明某一节点拥有记账权,从而使得区块网络中的各个节点达成共识。共识算法规定了挖矿的规则。 区块链的去中心化意味着区块网络中每个节点拥有相同的权力,同时区块网络中的信息都是公开透明的。想要确保每个节点主动地维护区块信息,保证链上信息的安全和不可篡改,就需要一套机制来实现。
- 热门词条
-
- 什么是永续合约结算货币? 指在永续合约中的用来结算盈亏的币种,如Gate.io永续合约BTC结算合约中的EOS/USD交易对,BTC就为交易中的结算货币。
- 什么是经典力学? 经典力学的基本定律是牛顿运动定律或与牛顿定律有关且等价的其他力学原理,它是20世纪以前的力学,有两个基本假定: 其一是假定时间和空间是绝对的,长度和时间区间的测量与观测者的运动无关,物质间相互作用的传递是瞬时到达的; 其二是一切可观测的物理量在原则上可以无限精确地加以测定。20世纪以来,由于物理学的发展,在微观(量子尺度)、高速(接近光速)等领域,经典力学的局限性暴露出来。
- 什么是成交量? 成交量是指在某一时段内具体的交易数。它可以在分时图中绘制,包括日线图、周线图、月线图甚至是5分钟、30分钟、60分钟图中绘制。市场成交量的变化反映了资金进出市场的情况,成交量是判断市场走势的重要指标,但在国外成熟市场,成交量主要是用于印证市场走势。一般情况下,成交量大且价格上涨的股票,趋势向好。成交量持续低迷时,一般出现在熊市或股票整理阶段,市场交易不活跃。
- 什么是多链钱包? 指的是支持多条公链(主链)上的数字货币及其代币的钱包。例如,一个钱包同时支持比特币、以太坊、EOS和其他公链中的两种或以上数字资产存储,那么这种钱包就是多链钱包。
- 什么是有向无环图? 指没有回路的有向图。若一个有向图没有办法从某个顶点出发经过几条边再回到这个点,那就可以认为这是一幅有向无环图。
- 什么是远期合约? 远期合约是交易双方约定在未来的某一确定时间,以确定的价格买卖一定数量的某种金融资产的合约。合约规定交易的标的物、有效期和交割时的执行价格等项内容,是一种保值工具。是必须履行的协议。远期合约主要有远期利率协议、远期外汇合约、远期股票合约。远期合约是现金交易,买方和卖方达成协议在未来的某一特定时期交割一定质量和数量的商品。价格可以预先确定或在交割时确定。
- 什么是白皮书? 是让投资人了解一个币种项目的重要渠道,类似一份自我介绍。白皮书包含了某个加密货币的诞生宗旨、技术背景、团队构成、持币比例等相关内容。
- 什么是楔入式侧链技术? 楔入式侧链,是一条资产可以从其他链导入并返还的侧链;即,一条支持双向楔入资产的侧链。 楔入式侧链的一个主要目标是在比特币系统模之上最小化附加的信任。难点是币在侧链间的安全转移:接收链必须能得知发送链的币已被正确锁定。
- 什么是虚拟地址? 虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,与实地址模式下的分段地址类似,虚拟地址也可以写为段:偏移量的形式,这里的段是指段选择器。
- 什么是撤单? 就是撤回未成交的委托单、订单等合同性约定。 挂单的定义就是指,当证券商接受投资者卖出股票的委托后,就要按照投资者的要求去卖出该股票,因此这部分股票当天就必须被锁定,即使不能成交,也只有等到第二天该合同自动作废以后,这部分股票才能解冻出来。











