目录 第1章概述1 1.1什么是区块链技术2 1.1.1比特币与区块链的诞生3 1.1.2比特币与区块链4 1.1.3区块链的特点5 1.1.4智能合约与世界计算机6 1.1.5区块链的分类6 1.2区块链技术的现状7 1.2.1区块链的应用8 1.2.2区块链的挑战9 1.2.3区块链技术的发展环境11 1.3本书的内容12 1.4课后题13 第2章比特币15 2.1比特币简介15 2.2基础知识15 2.2.1哈希算法15 2.2.2非对称加密16 2.2.3数字签名17 2.2.4主网与测试网18 2.3交易19 2.3.1交易简介19 2.3.2输出20 2.3.3输入21 2.3.4UTXO模型22区块链原理与技术(第2版)目录2.4脚本系统23 2.4.1锁定与解锁23 2.4.2常见脚本类型26 2.4.3多重签名钱包28 2.5公私密钥与地址29 2.5.1私钥30 2.5.2公钥30 2.5.3普通地址31 2.5.4Base58编码31 2.5.5其他地址32 2.6区块与链33 2.6.1区块33 2.6.2区块头33 2.6.3Merkle树34 2.6.4区块链36 2.7共识37 2.7.1PoW37 2.7.2分叉38 2.7.3算力与难度调整39 2.7.4最长链原则39 2.8课后题40 第3章以太坊42 3.1以太坊简介42 3.1.1以太坊的诞生42 3.1.2以太坊与比特币对比43 3.1.3以太坊的特色与应用43 3.2以太坊基本架构及原理45 3.3账户模型与转账47 3.3.1账户模型47 3.3.2转账49 3.3.3Nonce50 3.4智能合约51 3.4.1状态模型51 3.4.2智能合约简介52 3.4.3驱动智能合约55 3.5以太坊交易57 3.5.1交易内容57 3.5.2交易费用58 3.5.3交易的周期58 3.6数据结构与存储60 3.6.1区块与叔块60 3.6.2Merkle Patricia Trie62 3.6.3布隆过滤器65 3.7课后题66 第4章区块链网络层68 4.1P2P网络68 4.1.1中心化拓扑69 4.1.2全分布式非结构化拓扑70 4.1.3全分布式结构化拓扑70 4.1.4半分布式拓扑71 4.2比特币网络72 4.2.1节点类型及其功能72 4.2.2扩展比特币网络73 4.2.3比特币节点通信73 4.2.4比特币中继网络79 4.3以太坊网络79 4.3.1Kademlia79 4.3.2节点类型及其功能81 4.3.3以太坊节点通信82 4.4网络层安全86 4.4.1分布式拒绝服务攻击87 4.4.2延展性攻击87 4.4.3女巫攻击88 4.4.4路由攻击88 4.4.5日蚀攻击89 4.5课后题90 第5章区块链共识层92 5.1一致性问题92 5.1.1问题与挑战93 5.1.2一致性要求93 5.1.3不同的一致性要求94 5.2共识设计的理论限制98 5.2.1FLP不可能原理98 5.2.2CAP原理99 5.3区块链共识算法100 5.3.1拜占庭问题100 5.3.2拜占庭容错算法101 5.3.3比特币的工作量证明共识机制107 5.3.4以太坊共识算法Ethash109 5.3.5以太坊共识算法Casper(选学)112 5.3.6EOSIO共识算法BFTDPoS(选学)116 5.3.7Monoxide(选学)120 5.4课后题122 第6章区块链智能合约开发124 6.1智能合约及其背景124 6.2Solidity语言125 6.2.1背景125 6.2.2入门示例125 6.2.3基础语法129 6.2.4Solidity在线代码评测系统137 6.3DApp开发示例140 6.3.1私有链搭建141 6.3.2智能合约部署与测试142 6.3.3使用Web3.js调用智能合约144 6.4课后题146 第7章区块链应用149 7.1联盟链平台149 7.1.1背景149 7.1.2Hyperledger Fabric150 7.1.3企业以太坊151 7.2供应链金融152 7.2.1应用背景152 7.2.2应用案例152 7.3资产交易153 7.3.1应用背景153 7.3.2应用案例153 7.4司法存证154 7.4.1应用背景154 7.4.2应用案例155 7.5物流溯源156 7.5.1应用背景156 7.5.2应用案例156 7.6票据流通157 7.6.1应用背景157 7.6.2应用案例157 7.7课后题158 参考文献159