zl程序教程

您现在的位置是:首页 >  APP

当前栏目

区块链技术指南导读

2023-03-09 22:23:59 时间
前言

为什么要写这本书
1900年9月8日,一场4级强度的飓风横扫德克萨斯州的加尔维斯顿。这个位于墨西哥湾的岛城,靠近德克萨斯海岸,在灾难来临前拥有37?000人口和光明的经济前景。飓风猛烈攻击了这个毫无防备的低海拔城市,给该市带来了巨大的毁坏。飓风风速为每小时225千米,毁掉了3600座建筑,使占整个城市3/4的12个街区彻底消失,死亡人数为8000~10?000人。是迄今为止,美国历史上死亡人数最多的自然灾害。
而2016年8月2日在中国华南沿海登录的“妮妲”台风,风力14级,最高风速每小时151.2千米,台风过境的广东、广西、湖南、贵州、云南5省(自治区),虽然也造成了重大经济损失,但在人员伤亡统计报告中,只有1人失踪。
这两次自然灾害的结果如此不同,归功于人类掌握了计算这个神奇工具。在妮妲形成过程中,美国、日本、中国气象监控部门就不断跟踪,通过监控数据,气象数学模型和强大的计算能力,对台风进行了准确的预报和预警。在台风到来前,有关部门做了积极准备,7.6万人得以紧急转移安置,使得损失得以降到最低。
今天,IT已经渗透到各行各业,人们已经能近距离接触无人驾驶、机器人、虚拟现实(Virtual Reality)、增强现实(Augmented Reality)等先进技术,当人们在享受IT给人们生活带来的各种便利和好处的时候,也日益感受到来自不当使用科技所带来的挑战。例如,国内日益猖獗的电信诈骗,全球范围内黑客的攻击和安全勒索,以及未来基因技术和AI(人工智能)技术给人类所带来的伦理、生活和工作方面的全方位冲击,都使得有识之士开始思考如何应对科技发展所带来的风险。
一直以来,笔者对计算技术有一种既感恩又敬畏的情结。首先感恩我们的时代,计算技术的发展使我们避过很多前人无法避过的灾难;但高速发展的计算技术必然导致机器的智能超过人类自身,因此而产生的未来不确定性也使笔者的敬畏之心油然而生。
笔者也一直有一个预感,未来可能需要针对IT,特别是与业务结合紧密的云计算和智能设备建立监管、问责的机制。笔者的意思不完全是对从事IT或智能设备的人进行监管问责,甚至要考虑对智能设备进行自动问责。这个看似荒谬的想法促使笔者选择了云计算的问责机制(Accountability in Cloud Services)作为博士研究方向。
所谓云计算的问责机制(Accountability),指的是在云计算架构中,能建立一个自动化的问责机制。该机制包括形式化的标准服务合同定义,服务合同的发布,服务合同执行的监控,合同违约方的自动发现,违约方的罚则和执行,以及合同双方争议的仲裁。举个例子来说,今天公有云的提供商,都没有提供能让电脑理解的云服务合同。合同双方的责任、义务和权利没有精确的界定;云服务提供商的服务好坏,是否遵从合同,都没有自动化的方法去检测;服务故障责任也没有办法界定;出现争议也只能靠人工去解决。而云计算的问责机制,旨在建立一个自动化的体系来让电脑自动规范电脑的行为。
可想而知,这个研究课题非常有挑战。在博士研究的过程中,笔者也走了很多弯路,一直没有找到好的解决方法,直到三年前接触到比特币,突然意识到区块链技术是提供问责机制的最理想平台。这是因为区块链技术中的防伪、防篡改、交易可追溯、数字签名和智能合约技术提供了一个公正、可问责(Accountable)、自动执行的技术平台基础。
但是区块链目前还停留在概念炒作阶段,很多关注点还停留在金融应用,特别是虚拟货币方面的应用。笔者认为,区块链未来可能最适合作智能设备的“警察”,为物联网和智能设备的自治管理提供一个基础平台。区块链技术应该推广应用到除金融外的行业,因此萌生了写这本书的念头,作为博士研究工作的一个延续。
而写这本书的另一个原因,也是深感在学习区块链技术过程中碰到的参考资料不足的痛苦,希望能整理过去的学习所得,对区块链初学者有所帮助。
从2008年中本聪发表比特币白皮书算起,区块链技术才走过短短8年的时间。虽然区块链1.0、2.0和3.0的架构理念已经提出并得到一定程度上的认可,但区块链的技术发展仍然处于初级阶段,区块链的应用还刚起步,成熟的区块链应用除了比特币系统,还寥寥无几。在这种情况下写关于区块链的书籍,其实面临一个两难境况。一是区块链的技术变化快,像个移动的靶子;可供参考的资料又少,要准确把握一个快速变化的技术非常困难,而且受限于写笔者的水平,实践经验,写出来的书难免有很多错误,弄不好会贻笑大方。而另一方面,正因为变化快,资料少,广大区块链技术爱好者又渴望能找到一本对他们学习、理解、掌握区块链架构和技术有所帮助的书。
目前在市场上的区块链书籍大致分为两类:一类是以梅兰妮·斯万(Melanie Swan)的《区块链:新经济蓝图及导读》为代表的,谈区块链对整个宏观层面所带来的革命性影响的战略性书籍;一类是以安德鲁·安东普洛斯(Andreas M. Antonpulos)的《精通比特币》,以及普林斯顿大学以阿文·拿瑞延南(Arvind?Narayanan)为首编著的《比特币和密码学技术》为代表的专注于比特币的技术性书籍。这些书籍满足了目前市场上一部分对区块链在行业中的应用有兴趣的偏业务的人士,以及对比特币技术有兴趣的偏技术的人士的需求。
在这两类书籍所覆盖的市场中,其实还有一个很大的空白。我们发现,在对整个区块链架构(包括区块链1.0、2.0和3.0)进行系统性剖析,包括对其中关键技术(密码学、共识算法)等进行系统性论述,对不同的区块链架构形式(联盟链、公共链、私有链、侧链、多链、互联链等)进行系统性介绍的书好像还没有。而这样的书对理解、普及区块链技术,推动区块链应用落地可能会有所帮助。因此,与其等待这样的书籍出现,不如自己行动,为区块链技术的推广尽绵薄之力。笔者也就自不量力,把可能被同行笑话的风险置之脑后,鼓起勇气集合几个对区块链着迷、志同道合的朋友,在条件不成熟,时间比较仓促的情况下,经过不少不眠之夜的努力,克服重重困难,特别是在机械工业出版社华章分社编辑高婧雅的大力协助下,完成了该书。
本书的缺点是显而易见的。
一是因资料匮乏、技术变化快而难免出现技术错误。因此,本书的目的,主要是抛砖引玉,欢迎读者多提宝贵意见,争取在下一版本能纠正大部分的错误,不断完善、提升本书的质量。
二是缺少应用案例。其实目前网上的应用案例也有不少,但是我们认为,如果只是拿别人在网上的案例加工修改,从深度、广度方面都经不起推敲,起不了真正案例的作用。除非由真正落地该应用案例的主要负责人来写,才能使读者有真正的收获。受限于我们的人脉圈子和条件,目前只能请到PPKpub.org开源社区组织者陈晖先生来写一个区块链在标识注册方面的应用案例。在此鸣谢陈晖先生的大力支持,将来也欢迎有更多的区块链应用的领军团队提供应用案例,在未来更新的版本中补上在应用案例方面的短板。
本书特色
1)和目前市场上主流的区块链书籍强调区块链去中心化的概念,以及对业界带来的革命性影响不同,本书主要是从技术的角度,介绍区块链的基础概念,特别是对区块链的架构进行了详细的剖析。
2)对区块链的关键技术,包括区块链架构(1.0、2.0、3.0)、密码学和共识算法等做了一个详尽的介绍。
3)提供了比特币开发指南,通过以太坊智能合约开发来帮助初学者入门。本书也用专门一章来讨论区块链的常见问题,包括对近期发生的DAO攻击事件,都有详细的分析。
4)在区块链技术落地方面,本书也提供比较典型的区块链解决方案,包括支付和标识登记方面的解决方案。
5)以独特的架构演进对IT发展的影响为切入点,给读者展示一个全新观察整个IT历史的视角,并在这个视角下探讨区块链技术在未来IT发展中的影响和地位。
本书中一些实操的例子和章节,比较适合区块链初学者和程序员,可以成为区块链入门的书;架构剖析和深入分析方面的章节,比较适合IT架构师,以及区块链技术爱好者来深入了解区块链架构特点和技术细节,对设计区块链的解决方案有所帮助;解决方案和常见问题章节有助于区块链从业人员全面了解区块链应用落地方面的情况。最后一章是从架构视角对IT发展的一些观察,仅供喜爱思考的IT从业者参考。
读者对象
区块链从业者
IT架构师
区块链应用开发人员
对区块链技术感兴趣的人员
如何阅读本书
本书分为三大部分,共11章。
第一部分介绍基础和入门,包括以下2章内容。
第1章 本书的开篇,首先介绍区块链的定义和特点,并简单介绍了区块链的主要类型,然后通过介绍购买、存储和交易比特币等实际使用场景来让读者对区块链有所体验,然后再探讨一些关于区块链的常见问题。
第2章 介绍区块链的基础概念,为后面深入介绍区块链技术做铺垫。
第二部分介绍架构和核心技术,包括以下8章内容:
第3章 详细介绍区块链1.0、2.0、3.0典型架构,同时介绍了互联链的概念和架构。
第4章 详细介绍了区块链涉及的密码学原理和典型的算法。
第5章 介绍了在区块链架构中常用的共识算法。
第6章 提供比特币开发指南,通过实际案例来帮助初学者入门。
第7章 提供以太坊上的智能合约开发指南,帮助初学者掌握智能合约的开发要领。
第8章 详细介绍HyperLedger开源项目及其架构。
第9章 讨论区块链上常见的问题,包括最近出现的The DAO攻击的源码级分析。
第10章 讨论区块链上的典型解决方案,一个是以闪电网络为主的支付方案,另一个是以标识登记为主的开源ODIN解决方案。
第三部分为回顾和展望,即第11章,主要回顾IT架构演进历史并展望未来区块链对IT发展的影响。
勘误和支持
由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎通过微信或邮件进行讨论。你可以通过微信joezou3986、微博@云中君3986,或者发送邮件到邮箱joezou@openstack.org.cn联系到我,期待能够得到你们的真挚反馈,在技术之路上互勉共进。
致谢
首先感谢我的作者伙伴——张海宁先生、唐屹教授、李磊教授、刘天喜博士、陈晖先生、曲烈博士和郑晓明博士。他们在工作之余,挤出宝贵时间为本书贡献了他们对区块链技术的理解和洞察。特别感谢我的大学同门师弟Henry张海宁先生在关键时刻的出手相助,为本书贡献了很多精力,他不单在内容上积极供稿,也在本书的审定、修改和校正方面下了很多工夫。唐屹教授和李磊教授也在繁忙的教学和学术研究中抽出时间来对一些区块链的基本概念和关键技术(包括密码学和共识算法)做了详尽的阐述。刘天喜博士在本书的框架规划和开篇设计上做了很大贡献。而陈晖先生的比特币开发指南对很多初学者入门有很大的帮助,他的ODIN开源项目也是区块链登记方面的一个典型解决方案。曲烈博士的智能合约开发章节给众多以太坊开发初学者提供一个易懂、易上手的应用指引。郑晓明博士也对主流代币做了比较全面的介绍。
本书作者也得到中关村区块链联盟的大力支持,在此也特别鸣谢中关村区块链产业联盟秘书长王安平先生、副秘书长范金刚先生和林大鹏先生以及联盟发展部张培部长。同时也感谢江源老师、江苑绛博士,他们的鼓励成为我坚持下来的动力。另外在写书过程中也得到澳洲富士通区块链技术架构师董仲利先生、信达证劵区块链首席专家曹寅先生、亚投行企业IT项目管理专家Allen邵以及合肥工业大学刘古刘和方辉先生的帮助,在此对他们表示感谢。
另外感谢比特币开源社区、以太坊开源社区,以及巴比特社区的各位技术专家们的博客文章,每次阅读必有所获,本书也多处引用了他们的观点和思想。
非常感谢机械工业出版社华章公司的编辑高婧雅,她的敬业精神和编辑效率令我由衷敬佩,她的反馈、建议、鼓励和帮助引导我们克服诸多困难完成全部书稿。
特别致谢
最后,因为工作和写书,牺牲了很多本该陪伴家人的时间。我要特别感谢我的母亲从小对我的培养,也要感谢我的哥哥姐姐们在儿时营造的和睦互助、求知好学的家庭环境,这对我长大以后形成对新兴技术浓厚的求知欲性格有很大影响,一直以来在我的职业生涯中都受益匪浅。更要感谢我太太Annie长期以来对我的默默支持,以及女儿Beverley,儿子Skyler对我工作的理解。
谨以此书献给我最亲爱的家人,多年以来帮助、支持我的师友们,以及众多热爱区块链技术的朋友们!
我想和作者聊聊
如果你想和本书作者沟通,可以通过以下方式。
1)微信群“区块链技术交流群”,添加群助理微信号xiaodanmyd入群。
2)QQ群“区块链技术交流群”,群号375936045。
3)关注微信公众号“链信Chain2Trust”。
4)邹均微信号:JoeZou3986,添加请注明沟通事项。

邹均




目录

序一:什么是区块链
序二:区块链——未来已来,只是尚未流行
序三:区块链——连接虚拟与现实
序四:区块链——转型之擎
第1章 区块链和比特币初体验  
第2章 区块链基础  
2.4 本章小结  
第3章 区块链架构剖析  / 59
3.1 基本定义  / 59
3.2 区块链1.0架构:比特币区块链  / 61
3.2.1 比特币前端  / 63
3.2.2 比特币节点后端  / 66
3.3 区块链2.0架构:以太坊区块链  / 79
3.4 区块链3.0架构:超越货币、金融范围的区块链应用  / 87
3.5 互联链架构剖析  / 90
3.5.1 互联链背景  / 90
3.5.2 互联账本  / 91
3.5.3 互联账本协议组  / 92
3.5.4 互联账本各层协议关系  / 95
3.6 本章小结  / 96
第4章 区块链中的密码学技术  / 97
4.1 哈希算法  / 97
4.1.1 哈希函数的性质与应用  / 99
4.1.2 哈希指针链  / 101
4.2 Merkle树  / 102
4.3 公钥密码算法  / 103
4.3.1 椭圆曲线密码算法  / 104
4.3.2 secp256k1椭圆曲线  / 105
4.3.3 椭圆曲线签名与验证签名   / 106
4.4 本章小结  / 107
第5章 共识算法详解  / 109
5.1 拜占庭容错技术  / 109
5.1.1 拜占庭将军问题  / 110
5.1.2 拜占庭容错系统  / 112
5.1.3 实用的拜占庭容错系统  / 112
5.1.4 Raft协议  / 114
5.2 PoW机制  / 116
5.3 PoS机制  / 122
5.4 DPoS机制  / 123
5.5 Ripple共识算法  / 124
5.6 小蚁共识机制  / 126
5.7 本章小结  / 127
第6章 比特币应用开发指南  / 129
6.1 以虚拟机方式搭建应用开发环境  / 129
6.1.1 下载和安装Oracle VM VirtualBox  / 129
6.1.2 以虚拟机方式安装Ubuntu14.04  / 133
6.1.3 安装Node.js开发环境  / 138
6.1.4 安装Docker运行环境  / 138
6.1.5 安装和运行比特币测试网络  / 139
6.1.6 运行第一个示例程序  / 141
6.2 把握比特币“交易”数据结构  / 145
6.2.1 了解比特币的“交易”数据结构  / 145
6.2.2 交易记录的实例解析  / 146
6.2.3 运行示例程序  / 148
6.3 实战:多重签名交易  / 153
6.3.1 将ODIN标识注册到区块链上的实例解析  / 153
6.3.2 运行示例程序  / 156
6.4 本章小结  / 157
第7章 智能合约  / 158
7.1 智能合约简介  / 158
7.1.1 什么是智能合约  / 158
7.1.2 智能合约的历史  / 159
7.1.3 智能合约的优点和面临的风险  / 160
7.2 以太坊智能合约详解  / 161
7.2.1 以太坊上的账户  / 161
7.2.2 以太币和Gas  / 166
7.2.3 合约和交易  / 167
7.3 以太坊虚拟机  / 170
7.4 实例:在以太坊上开发实施智能合约  / 173
7.4.1 通过以太坊钱包部署智能合约  / 173
7.4.2 通过控制台部署智能合约  / 179
7.5 本章小结  / 183
第8章 超级账本项目  / 184
8.1 超级账本项目简介  / 184
8.1.1 项目背景  / 184
8.1.2 项目管理形式  / 185
8.1.3 项目的生命周期管理  / 186
8.1.4 项目发展状况  / 187
8.2 Fabric项目  / 187
8.2.1 项目概述  / 187
8.2.2 应用场景  / 188
8.2.3 项目架构  / 189
8.2.4 部署方式  / 191
8.2.5 交易的执行  / 192
8.3 Sawtooth Lake项目  / 193
8.3.1 项目概述  / 194
8.3.2 项目架构  / 194
8.4 本章小结  / 196
第9章 区块链常见问题  / 197
9.1 钱包的安全性问题  / 197
9.2 加密货币的交易方式  / 199
9.3 匿名性和隐私性  / 201
9.4 矿池算力集中的问题  / 203
9.5 51%攻击问题  / 205
9.6 去中心化的自治组织  / 207
9.6.1 去中心化的自治组织简介  / 207
9.6.2 The DAO项目  / 208
9.6.3 代码漏洞分析  / 210
9.6.4 解决方案  / 213
9.6.5 软分叉和硬分叉的影响  / 215
9.6.6 重放攻击   / 216
9.7 本章小结  / 219
第10章 区块链应用案例分析  / 220
10.1 闪电网络  / 220
10.1.1 闪电网络简介  / 220
10.1.2 支付通道的创建  / 221
10.1.3 支付通道的更新  / 223
10.1.4 支付网络的构建  / 223
10.1.5 支付通道的关闭  / 225
10.1.6 小结  / 226
10.2 ODIN:用区块链来替代DNS  / 226
10.2.1 ODIN简介  / 227
10.2.2 实现功能  / 228
10.2.3 主要特点  / 229
10.2.4 ODIN标识编码格式  / 229
10.2.5 ODIN标识技术规范  / 232
10.2.6 使用示例  / 233
10.2.7 开放资源  / 234
10.2.8 问题与思考  / 234
10.3 本章小结  / 236
第11章 从架构变革看IT时代的演进  / 237
11.1 架构心得  / 237
11.1.1 架构和技术的关系  / 237
11.1.2 关于计算的观察  / 238
11.1.3 架构创新的神奇力量  / 238
11.1.4 冯·诺依曼架构  / 239
11.1.5 哈佛体系架构  / 240
11.1.6 有影响力架构的特点  / 240
11.1.7 从非生物计算到非生物智能  / 241
11.2 架构创新——IT发展源源不断的动力  / 242
11.2.1 大中型机时代  / 243
11.2.2 开放时代的到来  / 243
11.2.3 客户端/服务端(CS)分布式时代  / 243
11.2.4 互联网时代  / 244
11.2.5 云计算、大数据时代  / 246
11.2.6 互联网+时代  / 250
11.2.7 区块链+时代  / 252
11.3 未来展望  / 254