区块链基础之共识机制

什么是共识?初学者区块链指南 在区块链中,共识是指网络参与者就区块链的状态达成一致的过程。这包括验证交易、决定交易顺序,以及确认新区块的有效性。 阅读详情

1.1共识机制

1.1.1核心定义

区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题

1.1.2共识机制分类

共识机制分类

1.1.3 共识算法

1.1.3.1 POW(工作量证明)

代表项目:BTC

由于不同的节点接受数据有所区别,为了保证数据一致性,每个区块数据只能由一个节点进行记录。BTC通过“工作量证明”(Proof of Work,PoW)来确认记账节点。每个节点如果想生成一个新的区块并写入区块链,必须解出比特币网络出的PoW问题。其关键的要素是工作量证明函数、区块信息及难度值。工作量证明函数是这道题的计算方式,区块决定了这道题的输入数据,难度值决定了这道题所需要的计算量。可以简单理解成就是将不同的nonce值作为输入,尝试进行SHA256哈希运算,找出满足给定数量前导0的哈希值的过程。而要求的前导0的个数越多,代表难度越大。

比特币节点求解工作量证明问题的步骤大致归纳如下:

  1. 生成铸币交易,并与其他所有准备打包进区块的交易组成交易列表,通过Merkle树算法生成Merkle根哈希;
  2. 把Merkle根哈希及其他相关字段组装成区块头,将区块头的80字节数据作为工作量证明的输入;
  3. 不停地变更区块头中的随机数,即nonce的数值,并对每次变更后的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。
1.1.3.2 POS(股权证明)

代表项目:目前以太坊的共识机制正在朝POS方向迭代

由于PoW 方式需要消耗大量的算力,使得大家陷入算力竞争中,导致算力集中于头部矿场存在安全性风险,同时挖矿的过程也没有实际价值,因此出现了POS机制。

目前PoS机制仍然有着问题需要解决,仍然处于发展之中。目前比较常见的是第一种Peercoin所采用的方式。

以Peercoin(点点币)为代表的PoW+PoS混合共识
其所采用的股权证明PoS模式下,有一个名词叫币龄,每个币每天产生1币龄,在hash计算中使得难度与交易输入的币龄成反比。同时在产出区块后清空币龄。但是仍然需要参与区块生产的节点进行一定量的哈希值计算,即以类似工作量的方式生产区块,只不过各节点通过计算寻找出合法区块的概率与节点持有的权益相关,即根据权益选择生产者,并且采用基于权益的激励方式。只是一定程度上解决了POW机制带来的能源大量消耗浪费的问题。

以以太坊Casper为代表的新型PoS共识

  1. 验证者押下一定比例的他们拥有的以太币作为保证金。
  2. 然后,开始验证每一个区块高度上的每一个候选块(由缴纳了保证金的验证人提交的块)。也就是说,当他们发现一个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证它。
  3. 通过多位验证人的下注,对于每个高度最终会选出唯一一个胜出块。
  4. 如果该区块被加到链上,然后验证者们将得到一个跟他们的赌注成比例的奖励。
  5. 但是,如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事(如多次下注,反复下注),他们将立即遭到惩罚。

1.1.3.3 DPOS(委托权益证明)

代表项目:EOS

对于PoS机制的加密货币,每个节点都可以创建区块。DPoS是由被社区选举的可信帐户(超级账户)来创建区块。DPoS机制类似于股份制公司,普通股民进不了董事会,要投票选举代表(受托人)代他们做决策。

1.1.3.4 PBFT(实用拜占庭容错算法)

PBFT的设计思想在很多共识机制中都有借鉴,同时也被很多联盟链采用。

支持容错故障节点之外,还支持容错作恶节点。假设集群节点数为 N,有问题的节点为 f。pbft 算法的最大容错节点数量是(n-1)/3。有问题的节点中,可以既是故障节点,也可以是作恶节点,或者只是故障节点或者只是作恶节点。

假设故障节点和作恶节点都是不同的节点。那么就会有 f 个问题节点和 f 个故障节点,当发现节点是问题节点后,会被集群排除在外,剩下 f 个故障节点,那么根据小数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,确节点的数量就会比故障节点数量多,那么集群就能达成共识。所以,所有类型的节点数量加起来就是 f+1 个正确节点,f个故障节点和f个问题节点,即 3f+1=n

pbft 算法的基本流程主要有以下四步:

  1. 客户端发送请求给主节点
  2. 主节点广播请求给其它节点,节点执行 pbft 算法的三阶段共识流程。
  3. 节点处理完三阶段流程后,返回消息给客户端。
  4. 客户端收到来自 f+1 个节点的相同消息后,代表共识已经正确完成。
    为什么收到 f+1 个节点的相同消息后就代表共识已经正确完成?从上一小节的推导里可知,无论是最好的情况还是最坏的情况,如果客户端收到 f+1 个节点的相同消息,那么就代表有足够多的正确节点已全部达成共识并处理完毕了。
1.1.3.5 RAFT

Fabric:已实现了raft算法
与PBFT不同,RAFT不支持作恶节点,因此更多的用于私链中。raft 算法包含三种角色,分别是:跟随者( follower ),候选人(candidate )和领导者( leader )。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色是可以随着时间和条件的变化而互相转换的。

raft 算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。raft 算法支持最大的容错故障节点是(N-1)/2,其中 N 为 集群中总的节点数量。

在Raft中,每个结点会处于下面三种状态中的一种:

  1. follower:所有结点都以follower的状态开始。如果没收到leader消息则会变成candidate状态
  2. candidate:会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)
  3. leader:所有对系统的修改都会先经过leader。每个修改都会写一条日志(log entry)
    leader收到修改请求后的过程如下,这个过程叫做日志复制(Log Replication):
  4. 复制日志到所有follower结点(replicate entry)
  5. 大部分结点响应时才提交日志
  6. 通知所有follower结点日志已提交
  7. 所有follower也提交日志
  8. 整个系统处于一致的状态

Raft算法动画:https://link.zhihu.com/?target=http%3A//thesecretlivesofdata.com/raft/

1.1.4共识算法对比

1.1.4.1 PBFT VS RAFT

PBFT VS RAFT

1.1.4.2 主流算法对比

共识算法

1.1.4.3 ZAB协议与Raft协议比较

ZAB 是通过“一切以领导者为准”的强领导者模型和严格按照顺序处理、提交提案,来实现操作的顺序性的。主节点是基于 TCP 协议来广播消息的,并保证了消息接收的顺序性。出来的比较早。

Raft协议是Raft协议就是一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致性。通过日志的连续性来保证消息或者说是数据的顺序性以及完整性。Raft协议中日志不仅是数据的载体,同时,日志的完整性还会影响领导者选举的结果(注:选举的因素不仅仅只有日志的完整性来保证,还有任期等其他因素)。

Raft目前是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。

异同点:

  1. 领导者选举:
    ZAB 采用的“见贤思齐、相互推荐”的快速领导者选举(Fast Leader Election),节点间通过PK竞争(资本是所持有的信息)看哪个节点更适合做Leader,一个节点PK后,会将选票信息广播出去,最终选举出了大多数节点中数据最完整的节点。
    Raft 采用的是“一张选票、先到先得”的自定义算法(注:里面包含了一个随机等待时间的概念,来保证最多几次选举就能完整选举过程。),这里简单说一下就是一个节点发现leader挂了,就选举自己为leader,然后通知其他节点,其他节点把选票投给第一个通知它的节点。(注:这里其实也会涉及到PK,根据数据的完整性以及任期等信息,如果通知它的节点 没有当前节点的数据完整等那么 当前节点是不会将选票投给该节点)
    以上看来,Raft 的领导者选举,需要通讯的消息数更少,选举也更快。

  2. 日志复制:
    Raft 和 ZAB 相同,都是以领导者的日志为准来实现日志一致,而且日志必须是连续的,也必须按照顺序提交。
    ZAB通过TCP来保证操作的顺序性。
    Raft协议通过Log Entry 加自己的校验来实现日志的连续性。建议看上面的博客文章

  3. 读操作和一致性:
    ZAB 的设计目标是操作的顺序性,在 ZooKeeper 中默认实现的是最终一致性,读操作可以在任何节点上执行;(注:很多地方说ZK是CP这没有毛病,但是并不是指ZK中的读写时强一致性,是指在发生P的时候,ZK是C,或者看到这个很懵,看下上面的博客,以及仔细看下CAP理论的图,里面也清晰的标记着在没发生P的时候,AC是可以共存的)
    而 Raft 的设计目标是强一致性(也就是线性一致性),所以 Raft 更灵活(可以自己配置),Raft 系统既可以提供强一致性,也可以提供最终一致性,但是一般为了保证性能,默认提供的也是最终一致性。

  4. 写操作:
    Raft 和 ZAB 相同,写操作都必须在领导者节点上处理。

  5. 成员变更:
    Raft 和 ZAB 都支持成员变更,其中 ZAB 以动态配置(dynamic configuration)的方式实现的。那么当你在节点变更时,不需要重启机器,集群是一直运行的,服务也不会中断。

  6. 设计阶段:
    相比 ZAB,Raft 的设计更为简洁,比如 Raft 没有引入类似 ZAB 的成员发现和数据同步阶段,而是当节点发起选举时,递增任期编号,在选举结束后,广播心跳,直接建立领导者关系,然后向各节点同步日志,来实现数据副本的一致性。
    ZAB协议的数据同步的阶段,ZAB集群式无法对外提供服务。
    其实,ZAB 的成员发现,可以和领导者选举合到一起,类似 Raft,在领导者选举结束后,直接建立领导者关系,而不是再引入一个新的阶段;数据同步阶段,是一个冗余的设计,可以去除的,因为 ZAB 不是必须要先实现数据副本的一致性,才可以处理写请求,而且这个设计是没有额外的意义和价值的。

  7. 设计独立性
    ZAB 和 ZooKeeper 强耦合,你无法在实际系统中独立使用;而 Raft 的实现(比如 Hashicorp Raft)是可以独立使用的,编程友好。

区块链基础知识3:共识机制 随着区块链技术的不断发展和完善,相信未来会有更多创新的共识机制出现,为区块链的应用提供更广阔的空间。这个过程通常被称为“挖矿”。在PoS机制中,参与区块链共识的节点的权益(即持有的加密资产数量)决定了他们被选为验证和生成新区块的机会。首先,工作量证明(PoW)作为最早的共识机制之一,它通过解决复杂的数学问题来竞争记账权,确保了网络的安全性,但因其高能耗而受到批评。此外,权益份额证明(DPoS)是PoS的进一步发展,它通过引入代表或见证人制度,减少了参与验证的节点数量,从而提高了系统的运行效率。 阅读详情

相关推荐

区块链节点与共识机制的基础

在学习区块链技术的过程中,理解节点和共识算法是非常重要的。无论是公共链还是联盟链,每个区块链网络中的节点都在共同维持网络的稳定和安全,参与数据验证、交易处理以及区块生成等关键任务。本文将解答一些关于区块链节点、群组、共识算法的常见问题,帮助你更好地理解区块链的工作原理。

2201_75798391的博客 2254

区块链共识机制技术一——POW(工作量证明)共识机制

什么是共识机制 所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。 区块链作为一个去中心化的分布式账本系统,然而在实际运行中,怎么解决因为去中心化后,保证整个系统能有效运行,各个节点诚实记账,在没有所谓的中心的情况下,互相不信任的个体之间就交易的合法性达成共识的共识机制。 共识机制的目标 区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件。区块链

小白的博客 3万+

【区块链基础】区块链的 Fork(分叉)深度解析:原理、类型、历史案例及共识机制的影响

区块链本质上是一条由区块依次链接构成的链式数据结构。分叉是指在同一时间点,出现了两个或多个不同版本的区块链,这导致链条发生分裂,形成了多条并行的区块链分支。临时分叉(短暂分叉)由于网络延迟或矿工几乎同时挖出不同区块,导致不同节点接收到的最新区块不一致,形成暂时的链条分歧。网络通过“最长链原则”最终收敛为一条链。协议分叉(永久分叉)协议规则发生变更,部分节点升级新规则,部分节点未升级或选择保留旧规则,导致链条永久分裂。协议分叉又分为硬分叉和软分叉两种。

持续分享有趣的技术干货 1436

区块链共识机制技术一--POW(工作量证明)共识机制

尽管面临许多挑战,但其在安全性和去中心化方面的独特优势,使其依然是区块链领域的重要组成部分。随着环保和效率问题的日益突出,许多新兴的区块链项目开始探索替代共识机制(如POS、DPOS),但POW作为区块链技术的奠基石,仍将在未来相当长的时间内占据重要地位。这一过程称为“挖矿”。- 安全性:由于解决哈希难题需要大量计算能力,攻击者必须拥有超过全网50%的计算能力才能控制区块链,这在现实中几乎不可行。- 算力集中:随着矿工对专业设备(如ASIC矿机)的依赖,算力逐渐集中在少数大矿池中,威胁去中心化特性。

ruky36的专栏 3020

共识机制的基础知识

共识机制是什么? 区块链是伴随比特币诞生的,是比特币的基础技术架构。可以将区块链理解为一个基于互联网的去中心化记账系统。 类似比特币这样的去中心化数字货币系统,要求在没有中心节点的情况下保证各个诚实节点记账的一致性,就需要区块链来完成。 所以区块链技术的核心是在没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。 区块链为什么需要共识机制? 分布式系统中...

bk1171676983的博客 3098

区块链共识机制详解:PoW、PoS、DPoS 的原理与对比

PoW:最早的共识机制,安全性较高,但能耗巨大,效率较低,适合那些对安全性要求极高、去中心化要求强的场景(如比特币)。PoS:相比PoW更加高效环保,减少了能源消耗,但可能导致资金集中化,适合需要提高交易速度和降低能耗的场景(如以太坊 2.0)。DPoS:在PoS的基础上引入了投票机制,具有更好的扩展性和更低的能耗,但去中心化程度较低,适用于需要高吞吐量的区块链应用(如EOS、Tron)。每种机制都有其优缺点,选择合适的共识机制要根据具体的区块链项目需求来决定。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 5691

区块链技术基础课程:从比特币到共识机制

区块链是由多方共同维护,使用密码学保证传输和访问安全,实现数据一致性、防篡改、防抵赖的技术(中国人民银行,2020)

omonday1234的专栏 714

区块链的共识机制:探索不同的共识算法

除了上述介绍的共识机制,还有很多其他的共识算法,如权益证明与工作量证明的混合(Hybrid PoS/PoW)、权益证明与权威证明的混合(Hybrid PoS/PoA)等。总结起来,区块链的共识机制是确保网络中节点对交易和区块的有效性达成一致的重要机制。共识机制确保网络中的节点就交易和区块的有效性达成一致,并确保数据的一致性和安全性。该哈希值可作为选择下一个区块的依据,权益越高的节点获得生成新区块的机会越大。请注意,上述示例代码是简化的,仅用于说明概念,并不代表在实际区块链系统中的完整实现。

YgjWeb的博客 143

区块链开发与核心技术详解:从基础概念到共识机制实践

Index:区块在链中的位置(高度);Timestamp:区块创建时间戳;:区块包含的交易列表;PrevHash:前一个区块的哈希值(链接);Hash:当前区块的哈希值(由内容计算得出)。Go代码示例import ("fmt""time"// 交易结构体(包含发送方、接收方、金额)// 区块结构体Index int `json:"index"` // 区块高度Timestamp int64 `json:"timestamp"` // 创建时间(Unix时间戳)

才这么点的博客 1099

3、区块链编程基础:密码学、哈希函数、工作量证明与共识机制

本文深入讲解了区块链编程的基础知识,包括密码学、哈希函数、工作量证明和共识机制。文章详细介绍了对称加密与非对称加密的区别,哈希函数的特性及其在区块链中的应用,工作量证明的实现原理以及共识机制如何确保区块链的安全性和数据一致性。通过实际代码示例和流程图,帮助读者全面理解区块链的核心技术与运作原理。

cream的博客 164

31、区块链基础:从石头链到加密货币共识机制

本文介绍了区块链技术的基础概念,从模拟的石头区块链到现代加密货币的工作量证明和权益证明机制。探讨了不同共识算法的优劣,包括比特币的工作量证明和以太坊计划采用的Casper权益证明机制,并分析了权益证明面临的无利害关系问题及其解决方案。此外,还介绍了支撑区块链安全性的加密原语,如哈希函数和Merkle树。

h9j8k7l6m5n的博客 68

区块链共识机制基础知识

区块链共识协议是分布式账本的核心机制,确保互不信任的节点对账本顺序达成一致。本文首先分析了拜占庭将军问题及其区块链应用,指出共识需满足安全性、活性和终结性三大特性。接着详细对比了UTXO和Account两种账本模型的特点及适用场景,并解释了区块链接结构、Merkle Tree验证机制和状态承诺等底层技术。文章还介绍了不同节点类型的存储需求和安全风险,为理解区块链共识机制提供了系统性的技术框架。

master-dragon的专栏 747

安卓app逆向破解脱壳教程

From:Hook 神器家族的 Frida 工具使用详解:https://blog.youkuaiyun.com/FlyPigYe/article/details/90258758 详解 Hook 框架 frida (信抢红包):https://www.freebuf.com/company-information/180480.html APP逆向神器之Frida【Android初级篇】:https://www.jianshu.com/p/2d755beb1c54 frida 官网文档:https://fr..

sinat_28371057的博客 2万+

区块链算法基础完全指南:Algorithms39中的共识机制与加密技术原理

区块链技术正在彻底改变我们的数字世界,而理解其背后的算法基础是掌握这项革命性技术的关键。Algorithms39项目作为一个全面的算法和数据结构的集合,为我们提供了学习区块链底层算法的绝佳资源。本文将为您深入浅出地解析区块链技术中的核心算法原理,特别是共识算法和加密技术的基础知识。 ## 🔗 区块链技术的算法基石 区块链本质上是一个分布式账本技术,它依赖于多种算法来确保安全性、一致性和不可篡

gitblog_00074的博客 598

腾讯滑块验证码collect参数逆向与JSVMP对抗实战

本文深入解析腾讯滑块验证码collect参数的逆向过程与JSVMP虚拟机对抗技术。通过详细的环境搭建、抓包分析和JSVMP逆向技巧,揭示collect参数的生成逻辑与加密流程,并提供完整的模拟实现方案和常见问题排查方法,助力开发者突破腾讯天御验证码的防护机制。

weixin_29009501的博客 1573

深入构建加密货币价格预测系统:从数据获取到模型优化的完整指南!

🏆本文收录于「编程与技术实战」专栏,此专栏涵盖了C/C++编程、人工智能、数据结构、机器学习等技术领域的内容,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1276

区块链基础知识(下):共识机制 附带图解、超详细教学 看不懂你打死我

共识机制 共识算法是用于保证分布式系统一致性的机制。这里的一致性可以是交易顺序的一致性、账本一致性、节点状态的一致性等。一般地,我们根据容错类型将共识算法分为两类。 拜占庭容错: 拜占庭容错强调的是能够容忍部分区块链节点由于硬件错误、网络拥塞或断开以及遭到恶意攻击等情况出现的不可预料的行为。BFT系列算法是典型的拜占庭容错算法,比如PBFT、HotStuff等。 非拜占庭容错: 非拜占庭容错通常指能够容忍部分区块链节点出现宕机错误,但不容忍出现不可预料的恶意行为导致的系统故障。常见的CFT共识算法有P

终于等到你啦~欢迎来到我的知识空间 这里是苏泽的成神之路 8038

无人机飞控传感器全解析:从IMU到光流传感器的实战应用

本文深入解析了无人机飞控系统的核心传感器,从IMU、气压计、磁力计到光流传感器,详细阐述了其工作原理、数据融合策略及常见挑战。结合ICF5、Pixhawk 6C等主流飞控硬件,提供了从传感器校准、滤波器调优到应对室内光流定位、强磁干扰等实战场景的系统性优化指南,帮助开发者突破飞控“黑箱”,实现更稳定、可靠的飞行控制。

weixin_28396629的博客 167

【区块链快速概览】了解区块链的基本原理、共识机制(如PoW, PoS)、加密技术基础。

PoW(工作量证明)是指通过解决一定难度的数学问题,来证明自己的工作量和对网络的贡献。在区块链中,哈希函数被用于保证数据的完整性和一致性,通过对数据的哈希运算,可以生成唯一的哈希值,用于验证数据的真实性。每个区块包含了一定数量的交易记录以及前一个区块的哈希值,通过哈希值的链接,保证了区块链的一致性和完整性。总结起来,区块链的基本原理是通过链接区块的方式形成一个不可篡改的链式结构,共识机制是保证网络中节点一致性的机制,加密技术用于保证数据的安全性和隐私性,哈希函数用于确保数据的完整性和一致性。

讯开技术孵化器博客 751

SQLite学习——Dapper初识

dapper下载:https://www.nuget.org/packages/Dapper/1.40.0

jiDxiaohuo的博客 1296

Android逆向实战:通过smali/baksmali动态注入DEX逻辑

本文详细介绍了在无源码条件下对Android应用进行动态逻辑注入的实战方法。通过使用smali和baksmali工具对DEX文件进行反编译、修改与重打包,实现在目标方法中插入自定义代码(如日志打印),并分享了定位目标、处理寄存器、避免常见错误的实用技巧与避坑指南。

weixin_29008691的博客 364

共识机制oracle预言机,预言机(Oracle)是区块链世界的基础设施

1/区块链是一个封闭的链上系统,链上系统可以生成Token,并且交易和转移Token,但区块链不能够自发连接链下数据,这限制了区块链技术的应用。而预言机则是链上链下相互链接的中间件,是区块链世界的基础设施构件。区块链应用场景的拓展有赖于预言机的发展和它的数据维度的拓展。2/区块链技术去中心化特性和共识机制使得链上系统安全性得到保障,但一旦通过预言机链接链下数据,则预言机本身就成为了安全性脆弱的一环...

weixin_34734156的博客 338

上机笔试题目:取出指定条件二维数组的子数组

取出指定条件二维数组的子数组: 1)传入参数为: 参数一:String[][]sArray2字符串二维数组 参数二:Stringkey字符串 参数三:StringkeyFormat含匹配符的字符串,如下:%0-%1,其中%x含义如为:一维数据列序号为x的值。 keyFormat 可以为 %0-%1-%2,%0-%3-%8-%x...... 例子如下...

91奔跑的蜗牛 636
上一篇: Fabric架构详解
下一篇: 区块链基础之密码学及安全技术
架构师老狼
博客等级 码龄14年 44粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值