1. 定义:

区块链是去中心化的分布式记账系统。

2. 基本概念:

交易:一次对账本的操作,会导致账本状态的一次改变。
区块:记录一段时间内发生的所有交易和结果的数据结构,可视作对当前账本状态的一次共识。
链:区块有序串联而成的数据结构,是整个账本状态改变的日志记录。

3. 特点:

1、不可篡改性:数据保存在每个节点中,不可被销毁或修改 。
2、分布式容错性:通过分布式系统保证区块链能够容忍部分节点的异常状态。
3、隐私保护性:密码学的应用保证即使数据泄露也无法解析。

就上述三大特点而言,前两点与区块链作为分布式系统的特质有关,最后一点则源自密码学的应用。而作为记账系统,保证区块链的不可篡改性尤为重要,具体来说,区块链技术中按照私有链、联盟链及公有链的划分,分别提出了有效的共识算法(详见下文),从而保证数据结构的改变只有在全网达成共识的前提下才能完成,而无法由个别或部分恶意节点修改。分区容错性作为分布式系统本身的三大特性(CAP)之一不再赘述,隐私保护性通过公钥密码等算法保证,同样略过。

4. 分类(根据使用范围及集群中故障节点及作恶节点进行划分):

  1. 私有链:只供内部少数人使用,不考虑集群中存在作恶节点,只考虑故障节点。
  2. 联盟链:由若干组织共同维护,考虑集群中存在作恶节点和故障节点。节点需要通过验证才能加入和退出。
  3. 公有链:任何人都可以参与使用和维护,考虑节点中存在作恶节点和故障节点。节点的加入和退出不需要验证。

5. 运行机制(以比特币为例):

  1. 客户端进行交易并广播交易记录。
  2. 节点验证交易记录并打包组成候选区块。
  3. 计算nonce串放进区块使得候选区块的哈希结果满足特定条件。
  4. 节点完成随机数串的计算并广播候选区块。
  5. 其他节点验证候选区块并将其加入自己的区块链。
  6. 大部分节点都将区块添加到自己维护的区块链上后,该区块被网络接受,交易被确认。

要理解区块链技术,首先要明白其作为分布式系统的本质,因此不得不理解其如何克服CAP问题中一致性与可获得性的矛盾(CAP: consistent, available, and partition tolerant):
1、一致性:考虑到网络中恶意节点的存在,通过共识算法保证数据的一致性。
2、可获得性:整个网络始终处在在趋于整体一致的过程中(指的是网络中可能存在局部节点中的区块链不一致的问题,但是终将按照最长链原则形成一致),我们可能获得局部节点中不一致的信息(分叉后的链中的信息),但最终将获得正确的信息。
3、分区容错性:通过数据的冗余存储(每个节点存储完整区块链)实现

6. 核心:作为一种复杂的动态的分布式网络,我们需要关注区块链如何实现共识(也即上文所述的一致性),下文分别按照联盟链、私有链、公有链的顺序讲解。

6.0 分布式系统

由分布在不同地理位置的多个节点通过网络连接而成,节点可分为

  • 可信节点
  • 缺陷节点
  • 恶意节点

网络中某个出现任意意外行为的节点成为拜占庭节点。

6.0.1 分布式系统模型

同步模型:消息处理及传输都有可以预知的时间(/时钟漂移)边界,可以使用超时。
异步模型:无法预知的时间(/时钟漂移)边界,无法使用超时。

6.0.2 CAP定理

任何分布式系统无法同时拥有一致性、可用性和分区容错性。

  • 一致性:所有节点在任意时刻拥有一致的数据
  • 可用性:所有节点接收到请求后即能做出响应
  • 分区容错性:某些节点的失效不影响系统的运行

一致性和可用性存在矛盾,因为要保证数据的一致性就必须在某个节点的数据被更新后立即同步所有节点,而同步完成的这段时间内其他节点不可能保证可用性。

区块链同时实现了这三种属性

6.1 私有链的共识算法:RAFT

RAFT算法中,任意节点在任意时刻只能扮演下列三种角色中的一种:leader, candidate, follower。

6.1.1 领导选取过程

网络初始化之后,所有节点都是follower,而当节点一段时间内没有收到leader节点的心跳包,就会自动成为candidate,并向其他节点广播投票要求。由于该过程中每个节点只能投出一票,因此先发出请求的节点会有优势。最终获得的票数达到 ( n / 2 ) + 1 (n/2)+1 (n/2)+1的节点成为leader。成为leader的节点每隔一段时间需要向所有节点发送心跳包。

6.1.2 记账过程

客户端向leader发送某请求后,
leader节点广播至所有节点,
大部分节点将接受请求并返回确认成功信息。
下一个心跳中,leader会通知所有follower更新确认的项目。

6.2 联盟链与公有链中共识算法的理论基础:拜占庭将军问题

IC1: 所有忠诚将军的行为必须一致。
IC2: 如果发出命令的将军是忠诚的,那么其余所有忠诚将军的行为必须和他一致。

6.2.1 基于口头消息

拜占庭将军问题——口头消息

可以证明,基于口头消息的拜占庭将军问题在将军总数大于叛徒人数的三倍时可解:

IC2在将军总人数超过叛徒人数的两倍时即成立;
IC1可以分成两种情况:

  1. 发出命令的将军是忠诚的,此时符合IC2的情况,故直接成立
  2. 发出命令的将军是叛徒,通过数学归纳法可证真

6.2.2 基于签名消息

签名应满足:

  1. 不可伪造
  2. 一旦被篡改即可发现
  3. 可验证

拜占庭将军问题——书面协议

签名消息型解决方案可以处理任何数量叛将的场景。

6.3 联盟链的共识算法:实用拜占庭容错算法(PBFT, Practical Byzantine Fault Tolerance)

6.3.2 基本流程

  • 客户端向主节点发送请求
  • 主节点广播请求给其他节点,节点执行三阶段共识流程
  • 节点执行完三阶段流程后,返回消息给客户端
  • 客户端收到来自f+1个节点的相同消息后表明共识已经达成。

6.3.3 共识形成的详细流程

下图转自 美团技术团队 https://zhuanlan.zhihu.com/p/35847127。

客户端向主节点发起请求,主节点0收到请求后向其他节点发送pre-prepare消息,其他节点收到pre-prepare消息后开始三阶段共识过程:

  • pre-prepare:若消息的v和n曾经出现过但是d和m却与之前不同,或者请求编号不再高低水位之间,则拒绝请求;否则接受请求。
  • prepare:节点同意请求后向其他节点发送prepare消息,一定时间内若收到超过2f个不同节点的prepare消息则表明本阶段已完成。
  • commit:prepare阶段完成后进入commit阶段,各节点向其他节点广播commit消息,收到2f+1个包括自己在内的commit消息后则表明该阶段已达成共识,节点执行请求,写入数据。

处理完毕后,节点返回消息给客户端。客户端收到来自f+1个节点的相同消息后表明共识已经达成。

下图转自 美团技术团队 https://zhuanlan.zhihu.com/p/35847127。

注解:
V:当前视图的编号。视图的编号是什么意思呢?比如当前主节点为 A,视图编号为 1,如果主节点换成 B,那么视图编号就为 2,这个概念和 raft 的 term 任期是很类似的。
N:当前请求的编号。主节点收到客户端的每个请求都以一个编号来标记。
M:消息的内容
d或D(m):消息内容的摘要
i: 节点的编号

6.3.4 视图变更流程

每个副节点维持一个计数器,接收到请求时启动该计数器并在执行请求时停止计数。

副节点的计数器超时或发现主节点作恶时会向全网广播视图变更的消息<view-change, v+1, n, C, P, i>。
其中,v表示上一个视图的编号,n表示i节点的stabel checkpoint的编号,C表示2f+1个节点的有效checkpoint信息的集合,P表示i节点上一个view中编号大于n并且达到prepared状态的请求消息的集合,i表示节点的编号。

若副节点收到2f个不同节点(不包括自己)的视图编号为v+1的view-change消息,则向其他节点广播消息<new-view, v+1, V, O>。其中,v表示上一个视图的编号,V表示新的主节点接收到的有效的视图编号为v+1的view-change消息集合,O是pre-prepare消息的集合。设Min为V集合中最小的stable checkpoint,Max为V集合中序号最大的prepare消息,令r=Max-Min。

其余节点验证收到的视图编号为v+1的new-view消息中的O集合是否正确。若正确,则按照PBFT流程逐条执行O集合中的请求消息。若r>0,则产生消息<pre-prepare, v+1, n, d>,若r=0,则产生消息<pre-prepare, v+1, n, d(null)>。

下图转自 美团技术团队 https://zhuanlan.zhihu.com/p/35847127。

6.4 PBFT与RAFT算法的对比

此文对PBFT作了详细介绍并比较了RAFT和PBFT,质量很高:RAFT与PBFT(美图区块链团队)

6.5 公有链的共识算法:工作量证明(PoW, Proof of work)与权益证明(PoS, Proof of stake)

首先要认识到,和PBFT算法一样,公有链上共识算法的理论基础也是拜占庭将军问题,差别在于前者考虑的是口头消息(Oral Message),后者考虑的是签名消息(Signed Message)

POW:通过计算困难而无意义的数学难题分配记账的权利并形成共识。

7. 区块链的演化

7.1 区块链 1.0

数字货币(2008年10月31日,中本聪(Satoshi Nakamoto)发表文章《Bitcoin : A Peer-to-Peer Electronic Cash System》)
比特币的出现,将PoW与共识机制联系到一起,首次从实践意义上实现了一套去中心化的数字货币系统。

7.2 区块链 2.0

数字金融(引入了智能合约)

7.3 区块链 3.0

用于金融界之外的政府、司法、媒体等综合行业

8. 比特币

9. 以太坊

下面是学习过程中产生的一些问题,相信每个初学者都会遇到,因此稍作记录:

Q0: 什么是挖矿?
通过调节对哈希结果的限制,比特币网络控制平均约10分钟产生一个合法区块,算出区块的节点将获得奖励(目前是12.5比特币,每四年减半)。

Q1: 区块链中各个节点保存了哪些信息,存在哪些动作(操作)?
每个用户都保存完整的区块链。
每个区块由区块头和区块体构成,区块头中包含了上一个区块的哈希值和本区块的哈希值以形成链。
作为客户端,节点可以进行交易并广播交易记录。
作为一般节点,可以接收交易记录并打包成候选区块然后计算nonce值,完成计算后将其加入区块链并广播,或者接收其他节点的候选区块广播并在验证后加入区块链。

Q2: 新加入的区块的区块头中的哈希值是如何计算出来的?区块体中包含哪些记账信息?
区块体中的记账记录来自客户端的交易记录,其实质内容会随着区块链的应用场景而发生变化,可以抽象地概括为对账本[区块链中数据]的操作。
区块头中包括preHash, 版本号,默克尔树的根哈希值,以及作为可变参数的随机数。
使用SHA256算法通过变化的随机数得到符合规定的哈希值后即认定完成计算

Q3: 什么是记账?
对账本(区块链中维护的特定数据)的操作,将导致账本状态的改变。

Q4: 如何加入新节点?
密码学+最长链优先原则

Q5:(存疑)任意两个节点某个时刻收到的交易记录很大概率是不同的,于是它们对不同的交易记录进行打包并计算nonce值,这样来看,节点收到的候选区块中的交易记录亦有可能与其正在计算的候选区块中的交易记录存在差异,那么节点如何验证这些交易记录是正确的?
猜测:由于计算随机数串所需的时间足够长,因此计算出的候选区块中的交易记录已经通过P2P网络传送至其他节点。

Q6: 同时假设集群中存在恶意节点,为何适用于联盟链与公有链的共识算法不同?
公有链中需要限制消息的数量(通过特定机制,如PoW)

为什么区块链无法篡改?
双花问题和51%攻击

山东大学 软件学院 区块链技术相关推荐

  1. 全新升级,《区块链技术进阶与实战(第2版)》正式上市

    (第 1 版亮相央视新闻联播) 2018 年下半年,浙江大学计算机学院首次推出"区块链与数字货币"课程.作为课程指定教材,<区块链技术进阶与实战(第1版)>面向广大区块 ...

  2. 纪首领浙大计算机学院,趣链科技X浙江大学|区块链技术与应用专题研讨会成功召开...

    本文作者:趣链科技 近日,趣链科技与浙江大学区块链技术与应用专题研讨会在趣链科技举办.本次研讨会邀请了来自浙江大学计算机科学与技术学院和浙江大学网络空间安全学院的多位知名专家与趣链科技产业应用专家开展 ...

  3. “区块链第一考”今天结束,史上首张“区块链技术软件开发师”证书即将发放...

    记者: 史上第一张区块链考级试卷,你会做吗?给你做个题,看看会不会. 以太坊开发者创建智能合约时,需要发送一笔交易到一个地址,这个地址的开头是 A.0x B.0x1 C.0x0 D.0x00 你知道答 ...

  4. 区块链技术岗位月薪 2.85 万 招聘岗位超一万个

    1.浙江大学面向本科生首设"区块链"课程 浙江大学将于 2018 年秋季学期面向部分高年级本科生和研究生,设置一门名为<区块链与数字资产>的课程.记者从 12 日成立的 ...

  5. 【SDCC讲师专访】《区块链2.0》作者谭磊:区块链技术正打开互联网金融等众邻域的新纪元...

    2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升级 ...

  6. 复杂美应邀出席第五届区块链技术与应用高峰论坛

    4月 28日,首都网络安全日第五届区块链技术与应用高峰论坛在国家会议中心举行,论坛由北京网络行业协会电子数据司法鉴定中心联合多家机构承办,专家学者.相关领导.产业界代表等围绕"数字经济与区块 ...

  7. “2020区块链技术应用及专业教育论坛“在苏州2.5产业园隆重举办

    11月1日,"2020区块链技术应用及专业教育论坛"在苏州2.5产业园隆重召开.本次论坛汇集诸多全国区块链技术领域的专家学者.园区领导.政府有关部门领导.高等教育机构负责人及学院博 ...

  8. 从贝叶斯计算、深度学习、智能投顾看人工智能与区块链技术

    人工智能与区块链技术研讨会西安站"9 日在西安电子科技大学举行.这是继北京站顺利举办之后,人工智能与区块链技术研讨会全球巡回的第二站.包括西安电子科技大学通院电子实验室主任刘乃东.清华大学软 ...

  9. 区块链技术之“局”待破

    文章经授权转载自中国电子报(ID:cena1984) 核心技术是国之重器.区块链被认为是继互联网之后的下一个IT浪潮,眼下,区块链应用在中国正呈现从星火燎原向火爆方向加速发展的势头.区块链有哪些关键技 ...

最新文章

  1. Linux MTD系统剖析【转】
  2. 51nod 1412 AVL数的种类(DP
  3. vb.net2019-hello,world
  4. Linux磁盘空间被占满?清空回收站试试!
  5. 计算矩阵边缘元素之和(信息学奥赛一本通-T1121)
  6. Java反射在Main方法的中的而应用
  7. 论文笔记_S2D.02-2013-CVPR-结合三维场景重建和类别分割
  8. 产品经理日常工作之PRD文档
  9. android电视盒刷机工具,android电视盒如何刷机
  10. Butterfly-蝴蝶-主题优化、美化-Lete乐特
  11. Word Ladder II
  12. 【Mac 教程系列第 15 篇】如何查看 Mac 产品的序列号
  13. CSR867x — Speaker Equalizer曲线调试笔记
  14. 老友记台词笔记S0101-ijk英语
  15. python绘图之使用matplotlib连接两个点
  16. 手机lte 网络信息测试软件,5G常见测试软件及单验案例
  17. 计算机公共基础知识总结,计算机公共基础知识总结.docx
  18. sakai中chat子项目解析
  19. 【Wps】deepin解决wps问题
  20. python交互绘图_Python中的交互式绘图

热门文章

  1. 前端 js 获取当前机子的ip
  2. 如何在虚拟计算机添加3块硬盘,win7旗舰版下如何建立虚拟硬盘
  3. 智能蓝牙挂锁方案开发
  4. 小强和小明猜生日(20min)
  5. 阿里开源分布式事务seata demo示例(原Fescar)
  6. SpringBoot交友APP项目实战(详细介绍+案例源码) - 7.即时通讯(基于第三方API)
  7. 将视频托管到爱奇艺 (第一步)
  8. 等保浅尝-网络安全等级保护/等保2.0
  9. linux write函数耗时分析
  10. zabbix入门之使用QQ邮箱接受报警信息