区块链(Blockchain)被认为是继蒸汽机、电力、信息、互联网之后,第五个最有潜力引发颠覆性革命的核心技术。它是数字化资产的分布式账本,是构建价值互联网的基石,是驱动分享经济发展的新引擎。区块链的共识算法、密码学以及数据库等技术手段,在商品溯源、跨境支付、供应链金融等方面已有实际应用。
本书首先介绍比特币的相关技术和理念,进而介绍区块链的共识算法、密码学等知识,最后带领读者搭建基于Hyperledger Fabric的区块链环境与应用。
本书内容由浅入深,理论与实践相结合,既适合区块链的入门者,也适合从事与区块链相关专业的人员参考。
为何写作本书
近年来区块链技术迅猛发展,各种基于区块链的创新和应用层出不穷。作为下一代互联网的底层技术,区块链已正式被纳入战略性前瞻性领域,其在推动数字产业化、健全完善数字经济治理体系等方面发挥着重要作用。现实中人们经常将区块链技术和金融、投资等画上等号,实际上,区块链本质上作为一种去中心化的分布式账本技术,已经渗透到各行各业,区块链对推动企业数字化转型,促进产业数字化发展,推进数字中国建设都起着强大的支撑作用。当前,政策叠加效应深度释放,我国区块链产业发展驶入“快车道”,已经成为驱动数字经济高质量发展的重要引擎。
区块链作为一种新兴技术,在繁荣和飞速发展的背后也隐藏着危机。目前区块链技术在实际应用中还存在以下困难:
1)系统的学习资料较少。区块链是近几年的新兴技术,目前有关区块链较为系统的资料比较少。
2)技术方向繁杂。区块链是一项融合了P2P、共识机制、密码学等的综合性技术,且技术之间存在关联。
3)有关区块链的实验环境和案例难以搭建。区块链是一门新技术,缺乏比较成功的案例;即使一些行业头部公司开发了个别成功案例,但是目前并没有公开,这些都会给区块链的实际应用造成一定的阻碍。
本书由浅入深,避免区块链的爱好者们因为深奥的技术知识而对区块链望而却步,我们希望读者通过这本书,在深入理解区块链的核心技术的同时,也能够将区块链付诸实践,进而解决现有技术无法解决的行业痛点。
读者对象
本书适合区块链技术爱好者以及入门者,对比特币、以太坊感兴趣的相关学者以及相关产业技术人员阅读。
主要内容
本书先对比特币、以太坊这两个典型区块链平台的理论进行了介绍,然后深入解析其中蕴含的密码学以及共识机制的方法原理,最后以Hyperledger Fabric为实战平台,提供实战项目案例,展示代码示例供读者参考。
区块链理论与实战
前言
全书共5章。
第1章:首先对比特币的背景以及特性进行介绍,进而讲解比特币的数据结构,包括哈希指针、默克尔树和区块结构,然后深入解析比特币的交易模型、挖矿过程等,帮助读者深入了解比特币。
第2章:通过以太坊的基本概述、账户、数据结构、Ghost协议以及挖矿这五个方面,系统地介绍了以太坊的结构以及应用。
第3章:从密码学的概念和发展历程、区块链中的哈希函数、主要的非对称加密算法、数字签名及零知识证明等方面,系统介绍了区块链安全的保障——密码学。区块链之所以能够解决人与人之间的信任问题,是因为它的不可篡改性,而这种特性本质上又是基于密码学算法来实现的。
第4章:介绍并深入探讨经典的分布式一致算法,包括Paxos、PoW、PoS以及PBFT。一致性问题是分布式领域最基础、最重要的问题,也是半个世纪以来的研究热点。分布式系统中如何保证共识是个经典问题,无论在学术方面还是在工程方面都有很高的研究价值。通过本章的学习,读者可以体会到在工程应用中的类似设计技巧。
第5章:将理论知识付诸实践,带领读者详细部署搭建Hyperledger Fabric环境,并进行实例开发,包括Fabric的技术特性、安装和使用、智能合约的部署以及食品溯源等项目的开发。
我国采取了一系列措施全面整治虚拟货币和“挖矿”活动,本书选取国外实例进行介绍,展示区块链技术在全球范围内的发展现状。
本书第1~2章由强彦教授编写,第3~4章由赵涓涓教授编写,第5章由王盈森编写。原镭明、段亚红、王威雄、索遥、徐佳正等项目组成员做了大量的资料准备、文档整理和代码调试工作。全书由强彦教授统稿。
主要特色
本书是作者深入研究区块链并参与诸多区块链项目后总结而成的,具有以下特点:
1)基础知识和高深理论相结合,由浅入深,由理论到实践,逐步引导读者深入理解区块链技术的精髓。
2)提供大量细致的源代码和实战步骤,通过这些源代码,读者可以进行区块链的操作和项目开发。
致谢
本书能够完成首先要感谢机械工业出版社的工作人员为本书顺利出版付出的努力。同时感谢团队和对本书的编写提供帮助的所有朋友。
编著者
CONTENTS
目录
前言
第1章比特币
1.1比特币概述
1.1.1比特币的特性
1.1.2比特币的发展背景
1.1.3比特币的意义和价值
1.2比特币数据结构
1.2.1比特币的密码学原理
1.2.2哈希指针
1.2.3默克尔树(Merkle Tree)的基本概念与结构
1.2.4区块结构
1.2.5全节点和轻节点
1.3比特币交易
1.3.1铸币(CoinBase)交易
1.3.2UTXO交易模型
1.4比特币中的挖矿
1.4.1挖矿原理
1.4.2挖矿过程的概率分析
1.4.3比特币总量计算
1.4.4挖矿难度
1.4.5挖矿设备及矿池的演化
1.5身份认证
1.5.1传统认证方式
1.5.2电子签名
1.6挖矿攻击
1.6.1背景
1.6.2分叉
1.6.3攻击方式
1.7本章小结
1.8参考文献
第2章以太坊(Ethereum)
2.1Ethereum概述
2.1.1Ethereum与去中心化思想
2.1.2Ethereum与BTC
2.1.3Ethereum的创新——“智能合约”
2.1.4关于Ethereum
2.2Ethereum的账户
2.2.1Ethereum账户(Ethereum Accounts)
2.2.2公钥与私钥
2.2.3BTC转账机制(UTXO)和Ethereum转账机制(Accounts)
2.3Ethereum中的数据结构
区块链理论与实战
目录
2.3.1默克尔帕特里夏树(MPT)
2.3.2状态树
2.3.3交易树与收据树
2.3.4户存储树
2.3.5Ethereum数据结构小结
2.3.6Bloom Filter
2.4Ghost协议
2.4.1概述
2.4.2Ghost规则
2.4.3叔父块的定义
2.4.4叔父块的特点
2.4.5奖励公式
2.5Ethereum中的挖矿
2.5.1Ethereum挖矿与BTC挖矿
2.5.2挖矿介绍
2.5.3挖矿算力
2.5.4矿池
2.5.5挖矿算法
2.5.6补充
2.6本章小结
2.7参考文献
第3章区块链安全的保障——密码学
3.1密码学概述
3.1.1密码学的概念及分类
3.1.2密码学的发展历程
3.2区块链中的密码算法
3.2.1哈希函数
3.2.2基于哈希加密的默克尔树(Merkle Tree)
3.3密码算法
3.3.1RSA算法概述
3.3.2RSA算法密钥生成过程
3.3.3RSA算法的加密和解密
3.3.4RSA算法的设计流程
3.3.5椭圆曲线密码算法
3.3.6Diffie-Hellman密钥交换算法
3.4数字签名
3.5零知识证明
3.5.1QAP问题
3.5.2简洁性问题
3.5.3同态隐藏
3.5.4KCA——解决“答非所问”问题
3.6本章小结
3.7参考文献
第4章分布式系统核心技术
4.1一致性问题
4.1.1FLP不可能原理
4.1.2CAP原理
4.1.3ACID原则与多阶段提交
4.2经典分布式共识算法
4.2.1Paxos算法与Raft算法
4.2.2拜占庭问题与PBFT算法
4.3区块链共识机制
4.3.1工作量证明(PoW)
4.3.2权益证明(PoS)
4.3.3委任权益证明(DPoS)
4.4本章小结
4.5参考文献
第5章基于Hyperledger Fabric的区块链应用案例
5.1Hyperledger Fabric简介
5.1.1模块化
5.1.2许可和非许可区块链
5.1.3智能合约
5.1.4隐私和保密性
5.2Fabric安装与部署
5.2.1创建ubuntu 20.04虚拟机
5.2.2安装基础软件
5.2.3安装Go语言
5.2.4安装Docker和Docker-compose
5.2.5拉取Fabric开源项目
5.2.6bootstrap.sh脚本运行失败
5.3密码学实验
5.3.1用Java构建简单区块链
5.3.2SHA256的具体实现
5.3.3区块链存储系统
5.4食品溯源
5.4.1项目环境
5.4.2hyperledger-simple-app
5.4.3url & json 格式
5.4.4部署于服务器
5.5以太坊智能合约实验
5.5.1实验部分
5.5.2实验1:开发第一个智能合约HelloWorld
5.5.3实验2:投票智能合约
5.5.4实验3:教学成绩录入
5.5.5实验4:Solidity基本语法
5.5.6实验5:ICO
5.5.7实验6:二手车交易
5.6参考文献