京公网安备 11010802034615号
经营许可证编号:京B2-20210330
区块链共识算法
1、分布式系统案例:售票系统
分布式系统的共识算法
在一个分布式系统中,如何保证集群中的所有节点中的数据完全相同且能够对某个提案(proposal)达成一致是分布式系统正常工作的核心问题,而共识算法就是用来保证分布式系统一致性的方法。
2、区块链和共识算法的关系
数字货币->双花问题->线性账目(区块链)->共识
3、分布式系统一致性
强一致性:任何时刻保持一致
顺序一致性(Sequential Consistency):Leslie Lamport1979年经典论文《How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs》中提出,是一种比较强的约束,保证所有进程看到的全局执行的顺序(total order)一致,且每个进程看自身的执行(total order)跟实际发生顺序一致。例如某进程先执行A,后执行B,则实际得到的全局结果中就应该为A在B前面,而不能反过来。同时所有其他进程在全局上也应该看到这个顺序。顺序一致性实际上限制了各进程内的偏序关系,但不在进程间按照物理时间进行全局排序。
线性一致性(Linearizability Consistency ):Maurice P.Herlihy与Jeannette M.Wing在1990年经典论文《Linearizability:A Correctness Condition for Concurrent Objects》中共同提出,在顺序一致性前提下加强了进程间的操作顺序。形成唯一的全局顺序(系统等价于是顺序执行,所有进程看到的所有操作的顺序都一致,并且跟实际发生顺序一致),是很强的原子性保证。但是比较难实现,目前基本上要么依赖于全局的时钟或锁,要么通过一些复杂算法实现,性能往往不高。
弱一致性:某一时刻保持一致
强一致性的系统往往比较难实现。很多时候,人们发现实际需求并没有那么强,可以适当放宽一致性要求,降低系统实现的难度。例如在一定约束下实现所谓最终一致性(Eventual Consistency),即总会存在一时刻(而不是立刻),系统达到一致的状态,这对于大部分的Web系统来说已经足够。这一类弱化的一致性,被笼统称为弱一致性(Weak Consistency)。
不能达成一致性的两种情况
我们假设通讯是可靠的。那么我们把照成不能达成一致性的故障情况分为两种:
1、节点只是故障状态,不存在恶意节点,那么我们称“非拜占庭错误”。
2、存在恶意节点的分布式网络,我们称为“拜占庭错误”。
我们区块链面临的一致性问题为“拜占庭将军问题”。
4、分布式系统的同步和异步
同步系统:消息不丢失且秒到
异步系统:消息有延误且可能丢失
5、非拜占庭错误的两种解决方案
1、PAXOS
核心思想:Paxos解决这一问题利用的是选举,少数服从多数的思想,只要2N+1个节点中,有N个以上同意了某个决定,则认为系统达到了一致,并且按照Paxos原则,最终理论上也达到一致,不会再改变。这样的话,客户端不必与所有服务器通信,选择与大部分通信即可;也无需服务器都全部处于工作状态,有一些服务器挂掉,只有保证半数以上存活着,整个过程也能持续下去。
2、Raft
相比paxos的优点是容易理解,容易实现。它强化了leader的地位,把整个协议可以清楚的分割成两部分,并利用日志的连续性做了一些简化。
(1)Leader在时,由Leader同步日志。
(2)Leader挂掉了,选一个新Leader选举算法。
6、拜占庭将军的解决方案
对于可以容忍拜占庭错误的算法:PBFT、中本聪共识(POW)、POS和DPOS四种算法。
1、PBFT:更加实用的拜占庭容错方法。早期的BFT的缺陷:1、假定是同步场景;2、性能太慢(超过100个节点则不可用)。
PBFT算法的核心理论是n>=3f+1 : n是系统中的总节点数,f是允许出现故障的节点数。换句话说,如果这个系统允许出现f个故障,那么这个系统必须包括n个节点,才能解决故障。
PBFT算法在区块链中的应用
步骤:
1.从全网节点选举出一个主节点(Leader),新区块由主节点负责生成;
2.Pre-Preare:每个节点把客户端发来的交易向全网广播,主节点0将从网络收集到需放在新区快内的多个交易排序后存入列表,并将该列表向全网广播,扩散至1 2 3;
3.Preepare:每个节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,基于交易结果计算新区快的哈希摘要,并向全网广播,1->023, 2->013,3为宕机无法广播;
4.Commit:如果一个节点收到的2f(f为可容忍的拜占庭节点数)个其他节点发来的摘要都和自己相等,就向全网广播一条commit消息。
5.Reply:如果一个节点收到2f+1条commit的消息,即可提交新区块及其他交易到本地的区块链和状态数据库。
2、中本聪共识(POW)
POW:一组通过算法生成的数据,难于生成而易于验证。1993年由Cynthia Dwork and Moni NAOR提出。
比特币使用的Hashcash proof of work由Adan Back在1997年发明,用于防止垃圾邮件和拒绝服务器攻击。Hashcash proof of work被中本聪用于比特币的挖矿。挖矿的过程是选择一个节点作为区块链生产者。
3、POS共识
POS:最早是由网名为“QuantumMechanic”的网友在比特币论坛中提出。其核心思想为拥有币权的人可以进行选举,选举出来大家最终谁来生成区块。
Native POS的面临的问题:nothing_to_stake
就如桌上有十个文件,每个人会在一个文件上签名,最后选出签名最多的一个文件,谁在签名最多的文件上签名就给谁发币。但有些作弊的人,在十个文件上都签字,最终不管哪个文件签名最多,它都能拿到币,这就nothing_to_stake。
现在以太坊用的共识算法是CASPER,CASPER是改进版的POS。
CASPER算法 、Native POS、POW对无力攻击的解决办法:
Native POS:
POS链上产生了分叉,不投票什么也没有,在A分支上投票得到的利益是0.9,在B分支上投票获得的利益是0.1,如果在两个分支上都投票获得的利益=0.1+0.9=1。
POW:
pow链上产生了分叉,不投票什么也没有,在A分支上投票得到的利益是0.9,在B分支上投票获得的利益是0.1,如果在两个分支上都投票获得的利益=0.1/2+0.9/2=0.5,因为POW要分散算力。
CASPER:
CASPER链上产生了分叉,不投票什么也没有,在A分支上投票得到的利益是0.9,在B分支上投票获得的利益是0.1,如果在两个分支上都投票获得的利益=0.1+0.9 -5 = -4,两边都投票会扣取你的5个保证金。还有一种更严格的方法,虽然你没有在两个分支上都投票,但你只有在短的分支上投票就扣你5个保证金。
4、DPOS共识:Delegated Proof of Stake
DPOS由BM提出:由代币持有者选择见证人节点,由一组见证人通过round-robi的方式轮流产生区块。在15/21个人对一个区块进行签名,然后区块得到确认。
DPOS对Nothing_to_stake的应对方案:让生产者被淘汰。“Miners”are now generally public,known individuals rather than anonymous individuals.
为什么是15/21个人可以达到共识?(n-(n-1)/3) 所以(21-(21-1)/3)=15
DPOS的理念:由持有者进行投票,最大化的分散持有者的规模,最小化的代价来加固网络(无需挖矿),最大化网络性能(超级节点),最小化运行网络成本(EOS每年会曾发代币的5%平分给超级节点)。
而DPOS就像一个公司一样运行,股东选举出董事会,董事会成员轮流生成区块,验证通过后上链。区块生产者既没有创造无效的区块的权力,也没有改变社区共识的权利。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】互联网、机会、运营、关键词、账户、数字化、后台、客户、成本、网络、数据分析、底层逻辑、市场推广、数据反馈、 ...
2026-05-14在Python数据分析中,Pandas作为核心工具库,凭借简洁高效的数据处理能力,成为数据分析从业者的必备技能。其中,基于两列(或多 ...
2026-05-14 很多人把统计学理解为“一堆公式和计算”,却忽略了它的本质——一门让数据“开口说话”的科学。真正的数据分析高手,不是会 ...
2026-05-14在零售行业存量竞争日趋激烈的当下,客户流失已成为侵蚀企业利润的“隐形杀手”——据行业数据显示,零售企业平均客户流失率高达 ...
2026-05-13当流量红利消退、用户需求日趋多元,“凭经验决策、广撒网投放”的传统营销模式早已难以为继。大数据的崛起,为企业营销提供了全 ...
2026-05-13 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-05-13【专访摘要】本次CDA持证专访邀请到拥有丰富物流供应链数据分析经验的赖尧,他结合自身在京东、华莱士、兰格赛等企业的从业经历 ...
2026-05-12在手游行业存量竞争日趋激烈、流量成本持续高企的当下,“拉新”早已不是行业核心痛点,“留存”尤其是“付费留存”,成为决定手 ...
2026-05-12 很多数据分析师掌握了Excel函数、会写SQL查询,但当被问到“数据从哪里来”“数据加工有哪些步骤”“如何使用分析工具连接数 ...
2026-05-12用户调研是企业洞察客户需求、优化产品服务、制定运营策略的核心前提,而调研数据的可靠性,直接决定了决策的科学性与有效性。在 ...
2026-05-11在市场竞争日趋激烈、流量成本持续攀升的今天,企业的核心竞争力已从“获取流量”转向“挖掘客户价值”。客户作为企业最宝贵的资 ...
2026-05-11 很多数据分析师精通Excel单元格操作,熟练应用多种公式,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质 ...
2026-05-11在互联网运营、产品优化、用户增长等领域,次日留存率是衡量产品价值、用户粘性与运营效果的核心指标,更是判断新用户是否认可产 ...
2026-05-09相关性分析是数据分析领域中用于探究两个或多个变量之间关联强度与方向的核心方法,广泛应用于科研探索、商业决策、医疗研究、社 ...
2026-05-09 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-05-09在数据驱动运营的时代,指标是连接业务目标与实际行动的核心桥梁,是企业解读业务现状、发现问题、预判趋势的“量化标尺”。一套 ...
2026-05-08在存量竞争日趋激烈的商业时代,“以客户为中心”早已从口号落地为企业运营的核心逻辑。而客户画像作为打通“了解客户”与“服务 ...
2026-05-08 很多数据分析师每天与Excel打交道,但当被问到“什么是表格结构数据”“它和表结构数据有什么区别”“表格结构数据有哪些核 ...
2026-05-08在数据分析、计量研究等场景中,回归分析是探究变量间量化关系的核心方法,无论是简单的一元线性回归,还是复杂的多元线性回归、 ...
2026-05-07在数据分析、计量研究等场景中,回归分析是探究变量间量化关系的核心方法,无论是简单的一元线性回归,还是复杂的多元线性回归、 ...
2026-05-07