区块链共识算法
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就像一个公司一样运行,股东选举出董事会,董事会成员轮流生成区块,验证通过后上链。区块生产者既没有创造无效的区块的权力,也没有改变社区共识的权利。
数据分析咨询请扫描二维码
在信息爆炸的时代,数据分析师如同探险家,在浩瀚的数据海洋中寻觅有价值的宝藏。这不仅需要技术上的过硬实力,还需要一种艺术家 ...
2024-12-19在当今信息化社会,大数据已成为各行各业不可或缺的宝贵资源。大数据专业应运而生,旨在培养具备扎实理论基础和实践能力,能够应 ...
2024-12-19阿里P8、P9失业都找不到工作?是我们孤陋寡闻还是世界真的已经“癫”成这样了? 案例一:本硕都是 985,所学的专业也是当红专业 ...
2024-12-19CDA持证人Louis CDA持证人基本情况 我大学是在一个二线城市的一所普通二本院校读的,专业是旅游管理,非计算机非统计学。毕业之 ...
2024-12-18最近,知乎上有个很火的话题:“一个人为何会陷入社会底层”? 有人说,这个世界上只有一个分水岭,就是“羊水”;还有人说,一 ...
2024-12-18在这个数据驱动的时代,数据分析师的技能需求快速增长。掌握适当的编程语言不仅能增强分析能力,还能帮助分析师从海量数据中提取 ...
2024-12-17在当今信息爆炸的时代,数据分析已经成为许多行业中不可或缺的一部分。想要在这个领域脱颖而出,除了热情和毅力外,你还需要掌握 ...
2024-12-17数据分析,是一项通过科学方法处理数据以获取洞察并支持决策的艺术。无论是在商业环境中提升业绩,还是在科研领域推动创新,数据 ...
2024-12-17在数据分析领域,图表是我们表达数据故事的重要工具。它们不仅让数据变得更加直观,也帮助我们更好地理解数据中的趋势和模式。相 ...
2024-12-16在当今社会,我们身处着一个飞速发展、变化迅猛的时代。不同行业在科技进步、市场需求和政策支持的推动下蓬勃发展,呈现出令人瞩 ...
2024-12-16在现代商业世界中,数据分析师扮演着至关重要的角色。他们通过解析海量数据,为企业战略决策提供有力支持。要有效完成这项任务, ...
2024-12-16在当今数据爆炸的时代,数据分析师是组织中不可或缺的导航者。他们通过从大量数据中提取可操作的洞察力,帮助企业在竞争激烈的市 ...
2024-12-16在现代企业中,数据分析师扮演着至关重要的角色。他们不仅负责处理和分析大量的数据,还需要将这些分析结果转化为切实可行的商业 ...
2024-12-16在当今的大数据时代,数据分析已经成为推动企业战略的重要组成部分。无论是金融、医疗、零售,还是制造业,各个行业对数据分析的 ...
2024-12-16在当今这个以数据为驱动力的时代,数据分析领域正在迅速扩展与发展。随着大数据、人工智能和机器学习技术的不断进步,数据分析已 ...
2024-12-16在信息爆炸和数据驱动的时代,数据分析专业是否值得一选成为许多人思考的议题。无论是刚刚迈入大学校门的新生,还是考虑职业转型 ...
2024-12-16适合数据分析专业学生的实习岗位有很多,以下是一些推荐: 阿里巴巴数据分析岗位实习:适合经济、统计学、数学及计算机专业的 ...
2024-12-16在数据科学领域,探索实习机会是一个理想的学习和成长方式。实习不仅可以提供宝贵的实践经验,还能帮助学生发展关键的数据分析技 ...
2024-12-16在当今信息驱动的时代,数据分析不仅成为了企业决策的重要一环,还催生了各种职业机会。从技术到业务,数据分析专业的就业岗位种 ...
2024-12-16在现代企业中,数据分析师被誉为“数据探险家”,他们通过揭示隐藏在数据背后的故事,帮助公司优化业务策略和做出明智的决策。然 ...
2024-12-16