区块链共识算法讲解及发展

本文介绍了区块链的主流共识算法,包括Proof of Work (PoW)、Proof of Stake (PoS)、Delegated Proof of Stake (DPoS)、Practical Byzantine Fault Tolerance (PBFT)以及PAXOS和RAFT共识算法。详细阐述了每种算法的工作原理、应用场景以及优缺点,帮助读者理解区块链共识机制的本质和多样性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将介绍

① 主流共识算法,简述算法分类,适用范围,应用场景等
② PoW(Proof of Work) 工作量证明
③ PoS(Proof of Stake) 权益证明
④ DPoS(Delegated Proof of Stake) 委任权益证明
⑤ PBFT(Practical Byzantine Fault Tolerance) 实用拜占庭容错算法
⑥ PAXOS 算法
RAFT算法

前导. 主流共识算法简述

共识机制是特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。(摘自百度百科)

共识算法是实现共识机制的方法,目前常见的有PoW,PoS,DPoS,PBFT,PAXOS, RAFT等,主流共识算法可大致分为三类
1)挑战证明(Proof of Challenge)
2)权益证明(Proof of Stake)
3)协商证明(Proof of Negotiation)

挑战证明(Proof of Challenge)

简单地说,就是给所有参与者一个有挑战性的问题,谁能在最短的时间内找到答案,那么他就是这轮公认的决策者。PoW是一个典型的例子,每个参与者都必须计算一个块的哈希值,这个哈希值需要由N个前导0组成,谁找到了这个哈希值,那新的区块就属于谁。

权益证明(Proof of Stake)

简单地说,就是根据参与者所拥有的某种资产或授予的权利,标志在转盘上,然后开始转转盘,转到这对应位置的那个参与者,就是该轮公认的决策者。现在的系统,有的根据拥有币的数量,有的根据贡献的储存空间,有的根据积分奖赏的额度等等,千奇百怪。虽然披着不同的羊皮,但他们都是狼,本质都是权益证明。现实生活中,民主选举投票领导人就是这种逻辑,但权益证明有一定随机性。

协商证明(Proof of Negotiation)

简单地说,就是所有参与者坐在一起,通过多轮对话,协商一个新的决策者。例如PBFT,PAXOS都是属于这种类型,需要多轮交互协议,需要形式化证明协议的可靠性安全性。但交互的次数太多引入了复杂性,给网络宽带资源带来了很大负担,这个一个缺点。现实生活中的民主协商制就是这种逻辑。

为了上述各种类型效率,聪明的人类引入了代表机制(Delegated),不需要所有的参与者都参与最后的决策,而是先选出一些代表,每个代表代理一部分参与者的行使权力,例如DPoS。现实生活中,广大人民群众选出人民代表,召开人民代表大会就是这种逻辑。

共识算法的应用场景

脱离应用场景谈算法是没意义的,每一种算法都有各自适用的场景,到底选择哪个取决于实际环境的网络和数据。通常PoW和PoS是公有链常用的共识算法,而PBFT和RAFT是联盟链和私有链中常用的共识算法,在可信环境使用PAXOS或RAFT。

PoW算法代表:比特币 & 莱特币 & 以太坊
PoS算法代表:Peercion(点点币) & Nxt(未来币)
DPoS算法代表:Bitshare & EOS
PBFT算法代表:HyperLedger fabric0.6

下文按算法出现的时间和流行热度详细讲解

1. PoW(Proof of Work) 工作量证明

这是一种通过工作量抢夺决策权的方案。谈PoW不得不提比特币,比特币带火了区块链,同时将共识算法推向人们的视野中。此处以比特币的运作原理讲解PoW。

比特币提出一个方程式,用前一个区块的哈希值和一个随机数nonce计算一个新的哈希值,新的哈希值必须满足N个前导0的要求。谁能最先找到这个nonce,谁有拥有下一个区块。新的区块赋予这个新的哈希值,再以此推算下一个满足条件的new nonce,如此循环,我们称为挖矿。


要找到适合的nonce必须经过大量哈希碰撞运算,没有捷径解法,能找到适合的nonce即证明了你已做过大量运算,这就是工作

### 区块链中分布式账本的概念 分布式账本是一种跨网络节点共享、同步和复制的数据库,其中每个参与者都保存一份完整的副本。这种设计使得任何单一实体都无法控制整个账本,从而提高了系统的去中心化程度和安全性[^2]。 在区块链环境中,分布式账本不仅限于简单的交易记录;它还可以用于追踪各种类型的事件或状态变化。例如,在供应链管理中,可以利用分布式账本来监控货物从制造商到消费者的全过程。每一个新的操作都会被添加为新区块,并链接至前一区块,形成一条不断增长的时间线——即所谓的“链”。由于每一笔新加入的信息都需要经过共识机制验证才能正式写入账本,因此确保了所有参与方对于最新版本达成一致意见的同时也防止了恶意篡改行为的发生[^3]。 ### 分布式账本的工作原理 为了实现上述特性,分布式账本依赖几个关键技术: #### 1. 去中心化的架构 与传统集中式的服务器不同的是,这里不存在单点故障的风险。相反,所有的计算机(称为节点)共同维护着同一个分类帐目表。每当有新的事务发生时,这些更新会被广播给其他成员并等待确认过程完成之后再永久存档下来。 #### 2. 加密算法保障隐私性和完整性 通过采用非对称加密方式创建账户体系,用户能够拥有唯一的私钥/公钥组合来进行签名授权以及保护个人信息免受未授权访问的影响。此外,散列函数的应用则有助于保持数据一致性:即使是最微小的内容变动也会引起相应哈希值的巨大改变,这使得试图修改历史记录变得极其困难且容易暴露出来。 #### 3. 共识协议决定有效性的判断标准 当多个竞争性提案同时存在时,如何挑选出最合适的那个?这就需要用到特定规则集来评估候选方案的质量高低。常见的几种方法包括工作量证明(PoW),权益证明 (PoS) 或委托权益证明(DPoS)等。它们各自有着不同的侧重点,比如效率考量或是资源消耗方面的权衡取舍等问题。 ```python def validate_transaction(transaction, ledger_state): """ 验证一笔交易的有效性 参数: transaction : dict - 待验证的新交易详情 ledger_state : list of dicts - 当前已知的状态快照 返回: bool - 是否允许该交易进入下一个阶段处理流程 """ # 检查发送者的余额是否充足 sender_balance = sum([entry['amount'] for entry in ledger_state if entry['recipient'] == transaction['sender']]) receiver_balance = sum([entry['amount'] for entry in ledger_state if entry['sender'] == transaction['receiver']]) net_effect_on_sender = sender_balance - transaction['amount'] return net_effect_on_sender >= 0 and verify_signature(transaction) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值