比特币解决拜占庭将军问题@刘教链
丢失的拜占庭将军问题之谜 众所周知,比特币作为一个开放的、分布式的点对点网络,所需要克服的一个非常关键的问题就是拜占庭将军问题,也就是关于分布式共识的问题。 共识机制,也是区块链领域一个非常热门的创新点。各种项目层出不穷,热衷于向大家推销的...
区块链共识是让一个小组中的所有流程根据每个流程的投票达成一致的具体价值的任务。
所有进程必须达成相同的价值,并且必须是由至少一个进程提交的值(即,一致性算法不能仅发明一个值)。
在最基本的情况下,值可以是二进制(0或1),这将允许所有进程使用它来做出是否做某事的决定。
通过选举算法,我们的目标是挑选一名领导。
对于分布式事务,我们需要一致同意是否提交。
这些是共识的形式。用一致的算法,我们需要得到一致的一致同意。
这是一个听起来很简单的问题,但在分布式系统中发现了令人惊讶的大量使用。
任何依靠多个进程保持共同状态的算法都依赖于解决共识问题,达成共识的地方的一些例子是:
进程之间的共识很容易在一个完美的世界中实现。
例如,当我们较早地研究了分布式互斥算法时,我们访问了一个共识的形式,每个人都可以就谁可以访问资源达成同样的决定。
最简单的实施是指定负责确定结果的全系统协调员。
两阶段提交协议也是一个系统的例子,我们假设协调员和同事是活着的并且沟通或者我们可以等待他们无限期地重启,如果有必要的话。这些算法的结果是,所有进程必须能够正常运行,并且能够相互通信。
故障使之变得困难,故障包括进程故障和通信故障。区块链扩容方式
既然接受者有一个提议的价值,那么我们就需要一种方法来了解一个提案已被大多数接受者所接受。
该学习者负责获取这些信息。每个接受者在接受提案后,都会将其转发给所有的学习者。这样做的问题是潜在的大量重复消息:(接受者数量)*(学习者数量)。如果需要的话,这可以被优化。可以选出一个或多个 “杰出的学习者”。接受者将与他们交流,他们反过来会通知其他学习者。
我们不可能完全同意完全异步的错误过程,这意味着不要假定进程或网络通信的速度。
核心问题是没有办法检查一个进程是否失败,或者这个进程是否还活着,但是与进程的通信速度是难以忍受的。
菲舍尔,林奇,帕特森证明了这种不可能性。
另外,在不可靠的沟通的情况下,由于我们可能永远无法与流程进行沟通,所以达成共识是不可能实现的。
我们将研究两个容错方案,这些方案说明了强加给我们的一些基本约束。两军问题尤其相关。
我们来看一下好处理器的情况,但通信线路有问题。这就是所谓的两军问题,可以概括如下:
A,B 两军师协同攻击敌军C, A和B在物理上是分开的,并使用信使进行通信。 A向B发送一个消息“ 让我们在黎明发起攻击 ”。 B收到消息并同意,用“ OK ”消息发送回信使者。信使到达A,但是A意识到B不知道信使是否安全地返回了。如果B不相信A得到了承认,那么就不会相信这次袭击应该发生,因为军队不会自己胜利。 A可以选择用“ A received the OK ” 的消息将信使发送回B,但A将不确定B是否接收到该消息。二军的问题表明,即使与没有缺陷的处理器,两个进程之间可证明协议是不是 可以用不可靠的通信通道。
Paxos是一种流行的容错分布式共识算法,它允许将全球一致的(全部)订单分配给客户端消息(操作)。
分布式一致性算法的目标是允许一组计算机都同意系统中提出的一个节点(而不是一个随机值)的单个值。
在分布式系统中这样做的挑战是消息可能丢失或者机器cn失败。Paxos保证只要参与算法的大多数系统可用,一组机器将选择一个建议值。
共识机制在以前一般被称为证明方式(Proof),因为比特币采用工作量证明(即Proof-Of-Work,简写为POW)。
POW系统构建区块的过程一般称为“挖矿”(mine)
随着大家对分布式账本一致性问题的不断探索,很多方法被提出来,尤其近期有很多区块链项目回归了对传统BFT算法的改进,在思路上已经跳出了“证明”的语义,因此进一步高度概括为共识机制。
构建分布式系统的一个重要动机是实现高可扩展性和高可用性。
高可用性可以通过冗余实现:复制功能组件将取代那些停止运作的组件。为了实现多个活动组件的冗余,我们希望所有正在运行的副本执行相同的操作:在给定相同的输入的情况下生成相同的输出。
系统的状态机方法设计每个副本(系统的每个组件)作为确定性状态机。对于给定系统某个特定状态的一些给定输入,将产生确定性输出并转换到新状态。我们将每个副本(组件)称为一个进程。为了正确执行和高可用性,每个进程看到相同的输入是非常重要的。要做到这一点,我们依靠共识算法。这确保多个进程将执行相同的操作,因为它们将被提供相同的一组输入。
输入的例子可以是来自客户端的从文件的特定位置读取数据或将数据写入文件的特定位置的请求。我们希望复制的文件包含完全相同的数据并产生相同的结果。为了实现这一点,我们需要在所有进程中就客户端请求达成一致,并且请求必须完全排序:每个服务器必须以与其他人完全相同的顺序看到文件读/写请求。总的排序部分最容易通过选择一个进程来服务序列号(尽管还有其他更复杂但更分散的实现。
该算法的一个问题是,对于两个提议者来说可能会继续发出数量增加的提议序列,其中没有一个被选择。来自一个提议者的接受消息可能被接受者忽略,因为已经从另一个提议者处理了更高编号的准备消息。为了确保算法的进展,选择一个“杰出提议者”作为唯一的尝试发布提议。
在操作中,客户向领导者发送命令,这是一个当选的“杰出提议者”。这个提议者对命令进行排序(分配一个值)并运行Paxos算法,以确保选择了一致的序列号。由于失败或其他服务器可能会有冲突,因此认为它是领导者,使用Paxos可以确保只有一个命令(提案)被赋值。
进程通常依靠锁来确保对资源的独占访问。
锁的难点在于它们不具有容错性。如果持有锁的进程死亡或忘记释放锁,则除非有附加软件来检测这些动作并打破锁定,否则锁就会存在。
出于这个原因,为锁添加到期时间更安全。这把 锁变成租约。
我们在两阶段和三阶段提交协议中看到了这种方法的一个例子。两阶段提交协议使用锁定,而三阶段提交使用租用; 如果租约到期,交易将被中止。我们也看到了这种方法,保持对远程对象的引用。如果租约到期,服务器认为该对象未被引用并且适合于删除。客户负责定期更新租约,只要它需要这个对象。
租赁方法的缺点是在租约到期之前资源不可用。现在我们有一个权衡:失败后可能会有很长一段时间的租赁,或者需要经常更新的短租赁。
在具有复制组件的容错系统中,应该通过运行共识算法来授予资源租约。
从Paxos的角度来看,很明显,虽然没有大量的消息传递发生,但涉及到的玩家数量很多,因此在使用该算法时存在一定的效率成本。折中方法是使用一致性算法作为选举算法来选择协调器。
该协调员被授予大量资源或系统状态的租约。现在,协调员负责为全部或部分系统状态分配租约。
当协调员的主要租约到期时,必须再次运行一致的算法来授予新的租约,并有可能选出一个新的协调员,但是不必为每个客户端都运行,请求;
这是由协调员简单地处理。
丢失的拜占庭将军问题之谜 众所周知,比特币作为一个开放的、分布式的点对点网络,所需要克服的一个非常关键的问题就是拜占庭将军问题,也就是关于分布式共识的问题。 共识机制,也是区块链领域一个非常热门的创新点。各种项目层出不穷,热衷于向大家推销的...
原文标题:观点 | 为什么我不喜欢权益证明( PoS ) 密码学货币挖矿过程中,使用权益证明(PoS)机制能够大大降低能源消耗,但这么做有什么代价呢?代价是 —— 要在 PoS 机制中达成共识,得依靠庞大的数据中心,而非人们日常使用的设备。...
今天科普一下共识算法,比如井通的共识算法叫做RBFT,趣链的也叫做RBFT,你就以为是一样的,其实你被骗了,哈哈哈。 RBFT算法 先说一下,啥叫做BFT,全名就是拜占庭容错Byzantine Fault Tolerance,这个就是人家给...
原文标题:一文说清“链上”和“链下” 什么是“上链”?什么数据和逻辑应该“上链”?文件能不能上链?链上能不能批量查数据?“链下”又是什么? “链上”、“链下”诸多问题,一文说清。 什么是“链上”和“链下” 区块“链”的链,包含“数据链”和“...
Polkadot 区块链将实施提名权益证明(NPoS)机制,这是一种相对较新的方案,用于选择参与共识协议的验证节点。 在这篇文章中,我们会对 NPoS 做一个介绍,并对 Web3 基金会的研究做一个回顾。我们还解释了验证节点被选中的特殊方式...
引言: 在上周美国旧金山举行的 Blockchain Week 上,康奈尔教授埃米·冈·瑟勒(Emin Gun Sirer)对其领导的BloXroute及Avalanche项目进行宣讲,BloXroute是一个Layer0的底层协议,致力于...
最近很多朋友问FileStorm是采用的什么共识机制,这里我写个文章解释一下。 IPFS协议 区块链的一个核心价值就是建立了一套信任机制,让不同的个体和团体能把计算资源共享,将计算能力大大提升。同理,区块链也可以用来实现数据存储的共享,提升...
最近蓝狐笔记关注到OFGP的跨链解决方案,它是通用的去中心化的网关系统,它采用了联盟链的方式来推动跨链价值流通,就目前阶段,落地性较好,也是蓝狐笔记期待能快速落地的一个跨链方案,值得关注。 OFGP是开放联盟网关协议,英文称之为Open f...
日前,Qtum量子链针对区块链可扩展性问题以及交易处理效率低下的问题,提出了名为“SCAR”的区块链扩容共识算法,能够进一步降低区块链底层网络的要求,该算法已公布便引起海外近万名区块链开发者的关注以及转发。 据悉,SCAR可以找到用户体验与...
PoW真的是“浪费”的共识机制吗?本文作者是BM,可能很多人都会惊讶,毕竟他一直对DPoS青睐有加,本文中他认为特定的工作量证明有价值,对生态发展有益,尤其是通过稀释短期投机者来补贴长期投资者,可以让网络更安全。 来源:蓝狐笔记 ID:la...
人们常说,区块链解决了信任问题,那么,到底是什么意思?怎么解决的?换句话说,区块链的信任从哪而来? 首先是信任从数学和密码学而来,人类相信科学。 数学和密码学 完全随机的随机数生成器,保证了每次都会生成真正不同的随机数。这样,每次使用数字钱...
我必须强调“这是我所理解的”,因为现在每个人都在讲区块链思维,每个人头脑中都有自己理解的区块链。我会用几个典型的问题来引入,为什么说互联网是区块链的镜像,它就像互联网的平行世界。 区块链重构信用体系 区块链的信用和支付宝传统信用有区别。传统...
委托股权证明(DPoS)——它是PoS的一种变体,以限制网络上验证者的数量为代价,提供高级别的可扩展性。 在本文中,我们将介绍DPoS的工作机制、优势、权衡,以及如何减轻这些权衡以实现更高级别的可扩展性,同时避免审查和双重支出的风险。 Dp...
POW挖矿可以认为就是所有需要买矿机挖矿的、用显卡挖矿的币种,而不用挖矿的币种就是POS。 POS挖矿的方式跟我们买矿机挖矿的这个币种不一样,POS通过把币锁在钱包里,通过钱包来挖矿,这是不消耗电能的,不需要购买专业的挖矿设备的。其实在过去...
以下这篇关于 EOS 白皮书内容变动的文档,本来是 EosLaoMao 的运营 赵余 写出来作为内部分享的,但我建议他将这篇公开,因为,就算节点和节点之间有竞争关系,但社区之间,更加重要的是合作关系,所以,这篇提纲契领的对比文档,贡献给大家...
最近,随着区块链技术在各大媒体上大肆报道,人们对区块链的态度分为两级。 一种看法是百分百的拥护和信奉,将“去中心化”时时刻刻挂在嘴边,好像只要去了中心化,整个地球就和平了,人类就超脱升华了。 另一种看法则来自“古典”的技术派,认为区块链就是...
系统采用什么样的共识方式 区块链系统的共识方式还是比较重要的,它会决定Token生产的成本。 共识会影响区块生成的速度,如果是比特币的POW算法的话需要十分钟,如果用POS或者其他的话就会很快。 区块链能够支撑起来的处理能力 简单而言就是每...
在大型的分布式系统中,经常会涉及到状态的改变,这里的状态变化可以分很多种,最极端的情况是,任何状态之间都可以互相切换。 这种状态之间的切换,转变,更加官方一点的称为叫状态机。这个词可能很多人会感到比较陌生,英文就是State Machine...
两军问题 我们来看一下好处理器的情况,但通信线路有问题。这就是所谓的两军问题,可以概括如下: A,B 两军师协同攻击敌军C, A和B在物理上是分开的,并使用信使进行通信。 A向B发送一个消息“ 让我们在黎明发起攻击 ”。 B收到消息并同意,...
Paxos是一种流行的容错分布式共识算法,它允许将全球一致的(全部)订单分配给客户端消息(操作)。 这里概括的大部分内容都是来自Lamport的Paxos Made Simple,但我试图大幅简化它,请参阅该文件的更多细节和明确的解释。 分...
共识机制在以前一般被称为证明方式(Proof),因为比特币采用工作量证明(即Proof-Of-Work,简写为POW)。 POW系统构建区块的过程一般称为“挖矿”(mine) 随着大家对分布式账本一致性问题的不断探索,很多方法被提出来,尤其...
备案号:黑ICP备17001154号-2