LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 共识算法的演变和作用(一)

共识算法的演变和作用(一)

2019-12-18 舒宁 来源:区块链网络

区块链系统不是基于参与者的诚实或信任,他们是不信任的系统。区块链确保网络安全的唯一方法是通过设置规则来强制每个参与者做正确的事情,规则可以包括投资或花钱的时间等等,使参与者甚至无法考虑做恶意的事情,这些规则称为共识算法。

众所周知,区块链是网络参与者之间共享的分布式账本。没有中央机构可以验证交易并确定哪些交易有效,哪些交易无效。那么,我们如何确保网络参与者是诚实的?网络中的每个人如何就他们要更新的账本形成共识呢?

区块链系统不是基于参与者的诚实或信任,他们是不信任的系统。区块链确保网络安全的唯一方法是通过设置规则来强制每个参与者做正确的事情,规则可以包括投资或花钱的时间等等,使参与者甚至无法考虑做恶意的事情,这些规则称为共识算法。目标是为每个人提供激励,使他们最有效地参与网络,这是区块链和不信任系统魔力的一部分。

拜占庭将军问题是一个虚拟问题,说明了个人网络在达成共识方面面临的困难。

BGP如下:

伟大的拜占庭帝国试图征服一个以武力抵抗的城市,拜占庭帝国的将军们围绕着这个城镇,每个人都有自己的军队。因为只有一名将军和他的军队发动进攻,这座城市的防御才会攻不可破。如果他们将被击败,所有其他将领将不会再有机会了,他们需要所有军队一起战斗才能赢得战斗。

将军获胜的唯一方法是同时与所有军队进攻。他们必须进行通信,并且正在通过不可靠的信使进行通信。如果将军发出要攻击的消息,其他将军会接到攻击命令,该消息可能会被拦截,他们可能会要求撤退。将军们的问题是,他们需要就何时发动攻击达成共识,并且需要依靠不信任的信使系统来达成共识。听起来有点熟?共识算法解决了源自BGP的问题。

拜占庭容错

拜占庭式容错(BFT)是指可以容忍属于BGP的故障类别的系统。如果我们将其翻译成故事的背景,那么就会存在一个可以容忍一个或多个将军叛徒的系统,即使收到正确的攻击信息,他们也可能会撤退。

容忍这种错误的共识称为BFT共识系统。即使某些方面未遵循共识规则,它仍然可以按预期工作和执行。

即使在区块链之外,BFT也是最具挑战性的问题之一。在故障非常严重威胁人类生命的安全系统(例如飞机引擎系统或核电厂)中,一直需要BFT。

为什么需要共识算法

区块链技术的概念并不新鲜。在比特币出现之前,我们已经采用了分布式系统,密码学和网络通信的方式,但是将所有内容粘合在一起并使之运行异常出色的“胶水”是共识算法。

中本聪(Satoshi Nakamoto)提出了一些规则,规则强制分布式网络的所有节点以绝对确定的方式就单个真理达成共识。它增加了博弈论的要素,通过提供正确的激励措施和惩罚不诚实的参与者,避免了系统中不道德的参与者增加虚假交易和障碍。

在区块链中没有共识算法的情况下,我们无法同意哪些交易和区块需要添加到区块链中。

矿工是网络的一个节点,负责创建区块并将其添加到区块链中。每个矿工将向区块链添加不同的区块和交易,从而使其成为其他区块链的独立区块链。每个节点将具有不同的区块链,并且其数据库上具有不同的交易。因此,这不是一个单一的事实。

比特币的工作证明

工作量证明(PoW)是第一个区块链共识算法。中本聪(Satoshi Nakamoto)在原始比特币白皮书中提出了这一建议。

在PoW区块链中,矿工是需要在网络中进行工作的。

从Mempool中选择要打包的在区块中的交易(所有交易等待打包在区块中的位置)

用选择的交易创建一个候选区块并将其哈希(对区块中的所有交易应用“单向”加密功能)以获取“ 默克尔根”。

从区块链的最后一个区块中选择“区块头”

花费大量计算能力来尝试对先前的块头和一个称为“ nonce”的随机数进行哈希处理,以获得小于预定义数字(目标)的结果。这意味着矿工每次都需要尝试随机的“ nonce”值,直到发现小于预定目标的结果为止

如果该矿工是网络中第一个找到“ nonce”的矿工,则将其添加到块中并将该块发送给所有同级

网络中的对等方可以快速验证随机数正确。如果正确的话,他们将区块添加到区块链的本地副本中以扩展所选区块链

如果有多个矿工找到随机数并开始在整个网络中传播该区块,则添加链最长的区块是最可信赖的区块,而矿工将选择该区块。

获胜块完成后,整个过程将再次开始

这种共识算法的主要优点是我们知道它可以工作,比特币已经存在了将近十年,并且从来没有出现关于共识算法的问题。

比特币网络一直在遭受攻击,并被证明是可靠的。然而,由于它需要的消耗资源挖矿,它开始被认为是一种传统技术,现在存在其他更“有效”的替代方案。

PoW区块链上存在一些风险,而51%的攻击是需要考虑的最重要的风险之一。51%的意思是,如果一个矿工或一组矿工的算力超过50%(计算能力比其余所有矿工更高),则有可能重新编写区块链,这意味着他们可以操作已在区块链中结算的交易。

用一个例子更好地说明它:

莎拉(Sarah)是比特币区块链的矿工,由于某种原因,她能够获得网络51%的计算能力。现在,她可以将交易“ X”发送到网络。例如,验证该交易并将其添加到区块编号100。在方框100之后,又有两个方框添加到网络,因此我们进入方框102。

同时,莎拉(Sarah)希望将交易“ X”花费双倍,这意味着她希望将相同数量的比特币(BTC)发送到另一个地址。她将需要返回到块99,使用事务“ X”创建另一个块,并将其发送到另一个地址。然后,找到该块的PoW“ nonce”,将其添加到区块链,然后为以下两个块找到PoW“ nonce”,添加它们,然后创建另一个块以扩展块102以拥有最长的链。萨拉(Sarah)需要在其他任何矿工继续进行102区块之前执行此操作,因此她将需要在不到10分钟的时间内开采最少4块区块(平均创建区块时间)。

我们还需要考虑网络越强大,矿工之间的竞争力越强。这提高了PoW算法的难度,这意味着以这种幅度进行攻击更具挑战性。因此,在像比特币这样的网络中,这种攻击极不可能实现。尽管值得一提的是,在较小的系统中,参与者较少且总体算力较低,这种攻击是可能出现的。

大多数共识算法的当前状态是“实验模式”。由于它们是相对较新的协议,因此需要随着时间的推移以及在不同的情况下进行测试。随着区块链技术用例的不断发展,这些协议的未来看起来还是很有希望。

—-

编译者/作者:舒宁

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...