前言
2008年由中本聪第一次提出了区块链的概念,在随后的几年中,区块链成为了电子货币比特币的核心组成部分:作为所有交易的公共账簿。2017年笔者的很多朋友已经在关注区块链技术领域,笔者也在各种技术峰会上分享过多次区块链技术实现细节,在线上也组织了几个区块链技术群。笔者发现有相当多的朋友询问如何深入学习区块链实现技术,但目前市面上很多的资料都仅介绍区块链上的某部分技术,比如加密货币交易、智能合约开发等,并没有完整介绍公链的技术实现。在一次技术峰会演讲后与北京邮电大学区块链实验室的老师交流,受到陈萍老师的鼓励,想到编写一本系统性介绍公链开发的书籍,对学习区块链的初学者会有帮助,于是便开始组织本书的写作。
本书的目标是引导读者全面了解区块链技术实现原理,笔者也一直坚信,了解某一系统最直接的方式就是研读它的源码,所以本书并不是只介绍区块链技术,而是深入分析其背后的实现原理。通过阅读本书,读者可以全面地了解一条公链的技术实现。本书基于比原链的源代码进行分析,比原链是一个开源的有智能合约功能的公共区块链平台,是国内优秀的公链,目前比原链的代码量不多,而且源码结构清晰,特别适合初学者学习。
本书主要内容包括:
第1章介绍公链设计架构,使读者能够宏观地了解区块链技术架构。
第2章介绍比原链相关的交互工具,包括交互工具的操作及代码实现。
第3章介绍比原链的核心进程bytomd,包括启动过程中的初始化等操作。
第4章介绍API Server实现及原理。详解HTTP请求的完整生命周期,并介绍区块链相关的API接口设计。
第5章和第6章详细介绍区块链核心部分,包括区块、区块链、交易的核心数据结构,以及UTXO模型、隔离见证、交易脚本、验证等概念的实现。
第7章和第8章详细讲解比原链智能合约以及智能合约在BVM虚拟机上运行的过程。
第9章介绍区块链钱包的基本概念,包括密钥、账户、资产管理、交易管理等,以及钱包的备份和恢复方式。
第10章详解区块链P2P分布式网络实现原理,以及Kademlia结构化网络算法的实现。
第11章介绍数据持久化存储,以及区块与交易的缓存和存储过程。
第12章和第13章详解PoW与PoS共识机制以及挖矿相关的概念和流程。
第14章介绍区块链技术未来的发展趋势,我们相信区块链能够为人类做出重大贡献。
本书适合区块链开发者、Go语言开发者阅读。由于时间与水平比较有限,我们在编写本书时也难免会出现一些纰漏和错误。读者可以随时通过邮箱weilandeshanhuhai@126.com与我们联系,希望和大家一起学习与讨论区块链技术。
本书在写作过程中得到很多人的帮助,特别是郜策宇、陆志亚、王庆华,在此深表感谢。尤其感谢比原链技术团队设计了这样一个优秀的公链,给区块链社区做出了贡献。
郑东旭
2019年3月14日