说到区块链,有人好奇地问: “什么是挖矿,怎么记账?”也有人想弄清如何实现共识、怎样构建智能合约,还有人困惑于应用与区块链是否能够对接。本书将从区块链底层技术细节开始来逐一回答这些问题。首先,系统性剖析区块链技术的原理和本质,从其产生背景、基本概念出发,深入浅出地解析区块链结构、核心算法、运行机制及其支撑技术; 其次,通过诠释区块链技术特征、优势与弱点,进一步分析技术演进、典型应用。
第5章对等网络技术
网络信息系统是由计算机联网所构成,有两种典型的组织模式(如图5.1所示): 集中式(centralization)和对等式(peertopeer,简称P2P)。集中式系统由中心服务器负责运行管控,其他所有计算机客户端都与和只与中心服务器互连,构成主从(masterslave)关系,客户端之间的通信都要通过服务器,形成星状拓扑结构; 对等式系统中则没有中心服务器,计算机结点之间相互平等、直接互连,形成扁平(flat)的网状拓扑结构。
图5.1网络系统组织模式
比特币是一种对等网络系统。由于缺少中心服务器的协调,所有功能都要通过各个结点间协调、协作完成,具有很高难度和技术挑战性。同时,比特币作为一种金融类系统,需要达到很强的安全性,以防止篡改、伪造、欺诈、假冒等恶意行为,要让遍布全网的“鱼龙混杂”的结点一致行动,无疑是对计算机网络技术的终极考验。
5.1对等网络技术架构
对等网络系统的技术核心在于控制(control)。在计算机系统中,控制体现为执行逻辑,在集中式系统中很容易在单点上实现“神经中枢”,而在对等网络系统中,必须将控制“神经元”分散体现到各个结点的运行规则上,所谓化管理于无形。
对等网络系统控制的重中之重是同步(synchronization),须保持各个结点(node)间数据的一致性、对数据理解的一致性、判别规则的一致性、对事件反应的一致性及操作行为的一致性。这里的一致性并非指完全相同,可以是全集与子集的关系,即应相同者必相同,但有些结点可以只保存部分数据、执行部分功能,或时间上存在滞后。因此,同步不一定要达到时间和状态的强同步。
例如比特币系统,各个结点需要拥有一致的区块链、区块链账本记载的交易、区块和交易的验证规则、脚本执行逻辑、挖矿难度值及挖矿方法等,同时允许存在不同类型的结点,允许结点只保存所需要的部分数据。
对等网络系统结点间的同步方法是通过协议(protocol)实现的。为使结点间尽可能松耦合,避免相互牵制和影响,应采用异步型应用层协议,即面向非连接、非停等(确认)式信息传输、非重传机制、非流量控制等。以结点间数据查询为例: 异步型协议发送查询报文后,并不需要等待直到报文全部到达,而是可以继续处理其他事务; 每到达一个数据报文,仅处理该报文,例如更新数据库,即每个数据报文(假定有多个)的到达都按独立事件对待; 对等结点也是如此,收到查询报文后立即予以响应,回复查询到的一个或多个报文,或不作任何回复(例如未查询到或查询报文有误)。
需要区分对等网络系统与分布式系统的微妙差异。分布式系统一般指资源对象的分散,如分布式计算、分布式存储,计算资源或数据资源由不同的计算机来分担,而且分布式系统往往有中央控制系统进行协调管理; 对等网络系统则更强调计算机实体间的平等性,不受任何中心系统的控制,而是独立、自主地运行。但两者具有很多共性,都需要做到不同结点间的完美协调,都具有很强的容错性、灵活性,因此理论成果丰富的分布式系统技术可成为对等网络系统的坚实基础。
理想的对等网络系统中,各个结点独立运行、不依赖其他结点,准确地说,不依赖特定的结点,而是依赖整体网络(如图5.2所示)。一个结点所需要的信息必然来自网络中的某个结点,但如果这个结点不能提供,则从其他结点也能获取到。每个结点从对等网络中获取所需数据以及网络提供的服务,同时承担相应职责、履行一定义务,为网络中的其他结点提供自己掌握的数据、给予有关服务(例如路由转发报文、验证及投票)。在开放的对等网络系统中,结点可随时、不经申明地加入(上线)或离开(下线)系统,其他结点会不断侦测变化、自动适应更新,整体网络的运行不会受到个别结点在线状况或服务能力的影响。
图5.2对等网络结点与网络关系示意图
不存在处于集中式和对等式中间地带的“弱中心化”模式。所谓的弱中心化有时候指需要附加一定条件的操作,例如某个结点提供初始启动阶段(时间条件)的索引服务,有时候则是指局部效应,例如某几个结点承担全量数据存储任务,事实上更接近于结点分工的差别。但只要结点间的依赖性没有上升到全局控制层面,就属于对等式系统; 如果各个结点对某些结点有全业务依赖性,例如每次业务操作都以某个结点获取必要信息为前提,则应归为集中式系统。
另一种说辞是“多中心化”模式,实际上是中心服务系统的分布式实现,而整个系统依然属于集中式范畴。关于比特币的“去中心化”(decentralization)描述也并不恰当,因为比特币从来就没有中心化实现的版本,就谈不上“去”一说; 如果“去中心化”是指去掉控制,那就更错得离谱,因为离开了有效且严格的控制,任何系统都无法正常运行。
5.2对等网络典型技术
计算机网络技术中早已有很多对等网络系统的实现,技术上可谓精彩纷呈,不同的理论模型、实现算法都具有严谨、高效的控制逻辑,充分说明对等网络系统的构建不仅是可行的,而且可以根据应用目标的需求来设计最为合理的技术。
例如,Internet网络基本的路由算法、联网必备的以太网通信协议、常用的P2P文件下载和物联网WSN等,各有特色,都是对等网络技术成功运用的范例。
1. Internet路由
路由(routing)是Internet组网的灵魂。Internet网络是用路由器(router)相互连接而成,路由器的使命就是通过物理链路将IP报文传送到指定的目的地。为了提高网络的抗毁性能,即不因少数结点受损而影响整体网络运行、避免单点故障,Internet网络被设计为对等式架构,不设路由交换中心,路由器之间自动实现互连。
路由器不只是需要相互连通、转发IP报文,在大规模网络中,它还需要为每一个报文找到从起始点到目的地的最佳路径,例如距离最短,或跳数最少,或延迟最小,或成本最低,或带宽最大的路径。所以设计目标是: 路由器应在没有控制中心、相互对等的情况下,通过交换信息,自主构造出最优路由。
典型的Internet路由算法有用于自治域内部的RIP(Routing Information Protocol,路由信息协议)、OSPF(Open ShortestPathFirst,开放式最短路径优先协议)和用于域间的BGP(Border Gateway Protocol,边界网关协议)等。
RIP着力为IP报文寻找一条具有最少跳数(hop,每经过一台路由器为1跳)的路径,运用BellmanFord算法(或FordFulkerson算法): 若X是A→B最短路径上的点,则A→X和X→B均为最短路径。于是RIP采用一种非常简单而讨巧的递归思路: 要找最短路径,就在邻居(相邻路由器)找到的到同一目的地的最短路径上加1即可; 若有不同邻居都可到达这一目的地,就选择跳数更少的。随着递归过程层层推进下去,总有一个“邻居的邻居”的路由器直接连接在目的地子网上,任务即告完成。
因为RIP路由只跟邻居相关,所以路由器只与邻居交换自身当前拥有的路由表。
OSPF是对RIP的升级,可适应更大规模网络。OSPF基于Dijkstra提出的最短路径算法,采用分布式的链路状态协议(link state protocol),每台OSPF路由器都维护一个全网一致的链路状态数据库(link state database),实际上就是网络拓扑结构图的数据表达,为此OSPF路由器的路由信息(已掌握的路由表)需要采用洪泛法发布到全网。
初始状态下,OSPF路由器首先被配置自身连接的子网(IP地址子网号),其次被配置一条或多条有物理链路直接连接的邻居路由器的指向,可以用一个三元组向量表示:
{Nd, Nr, D}
其中: Nd为目的IP子网地址,Nr为可提供该路由转发任务的邻居路由器的IP地址(或称为下一跳地址),D为总距离。例如,邻居路由器的IP地址为192.168.0.1/24,距离为8,则三元组向量可配置为{192.168.0.0/24, 192.168.0.1/24, 8},若到192.168.123.0/24的路径也经过该邻居,总距离为54,则三元组向量可表示为{1921681230/24, 192.168.0.1/24, 54}。这里距离值实际上是个抽象的概念,既可以用来表示实际距离或跳数,也可以用来表示带宽、成本、拥堵情况等不同指标,因此可以理解为优先级,可以自由配置,值越小则优先级越高。
令D(v)为源结点a到结点v的距离(包括从a到v的某一路径中所有链路距离之和),再令d(i,j)为结点i到j之间的距离。
OSPF算法执行如下步骤:
(1) 令N表示网络结点的集合。先令N={a}。对所有不在N中的结点v:
D(v)=d(a,v),若v与a直接相连(邻居)
∞,若v与a不直接相连
(2) 寻找一个不在N中的结点w,其D(w)的值为最小; 把w加入到N中。
(3) 对所有尚不在N中的结点v计算: D(v) = min[D(v), D(w)+d(w, v)],返回步骤(2); 若所有结点都已包含在N中,则算法结束。
例如有如图5.3(a)所示的6台路由器互连而成的网络,每条链路已被赋予距离值。以源结点a为视角,按OSPF算法,每轮次的集合变化如表5.1所示,形成图5.3(b)的生成树,即全网的逻辑拓扑结构,反映了从a到其他各个结点的最佳路由,最终收敛得到如图5.3(c)所示的路由信息表,每一行三元组向量表示到各个目的子网的转发关系。
图5.3OSPF实例运行示意图
表5.1OSPF实例算法执行表
步骤ND(b)D(c)D(d)D(e)D(f)
初始{a}251∞∞
1{a,d}24(1) 2∞
2{a,d,e}23
(2) 4
3{a,b,d,e}(2) 3
4
4{a,b,c,d,e}
(3)
4
5{a,b,c,d,e,f}
(4)
RIP和OSPF算法均实现了各自独立的路由器相互交换已有的路由“知识”,从只了解自身及邻居的连接关系,到掌握前往其他所有路由器(及其子网)的最佳路径,相当于对等网络完成了一次逐步迭代的学习过程。这个过程不需要人为干预,也没有控制中心来协调,完全在对等结点之间开展。假如有结点下线或失效(包括有新结点加入),邻居可借助心跳机制及时发现,修正链路状态后将更新信息发布到对等网络上,各结点仍然采用算法重新计算新的路由。可见路由算法还具有自我修复能力。
2. Aloha协议
Internet接入最常用的有线以太网(Ethernet)、无线以太网(即WiFi)都是采用技术原理同根同源的Aloha协议。
夏威夷大学的研究人员为解决共享网络(shared network)的结点组网问题,开发了Aloha协议。共享网络的特点是: 所有通信结点都在同一信道上,就像一个房间里的所有人; 每个结点发送的信息其他结点都可以收到,好比一人讲话其他人都可以听到,但每个接收者(听众)可以自行判断是否接受; 如果有两个或两个以上结点同时发送信息(多个人同时发言),则产生冲突。此外,Aloha协议的共享网络里不设控制中心(没有会议主持人),所有结点都是对等的,就靠结点自身实现任意两个结点间和谐的通信关系。
Aloha是夏威夷方言中“你好”的意思,就像结点们在一个通信环境中互相打招呼、互相交流。纯Aloha协议(pure Aloha)采用随机接入方法:
(1) 当结点有数据需要传送时,如果检测到信道空闲,立即启动发送。
如果接收方正确收到数据,响应ACK确认;
如果接收方收到的数据有误,则回复NACK。
(2) 当网络上的两个结点几乎同时启动发送数据时,冲突产生,两个结点侦测到碰撞后都终止本次发送。
(3) 冲突结点等待一段随机时间,回(1)再次尝试传送。其中等待随机时间(称为退避时间)非常重要,可以由此错开两个结点的发送节奏,当等待时间较长的结点发现信道已被占用,就不会再发送,从而避免再次碰撞。
纯Aloha难以应对过多的冲突,改进方法为时隙Aloha协议(slotted Aloha),把信道按时间轴进行分段,形成时间片(time chip),在满足发送条件的前提下,每个发送者只能在一个分段(时隙)的开始处进行传送,每次传送的数据必须少于或等于一个时隙。这样在很大程度上避免了用户发送数据的随意性,减小了传输冲突发生的概率。
Aloha协议没有采用繁复的控制技术,而是把正常情况下发送信息的门槛降到最低,极大地减轻了结点的负担,一旦有冲突才采取恢复措施,而且方法也不复杂。所有通信结点都相互对等,可随时加入或离开系统,在一定规模范围内,无论结点多少都可正常工作。这一简单而有效的技术理念具有强大生命力,影响了许多后续产生的网络技术。
目录
第1章货币认知
1.1货币简史
1.2数字货币
1.3交易与记账
1.4虚拟货币
1.4.1信任机制
1.4.2共识机制
1.5数字资产
1.6虚拟币困境
第2章比特币认知
2.1比特币起源
2.2比特币基本概念
2.2.1比特币区块链
2.2.2比特币生成
2.2.3比特币交易
2.2.4比特币地址
2.2.5比特币网络
2.3比特币系统
2.3.1比特币挖矿
2.3.2比特币系统组成
第3章密码学基础
3.1密码学基本概念
3.2对称密钥加密
3.2.1分组加密技术原理
3.2.2SM4算法
3.2.3DES算法
3.3非对称密钥加密
3.3.1非对称密钥加密技术原理
3.3.2RSA算法
3.3.3ElGamal算法
3.3.4ECC算法
3.4单向函数加密
3.4.1单向函数技术原理
3.4.2CRC算法
3.4.3MD算法
3.4.4RIPEMD算法
3.4.5SHA算法
3.5单向陷门函数
3.6量子密码
第4章数字签名技术
4.1数字签名技术原理
4.2MAC算法
4.3DSA算法
4.4ECDSA算法
4.5数字证书
4.6环签名
4.7盲签名
第5章对等网络技术
5.1对等网络技术架构
5.2对等网络典型技术
5.3共识算法
5.3.1拜占庭容错算法
5.3.2实用拜占庭容错算法
5.3.3比特币共识机制证明
第6章比特币技术原理
6.1比特币区块链技术原理
6.1.1版本号
6.1.2时间戳
6.1.3前一区块头哈希
6.1.4难度位
6.1.5计数器
6.1.6交易账本树根哈希
6.1.7比特币区块体
6.2比特币挖矿技术原理
6.2.1比特币挖矿准备
6.2.2比特币挖矿工作量证明
6.2.3比特币挖矿共识机制
6.3比特币地址技术原理
6.3.1比特币私钥生成方法
6.3.2比特币公钥生成方法
6.3.3比特币地址生成方法
6.4比特币交易技术原理
6.4.1比特币交易数据结构
6.4.2比特币交易规则
6.4.3比特币交易输入
6.4.4比特币交易输出
6.4.5比特币脚本系统
6.4.6比特币交易验证
6.5比特币通信协议
6.5.1结点联络类协议和消息
6.5.2区块交换类协议和消息
6.5.3交易交换类协议和消息
6.5.4网络管理类协议和消息
第7章比特币应用体系
7.1比特币钱包
7.1.1用户密钥创建方法
7.1.2简单支付验证SPV
7.1.3Bloom过滤器
7.2比特币交易点
7.3比特币价值
第8章区块链技术原理
8.1区块链概念
8.2区块链类型
8.3区块链技术特点
8.3.1区块链技术优势
8.3.2区块链技术弱点
8.3.3区块链分叉风险
8.3.4区块链升级风险
8.4虚拟币系统扩展
8.4.1染色币
8.4.2竞争币
8.4.3域名币
8.4.4比特消息
8.4.5以太坊
8.4.6区块链应用程序Dapp
8.4.7区块链社区
8.5克隆比特币
第9章区块链技术演进
9.1区块链扩展
9.1.1侧链
9.1.2树链
9.1.3块格
9.1.4DAG链
9.2共识机制扩展
9.2.1权益证明PoS
9.2.2权益授权证明DPoS
9.2.3重要性证明PoI
9.2.4其他共识机制
9.3超级账本
9.4智能合约
9.5闪电网络
9.6区块压缩
9.7隐私信息混淆
第10章区块链安全威胁
10.1区块链安全认知
10.2直接威胁
10.2.1缺陷攻击
10.2.2共识攻击
10.2.3脚本攻击
10.2.4协议攻击
10.2.5密钥攻击
10.2.6账号攻击
10.3间接威胁
10.3.1通信窃听
10.3.2拒绝服务
10.3.3劫持攻击
10.3.4恶意程序
10.3.5不良应用
第11章区块链安全防范
11.1资金安全
11.2交易安全
11.3信息安全
11.4协议安全
11.5系统安全
11.6设备安全
第12章区块链技术应用
12.1区块链体系架构设计
12.2基于钱包的Dapp设计
12.3云计算与区块链
12.4物联网与区块链
12.5大数据与区块链
12.6区块链+行业应用
12.6.1区块链+电子金融
12.6.2区块链+电子商务
12.6.3区块链+电子政务
12.6.4区块链+防伪溯源
12.6.5区块链+信用评估
12.6.6区块链+存管公证
12.6.7区块链+投票选举
12.6.8区块链+慈善捐助
12.6.9区块链+共享经济
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录