【2020初春】【区块链】《区块链原理,设计与应用》

这次没有边看边记,准备看完大部分后进行整理总结

了解区块链的发展过程和主要应用场景
区块链的价值和用途,区块链发展所遇到的难题

区块链包括三个基本概念:
交易(操作);区块(结果);链(日志);

每次交易试图进行状态改变,每次共识完成的区块就是参与者对结果进行确认

常见的三种应用场景:
记账功能(比特币),处理数字货币
智能合约(以太坊),处理交易
商业处理(超级账本),带权限的分布式账本处理

分布式涉及技术

一致性
分布式系统达成一致的过程应该满足三个性质:
可终止性(有限时间内完成);约同性(不同节点最终结果相同);合法性(结果是选择范围内的)
强制一致性:
1.顺序一致性
2.线性一致性

共识算法
一致性强调结果的状态,共识是一致的手段

非拜占庭错误/故障错误:出现故障但不伪造信息的情况
常用算法:Paxos、Raft 性能好,处理快,容忍不超过一半的故障节点

拜占庭错误:伪造信息恶意响应的情况;对应节点为拜占庭节点
常用算法:
确定性算法(PBFT)共识是最终结果
概率类算法(PoW)共识结果是临时的,随时间的推移共识被推翻的概率越来越小

同步:系统中各个节点在一定时间内完成操作,可以容易判断消息的丢失
异步:系统中各个节点可能存在较大的时间差异,传输消息的时间是任意的

FLP不可能原理:在网络可靠,但允许节点失效的最小化异步模型中,不存在一个可以解决一致性问题的确定性共识算法

CAP原理
分布式计算系统中不可能同时确保CAP三个特性,往往需要弱化某个
C一致性:强一致性
A可用性:任何非失败节点都能应答
P分区容忍性:节点之前通信不可保障

ACID原则 满足一致性,牺牲可用性
BASE原则 满足可用性,牺牲一致性

Paxos算法
分布式系统中存在故障但不存在恶意的节点
包括三个角色:提案者,接受者,学习者
多提案/多接受情况 使用两阶段的提交过程,准备阶段&提交阶段
准备阶段:1.提案者发送编号给各个接受者;2.接受者保留曾经收到的最大编号及当前收到编号,如果当前编号更大,进行更新,并且返回最大提案号
提交阶段:1.提案者收取接受者返回的编号,如果和发出去的一致,则发出编号对应的信息,如果不一致,则按照返回回来的编号内容更新自己的信息;如果收到的返回消息不够多,则再次发出请求;2.接受者收到编号后若不小于自己保留的编号,进行更新到最大
当多数接受者接受共同的值,形成决议,达成确认

Raft算法
包括三个角色:领导者,候选领导者,跟随者
1.领导(Leader)选举过程
开始时所有节点都是跟随者(Follower),随机超时发生后,未接收到领导者和候选领导者信息的变为候选领导者(Candidate),提出选举;选举时得票超过一半的选举为领导者,未选出进入新阶段重试。
2.同步日志
领导者从客户端接受日志(log),找到系统中最新的日志记录,强制所有的跟随者刷新到该记录,数据单向同步

你可能感兴趣的:(2020初春,区块链)