前言
为什么要写这本书
2017年8月1日,在比特大陆(Bitmain)的大力推动下,比特币社区发生了比特币现金(BCH)分叉事件。比特币一分为二,BCH改变了中本聪原先制定的规则,将区块大小从1MB扩容到了8MB。后续比特币社区陆续有20多个分叉项目出现。与此同时,ICO项目在国内层出不穷,各种空气币、资金盘等借区块链圈钱诈骗的事件不断出现。2017年9月4日,中国人民银行等七部委,宣布ICO非法,关停国内的场内虚拟货币交易所,并责令各类ICO项目清退募集的虚拟货币。可以说,BCH分叉事件标志着区块链行业的发展从“春秋时代”过渡到“战国时代”。
另一方面,透过币圈纷繁喧嚣的现象,我们也要看到,近年来区块链技术发展进入一个百舸争流、百家争鸣的时代。以比特币为代表的区块链1.0和以以太坊为代表的区块链2.0虽然在数字资产发行方面取得了很大成功,但在区块链应用落地方面却非其所长。业界涌现出很多项目,都号称是区块链3.0的代表,争相提出新的共识机制、分片机制、数据结构、跨链协议、链下计算、状态通道、隐私保护算法、治理机制和安全措施等新技术。新的理念,像区块链操作系统、区块链中间件、区块链网络、分布式Oracle层出不穷。自笔者2016年出版《区块链技术指南》一书以来,区块链技术和应用已经有很大的发展,业内需要有一本更新的,更加全面、翔实地反映当前区块链技术现状的技术参考书。
最早酝酿这本书是在2017年的5月中旬,由北邮在线董事长于斌和主任张权召集了几个区块链专家,讨论联合出书的可行性。自那以后,参与写作的各位作者开始了为期一年的漫长业余写作。其中所遇到的困难远远超出了当初的想象。也经常有朋友问,为什么要在区块链正值风口的时候,选择写书这种既缓慢又没有多少收益的事情,特别是笔者“重操旧业”,再作冯妇,又花一年时间来写第二本区块链技术的书呢?细想原因有三:一是兴趣使然;二是两年来来自读者的鼓励和鞭策使我不能停下脚步;三是世界上总得有人做苦差,不可能每个人都可以分得美差。每每想到此处,心中也就释然。
在利用业余时间写作的这一年,与其说是写作区块链图书的过程,不如说是一个不断学习和思考区块链,不断质疑、校正、改变自己区块链思想的过程。区块链在这个科技飞速发展、社会热点风云变幻的时代,能持续得到这么广泛和持久的关注,原因在于其独特的技术属性产生的魅力。它的点到点对等网络、去中心化的设计、信息防伪防篡改的保障、基于算法的共识机制,由此衍生出的价值传递能力,按规则客观、忠实、自动履行合约的能力,隐私保护的能力,透明、历史可追溯的特点,使它不仅可以像传统技术那样只是提升生产效率,更重要的是可以改变生产关系。
因此社会很多不同阶层、不同行业、不同群体的人士都很大程度上对区块链感兴趣,原因是从区块链中看到了他们的理想工具。监管机构和执法机构看到了区块链加强监管、追踪证据的可能性;技术社区看到了技术创新的一个新方向;IT从业人员看到职业发展的新方向;创业者看到了创业的新领域;投资者看到了致富的新捷径;知识产权保护者看到了区块链确权、存证、维权的前景;反数据垄断者看到了区块链的防止大平台垄断的希望;制度设计者和管理者看到了降低信任成本从而降低交易成本的潜力;改革者看到了用区块链来革除弊端,并在数字经济时代重构组织架构、重塑生产关系的前景。
所有这些扮演不同角色,怀揣不同目的和想法的群体都不约而同地关注区块链,因此可以想象,区块链领域是多么热闹。这里面会有真知、洞见;也有炒作、夸大、神化;甚至有歪曲、抹黑。没有先入为主的广大读者群体,希望看到的是一本还原区块链技术本质,不加修饰、点缀,甚至不掺杂主观思想的纯技术书籍。这也是笔者在写作过程中才发现的一个写作驱动点。
但从另一方面来看,每个区块链的观察者或从业者,都会有自己角度的观察和解读,甚至提炼成的观点和思想。这些观点和思想需要讨论,需要碰撞,需要形成共识。因此,笔者也愿借本书前言一隅,谈谈自己对区块链的看法。
笔者认为,从实质上看,区块链是一个带有共识机制的分布式计算机网络,而共识的结果形成一个不可篡改的档案库。共识机制是一套协议,也是一套规则。在这个分布式的计算机网络中,大部分节点都需要遵守这套规则。如果不是这样,这个区块链系统就不能正常工作。要保证系统能正常工作,共识机制的设计就很重要。它必须能激励参与节点遵守规则,同时最好能惩罚不遵守规则的节点。需要共识的是每个节点中在某个时间点的状态,也就是说形成公认的、确定性的状态。在这里,可以把节点抽象成一个计算机科学里的概念——有限状态机(英文为Finite State Machine或Automata)。有限状态机指的是响应外界特定触发条件,并按一定规则做状态转换的抽象机器。例如我们日常所见的自动柜员机(ATM)就是一个有限状态机。它根据输入的指令,使系统内部发生相应的状态变化。以取钱为例,从等待输入到减少库存钞票、输出钞票,再回到等待输入等一系列状态变化。在ATM的这个例子中,系统变化的规则是由后台中心化的银行核心系统决定的。而在区块链环境中,可以想象成每个ATM机都是独立的,有自己的账本系统,不受银行的核心系统控制。在任何一个ATM机上取钱,其他的ATM机都要进行验证,最后大部分ATM机要达成对账本状态的一致性确认,这样才能把钱取走。
也就是说,区块链系统是一个在分布式系统中不通过中心管控节点而能使各节点保持步调一致的系统。从这个意义上来看,区块链是带有颠覆性的创新。过去,只有通过中心化的管控,才能使分布式的系统步调一致。而现在,通过运行在各节点的共识算法,就能使得分布式的系统按规则形成“自治”。
我们知道,自然界的系统都有一个自发的、逐渐变得无序的趋势,例如一间房,在没人打扫的情况下,会逐渐变得尘埃遍布。这就是热力学第二定律说的:一个封闭的系统总是向熵增加的方向发展。所谓熵,在热力学中就是一个无序、不确定性的量度。在香农创立的信息论中,信息是确定性的一个度量,而熵是信息量的一个度量。熵越大,越无序,信息量越少。而从这个意义上来说,区块链系统是一个熵值减少的系统,因为共识所确认的状态就是信息,而信息也就是有序和确定性。
一个运行良好的区块链系统,给我们提供了一个低成本的降低熵值的系统。毫无疑问,这会给关注社会、组织管理的人带来很大的启发意义。如何应用区块链来变革传统的制度、组织管理方式就成为一个需要重点关注的问题。不当的推广与不合时宜的应用,反而会阻碍区块链的应用和发展。
非常具有讽刺意味的是,区块链是一种依托算法建立信任的技术,但恰恰有很多人在区块链领域有非常多的不诚信做法。他们或许不知道,他们的很多言行,早已记录在大部分关注区块链的人们心中的账本上,就像区块链不可篡改和可追溯那样,历史不会遗忘那些借炒作区块链来达到损人利己目的的人。
区块链领域的从业者,需要建立行业自律,急需形成共识,建立一个区块链行业文化,以体现区块链的透明、诚信、公正、公平的特点。
因此,写这本书的目的,不仅希望从技术层面提供一本接近客观、真实的区块链书籍,更希望在求真务实的基础上,使广大关注区块链的社区能凝聚共识,弘扬区块链领域的正能量,建立行业自律,使得区块链技术和应用得到健康持续的发展。
本书特色
希望本书能为想要系统了解区块链技术的从业人员提供比较完整、及时、翔实的指导。本书首先对基本概念做了详细讲解。然后就一些区块链基础知识,如区块链架构、密码学、共识算法、P2P网络等做了详细阐述。再结合区块链的主流平台,像比特币、以太坊、超级账本Fabric来讲解不同区块链平台实现的原理。接着分析向区块链3.0发展的不同新项目的特点,其中重点讲述当前具有区块链操作系统特性的EOS项目的技术现状。同时也简单描述代表区块链3.0的不同发展方向中的项目,包括:区块链网络中的闪电网络、Cosmos、Polkadot;侧链中的Rootstock、Lisk; DAG中的IOTA、Byteball、HashGraph;新型区块链系统Cardano;区块链存储或存储挖矿系统StorJ、Burstcoin、Filecoin等。最后讨论区块链领域存在的问题以及区块链测评等问题。
技术的全面性、翔实性、实操性和技术更新的及时性应该是本书的最大特色。其中,书中特别强调实操,在很多章节都有可供读者自己动手配置环境、运行代码的参考性内容。要真正掌握一门新技术不容易,特别是像区块链这种融合多种技术的新型技术架构。我们学习区块链,要做到“知行合一”,不单是要读区块链书籍,还要亲自动手配置环境和编写代码,以此来验证学到的知识。更重要的是,还要把学到的区块链知识应用于实际。只有这样,才是真正的“知”。
读者对象
❑区块链应用开发人员
❑区块链架构师
❑区块链底层开发人员
❑计算机专业的本科或研究生
❑区块链相关的业务和管理人员
❑其他对区块链技术感兴趣的人员
如何阅读本书
本书分为三篇,共计12章内容。
第一篇为核心技术篇,着重讲解区块链相关的基本概念、基础架构和核心技术,包括以下7章内容。
第1章 从互联网发展碰到的局限和挑战、分布式计算的演变出发,引出比特币的诞生背景,并简单介绍比特币的特点和局限。最后重点阐述区块链相比于互联网在信任建立和价值传递方面的重大意义。
第2章 介绍了区块链的基本概念和区块链的基本技术,覆盖P2P网络、密码学、共识机制、智能合约等各核心技术的基本概念。
第3章 给读者展现了一个整体的区块链架构。通过对不同区块链异同点的分析,总结区块链的本质,进而从本质和发展角度给出了区块链的架构模型和部署模型。
第4章 系统介绍了区块链常用的密码学技术原理,包括哈希算法、公用系统的非对称加密原理、数字签名技术和零知识证明、环签名等隐私保护算法。
第5章 系统介绍了强一致的共识算法和最终一致性共识算法,并讨论了主要区块链平台的共识算法。
第6章 介绍了区块链P2P网络协议的定义、产生、特征等基本内容,详细阐述了区块链P2P技术的基本结构、工作过程、网络构架等内容,最后重点以比特币和以太坊为例,介绍其P2P协议的基本内容和工作原理。
第二篇为实战篇,着重讲解主流区块链平台的架构原理与应用,包括以下3章内容。
第7章 详细深入地介绍了比特币系统的基本部分,包括区块数据存储、共识机制、密码算法、脚本引擎以及P2P网络处理模块,并讲解了比特币如何通过组合这些技术实现一个点对点的电子现金系统。
第8章 介绍了以太坊的出现背景、关键概念,详细说明了以太坊的核心架构。同时对以太坊智能合约和流行的高级合约语言Solidity也做了详细说明,构建了一个以太坊测试网络,并在网络上编译、部署和运行智能合约的案例。
第9章 主要阐述了超级账本权限链Fabric项目的架构原理和应用开发流程,并用实例讲解如何使用Fabric开发应用。
第三篇为进阶篇,讲解区块链的发展方向、潜力框架、常见问题,以及测评方法,包括以下3章内容。
第10章 总结了区块链技术发展的主要方向,简单介绍了主流平台以外一些富有特色的区块链平台以及它们的特点和应用,包括EOS、Cardano、IOTA等。
第11章 介绍了许多区块链领域内的常见问题,包括区块链的技术局限、数据冗余、安全性、各种共识协议的弱点、交易速度、51%攻击问题、女巫攻击、交易所及以太坊智能合约安全漏洞,并讨论了相应的应对措施。
第12章 从区块链系统整体出发,采用正交分析法,从6个层面和8大类质量指标来设计评测点和测试用例。
如果你没有充足的时间完成整本书的阅读,可以选择性地进行重点章节的阅读。如果你是区块链初学者,可以重点学习第一篇。如果你是一位有着一定经验的资深人员,本书可能会是一本可提供参考的案前书,你可以直接跳到第二、三篇读你所感兴趣的章节,如比特币、以太坊或超级账本Fabric等章节。
勘误和支持
由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见或希望和笔者沟通,可以采取以下方式。
1)加入微信群“区块链核心技术读者交流群”,添加微信号zhixinglian23或liandajun3986入群。
2)关注微信公众号“链信Chain2Trust”。
期待能够得到你们的真挚反馈,让我们在技术之路上互勉共进。
致谢
这本书是集体智慧的结晶。首先感谢参与策划和写作的伙伴们。他们是北邮在线董事长于斌博士、IBM架构师庄鹏先生、清华大学信息学院邢春晓院长、赣州新链总经理范金刚先生、VMware应用开发首席架构师张海宁先生、《白话区块链》第一作者蒋勇先生、亚投行IT战略顾问邵周先生、广州大学唐屹教授、IBM架构师郭莹城先生、联动优势首席架构师刘胜先生、清华大学张桂刚博士、VMware程序员陈家豪。他们花了很多心血,牺牲了大量的业余时间来收集资料、写作,贡献他们各自的章节,体现了他们的专业精神。特别是庄鹏先生,不单提供了全面、翔实的内容,还协助笔者做审校。另外要鸣谢联动优势的向峥嵘博士,他协助笔者做本书的审校、统稿,为本书的顺利出版做了大量工作。同时需要感谢北京大学密码学研究员陈宇教授,美国Visa研究员、波士顿大学密码学博士陈一镭,他们对密码学章节进行审稿并提供了宝贵意见。另外要感谢本书的特约策划、北邮在线的张权主任,他不断地跟进本书进度,使笔者不敢有些许松懈。
笔者衷心感谢为本书作序的各位前辈和大师。其中中国数字资产研究院朱嘉明院长在笔者写书过程中一直给予很多鼓励,并为本书初稿提供了宝贵的意见。他另外用近一个月的时间为本书作了一个长达万言,极具思想深度和原创观点的序言。序言中涉及不同领域的专业知识,朱教授都反复和各领域专家进行讨论、充分论证,力求做到准确无误。朱教授的严谨治学态度堪称学术界的楷模。中国人民银行数字货币研究所姚前所长在百忙之中抽出时间为本书作序,指出需要用发展的眼光来看待区块链和区块链技术;中国区块链基础技术与应用协同创新联盟理事长、中国计算机协会区块链专委会主任、复旦大学斯雪明教授也在繁忙的教学、科研工作中抽出时间为本书作序。大师们严谨治学、乐于帮助后进的精神值得我们学习。
感谢区块链项目的官网文档和开源社区,在写作期间提供给我们准确的参考材料。
感谢中国可信计算创立者、中国工程院沈昌祥院士对本书提出了宝贵的建设性批评意见;也感谢中国大数据技术与应用联盟副理事长赵平生先生、狗狗币中国区社区创始人周朝晖先生、中国数字资产研究院秘书长林茜女士、冯永强律师、OFBank创始人刘大鸿先生、PPKPub创始人陈晖先生、零壹财经CEO柏亮先生、零壹财经编辑孙爽女士、青岛链湾区块链研究院执行院长闫祖德、中国移动通信联合会国家区块链创新应用联盟秘书长陈晓华教授、布比CEO蒋海博士、中科院百人计划贺海武教授、太一云总裁邓迪博士、太一云研究院首席研究员甘国亮博士、爱立示CEO谈健博士、OFBank运营副总王飞先生为本书的成书提供了帮助和指导。另外要感谢中国数字资产研究院的张宇先生、中国数字资产研究院秘书王婉卿女士、中国数字资产研究院郑延伟先生、博彦科技的赵丹女士、知行链总经理曾健先生、知行链CTO盛义东先生和知行链市场总监张娜女士对出版该书的帮助。
最后感谢巴比特和CSDN社区的各位技术专家们的博客文章,每次阅读必有所获,有所启发。
最后要鸣谢中国数字资产研究院、中关村区块链产业联盟、中国电子学会区块链专委会、中国移动通信联合会、国家区块链创新应用联盟和中国计算机协会区块链专委会的大力支持!
特别致谢
最后,我要特别感谢我的太太Annie、女儿Beverley和儿子Skyler,我为写作这本书,牺牲了很多陪伴他们的时间,但也正因为有了他们的付出与支持,我才能坚持写下去。
同时,感谢我的父母和兄弟姐妹,虽然幼时家境艰难,但儿时良好的家教以及和睦互助的家庭环境使我具备了健康的心智,并受用无穷。
谨以此书献给我最亲爱的家人,以及众多热爱区块链技术的朋友们!
邹均