我至今清晰地记得,在2016年5月的一个傍晚,吴延毅、单青峰还有我在北航大运村一起吃烧烤的场景。单青峰满眼放光地谈起他最近在做的项目Asch(阿希),向我们解释了比特币和区块链的很多技术原理。我和吴延毅当时听得也很兴奋,预感这项技术未来肯定有很大的前景。
在那次聚餐之后,我开始在网上寻找相关的技术资料认真钻研,终于理解了什么是加密算法、工作量证明、UTXO等区块链的技术概念,内心对这项技术的热爱也与日俱增。后来慢慢开始以社区成员身份参与到Asch的相关工作中来,并且最终入职Asch,成为一名全职的区块链开发工程师。
Asch 始于2016年年初,当时单青峰在思考如何把区块链技术应用到更广泛的场景中,确定好了一些现在看来依然比较前沿的解决方案。比如,考虑到开发成本,选择了JavaScript语言,数据库方面选择了关系数据库;出于链的安全性和性能等方面的考虑,采用了侧链技术,每个应用都是一条独立的链。应用既可以保持自己的独立性和灵活性,又能够享受Asch这个生态带来的便利。后来,Asch 又率先在跨链方面进行了探索,并且在国内非常早地提出了跨链的解决方案并实现了跨链。
目前,区块链技术依然在快速地迭代。Asch 作为国内为数不多并且起步较早的专注于技术创新的项目,这一路上的实践经验是值得总结的,因此有了本书。希望本书能够被更多的同行看到,一起交流和促进区块链技术在国内的发展与应用。
本书用三个部分讲解了区块链技术以及Asch的相关实践,第一部分讲解了区块链技术的基本概念,并用300行代码实现了一个最小的、可运行的区块链;第二部分分析Asch的源码,讲解Asch的实现原理;第三部分介绍了基于Asch的侧链技术的DApp开发实战。全书共有12章,其中梁培利完成了第1、2、3、4、5、9章的创作,吴延毅完成了第6、7、8章的创作,曹帅完成了第10、11、12章的创作。下面是各章的内容介绍。
第一部分“区块链开发概述”
第1章“自己动手实现一个区块链系统” 这一章讲解了如何使用300行代码实现一个简单的区块链系统,内容包括区块和区块链的构造、工作量证明算法的实现以及通过 HTTP API 的方式提供与区块链的交互等。通过这章的实践,读者将会对区块链有一个基本的了解。
第2章“DApp开发简介” 这一章介绍了智能合约的基本概念以及案例,然后解释了DApp的概念及特点。通过这章,读者可以对智能合约和DApp有一个初步的认识。
第二部分“Asch源码解读”
第3章“Asch—区块链应用开发平台” Asch 是一个在2016年就发布主网的区块链应用开发平台,目的在于降低区块链技术应用的门槛,帮助企业和开发者快速地构建基于区块链的分布式应用(DApp),只要开发者会使用JavaScript以及有一定的开发经验。该章将会从Asch的发展讲起,一直到 Asch 的架构解析。希望读者在读完这章以后可以对 Asch 有一个清晰的了解。
第4章“Asch源码概览” 对于区块链项目来说,核心代码开源是基本的要求,这种情况也为我们提供了大量的学习资源。阅读项目源码是深入了解一个项目的最好方式。从这章开始,我们将会一起从源码级别探索 Asch 的实现与运行机制。这章的主要内容为源码概览以及启动流程简介。
第5章“账户与安全” 区块链的正常运转离不开密码学的支持。正是因为利用了安全的加密算法,区块链上的每一笔交易和区块的生产才有了安全的保证。这章首先探索区块链用到的基本算法,然后基于Asch的源码来解释Asch 里账户的生成与运用。
第6章“共识机制” 共识机制是一个区块链系统的灵魂。但是为什么区块链系统需要共识机制呢?这一章将从拜占庭将军问题谈起,一直谈到目前比较流行的 DPoS+PBFT算法,来看看共识机制解决了哪些问题,是如何解决的,最后简单介绍了 Asch 的共识机制实现。
第7章“区块” 区块是组成区块链的基本单位。一个区块的产生、打包交易、验证以及如何添加到区块链上往往和这个区块链系统采用的共识机制有关。这章主要介绍阿希链上区块的锻造、验证以及添加区块到链上等流程。
第8章“交易” 交易的核心流程和区块如出一辙,只不过交易是更泛化的概念,含义比较广,可以代表转账、投票等类型,这章将详细介绍Asch交易相关的流程。
第9章“跨链实现” 如今在区块链所面临的诸多问题中,区块链之间的彼此隔离成为了区块链技术应用和资产流通的阻碍。无论是公有链还是私有链,跨链技术都是实现价值互联网的关键。跨链技术是把区块链技术从目前一个个分散的孤岛中分离出来的良药,也是区块链相互通信的桥梁。跨链技术的必要性早已在链圈达成了共识。我们将在这章探索 Asch 的跨链实现原理。
第三部分“DApp开发实战”
第10章 “DApp设计与开发环境搭建” 这一章介绍DApp开发,从DApp设计者的角度,阐述如何从零到一设计一个 DApp,从业务模型、经济模型到数据模型三个层面逐层介绍,帮助我们更深入地理解区块链应用。
第11章“DApp合约开发与接口实现” 这章通过CCTime项目案例介绍合约开发与接口实现。通过这章的学习,读者可以知晓一个 DApp 开发的详细过程。
第12章“DApp测试” 前面的章节从环境搭建、应用设计、代码实现三个部分介绍