第1章 区块链基础
1.1 区块链简介
1.1.1 区块链的含义
1.1.2 区块链的特点
1.1.3 区块链的分类
1.2 区块链的发展
1.2.1 区块链的发展简史
1.2.2 区块链的发展阶段
1.3 区块链的应用领域
1.3.1 信息数据领域
1.3.2 金融与数字资产领域
1.3.3 供应链领域
1.3.4 政务领域
1.4 区块链应用开发的相关技术
1.4.1 技术模型
1.4.2 支持环境
1.4.3 信任机制
1.4.4 智能合约
1.4.5 应用系统
1.4.6 区块链技术的多样性
1.5 比特币钱包的安装与使用
1.5.1 Electrum钱包的功能
1.5.2 网页版Coin.S pace钱包的功能
习题1
第2章 Spring Boot开发基础
2.1 Spring Boot基础
2.1.1 Spring Boot简介
2.1.2 Spring Boot的主要特点
2.2 配置Spring Boot开发环境
2.2.1 安装和配置JDK
2.2.2 安装IDEA
2.3 创建项目与项目基本情况
2.3.1 利用IDEA创建项目
2.3.2 项目的基本构成
2.4 Spring Boot开发起步
2.4.1 软件生命周期
2.4.2 Spring Boot开发步骤
2.5 helloworld项目的实现
2.5.1 添加依赖
2.5.2 创建类Block
2.5.3 创建类SecurityUtils
2.5.4 创建类HelloController
2.5.5 运行程序
习题2
第3章 区块链应用的基础开发
3.1 模拟两个钱包之间的交互
3.1.1 创建项目并添加依赖
3.1.2 创建接口MainService
3.1.3 创建类MainServiceImpl
3.1.4 创建类MainController
3.1.5 修改配置文件application.p roperties
3.1.6 运行程序
3.2 模拟挖矿
3.2.1 添加依赖
3.2.2 创建类Block
3.2.3 创建类MineService
3.2.4 创建类MineController
3.2.5 运行程序
3.3 模拟创建钱包和利用钱包进行交易
3.3.1 添加依赖
3.3.2 创建类StringUtil
3.3.3 创建类ContractService
3.3.4 创建类ErcController
3.3.5 运行程序
3.4 Merkle树的实现
3.4.1 创建类Stakeholder
3.4.2 创建类ProofEntry
3.4.3 创建类Node
3.4.4 创建类FtsResult
3.4.5 创建类FtsService
3.4.6 创建类FtsController
3.4.7 运行程序
3.5 Gossip协议的模拟实现
3.5.1 创建项目并添加依赖
3.5.2 创建类Node
3.5.3 创建类StaticSeedFinder
3.5.4 创建类SeedFinderChain
3.5.5 创建类GossipConnector
3.5.6 创建类GossipController
3.5.7 运行程序
3.6 模拟IOTA的应用
3.6.1 创建项目并添加依赖
3.6.2 创建类IotaController
3.6.3 运行程序
3.7 用线程模拟区块链的示例
3.7.1 创建项目并添加依赖
3.7.2 创建类Block
3.7.3 创建类StringUtil
3.7.4 创建类MineThread
3.7.5 创建类OutWaitThread
3.7.6 创建类MineController
3.7.7 创建类BlockController
3.7.8 创建类BlockchainController
3.7.9 运行程序
习题3
第4章 区块链应用的P2P实现
4.1 基于Java WebSocket实现P2P网络
4.1.1 创建项目并添加依赖
4.1.2 创建类P2PUtil
4.1.3 创建类P2Pserver
4.1.4 创建类P2Pclient
4.1.5 运行程序
4.2 基于WebSocket实现P2P页面互连
4.2.1 添加依赖
4.2.2 创建类WalletSendMessage
4.2.3 创建类WebSocketConfig
4.2.4 创建类WalletController
4.2.5 创建文件index.h tml
4.2.6 运行程序
4.3 基于t io实现P2P网络
4.3.1 添加依赖
4.3.2 创建类ServerPacket
4.3.3 创建类MServerAioHandler
4.3.4 创建类MServerAioListener
4.3.5 创建类MClientAioHandler
4.3.6 创建类MClientAioListener
4.3.7 创建类TIOServer
4.3.8 创建类TIOClient
4.3.9 创建类TIOController
4.3.10 运行程序
4.4 基于ZooKeeper实现P2P服务
4.4.1 服务提供者模块provider的实现
4.4.2 消费者模块consumer的实现
4.4.3 运行程序
4.5 基于Web Service和CXF实现P2P服务
4.5.1 服务器端模块serverofws的实现
4.5.2 客户端模块clientofws的实现
4.5.3 运行程序
4.6 同一服务器向多个页面发送区块链信息的示例
4.6.1 创建项目并添加依赖
4.6.2 创建类Block
4.6.3 创建类SocketIOConfig
4.6.4 创建类Service
4.6.5 创建类ServerRunner
4.6.6 创建类MsgEventHandler
4.6.7 创建类ClientController
4.6.8 创建类StringUtil
4.6.9 创建类LoggerUtil
4.6.10 创建文件index.h tml、login.h tml和welcome.h tml
4.6.11 修改配置文件application.p roperties
4.6.12 运行程序
习题4
第5章 区块链应用中消息机制的实现
5.1 ActiveMQ的应用
5.1.1 创建项目并添加依赖
5.1.2 创建类Sender
5.1.3 创建类Receiver
5.1.4 创建类RsUtil
5.1.5 创建类ActiveMQController
5.1.6 运行程序
5.2 RabbitMQ的应用
5.2.1 创建项目并添加依赖
5.2.2 创建类Runner
5.2.3 创建类Receiver
5.2.4 修改入口类
5.2.5 运行程序
5.3 Spring Cloud Stream和RabbitMQ的应用
5.3.1 创建项目并添加依赖
5.3.2 创建接口Sink
5.3.3 创建类SinkReceiver
5.3.4 创建配置文件application.y ml
5.3.5 运行程序
5.4 基于ActiveMQ传递区块链消息的示例
5.4.1 创建项目并添加依赖
5.4.2 创建类Block
5.4.3 创建类MQSendService
5.4.4 创建类MQReceiveService
5.4.5 创建类StringUtil
5.4.6 创建类SendInfoController
5.4.7 修改配置文件application.p roperties
5.4.8 运行程序
习题5
第6章 区块链应用中数据库开发
6.1 MySQL的应用
6.1.1 创建项目并添加依赖
6.1.2 创建类Pair
6.1.3 创建接口PairService
6.1.4 创建类PairServiceImpl
6.1.5 创建接口PairRepository
6.1.6 创建类PairController
6.1.7 修改配置文件application.p roperties
6.1.8 运行程序
6.2 CouchDB的应用
6.2.1 创建项目并添加依赖
6.2.2 创建类CouchDBConfiguration
6.2.3 创建类Note
6.2.4 创建类NotFoundException
6.2.5 创建类NotePersistenceHandler
6.2.6 创建类NoteDTO
6.2.7 创建类NoteService
6.2.8 创建类NotesController
6.2.9 修改配置文件application.p roperties
6.2.1 0修改入口类
6.2.1 1运行程序
6.3 MongoDB的应用
6.3.1 创建项目并添加依赖
6.3.2 创建类Block
6.3.3 创建接口BlockRepository
6.3.4 创建类SHA256
6.3.5 创建类PrimaryController
6.3.6 修改配置文件application.p roperties
6.3.7 运行程序
6.4 用以太坊区块链进行数据审核的示例
6.4.1 创建项目并添加依赖
6.4.2 创建类User
6.4.3 创建类Property
6.4.4 创建类Feedback
6.4.5 创建类ContractDetails
6.4.6 创建接口Repository
6.4.7 创建接口UserRepository
6.4.8 创建接口PropertyRepository
6.4.9 创建接口FeedbackRepository
6.4.10 创建接口EthereumContractRepository
6.4.11 创建类AbstractService
6.4.12 创建类UserService
6.4.13 创建类PropertyService
6.4.14 创建类FeedbackService
6.4.15 创建类EthereumService
6.4.16 创建类ControllerLoggingAspect
6.4.17 创建类Sha256Hex
6.4.18 创建类HashArray
6.4.19 创建类ApplicationConfig
6.4.20 创建类UserController
6.4.21 创建类PropertyController
6.4.22 创建类FeedbackController
6.4.23 创建类EthereumController
6.4.24 修改配置文件application.p roperties
6.4.25 运行程序
习题6
第7章 区块链应用中共识算法的实现
7.1 PoW算法的实现
7.1.1 创建项目并添加依赖
7.1.2 创建类BeanInjector
7.1.3 创建类BlockChain
7.1.4 创建类RegisterRequest
7.1.5 创建类Transaction
7.1.6 创建类FastJsonUtil
7.1.7 创建类SHAUtils
7.1.8 创建类SwaggerConfig
7.1.9 创建类BlockChainController
7.1.10 修改配置文件application.p roperties
7.1.11 创建文件index.h tml
7.1.12 运行程序
7.2 PBFT算法的实现
7.2.1 创建项目并添加依赖
7.2.2 创建类PbftMsg
7.2.3 创建类Pbft
7.2.4 创建类PoAUtil
7.2.5 创建类TimerManager
7.2.6 创建类PbftController
7.2.7 运行程序
7.3 Raft算法的实现
7.3.1 创建项目并添加依赖
7.3.2 创建类Follower
7.3.3 创建类Candidate
7.3.4 创建类Leader
7.3.5 创建类ClusterMsg
7.3.6 创建类MsgUtil
7.3.7 创建类RaftController
7.3.8 修改配置文件application.p roperties
7.3.9 运行程序
7.4 基于PoW的区块链应用示例
7.4.1创建项目并添加依赖
7.4.2 创建类BaseEntity
7.4.3 创建类Block
7.4.4 创建类Blockchain
7.4.5 创建类Member
7.4.6 创建类MemberGroup
7.4.7 创建接口MemberRepository
7.4.8 创建接口MemberGroupRepository
7.4.9 创建接口BlockchainRepository
7.4.10 创建类MemberService
7.4.11 创建类MemberGroupService
7.4.12 创建类BlockchainService
7.4.13 创建类ByteUtils
7.4.14 创建类ProofOfWork
7.4.15 创建类PowResult
7.4.16 创建类MemberandGroupController
7.4.17 创建配置文件application.y ml
7.4.18 运行程序
习题7
第8章 工作流、多语言和智能合约的应用
8.1 Activiti的应用
8.1.1 创建项目并添加依赖
8.1.2 创建类Applicant
8.1.3 创建接口ApplicantRepository
8.1.4 创建类ResumeService
8.1.5 创建类HireProcessRestController
8.1.6 修改配置文件application.p roperties
8.1.7 修改入口类
8.1.8 修改测试类
8.1.9 运行程序
8.2 Spring Cloud Sidecar的多语言应用
8.2.1 创建项目并添加依赖
8.2.2 修改配置文件application.p roperties
8.2.3 修改入口类
8.2.4 创建文件node service.j s
8.2.5 Spring Cloud Eureka注册中心的实现
8.2.6 运行程序
8.3 智能合约的模拟实现
8.3.1 创建项目并添加依赖
8.3.2 创建类AccountNew
8.3.3 创建接口AccountRepository
8.3.4 创建类SmartContractStub
8.3.5 创建接口ISmartContract
8.3.6 创建类SCController
8.3.7 修改配置文件application.p roperties
8.3.8 运行程序
8.4 基于Activiti的区块链应用示例
8.4.1 创建项目并添加依赖
8.4.2 创建类Person
8.4.3 创建类Comp
8.4.4 创建类Block
8.4.5 创建类Blockchain
8.4.6 创建类TaskRepresentation
8.4.7 创建接口PersonRepository
8.4.8 创建接口CompRepository
8.4.9 创建接口BlockchainRepository
8.4.10 创建类ActiveService
8.4.11 创建类JoinService
8.4.12 创建类MyRestController
8.4.13 创建文件join.b pmn20.x ml
8.4.14 修改配置文件application.p roperties
8.4.15 修改入口类
8.4.16 运行程序
习题8
第9章 区块链库、API和框架的应用
9.1 bitcoinj的应用
9.1.1 bitcoinj简介
9.1.2 创建项目并添加依赖
9.1.3 创建类BitcoinJController
9.1.4 运行程序
9.2 fabric sdk java的应用
9.2.1 fabric sdk java简介
9.2.2 添加依赖
9.2.3 创建类HyperledgerController
9.2.4 创建配置文件config.p roperties
9.2.5 运行程序
9.3 eth contract api的应用
9.3.1 添加依赖
9.3.2 创建类EthcontractapiController
9.3.3 运行程序
9.4 exonum java binding的应用
9.4.1 添加依赖
9.4.2 创建类ExonumController
9.4.3 运行程序
9.5 web3j的应用
9.5.1 web3j简介
9.5.2 添加依赖
9.5.3 创建类Web3jController
9.5.4 运行程序
9.6 WavesJ的应用
9.6.1 添加依赖
9.6.2 创建类WavesJController
9.6.3 运行程序
9.7 基于web3j钱包业务功能的示例
9.7.1 创建项目并添加依赖
9.7.2 创建类 BlockchainTransaction
9.7.3 创建接口BTxRepository
9.7.4 创建类BlockchainService
9.7.5 创建类 BlockchainController
9.7.6 创建文件index.h tml
9.7.7 修改配置文件application.p roperties
9.7.8 运行程序
习题9
第10章 基于区块链的简易系统开发
10.1 基于区块链的简易聊天室开发
10.1.1 操作界面
10.1.2 项目的主要文件构成
10.1.3 创建项目并添加依赖
10.1.4 创建类Block
10.1.5 创建类Agent
10.1.6 创建类AgentServerThread
10.1.7 创建类AgentManager
10.1.8 创建类Message
10.1.9 创建类ChatController
10.1.10 创建文件index.h tml
10.1.11 创建文件display.j s
10.1.12 创建文件restClient.j s
10.1.13 创建文件main.c ss
10.1.14 运行程序
10.2 基于区块链的简易证书系统开发
10.2.1 创建项目并添加依赖
10.2.2 创建类Block
10.2.3 创建类Certificate
10.2.4 创建接口CertificateRepository
10.2.5 创建类CertificateService
10.2.6 创建类ByteUtils
10.2.7 创建类ProofOfWork
10.2.8 创建类PowResult
10.2.9 创建类SearchCertificateController
10.2.10 创建文件add_certificate.h tml
10.2.11 创建文件searchcer.h tml
10.2.12 修改配置文件application.p roperties
10.2.13 运行程序
10.3 基于区块链的简易投票系统开发
10.3.1创建项目并添加依赖
10.3.2 创建类ElectionBlock
10.3.3 创建类Elections
10.3.4 创建类Voters
10.3.5 创建类Votes
10.3.6 创建类Candidates
10.3.7 创建实体类访问数据库接口
10.3.8 创建类HomeController
10.3.9 创建类CreatElectionController
10.3.10 创建类VoteController
10.3.11 创建文件index.h tml
10.3.12 创建文件add_election.h tml
10.3.13 创建文件add_voters.h tml
10.3.14 创建文件add_vote.h tml
10.3.15 创建文件add_candidates.h tml
10.3.16 创建文件view_votes.h tml
10.3.17 修改配置文件application.p roperties
10.3.18 运行程序
习题10
附录AElectrum钱包的安装和配置
附录B网页版Coin.S pace钱包的创建
附录CJDK的安装和配置
附录DIDEA创建Maven多模块项目
附录EZooKeeper的安装和配置
附录FActiveMQ的下载与启动
附录GRabbitMQ的安装与配置
附录HCouchDB的安装与配置
参考文献