大家好,今天小编带来g***ibc一文读懂区块链的共识机制的问题,以下是小编对此问题的归纳整理,来看看吧。
g***ibc一文读懂区块链的共识机制
g***ibc:一文读懂区块链的共识机制

本文简单明了地阐述了达成共识的两个主要流程:区块的提议和区块的共识达成。区块的提议主要涉及到PoW和PoS机制,也就是工作量证明和权益证明的机制,用以抵抗女巫攻击,安全地选出可靠的区块提议者。区块的共识达成则涉及到共识算法,主要包括中本聪共识和经典共识。中本聪共识***用最长链规则,经典共识则可实现最终性。每种共识算法都有自己的权衡取舍。本文作者JulianKoh和CherylSewHoy,由“蓝狐笔记”社群的“晓L”翻译。

区块链共识是2017年和2018年最广为讨论的区块链子领域之一。可以看到,很多公司试图从零开始构建新的智能合约平台,并与以太坊竞争,而其中的一个差异化或创新点就在区块链的共识算法方面。试图理解这些算法,并能对它们进行批判性比较,这对很多加密投资者来说,都是一项全职工作,毫无疑问,要掌握它们并不简单。
为揭开这些“共识算法”的神秘面纱,不少人做了很多工作。但是,对于普通人来说,它们太过于技术化。一些概念,例如同步、安全/活性证明、不可能结果,这些有助于人们通局了解。不过,在我看来,对于大多数人来说,完全理解并不特别重要。

本文重点是区块链的共识算法,而没有提及更大的也是超级复杂的分布式系统领域。为了简单易懂,还会放弃一些技术概念。
本文结束时,你应该理解PoW和PoS的区别,了解BFT的意思,最重要的是,当考虑在哪个区块链上构建你的应用时,你应该知道它们的权衡是什么。
什么是共识?为什么很重要?
简单来说,区块链是一种公共数据库,其中用户就什么是正确的达成一致。比特币是记录所有交易的公共数据库,保留了货币系统的完整性。有两个主要问题需要理解:
1.就什么达成共识?
2.如何达成共识?
我们需要有人提议,然后让其他人选择,直到达成某种形式的共识。就区块链的情况,我们需要有人提议区块,然后需要剩余节点接受区块。
一个简单的例子如下:
4位朋友尝试并安排共同做事的时间
4个人尝试并安排共同的时间来做事。每个人提出其可用时间(空白格)。可以看到,有两个共同可用的时间段,下午2点和6点。他们如何达成共识?在他们提出可用时间前,他们同意一个特定规则:每个人必须选择最早的共同可用时间。在这种规则下,这意味着,他们将会在下午2点而不是下午6点见面。由此,他们达成了共识。
按照这种框架,我们将它类比扩展到比特币区块链:
人们就什么达成共识?
人们就区块数据达成共识。区块中包含有效的比特币交易。在比特币中,任何人都可以提议区块,只要他们率先解决一个计算谜题(PoW)。
人们如何达成共识?
人们同意接受最长链上的区块。例如,如果链A的高度为100,而链B的高度为200,如果你收到链A上的区块101和链B上的区块201,你必须接受区块201。有人在更短的链上添加区块,可能是因为他们没有意识到更长的链,但“最长链规则”确保一旦区块在整个网络中传播,每个人最终就相同的事情达成共识。
该框架支持所有共识算法。不同算法可以***用不同的方法来提议区块,也可以使用不同的方式来对区块达成共识。
提议区块
考虑区块提议时,最大的问题是谁来提议区块。如果任何人随时都可以提议区块,会很难达成共识,因为这类似于人们不停地相互交谈。必须以某种方式选出代表,这样剩余的人可以一次看到一个提议。
最幼稚的方式是让协议随机选择一个人来提议新区块。然而,在互联网上,一个人可以通过运行相同程序的一百个实例来伪装成一百个人。因此,我们需要创造某种形式的稀缺性,以抵抗女巫攻击。(蓝狐笔记注:女巫攻击主要是指网络中的少数节点控制多个虚***身份,并利用这些身份控制网络中大量正常节点的攻击方式。)。
因此,这个游戏必须能够抵挡单一黑客操纵很多人的攻击。这正是PoW和PoS给你带来的:一种让计算机受到某些***限制的方式。(蓝狐笔记注:也就是说,通过设立门槛,比如PoW的算力投入和PoS的代币投入,通过竞争性的方式,解决了谁有资格提议区块并由此获得奖励的问题。)
PoW如下:为获得提议区块的权利,你必须率先完成计算密集型的任务。模拟一个虚拟的计算机抛硬币任务,直到它得到连续100次的虚拟硬币的正面。这是计算密集型的,没有人能伪装成一百人,因为这受制于其算力。
然而,通过***用这种“抗女巫攻击”机制,人们已经建立了数千台计算机组成的矿场,以便在算力竞争中胜出,从而获得提议区块的权利。这些服务器矿场消耗巨量电力,因此它们集中于可获得最便宜电力的国家或地区。
那么,当大多数比特币矿工位于中国时,这对于去中心化意味着什么?这种地理上的中心化给系统的长久性构成了真正的威胁,因为这些挖矿公司很容易被监管。
区块链的共识机制
1. 网络上的交易信息如何确认并达成共识??
虽然经常提到共识机制,但是对于共识机制的含义和理解却并清楚。因此需要就共识机制的相关概念原理和实现方法有所理解。?
区块链的交易信息是通过网络广播传输到网络中各个节点的,在整个网络节点中如何对广播的信息进行确认并达成共识 最终写入区块呢?? 如果没有相应的可靠安全的实现机制,那么就难以实现其基本的功能,因此共识机制是整个网络运行下去的一个关键。
共识机制解决了区块链如何在分布式场景下达成一致性的问题。区块链能在众多节点达到一种较为平衡的状态也是因为共识机制。那么共识机制是如何在在去中心化的思想上解决了节点间互相信任的问题呢??
当分布式的思想被提出来时,人们就开始根据FLP定理和CAP定理设计共识算法。 规范的说,理想的分布式系统的一致性应该满足以下三点:
1.可终止性(Termination):一致性的结果可在有限时间内完成。
2.共识性(Consensus):不同节点最终完成决策的结果应该相同。
3.合法性(Validity):决策的结果必须是其他进程提出的提案。
但是在实际的计算机集群中,可能会存在以下问题:
1.节点处理事务的能力不同,网络节点数据的吞吐量有差异
2.节点间通讯的信道可能不安全
3.可能会有作恶节点出现
4.当异步处理能力达到高度一致时,系统的可扩展性就会变差(容不下新节点的加入)。
科学家认为,在分布式场景下达成 完全一致性 是不可能的。但是工程学家可以牺牲一部分代价来换取分布式场景的一致性,上述的两大定理也是这种思想,所以基于区块链设计的各种公式机制都可以看作牺牲那一部分代价来换取多适合的一致性,我的想法是可以在这种思想上进行一个灵活的变换,即在适当的时间空间牺牲一部分代价换取适应于当时场景的一致性,可以实现灵活的区块链系统,即可插拔式的区块链系统。今天就介绍一下我对各种共识机制的看法和分析,分布式系统中有无作恶节点分为拜占庭容错和非拜占庭容错机制。
FLP定理即FLP不可能性,它证明了在分布式情景下,无论任何算法,即使是只有一个进程挂掉,对于其他非失败进程,都存在着无法达成一致的可能。
FLP基于如下几点***设:
仅可修改一次 :? 每个进程初始时都记录一个值(0或1)。进程可以接收消息、改动该值、并发送消息,当进程进入decide state时,其值就不再变化。所有非失败进程都进入decided state时,协议成功结束。这里放宽到有一部分进程进入decided state就算协议成功。
异步通信 :? 与同步通信的最大区别是没有时钟、不能时间同步、不能使用超时、不能探测失败、消息可任意延迟、消息可乱序。
通信健壮: 只要进程非失败,消息虽会被无限延迟,但最终会被送达;并且消息仅会被送达一次(无重复)。
Fail-Stop 模型: 进程失败如同宕机,不再处理任何消息。
失败进程数量 : 最多一个进程失败。
CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论。CAP由Eric Brewer在2000年PODC会议上提出,是Eric Brewer在Inktomi期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(***ailability)、分区容错性(partition-tolerance)的猜想:
数据一致性 (consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency) (又叫原子性 atomic、线性一致性 linearizable consistency)[5]
服务可用性 (***ailability):所有读写请求在一定时间内得到响应,可终止、不会一直等待
分区容错性 (partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务
在某时刻如果满足AP,分隔的节点同时对外服务但不能相互通信,将导致状态不一致,即不能满足C;如果满足CP,网络分区的情况下为达成C,请求只能一直等待,即不满足A;如果要满足CA,在一定时间内要达到节点状态一致,要求不能出现网络分区,则不能满足P。
C、A、P三者最多只能满足其中两个,和FLP定理一样,CAP定理也指示了一个不可达的结果(impossibility result)。
区块链技术中的共识机制是什么?
1.共识机制是什么
在一个去中心化的结构体系中,由于各个参与方的地位是平等的,当出现分歧的时候,如何达成共识就成了问题。
所以,一个设计精妙、实际操作起来简单的共识机制是一个分布式的体系能够顺利自运转下去的关键所在。
简而言之,共识机制就是在一个时间段内对事物的前后顺序达成共识的一种算法,是区块链节点就区块信息达成全网一致共识的机制。
后缀:g***ibc:一文读懂区块链的共识机制