区块链共识机制简述

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】

链客,有问必答!

在这里插入图片描述
共识机制是分布式系统的核心,在P2P系统中,互相不信任的节点通过预设机制最终达到数据的一致性称为共识。共识机制也就是为了达成这种共识所要采用的方法。共识机制的目标:

一致性:所有诚实节点所保存的区块链前缀部分完全相同。

有效性:由诚实节点发布的消息终将被所有其他诚实节点记录到自己的区块链中。

如何评价一个共识机制的优劣:

安全性:能否有效防止二次支付,私自挖矿

扩展性:当系统成员和待确认交易数量增加时,所带来的系统负载和网络通信量的变化,通常以网络吞吐量来衡量

性能效率:每秒可以处理的交易数量

资源消耗:达成共识的过程中,所要消耗的CPU、内存等计算资源

现在主要的共识机制有工作量证明、权益证明、拜占庭一致性协议三种。因为本篇文章的目的是简述共识机制,所以我们并不关注每个机制的具体算法。

工作量证明

工作量证明机制,即节点通过“多的工作量”来换取信任。每个节点在提出某个阶段的待定区块之前,必须完成达到指定工作量的工作;不仅如此,如果某个节点收到了多个待定区块,那么哪个区块的链更长,它就验证哪个区块,因为更长的链意味着链所包含的工作量更多。大家可能会有一个问题,为什么我们要相信工作量多的人呢?还是因为这种机制的特性之一:伪随机性。它保证某个节点优先完成工作量证明的概率只取决于它占有的计算资源(CPU、内存等)占全世界所有节点的计算资源总和的比例。保证了相对的公平性(通俗上说,就是拼人数,好人多就行。拿现实世界打比方,如果你想搞破坏,必须要收买/征服全世界一半以上人口,或者自己一个人比全世界其他所有人加一起都有钱)。不足:

严重的效率问题

过多强算力节点联合,可能导致安全问题(目前计算资源逐步趋向中心化,与区块链初衷相悖)

资源消耗过大

权益证明

由于工作量证明的过大资源消耗与资源浪费问题,人们越来越关注权益证明机制。假设网络同步性较高,系统以轮为单位运行。在每一轮的开始,节点验证自己是否可通过权益证明被选为代表,只有代表可以提出新的区块。代表在收到的最长的有效区块链后提出新的待定区块,并将自己生成的新的区块链广播出去,等待确认。下一轮开始时,重新选取代表,对上一轮的结果进行确认。诚实的代表会在最长的有效区块链后面继续工作。如此循环,共同维护区块链。不足:

如果网络同步性较差,则系统很可能形成分叉,破坏一致性。

代表节点操控一切

拜占庭一致性协议

这一机制的主要目的是,解决如何在有错误节点的网络中使所有正确节点对某个输入值达成一致。该机制资源消耗少,效率高,一致性强(不易产生分叉)。以实用拜占庭容错协议为例,协议要求在有3f+1 个节点的分布式系统中, 失效节点数量不超过f个。实用拜占庭容错协议的每一轮包括3个阶段: 预准备阶段、准备阶段和确认阶段。在预准备阶段,由主节点发布包含待验证记录的预准备消息。接收到预准备消息后,每一个节点进人准备阶段。在准备阶段,主节点向所有节点发送包含待验证记录的准备消息,每一个节点验证其正确性,将正确记录保存下来并发送给其他节点。直到某一个节点接收到2f个不冋节点发送的与预准备阶段接收的记录一致的正确记录,则该节点向其他节点广播确认消息,系统进人确认阶段。在确认阶段,直到每个诚实节点接收到2f+1个确认消息,协议终止,各节点对该记录达成一致。不足:

安全性差(容错率仅为1/3,其他两种均为1/2)

扩展性差(该协议的效率取决于节点数量,不适用于节点数量过大的区块链系统)

对主节点有依赖

### 区块链技术简介及基本原理 区块链是一种分布式账本技术,其核心特点包括去中心化、不可篡改和透明性等特性[^1]。作为一种新兴技术,它通过将数据以区块的形式存储,并通过加密算法链接成链条,从而确保数据的安全性和完整性。 #### 一、区块链的基本概念 区块链本质上是一种分布式账本技术(DLT),为数据的存储和管理提供了一个安全、去中心化的解决方案[^3]。每个区块包含一组交易记录,并通过密码学方法与前一个区块链接起来,形成一条不断增长的链条。这种结构使得任何对已有数据的修改都会被网络中的其他节点检测到,从而保证了数据的不可篡改性[^4]。 #### 二、区块链的核心组件 - **分布式账本**:所有参与者共同维护一份账本副本,每个节点都保存完整的交易历史记录[^4]。 - **共识机制**:为了确保分布式系统中的一致性,区块链采用了多种共识算法,如工作量证明(Proof of Work, PoW)、权益证明(Proof of Stake, PoS)等[^2]。 - **加密技术**:通过哈希函数和非对称加密等技术保障数据的安全性和隐私性[^1]。 #### 三、区块链的工作原理 1. **交易发起**:用户创建一笔交易请求,该请求会被广播至整个区块链网络。 2. **验证与打包**:网络中的节点根据设定的规则验证交易的有效性,并将多个交易打包成一个新的区块[^2]。 3. **共识达成**:通过特定的共识机制,各节点就新区块的内容达成一致意见。 4. **区块链接**:一旦新区块被确认,它将被添加到现有的区块链上,并同步给所有节点[^3]。 ```python # 示例代码:模拟简单的区块链结构 import hashlib import time class Block: def __init__(self, index, previous_hash, timestamp, data, hash): self.index = index self.previous_hash = previous_hash self.timestamp = timestamp self.data = data self.hash = hash def calculate_hash(index, previous_hash, timestamp, data): value = str(index) + str(previous_hash) + str(timestamp) + str(data) return hashlib.sha256(value.encode('utf-8')).hexdigest() def create_genesis_block(): return Block(0, "0", int(time.time()), "Genesis Block", calculate_hash(0, "0", int(time.time()), "Genesis Block")) def create_new_block(last_block, data): index = last_block.index + 1 timestamp = int(time.time()) hash = calculate_hash(index, last_block.hash, timestamp, data) return Block(index, last_block.hash, timestamp, data, hash) # 创建创世区块 genesis_block = create_genesis_block() # 创建新区块 block1 = create_new_block(genesis_block, "Transaction Data") ``` #### 四、区块链的应用领域 区块链技术因其独特的优势,在多个领域展现出广泛的应用前景,例如金融领域的跨境支付、供应链管理中的产品溯源以及数字身份验证等场景[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值