主页 > 下载imtoken钱包20app > 共识算法(一):共识初探

共识算法(一):共识初探

下载imtoken钱包20app 2024-01-26 05:13:56

介绍

在全球化的今天,不同组织之间的信息交换和资产转移仍然是通过中心化的服务进行的,但是在中心化的服务中,存在着信任和信任带来的有效性问题。 如何在非信任环境下解决可靠的信息交换和资产流通是当今全球化面临的重要问题之一,例如:跨行转账、数据交易等。

区块链技术的出现,提供了在不可信环境中进行可信操作的可能。 区块链技术起源于2008年中本聪在《比特币:一种点对点的电子现金系统》[1]中的提出,具有去中心化、不可篡改、可追溯、公开透明等特点。 在区块链系统中,共识算法是区块链的核心,用于保证去中心化环境下各节点数据的一致性。 通过共识算法研究,我们可以探索区块链系统中数据传输、验证和归档的过程,以实现不同节点的数据一致性。

本系列文章将带您领略区块链系统中共识算法的魅力。

01 什么是共识算法?

在传统的中心化网络中,数据的一致性和安全性由中心化服务器保证,数据管理员通过中心化服务器的运行来修改数据。 例如:在银行业务系统中,用户的转账和取现操作都是通过银行客户端(ATM机、柜面或手机银行)修改集中服务器中的账户数据,从而实现转账或取现。商业。 会有双花等风险。 在区块链网络系统中,数据存储在分布式网络中的各个节点中,区块链系统通过共识算法维护各个节点数据的一致性和安全性,从而保证区块链系统的正常运行。

02 共识算法分类

在区块链领域,共识算法根据实现方式的不同可分为难度计算型和投票型; 单一共识和混合共识根据共识算法的数量; 根据共识算法共识的确定性分为概率共识和确定性共识。 本文主要从共识算法确定性的角度分析现有的主流共识算法。

2.1 概率共识

从整个区块链系统来看,所谓概率共识就是记账节点(挖矿节点)通过挖矿产生最新的区块比特币的共识算法是,最新区块中的交易要等到未来N个区块之后才能被篡改。 例如:BTC 交易确认需要在接下来的 6 个区块中。 为了更有效地理解和熟悉概率共识,本节将从PoW中讨论概率共识的相关内容。

比特币的共识算法是_比特币算法_比特币地址算法

PoW 共识算法

PoW(Proof-of-Work)也称为工作量证明算法。 区块链系统中的各个节点通过计算数学题来争夺记账权,从而实现链上交易的打包。 其中,计算数学题的节点称为矿工,争夺记账权的过程称为挖矿。 应用 PoW 算法的经典项目是比特币项目。

求解数学题的过程如下:

sha256(sha256(blockheader + nonce)) <=  target

在比特币系统的挖矿过程中,算力越大,挖矿概率越大,即算力越大,解决数学问题的概率越大。 交易打包后需要经过6个区块的确认才能达到最终确认,即比特币中的交易在达到6个区块确认后被攻击的概率是小概率事件[2][3],并且这里的交易数据可以认为是安全的。

PoS共识算法

在PoW共识算法中,以工作量证明作为挖矿的基础,通过拼算力实现记账权的竞争。 这种挖矿方式浪费了大量的计算资源和电力资源。 为了解决 PoW 中过度浪费资源的问题,弥补这一不足,Sunny King 在 PPCoin 中引入了权益证明(PoS)共识机制[4]。 记账权,从而实现链上交易的打包。 其中,持币时间称为币时(币时=持币量*持币时间)

其PoS共识算法的实现过程如下:

比特币地址算法_比特币的共识算法是_比特币算法

hash(block_header) ≤ target × coinagehash(block_header)

在PoS挖矿过程中比特币的共识算法是,节点的挖矿概率与节点持币量和持币时间呈正相关。 一个节点持币量越大,持币时间越长,出块的概率就越大。

DPoS共识算法

在PoW和PoS共识算法中,分别采用了“基于算力”和“基于权益”的竞争方式。 拥有大算力和大权益是实现记账权快速竞争的基础,而委托权益共识算法(DPoS,Delegated Proof-of-Stake)是一种“基于投票”的竞争方式,实现记账权的快速竞争。簿记权的竞争。 2013 年 8 月,Bitshares [5] 提出了 DPoS 共识算法,利用区块链中的每个节点对候选节点进行投票,区块链系统根据候选节点的得票数来争夺记账权。

2.2 确定性共识

与概率共识相比,确定性共识对应的是记账节点(挖矿节点)通过挖矿产生最新的区块,最新区块中的交易(transaction)是确定的、不可更改的。 为了讨论确定性共识,我们将以BFT(拜占庭容错)为基础,通过改进共识流程和共识节点选择,衍生出一系列共识机制。

PBFT共识算法

PBFT(Practical Byzantine Fault Tolerance)[6]是一种基于状态机复制的算法。 状态机在分布式系统的不同节点上进行副本复制。 每个状态机都保存了一份服务状态,同时也实现了服务的运行。 PBFT 可以容忍拜占庭错误并且在算法上是安全的。

比特币地址算法_比特币算法_比特币的共识算法是

安全性证明:假设系统中有f个故障节点(可以给出错误响应或不响应)和k个诚实节点,当f个节点都没有响应时,则k个诚实节点可以获得最多的结果;

当f个节点响应错误,k个节点中f个节点离线,此时系统还需要k-f个节点接收到最正确的响应,即k-f > f => k > 2f

综上所述,上述系统中的所有节点 R = k + f => R > 2f + f => R > 3f

即系统中最小的节点数为R = 3f + 1。在现有的区块链系统中,Hyperledger Fabric v0.6就采用了这种共识机制。

在PBFT的实现过程中,节点分为排序节点和备份节点,排序节点用于接收客户端请求。 PBFT的排序节点收到客户端请求后,通过三阶段协议完成各节点的数据一致性。 三阶段协议简述如下:

比特币的共识算法是_比特币地址算法_比特币算法

DBFT共识算法

DBFT(Delegated Byzantine Fault Tolerance)[7]是一种改进的拜占庭容错算法,通过投票机制选举共识委员会,旨在提高区块生成速度,减少交易确认周期。 在现有的区块链项目中,NEO采用了这种共识机制。

比特币算法_比特币地址算法_比特币的共识算法是

DBFT将全网节点分为共识节点和普通节点。 共识节点提出新区块并验证区块的一致性,普通节点验证并接收新区块以提高系统性能。

在每一轮共识中,DBFT都会选择一个共识节点作为议长(按地址Hash顺序选出),其他共识节点作为成员。 每产生一个区块,议长首先发起一个区块提案。 一旦超过2/3的节点确认提案,区块提案就成为一个新的区块,这个区块是不可逆的。 共识过程简述如下(假设共识委员会成员人数为n):

比特币的共识算法是_比特币地址算法_比特币算法

Tendermint 共识算法

Tendermint[8] 是一种弱同步 BFT 算法。 在共识过程中,参与协议共识的节点称为验证节点,验证节点轮流提出交易区块并对其进行投票。 每个高度只允许确认一个区块,所以Tendermint不会分叉。

为了保证区块的安全性,除了三分之二拜占庭假设外,Tendermint 还使用了锁定规则。 一旦验证节点参与提交区块,验证节点将被锁定在该区块上。 验证节点必须对该块进行预投票,或者当其锁定的块为无效块时,验证节点必须预提交下一个块以将其解锁。 Cosmos在现有的区块链系统中采用了这种共识,其共识过程简单总结如下:

比特币算法_比特币地址算法_比特币的共识算法是

03 总结

比特币地址算法_比特币的共识算法是_比特币算法

本文从共识算法确定性的角度分析现有的主流共识算法,大致熟悉现有主流共识算法的原理和运行步骤。 各类型共识算法的详细实现过程和安全性分析,请参考后续文章。

附录

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]