[套装书]区块链技术丛书(23册)

作者
周兵 方云山 袁钧涛 杨保华 陈昌 贝拉·巴德 吴勋 梁培利 曹帅 吴延毅 等
丛书名
区块链技术丛书
出版社
机械工业出版社
ISBN
9782109261728
简要
简介
内容简介书籍计算机书籍 ---------------------------8083550 - 深入理解企业级区块链Quorum和IPFS--------------------------- 本书前半部分主要从技术的角度讲述什么是区块链,以比特币区块链为例讲述区块链的精妙的设计,以及区块链的应用场景。本书后半部分结合实际案例讲述超级账本Fabric的架构设计,系统安装配置以及编程实践。 ---------------------------8071723 - 区块链应用开发实战--------------------------- 区块链正在进入一个爆炸式发展的时期,真实应用在多个行业并获得了强劲的动力,加密货币也在整个金融领域获得了更多的认可。对于技术人员来说,无论是技术研究还是商业探索,区块链都是最有吸引力的方向之一。基于当今最先进和最健壮的区块链编程模型和架构模型,本书为构建区块链应用提供了实用指南。 ---------------------------8071482 - 区块链原理、设计与应用 第2版--------------------------- 本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深、系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1~3章介绍区块链技术的由来、核心思想及典型的应用场景;第4~5章重点介绍区块链技术中大量出现的分布式系统技术和密码学安全技术;第6~8章介绍区块链领域的三个典型开源项目:比特币、以太坊以及超级账本;第9-11章以超级账本Fabric项目为例,具体讲解了安装部署、配置管理,以及使用 Fabric CA 进行证书管理的实践经验;第12章重点剖析超级账本Fabric项目的核心架构设计;第13章介绍区块链应用开发的相关技巧和示例;第14章介绍区块链服务平台的设计与开发,并讲解应用超级账本Cello项目构建服务平台的相关知识。本书覆盖了区块链和分布式账本领域的最新技术,可帮助读者深入理解区块链核心原理和典型设计实现,以及高效地开发基于区块链平台的分布式应用。 . ---------------------------8064984 - 区块链开发实战:实用案例分析--------------------------- 本书开始部分对区块链概念进行介绍和高度概括,然后基于以太坊、比特币和超级账本区块链展示不同的使用案例和实际操作。具体内容包括区块链技术的基本概念、创建加密货币、Solidity 智能合约语言、使用Truffle和Drizzle构建Tontine游戏、以区块链为基础的期货系统、商业区块链、分布式存储IPFS和Swarm、超级账本上的供应链、信用证超级账本。 ---------------------------8062314 - 区块链开发实战:基于JavaScript的公链与DApp开发--------------------------- 随着区块链技术的火热以及区块链应用开发平台的出现,越来越多的普通开发者都需要掌握区块链应用的开发,本书可带领读者快速入门区块链开发。 本书由ASCH 核心开发工程师撰写,深入浅出地介绍了区块链应用的开发方法与技巧,任何有JavaScript基础的开发人员都可以掌握,分为三大部分,第一部分“区块链”介绍区块链技术简史、商业价值、核心概念、账户模型、主流区块链项目、区块链领域的新技术,并带领读者用300行代码实现一个区块链系统。第二部分“ASCH 源码解读”详细介绍ASCH的技术架构、ASCH启动过程、加密和验证方式、P2P技术、交易流程、区块链实现、DPOS+PBFT、侧链技术实现等。第三部分“去中心化应用(DApp)开发”介绍一个综合DApp案例开发,包括准备工作、DApp 开发工具、搭建开发环境、设计数据结构、实现业务逻辑、引入主链资产、如何对 DApp 进行测试、发布方式等。 ---------------------------8061317 - 区块链工程实践:行业解决方案与关键技术--------------------------- 本书分为五章,每章描述一个独立的区块链案例:第1章描述了一个可信电子证照应用,给出了电子证照的区块链方案设计,分享了我们对以太坊的实践经验,并分析了可信电子证照的商业模式。第2章是区块链技术在电力市场尤其是购售电上的应用,提出了区块链应用于电力市场交易结算的解决方案。第3章是一个企业红包记账系统,给出了系统的业务设计、架构设计、接口设计和实施方案,并分享了我们对Hyperledger Fabric的实践经验。第4章提出了购售电云合同的区块链解决方案,介绍了业务流程和主要功能,并对合同数据的接入及保全方式、区块链+云的存储架构、数据交互智能合约及云端数据安全共享协议等关键技术和方法进行了系统性地阐述。第5章介绍了区块链在供应链管理及供应链金融中的应用背景与应用现状,分析了区块链技术与供应链业务活动的匹配度,并提出了基于区块链的供应链管理解决方案。 ---------------------------8061295 - GO语言公链开发实战--------------------------- 本书系统地介绍区块链设计原理和开发技术,包含公链的整体架构和开发细节,主要内容包括:第1章介绍公链设计架构;第2~4章介绍比原链的交互工具、核心进程bytomd,以及API Server实现原理和接口设计。第5章和第6章详细介绍区块链核心部分,包括区块、区块链、交易的核心数据结构,以及UTXO模型、隔离见证、交易脚本、验证等技术概念的实现。第7章和第8章讲解比原链智能合约以及智能合约在BVM虚拟机上运行的过程。第9章和第10章介绍区块链钱包的设计与交易流程,包括密钥、账户、资产管理、交易管理等,还详解了区块链P2P分布式网络实现原理。第11~13章介绍数据存储、共识算法,以及挖矿相关的概念和流程。第14章展望了区块链技术未来的发展趋势。 ---------------------------8060188 - 基于区块链的物联网项目开发--------------------------- 本书首先概述了当前业务场景中的物联网概念。然后,它帮助你在IBM Watson物联网平台上开发自己的设备,并使用Watson and Intel Edison创建你的第一个物联网解决方案。一旦你熟悉了物联网,你就学会了区块链技术及其使用案例。你还能够利用Hyperledger framework平台开发你自己的区块链网络。随着学习的深入,你将通过书中对问题解决方案的阐述,学会如何设计你的解决方案架构,以便你能够创建你自己的集成区块链和物联网解决方案。接下来的章节将讲述如何在IBM云平台利用物联网来实现端到端的区块链解决方案。在本书结尾,你将掌握如何将物联网和区块链技术融合,利用最佳实践和驱动程序来开发实用集成解决方案。 ---------------------------8059533 - Stellar区块链:原理与实践--------------------------- 本书从工作原理、架构设计、工程实践三个维度,对Stellar做了全方位的深入的剖析。 三位作者均是区块链领域的资深技术专家,均是Stellar社区的早期参与者、深度参与者和技术布道者,为Stellar在中国乃至全球的发展做出了重要的贡献。本书得到了Stellar创始人Jed McCaleb、 Stellar亚太区负责人Michael Ran等Stellar官方团队的高度评价和推荐。 全书共9章,从逻辑上可分为五个部分,内容涵盖Stellar区块链基础协议剖析、两层场景案例应用、应用系统架构设计、Stellar区块链网络搭建和快速业务系统集成等方面。 第一部分(第1~3章) 重点从工程实践角度来审视区块链技术,介绍了区块链的基础概念和Stellar区块链基础协议的技术原理。 第二部分(第4~5章) 给出了两个典型的应用场景案例:一个是数据确权的应用场景,一个是基于数据确权基础上的价值流通应用场景,展现了区块链的两层应用,引导读者结合区块链开展工程实践应用。 第三部分(第6章) 讲解了基于Stellar区块链技术的系统架构设计,从业务架构设计、逻辑架构设计、物理架构设计、数据架构设计和账户架构设计等方面给出了关键架构设计要点和最佳实践。 第四部分(第7~8章) 详细说明了如何将一个stellar-core区块链节点接入已有的Stellar区块链网络中,并搭建horizon实例以实现对外提供访问区块链网络的服务能力,同时,给出了搭建一个全新Stellar区块链网络的详细步骤,并介绍了对关键代码的定制化改造。 第五部分(第9章) 介绍了Stellar技术社区已有的工具,以及将Stellar区块链技术和已有业务系统快速集成的方法。 ---------------------------8058634 - Hyperledger Fabric菜鸟进阶攻略--------------------------- 本书从架构,核心部件,到实际开发,涉及多个维度,共11章。第1章,Hyperledger Fabric的认识与环境搭建。第2章,深入浅出Fabric架构设计。第3章,化繁为简自行搭建你的Fabric网络。第4章,全方位认识链码:链码作用及对链码进行管理与测试。第5章,链码开发与实践。第6章,深入MSP成员管理与Fabric CA服务实现。第7章,白话Fabric共识机制。第8章,Fabric中数据分发机制的实现。第9章,Fabric分布式账本数据存储。第10-13章,Web应用环境搭建、架构以及基于区块链技术的学历信息征信系统实现。 ---------------------------8058637 - 深入以太坊智能合约开发--------------------------- 这是一部能指导读者从入门到进阶的以太坊智能合约开发指南。HiBlock区块链技术社区官方出品,4位资深区块链技术专家联合撰写。 从开发工具与生态、编程语言(Solidity)、编写方法、优秀实践、以太坊虚拟机、合约安全、软件工程等维度全景呈现以太坊智能合约开发的各个方面。更重要的是,以实战为导向,包含若干个翔实、完整的DApp案例讲解。 全书共12章,分为4个部分: 准备篇(第1~2章) 介绍了以太坊的必备常识、基础交互和开发工具套件。 基础篇(第3~6章) 详细讲解了智能合约开发语言 Solidity 的所有语法和编写合约的基本方法,同时也介绍了编译器和 Solidity 集成开发工具的使用。 进阶篇(第7~10章) 首先详细讲解了以太坊协议的细节和以太坊虚拟机的实现原理和架构设计;然后讲解了用于以太坊虚拟机函数调用的应用二进制编码的细节,以及公共基础合约库 openzeppelin-solidity 的源码实现;最后为智能合约的安全开发提供了经验性的指导,有极高的参考价值。 实战篇(第11~12章) 结合若干 DApp 实例讲解了如何基于智能合约来构造可用的去中性化应用程序。这部分内容可以帮助开发者快速上手构建基于以太坊的新一代互联网应用程序。 本书的附录中还包含了对以太坊协议中涉及的部分基础算法、以太坊虚拟机的费用设计和指令设计、 Solidity 内联汇编等的简单介绍。 ---------------------------8057274 - Hyperledger Fabric技术内幕:架构设计与实现原理--------------------------- 近年来的企业实践表明,联盟链是极具重要应用前景与潜力的区块链落地技术方案,而超级账本Hyperledger Fabric已经成为联盟链领域中具有国际影响力的主流技术。 本书深入分析了Hyperledger Fabric的源代码,从宏观上分析了Hyperledger Fabric的整体架构、设计逻辑和运行机制,从微观上剖析了各核心模块的设计理念与实现原理,同时兼顾区块链系统底层架构研发者和上层应用开发者的需求,帮助读者掌握Hyperledger Fabric的精髓。 全书一共7章,以系统运行的流程为主线展开分析: 第1章主要介绍了区块链的核心技术、典型平台,以及Hyperledger Fabric的基本概念、部署流程、实验环境搭建、系统架构和源代码分析思路,是阅读全书的基础。 第2~7章详细分析和解读了Orderer排序节点、Peer节点、Endorser背书节点、Committer记账节点、Gossip消息模块、公共功能模块等核心功能和模块的设计理念、实现原理和运行机制,同时从应用角度阐释其难点及其优化细节。 ---------------------------8057071 - 区块链财税管理与Corda开发指南--------------------------- 内容简介 这是一本为财务、税务、泛金融等领域提供区块链解决方案的参考书,它不仅能指导这些领域的业务重塑,而且还能知道这些领域的区块链应用开发与设计。 作者是有20年工作经验的软件开发、区块链和财税领域专家,曾担任国家级财税系统的核心产品经理。本书高屋建瓴,整体上梳理了财税场景下区块链与分布式账本的独有价值与应用创新脉络,也深入研究了适合金融与财税领域大规模应用的分布式账本架构Corda,作者发起设计了财税公链项目与EPOS共识机制,本书是作者在此过程中的研究心得与实践经验的整理记录! 本书在逻辑上分为两大部分: 第一部分:区块链重塑财税业务(第1~3章) 首先,介绍了区块链与分布式账本的一些关键概念和重要技术,包括二者的区别,以及它们的架构、加密算法和激励机制设计等内容;然后,对如何利用区块链和分布式账本技术重塑财税业务,提出了业务创新的方向和思路,以及区块链与财税场景结合的应用设计思路。 第二部分:Corda技术开发详解(4~16章) 全面、系统、详细地讲解了Corda的关键概念、开发环境搭建、API、应用开发、合约开发、节点与网络设计、集成与测试、高级特性开发、内部组件与库的使用、配套工具等。 ---------------------------8055018 - 深入理解EOS:原理解析与开发实战--------------------------- 内容简介 这是一部从源码层面剖析EOS原理和全方位讲解EOS开发实战的著作。 作者是EOS全球生态系统中具有影响力的EOS社区引力区的联合创始人和核心团队成员,是引力区在EOS主网上的研究和实践成果,得到了EOS官方原产品副总等多位EOS生态领袖的一致好评和强烈推荐。 全书一共7章,从EOS的优势技术、源码实现、原生功能使用、智能合约开发、基于EOS的Dapp开发和侧链开发等6个方面,详细的讲解了从系统原理到软件部署,再到开发的全部细节,适合初学者和具有一定开发基础的读者阅读。 第一部分 原理篇(第1~3章) 首先,从EOS项目诞生的初衷、愿景、发展历程和版本更迭等角度宏观地介绍了EOS项目本身;然后,从EOS的共识机制、账户体系、网络资源Token化、节点治理、脚本与虚拟机等角度展现了EOS的技术优势;最后,从源码角度分析了EOS项目的整体架构、共识算法代码实现、网络层代码实现、区块打包与广播代码的实现和关键工具的代码实现。 第二部分 实战篇(第4~7章) 这部分主要从实战开发的角度详细讲解了EOS网络的启动、原生功能的使用、智能合约的开发、DApp的开发、基于EOS的侧链和竞争链的开发等内容。不仅详细讲解了各项开发所涉及的技术点、开发方法、开发技巧,而且还包含大量的实战案例。 附录部分展望了EOS主网优化的方向,涉及百万TPS目标如何实现和跨链交互等方面的内容。 ---------------------------8054962 - 深入理解以太坊--------------------------- 内容简介 这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。 全书一共11章: 第1~3章对以太坊的系统架构、设计理念和技术架构进行了系统介绍,包括以太坊项目的起源和发展路线图、核心技术、共识问题、图灵完备性、整体设计思路和各模块的核心功能实现等核心内容。 第4章深入剖析了PoW、PoA、PoS等共识算法的适用场景、设计思想、技术实现和优缺点。 第5~7章围绕智能合约展开,系统讲解了智能合约语言Solidity、智能合约应用开发、智能合约运行原理和实现细节,以及以太坊虚拟机的运行原理和智能合约字节码的解析等内容。 第8章介绍了以太坊周边的工具,教读者如何在不开发代码的情况下完成与以太坊网络的交互。 第9章介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。 第10章对跨链技术和方案进行了方向性探讨,虽然目前跨链技术还不成熟,但被视为后以太坊时代的区块链技术热点。 第11章分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。 ---------------------------8053410 - DAG区块链技术:原理与实践--------------------------- 内容简介 本书由区块链4.0明星项目InterValue(也是目前技术更先进的基于DAG的区块链项目)核心团队撰写,它从底层原理和工程实践两个维度深入浅出地讲解和剖析了DAG这一新兴的区块链技术,能为基于DAG的技术研发、场景落地、链上应用和生态构建提供全方位的指导。 全书共11章,逻辑上分为三个部分: 第一部分(第1~6章) 技术原理篇 首先从宏观上对区块链及DAG技术做了整体性介绍,然后从微观上详细讲解了DAG区块链技术的通信机制、共识机制、智能合约、密码学技术和安全技术,这部分内容将从理论和技术的角度为读者打下坚实的基础。 第二部分(第7~9章) 工程实践篇 从原理实现和应用开发两个维度深入剖析了目前具有代表性的3个基于DAG技术的区块链项目:IOTA、ByteBall和InterValue。不仅能让读者了解这3个项目的核心技术实现细节,而且还能从中学习和借鉴DAG技术的开发方法和技巧。 第三部分(第10~11章) 展望篇 首先介绍了典型的基于DAG技术的区块链应用和DAG区块链技术的应用场景,然后对DAG技术的发展脉络进行了梳理,最后对DAG技术未来的发展趋势做了前瞻性的分析和探讨。 ---------------------------8017605 - 区块链开发实战:以太坊关键技术与案例分析--------------------------- 这是一本以实战为导向的区块链项目实战指南,以以太坊、比特币两大区块链应用为主题,讲解了这两大应用方向的关键技术,以及7个大型的项目实战案例。全书一共分为3个部分:部分:区块链技术综述首先从宏观上介绍了区块链技术以及相关项目的起源、发展、组成等,然后详细讲解了区块链开发环境的搭建。第二部分:以太坊首先讲解了以太坊的关键技术,比如以太坊的部署、常用工具、编程接口、公有链和私有链的搭建、智能合约编程、维护、备份和恢复等,然后是一个代币系统和一个以太坊钱包的案例。第三部分:比特币首先讲解了比特币的关键技术,比如编程接口、公有链、私有链等,然后详细讲解了一个比特币钱包的案例。 ---------------------------8017604 - 区块链开发实战:Hyperledger Fabric关键技术与案例分析--------------------------- 本书以HyperledgerFabric和比特币这两个典型区块链技术平台的核心技术、开发方法和相关的项目案例为核心内容,还提供了大量的命令脚本和代码示例供读者参考,力图使读者在短的时间内掌握这两个平台的使用方法。本书首先从基本认识的角度对区块链进行了宏观上的介绍,然后讲解了HyperledgerFabric的核心技术、原理、开发方法,以及多个项目案例,后讲解了比特币的原理、运行方式、重要模块和编程接口等内容,环环相扣,结构紧密,体系严谨。 ---------------------------7731485 - 以太坊技术详解与实战--------------------------- 本书共有10章:第1章从区块链背景知识讲起,包括区块链基本原理及应用。第2章介绍以太坊的组成,关键概念和技术。第3章会介绍不同区块链网络类型,以及如何部署不同类型的区块链。第4章介绍智能合约和以太坊虚拟机的原理。第5章和第6章会介绍具体编写智能合约的方法以及案例详解。第7章会给大家带来以太坊上数字资产定义的原理和方法。第8章会进一步对如何去查看、分析以太坊共链数据的工具和方法进行介绍。第9章和第10章是前沿技术的探讨,会对以太坊对性能优化和隐私保护的技术进行介绍和讨论。 ---------------------------7017941 - 区块链项目开发指南--------------------------- 区块链是近十年来颇具颠覆性的新兴信息技术之一,它正以一种全新的方式建立人类交易过程的信任、仲裁和记录基础。本书共9章,首先介绍去中心化应用、DApp等基本概念,并据此展开对比特币、以太坊、超级账本等热门DApp的阐释。其次在解析以太坊工作原理的基础上介绍智能合约的编写方法,并介绍web3.js的应用方法。后利用上述知识进行钱包服务、智能合约部署平台、投注App、企业级智能合约以及联盟区块链等具体应用程序的创建。 ---------------------------6877023 - 白话区块链--------------------------- 以全方位视角,结合通俗生活化的示例与图生动讲解,从技术、应用到系统设计。涵盖区块链的底层技术、典型业务场景思路、主流框架与应用,并手把手教你从零构建区块链系统(微链)。本书共9章,以下为涉猎的内容。 章通过村民记账的场景巧妙串起区块链的技术思想、技术组成,并以比特币为例介绍了基础技术原理。 第2章综合介绍了典型区块链应用场景与流程。 第3章介绍了现代密码算法在区块链中的作用与场景。 第4章介绍了主流网络共识算法及其社会学价值。 第5章介绍了区块链的链内外互联扩展技术的思路与主流做法。 第6章详细介绍了以太坊的技术结构以及智能合约开发。 第7章详细介绍了超级账本项目以及Fabric的配置与使用。 第8章详细介绍了如何从零开始设计一个微型区块链系统(微链),加深理解并提升动手能力。 第9章介绍了目前出现的各种区块链技术问题,多关于性能与安全。 ---------------------------6479750 - 区块链原理、设计与应用--------------------------- 本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深、系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1~3章介绍区块链技术的由来、核心思想及典型的应用场景;第4~5章重点介绍区块链技术中大量出现的分布式系统技术和密码学安全技术;第6~8章介绍区块链领域的三个典型开源项目:比特币、以太坊以及超级账本;第9-11章以超级账本Fabric项目为例,具体讲解了安装部署、配置管理,以及使用 Fabric CA 进行证书管理的实践经验;第12章重点剖析超级账本Fabric项目的核心架构设计;第13章介绍区块链应用开发的相关技巧和示例;第14章介绍区块链服务平台的设计与开发,并讲解应用超级账本Cello项目构建服务平台的相关知识。本书覆盖了区块链和分布式账本领域的*新技术,可帮助读者深入理解区块链核心原理和典型设计实现,以及高效地开发基于区块链平台的分布式应用。 ---------------------------6019644 - 区块链开发指南--------------------------- 本书首先介绍基础密码学、算法、P2P协议、脚本等区块链基础原理与技术,然后以比特币和以太坊两大区块链平台为例,指导读者搭建测试环境,对区块链进行编译,建立私链与测试链等,帮助开发者创建自己的私链,实现智能合约、挖矿等区块链特定编程实例。
目录
[套装书具体书目]
6019644 - 区块链开发指南 - 9787111571209 - 机械工业出版社 - 定价 59
6479750 - 区块链原理、设计与应用 - 9787111577829 - 机械工业出版社 - 定价 89
6877023 - 白话区块链 - 9787111582984 - 机械工业出版社 - 定价 59
7017941 - 区块链项目开发指南 - 9787111584001 - 机械工业出版社 - 定价 59
7731485 - 以太坊技术详解与实战 - 9787111595113 - 机械工业出版社 - 定价 59
8017604 - 区块链开发实战:Hyperledger Fabric关键技术与案例分析 - 9787111599425 - 机械工业出版社 - 定价 79
8017605 - 区块链开发实战:以太坊关键技术与案例分析 - 9787111599562 - 机械工业出版社 - 定价 69
8053410 - DAG区块链技术:原理与实践 - 9787111611776 - 机械工业出版社 - 定价 79
8054962 - 深入理解以太坊 - 9787111614920 - 机械工业出版社 - 定价 89
8055018 - 深入理解EOS:原理解析与开发实战 - 9787111615293 - 机械工业出版社 - 定价 79
8057071 - 区块链财税管理与Corda开发指南 - 9787111619284 - 机械工业出版社 - 定价 89
8057274 - Hyperledger Fabric技术内幕:架构设计与实现原理 - 9787111618560 - 机械工业出版社 - 定价 129
8058634 - Hyperledger Fabric菜鸟进阶攻略 - 9787111623229 - 机械工业出版社 - 定价 69
8058637 - 深入以太坊智能合约开发 - 9787111623724 - 机械工业出版社 - 定价 99
8059533 - Stellar区块链:原理与实践 - 9787111625537 - 机械工业出版社 - 定价 79
8060188 - 基于区块链的物联网项目开发 - 9787111627562 - 机械工业出版社 - 定价 69
8061295 - GO语言公链开发实战 - 9787111629870 - 机械工业出版社 - 定价 89
8061317 - 区块链工程实践:行业解决方案与关键技术 - 9787111631095 - 机械工业出版社 - 定价 79
8062314 - 区块链开发实战:基于JavaScript的公链与DApp开发 - 9787111633044 - 机械工业出版社 - 定价 89
8064984 - 区块链开发实战:实用案例分析 - 9787111639985 - 机械工业出版社 - 定价 99
8071482 - 区块链原理、设计与应用 第2版 - 9787111659808 - 机械工业出版社 - 定价 139
8071723 - 区块链应用开发实战 - 9787111662884 - 机械工业出版社 - 定价 99
8083550 - 深入理解企业级区块链Quorum和IPFS - 9787111688877 - 机械工业出版社 - 定价 79



---------------------------8083550 - 深入理解企业级区块链Quorum和IPFS---------------------------


前 言
第1章 区块链的前世今生 1
1.1 初识区块链 1
1.2 区块链技术的演进 2
1.3 区块链能否“改变世界” 4
第2章 区块链中的共识机制 6
2.1 分布式系统的一致性挑战 6
2.1.1 若干基本原理 6
2.1.2 拜占庭将军问题 9
2.2 常见共识算法 9
2.2.1 PBFT算法 9
2.2.2 Raft算法 10
2.2.3 PoW算法 11
2.2.4 PoS算法 12
第3章 密码学探秘 13
3.1 密码学基础知识 13
3.1.1 加解密的一般过程 13
3.1.2 密码学发展历程 14
3.1.3 密码算法的分类 15
3.1.4 基础理论简析 16
3.2 公钥密码体制 19
3.2.1 RSA算法 20
3.2.2 ElGamal算法 21
3.2.3 椭圆曲线算法 23
3.2.4 公钥密码的安全性分析 24
3.3 数字签名 24
3.3.1 哈希函数 25
3.3.2 RSA签名 26
3.3.3 ElGamal签名 26
3.3.4 DSA 27
3.3.5 椭圆曲线DSA 28
3.3.6 数字签名方案的安全性分析 28
3.4 区块链中的密码学算法 29
3.5 密码学新纪元 30
3.5.1 同态加密技术 30
3.5.2 抗量子攻击密码 32
第4章 区块链核心技术最佳实践——比特币 34
4.1 比特币要解决的问题 34
4.2 技术解决方案 35
4.3 P2P网络 36
4.4 账本—区块链 37
4.4.1 区块结构 37
4.4.2 创世区块 39
4.4.3 区块的验证和链接 42
4.5 比特币地址 44
4.5.1 比特币地址的生成过程 44
4.5.2 比特币公钥格式—压缩和非压缩 45
4.5.3 比特币私钥导入的格式—WIF 46
4.5.4 生成自己的比特币地址 47
4.6 比特币交易—Transaction 48
4.6.1 交易的输入和输出 49
4.6.2 UTXO—未花费交易输出 50
4.7 脚本语言 52
4.7.1 脚本操作码 53
4.7.2 交易脚本—锁定和解锁 54
4.7.3 锁定脚本—P2PKH 55
4.7.4 锁定脚本—P2SH 55
4.7.5 解锁脚本 56
4.7.6 交易验证—组合验证脚本 56
4.7.7 挖矿—PoW 58
4.8 矿场和矿池 60
4.8.1 矿场 60
4.8.2 矿池 60
4.9 SPV轻钱包 61
4.10 区块链安全 62
4.10.1 私钥碰撞 62
4.10.2 哈希破解 62
4.10.3 私钥或钱包App 63
4.10.4 51%攻击 63
4.10.5 双花 64
4.10.6 可塑性攻击 64
4.11 隔离见证 65
4.12 比特币分叉 65
4.12.1 硬分叉和软分叉 66
4.12.2 核心开发团队与中国矿工 67
4.13 侧链—闪电网络68
4.14 支付通道 69
4.14.1 微支付通道 69
4.14.2 RSMC70
4.14.3 HTLC 71
4.14.4 闪电网络 72
第5章 区块链应用场景及政府监管 74
5.1 跨境支付 74
5.1.1 SWIFT 74
5.1.2 Ripple 75
5.1.3 J.P.摩根—JPM Coin 76
5.1.4 蚂蚁金服 76
5.2 数据存证 77
5.2.1 保全网 77
5.2.2 Factom 78
5.2.3 仲裁链 79
5.3 防伪溯源 79
5.4 区块链电子发票 80
5.5 政府监管 80
第6章 Quorum架构 82
6.1 架构概述 82
6.1.1 应用层 83
6.1.2 工具层 83
6.1.3 隐私、性能和许可层 84
6.1.4 核心区块链层 84
6.1.5 网络层 85
6.2 节点结构及启动过程 85
6.2.1 以太坊账户 87
6.2.2 网络通信协议 87
6.2.3 以太坊服务 87
6.2.4 RPC服务 89
6.2.5 节点启动过程 89
6.3 账户管理 91
6.3.1 keystore文件 91
6.3.2 账户管理器 94
6.3.3 签名交易 95
6.4 网络 95
6.4.1 协议管理器 97
6.4.2 p2p.Server对象和启动 98
6.4.3 对等节点发现 100
6.4.4 对等节点连接 103
6.5 交易管理 107
6.5.1 交易池 107
6.5.2 交易提交 109
6.5.3 交易广播 110
6.6 区块和链管理 111
6.6.1 MPT树 111
6.6.2 区块和链结构 113
6.6.3 区块上链 116
6.6.4 世界状态转换 120
6.6.5 StateDB 122
6.6.6 企业以太坊数据存储 126
6.7 IBFT共识 128
6.7.1 IBFT共识概述 129
6.7.2 IBFT实现 134
6.7.3 矿工 136
6.7.4 共识流程 138
6.8 Raft共识 140
6.8.1 RaftService服务 140
6.8.2 Raft协议管理器 141
6.8.3 区块上链 142
6.8.4 链竞争 144
6.9 权限 145
6.9.1 权限管理智能合约 147
6.9.2 权限管理服务 148
6.10 数据隐私 149
6.10.1 私有交易流程 150
6.10.2 私有交易和私有合约 151
第7章 EVM 152
7.1 EVM的设计目标 152
7.2 EVM的实现机制 153
7.2.1 虚拟机结构 153
7.2.2 合约的创建和调用 155
7.2.3 虚拟机执行器 157
7.3 指令集和字节码 159
7.4 智能合约事件 162
7.4.1 事件的实现 162
7.4.2 事件的查询 165
7.5 状态变量存储 166
7.5.1 基本类型存储 167
7.5.2 映射存储 169
7.5.3 数组存储 170
7.6 智能合约ABI 172
7.6.1 函数选择器 172
7.6.2 参数类型 173
7.6.3 固定类型编码 173
7.6.4 动态类型编码 174
第8章 IPFS存储系统 177
8.1 IPFS概述 177
8.1.1 块 177
8.1.2 Merkle DAG 178
8.1.3 文件抽象层 179
8.2 IPFS节点架构 180
8.3 IPFS子协议 183
8.3.1 身份 184
8.3.2 网络 184
8.3.3 路由 185
8.3.4 交换 189
8.3.5 对象 203
8.3.6 文件 206
8.3.7 命名 208
8.4 IPFS 集群 209
8.4.1 IPFS Cluster节点架构 209
8.4.2 数据上传和数据安全 212
第9章 开发环境搭建 215
9.1 Quorum平台搭建 215
9.1.1 搭建流程 215
9.1.2 Quorum的Tessera平台搭建 219
9.1.3 Quorum的Docker平台搭建 223
9.1.4 Truffle与智能合约 224
9.2 IPFS平台搭建 228
9.2.1 IPFS和IPFS Cluster的安装 228
9.2.2 IPFS私有网络的搭建 231
9.2.3 IPFS私有网络的交互 234
9.2.4 IPFS Docker平台的搭建 235
第10章 一款电子票据的实现 238
10.1 需求 238
10.2 实现方案 239
10.2.1 IPFS方案 239
10.2.2 Quorum方案 241
10.2.3 整体方案 242
10.3 代码实现 243
10.3.1 IPFS客户端 243
10.3.2 智能合约 244
参考文献 246



---------------------------8071723 - 区块链应用开发实战---------------------------


推荐序一
推荐序二 网络先行,应用为王
译者序 Web3,区块链后花园的姹紫嫣红
致谢
第一部分 区块链入门
第1章 区块链简介 2
1.1 区块链 2
1.2 协作账本 3
1.3 加密数字货币 4
1.4 智能合约 5
1.5 免信任网络 5
1.6 新的协作方式 6
1.7 胖协议 6
1.8 我们相信代码 7
1.9 本章小结 8
第2章 达成共识 9
2.1 什么是区块链共识 9
2.2 PoW 10
2.3 PoS 10
2.4 DPoS 12
2.5 本章小结 12
第3章 第一个区块链应用 13
3.1 智能合约 14
3.2 前端的HTML 17
3.3 JavaScript和web3.js 18
3.4 实战 18
3.5 分享Dapp 19
3.6 本章小结 20
第二部分 走近以太坊
第4章 以太坊入门 22
4.1 BUIDL方式 23
4.2 BUIDL简易开发 25
4.3 本章小结 35
第5章 概念与工具 36
5.1 以太坊钱包和基本概念 36
5.2 Etherscan 38
5.3 TestRPC 39
5.4 通过GETH与以太坊交互 41
5.5 通过Web3与以太坊交互 42
5.6 运行一个以太坊节点 43
5.7 运行一个私有以太坊网络 44
5.8 本章小结 45
第6章 智能合约 46
6.1 重温“Hello,World!” 46
6.2 学习智能合约编程 48
6.3 构建和部署智能合约 50
6.4 调用智能合约函数 55
6.5 一种新语言 59
6.6 更多智能合约语言 61
6.7 本章小结 62
第7章 Dapp 63
7.1 Dapp软件栈 64
7.2 Dapp示例 66
7.3 本章小结 68
第8章 Dapp的替代方案 69
8.1 JavaScript 69
8.2 Python及其他 73
8.3 本章小结 74
第三部分 深入以太坊
第9章 以太坊揭秘 76
9.1 什么是区块链状态 76
9.2 以太坊的状态 78
9.3 前缀树(或树) 80
9.4 以太坊的前缀树结构 83
9.5 分析以太坊数据库 85
9.6 本章小结 88
第10章 区块链数据服务 89
10.1 区块链浏览器 89
10.2 收集数据 93
10.3 查询接口 99
10.4 下一步是什么 103
10.5 本章小结 104
第11章 智能合约搜索引擎 105
11.1 智能合约搜索引擎简介 105
11.2 开始使用智能合约搜索引擎 107
11.3 FairPlay Dapp示例 111
11.4 用例 114
11.5 本章小结 115
第12章 智能合约的安全性和最佳实践 116
12.1 以太坊智能合约的重大非法入侵和漏洞 116
12.2 智能合约安全的最佳实践 123
12.3 本章小结 125
第13章 以太坊的未来 126
13.1 以太坊1.0 127
13.2 超越以太坊1.0 130
13.3 以太坊2.0 133
13.4 以太坊2.0的交付阶段 134
13.5 后以太坊2.0的创新 135
13.6 本章小结 135
第四部分 构建应用协议
第14章 扩展以太坊协议 138
14.1 完全兼容,但更快捷 139
14.2 EVM的智能增强 139
14.3 安全第一 144
14.4 本章小结 144
第15章 扩展以太坊工具 145
15.1 智能合约工具集 146
15.2 Dapp工具集 152
15.3 本章小结 156
第16章 Dapp案例 157
16.1 案例研究1:Valentines 157
16.2 案例研究2:WeBet 161
16.3 本章小结 177
第17章 业务规则与合约 178
17.1 一个示例 179
17.2 规则语言 181
17.3 更多业务示例 185
17.4 本章小结 188
第18章 构建特定于应用的EVM 189
18.1 使用libENI函数 190
18.2 写一个libENI函数 196
18.3 部署libENI函数 198
18.4 本章小结 199
第五部分 构建自己的区块链
第19章 开始使用Tendermint 202
19.1 Tendermint的工作原理 203
19.2 工作流程 203
19.3 搭建Tendermint节点 205
19.4 搭建Tendermint网络 207
19.5 本章小结 208
第20章 业务逻辑 209
20.1 协议 210
20.2 应用示例 212
20.3 Cosmos SDK 222
20.4 本章小结 223
第21章 创建一个区块链客户端 224
21.1 方法概述 225
21.2 应用样例 226
21.3 本章小结 230
第六部分 加密经济学
第22章 通证设计的加密经济学 232
22.1 网络效用通证 232
22.2 应用效用通证 235
22.3 证券通证 235
22.4 通证的估值 236
22.5 高级主题 240
22.6 本章小结 242
第23章 ICO 243
23.1 简短的历史 243
23.2 ICO的效用 244
23.3 ICO与传统股权融资的对比 246
23.4 评估一个ICO项目 248
23.5 ICO的参与风险 249
23.6 本章小结 250
第24章 加密货币交易所 251
24.1 交易所的类型 251
24.2 去中心化交易所 253
24.3 产品和服务 254
24.4 本章小结 255
附录A 开始使用CyberMiles 256



---------------------------8071482 - 区块链原理、设计与应用 第2版---------------------------


前言
第1版序言
第1版前言
理论篇
第1章 区块链的诞生 2
1.1 记账科技的千年演化 2
1.2 分布式记账与区块链 7
1.3 集大成者—比特币 10
1.4 区块链的商业价值 12
1.5 本章小结 14
第2章 核心技术概览 15
2.1 定义与原理 15
2.2 技术的演化与分类 17
2.3 关键问题和挑战 19
2.4 趋势与展望 23
2.5 认识上的误区 26
2.6 本章小结 27
第3章 典型应用场景 28
3.1 应用场景概览 28
3.2 金融服务 29
3.2.1 数字货币 30
3.2.2 支付清结算业务 31
3.2.3 证券交易后处理 34
3.2.4 供应链金融 35
3.2.5 税收服务 36
3.2.6 众筹管理 37
3.3 征信管理 38
3.4 权属管理与溯源 39
3.4.1 存证 39
3.4.2 溯源 41
3.4.3 数据管理 42
3.5 资源共享 42
3.6 物流与供应链 44
3.7 物联网 45
3.8 其他场景 46
3.9 本章小结 48
第4章 分布式系统核心技术 49
4.1 一致性问题 49
4.2 共识算法 52
4.3 FLP不可能原理 54
4.4 CAP原理 56
4.4.1 定义 56
4.4.2 应用场景 56
4.5 ACID原则与多阶段提交 57
4.6 Paxos算法与Raft算法 58
4.6.1 Paxos算法 58
4.6.2 Raft算法 61
4.7 拜占庭问题与算法 61
4.8 可靠性指标 65
4.9 本章小结 66
第5章 密码学与安全技术 67
5.1 密码学简史 67
5.2 Hash算法与数字摘要 68
5.3 加解密算法 70
5.4 消息认证码与数字签名 75
5.4.1 消息认证码 76
5.4.2 数字签名 76
5.4.3 安全性 77
5.5 数字证书 77
5.6 PKI体系 80
5.7 默克尔树结构 83
5.8 布隆过滤器 84
5.9 同态加密 85
5.10 其他技术 86
5.11 本章小结 89
第6章 比特币—初露锋芒的区块链 90
6.1 比特币项目简介 90
6.2 工作原理 94
6.2.1 基本交易过程 94
6.2.2 重要概念 95
6.2.3 创新设计 98
6.3 挖矿过程 99
6.4 共识机制 100
6.5 闪电网络 102
6.6 侧链 103
6.7 热门问题 105
6.8 相关工具 108
6.9 本章小结 109
第7章 以太坊—挣脱加密货币的枷锁 110
7.1 以太坊项目简介 110
7.2 核心概念 112
7.3 主要设计 114
7.4 相关工具 115
7.5 安装客户端 117
7.6 使用智能合约 118
7.6.1 搭建测试用区块链 118
7.6.2 创建和编译智能合约 119
7.6.3 部署智能合约 120
7.6.4 调用智能合约 121
7.7 智能合约案例 121
7.7.1 智能合约代码 121
7.7.2 代码解析 123
7.8 本章小结 125
第8章 超级账本——面向企业的分布式账本 126
8.1 超级账本项目简介 126
8.2 社区组织结构 128
8.3 顶级项目介绍 129
8.4 开发协作工具 134
8.5 贡献代码 136
8.6 本章小结 139
实践篇
第9章 Fabric安装与部署 142
9.1 简介 142
9.2 本地编译组件 143
9.2.1 环境配置 144
9.2.2 获取代码 145
9.2.3 编译安装Peer组件 145
9.2.4 编译安装Orderer组件 145
9.2.5 编译安装Fabric CA组件 146
9.2.6 编译安装配置辅助工具 146
9.2.7 安装Protobuf支持和Go语言相关工具 146
9.2.8 示例配置 147
9.3 容器方式获取 147
9.3.1 安装Docker服务 147
9.3.2 安装docker-compose 147
9.3.3 获取Docker镜像 148
9.3.4 镜像Dockerfile 150
9.4 用本地方式启动Fabric网络 154
9.4.1 规划初始网络拓扑 155
9.4.2 准备启动配置文件 156
9.4.3 启动排序节点 163
9.4.4 启动Peer节点 165
9.4.5 创建通道 166
9.4.6 加入通道 166
9.4.7 更新锚节点配置 167
9.5 用容器方式启动Fabric网络 167
9.6 本章小结 169
第10章 管理Fabric网络 170
10.1 简介 170
10.2 使用通道 170
10.3 管理节点 184
10.4 管理链上代码 186
10.5 监听网络事件 202
10.6 自动发现网络信息 205
10.6.1 主要功能 205
10.6.2 全局参数 205
10.6.3 子命令 205
10.7 使用运维服务 210
10.8 如何升级网络版本 213
10.8.1 能力类型 213
10.8.2 推荐升级步骤 214
10.9 使用SDK 216
10.10 注意事项与最佳实践 217
10.11 本章小结 219
第11章 智能合约的开发 220
11.1 简介 220
11.2 链码的概念与结构 221
11.2.1 Chaincode接口 222
11.2.2 链码结构 222
11.3 链码开发API 223
11.3.1 账本状态交互API 223
11.3.2 交易信息API 225
11.3.3 参数读取API 226
11.3.4 私密数据API 226
11.3.5 其他API 227
11.4 应用开发案例一:转账 228
11.5 应用开发案例二:资产权属管理 231
11.6 应用开发案例三:调用其他链码 240
11.7 应用开发案例四:发送事件 241
11.8 应用开发案例五:基于属性的权限控制 242
11.9 应用开发案例六:私密数据 243
11.10 使用外部链码 248
11.10.1 外部链码构建器结构 248
11.10.2 链码安装包结构 251
11.10.3 配置Peer节点调用外部链码 252
11.10.4 外部链码编写示例 252
11.11 最佳开发实践 253
11.12 本章小结 257
第12章 Fabric配置解析 258
12.1 简介 258
12.2 Peer配置剖析 259
12.2.1 peer部分 259
12.2.2 vm部分 266
12.2.3 chaincode部分 267
12.2.4 ledger部分 267
12.2.5 operations部分 268
12.2.6 metrics部分 268
12.3 Orderer配置剖析 269
12.4 生成组织身份 272
12.5 通道配置文件 277
12.6 管理通道配置 284
12.7 转换网络配置 294
12.8 本章小结 298
第13章 身份证书管理 299
13.1 简介 299
13.2 安装服务端和客户端 300
13.2.1 本地编译 300
13.2.2 获取和使用Docker镜像 301
13.3 启动CA服务 302
13.4 服务端命令剖析 304
13.4.1 全局命令参数 304
13.4.2 init命令 307
13.4.3 start命令 307
13.5 服务端RESTful API 307
13.6 服务端配置文件解析 310
13.7 与服务端进行交互 316
13.8 客户端命令剖析 317
13.8.1 全局命令参数 318
13.8.2 affiliation命令 320
13.8.3 enroll命令 320
13.8.4 gencrl命令 321
13.8.5 gencsr命令 322
13.8.6 getcacert和getcainfo命令 322
13.8.7 identity命令 322
13.8.8 reenroll命令 322
13.8.9 register命令 323
13.8.10 revoke命令 323
13.9 客户端配置文件解析 324
13.10 生产环境部署 325
13.11 本章小结 327
进阶篇
第14章 Fabric架构与设计 330
14.1 整体架构概览 330
14.2 核心概念与组件 333
14.2.1 网络层相关组件 334
14.2.2 共识机制相关组件 337
14.2.3 权限管理相关组件 338
14.2.4 业务层相关组件 339
14.3 消息协议 345
14.3.1 消息结构 345
14.3.2 客户端访问Peer节点 346
14.3.3 客户端、Peer节点访问Orderer 348
14.3.4 链码和Peer节点交互 348
14.3.5 Peer节点之间Gossip交互 349
14.4 权限策略和访问控制 352
14.4.1 应用场景 353
14.4.2 身份证书 354
14.4.3 身份集合 354
14.4.4 权限策略的实现 355
14.4.5 通道策略 359
14.4.6 通道访问控制 360
14.4.7 背书策略 362
14.4.8 基于证书属性的链码访问控制 364
14.4.9 实例化策略 365
14.5 隐私保护 365
14.5.1 通道机制 365
14.5.2 私密数据库 366
14.5.3 加密保护 368
14.6 用户链码 369
14.6.1 基本结构 369
14.6.2 链码与Peer的交互过程 370
14.6.3 Peer侧处理 372
14.6.4 链码侧处理 373
14.7 系统链码 375
14.7.1 配置系统链码 375
14.7.2 查询系统链码 376
14.7.3 背书系统链码 376
14.7.4 验证系统链码 377
14.7.5 传统生命周期系统链码 377
14.7.6 新的生命周期系统链码 378
14.8 排序服务 379
14.8.1 gRPC服务接口 380
14.8.2 账本管理 380
14.8.3 共识插件 383
14.9 本章小结 386
第15章 Fabric Peer实现剖析 387
15.1 节点启动 387
15.2 加入通道 399
15.2.1 解析和校验请求 399
15.2.2 创建本地账本结构 401
15.2.3 创建通道结构 402
15.2.4 启动Gossip服务 404
15.2.5 注册通道结构到全局字典 410
15.3 Gossip过程 411
15.3.1 整体流程 411
15.3.2 初始化配置 412
15.3.3 初始化和启动Gossip服务 413
15.4 链码启动和初始化 419
15.4.1 整体流程 419
15.4.2 编译和启动链码 421
15.4.3 初始化链码 426
15.4.4 处理链码消息 426
15.5 背书处理 430
15.5.1 检查和校验提案 431
15.5.2 模拟执行链码调用 431
15.5.3 对结果背书并返回结果 433
15.6 提交交易结果 434
15.6.1 整体流程 436
15.6.2 提交前准备 437
15.6.3 提交过程 440
15.6.4 提交后处理 449
15.6.5 总结本地账本结构 449
15.7 本章小结 451
第16章 Fabric Orderer实现剖析 452
16.1 核心工作过程 452
16.1.1 工作原理 452
16.1.2 核心共识过程 453
16.1.3 分块决策 455
16.2 排序服务启动 455
16.3 Broadcast调用 466
16.3.1 整体流程 466
16.3.2 解析消息 468
16.3.3 处理普通交易消息 469
16.3.4 处理配置交易消息 472
16.4 构造本地区块 475
16.4.1 整体流程 475
16.4.2 成为Leader后的处理 477
16.4.3 成为Follower后的处理 477
16.4.4 主共识循环 478
16.4.5 请求应答协程逻辑 483
16.5 Deliver调用 484
16.5.1 整体流程 485
16.5.2 解析消息 488
16.5.3 检查访问权限 489
16.5.4 计算区块范围 489
16.5.5 发送区块 490
16.5.6 返回响应 490
16.6 本章小结 490
第17章 区块链服务平台 491
17.1 简介 491
17.2 IBM区块链服务 492
17.3 甲骨文区块链服务 493
17.4 腾讯云区块链服务平台 494
17.5 阿里云区块链服务平台 495
17.6 百度超级链服务平台 497
17.7 纸贵科技Z-BaaS区块链服务平台 499
17.8 超级账本Cello项目 500
17.9 本章小结 502
附录
附录A 术语 504
附录B 常见问题 508
附录C 参考资源链接 511



---------------------------8064984 - 区块链开发实战:实用案例分析---------------------------


推荐序
译者序
前言
审校者简介
第1章 初识区块链 1
1.1 区块链和加密货币的兴起 2
1.1.1 从虚拟货币到加密货币 2
1.1.2 比特币的出现 2
1.1.3 什么是区块链 3
1.2 与区块链交互 5
1.2.1 入门 6
1.2.2 方法1——使用Bitcoin Core创建原始交易 10
1.2.3 方法2——用JavaScript创建原始比特币交易 18
1.3 区块链类型 21
1.4 小结 22
第2章 建立比特币支付系统 23
2.1 什么是比特币 23
2.2 开始使用比特币 24
2.2.1 设置Regtest环境 24
2.2.2 用比特币交易 26
2.3 构建支付网关 31
2.3.1 项目描述 31
2.3.2 准备环境 33
2.3.3 项目设置 33
2.3.4 商家方面 34
2.3.5 客户端 39
2.3.6 预览应用程序 42
2.4 使用BitcoinJ的支付协议 44
2.4.1 准备环境 44
2.4.2 BitcoinJ 客户端 45
2.5 比特币智能合约 51
2.5.1 什么是Rootstock 51
2.5.2 编写你的第一个比特币智能合约 54
2.6 小结 56
第3章 创建加密货币 57
3.1 从源代码处编译比特币 57
3.1.1 准备创建系统 58
3.1.2 创建Bitcoin Core 59
3.2 新加密货币——Readercoin 61
3.2.1 克隆比特币 61
3.2.2 重新包装Readercoin 62
3.2.3 更改端口 63
3.2.4 更改pchMessageStart 63
3.2.5 创世区块 64
3.2.6 删除种子节点 67
3.2.7 检查点 68
3.2.8 ChainTxData 69
3.2.9 奖励 70
3.2.10 减半 70
3.2.11 总供给量 71
3.2.12 POW参数——目标 71
3.2.13 时间成熟度 74
3.2.14 区块大小 75
3.2.15 BIP:比特币改进建议 76
3.2.16 编译和测试 77
3.2.17 设计和图形(Qt钱包) 78
3.2.18 重新设计比特币-Qt钱包 79
3.2.19 建立一个Readercoin 网络 84
3.2.20 Readercoin 挖矿 86
3.2.21 发送交易 89
3.2.22 创建交易和区块浏览器 89
3.2.23 建立交易所 92
3.3 小结 93
第4章 以太坊中的点对点拍卖 94
4.1 以太坊简介 95
4.1.1 以太坊虚拟机和智能合约 95
4.1.2 以太币和gas 96
4.1.3 你的第一个智能合约 96
4.1.4 DApp是什么 97
4.2 创建拍卖DApp 98
4.2.1 拍卖描述 98
4.2.2 使用Solidity语言编写拍卖合约 99
4.2.3 合约代码分析 100
4.2.4 继承 105
4.2.5 Remix IDE 110
4.2.6 web3.js中的投标表格 113
4.2.7 web3.js API简介 116
4.3 部署环境——方法多多 122
4.3.1 选择1:Ganache 122
4.3.2 选择2:测试网 124
4.3.3 选择3:私有网络 126
4.3.4 用solc编译和部署合约 132
4.3.5 POA共识机制和难度调整 132
4.4 运行拍卖DApp 134
4.4.1 合约和交易成本 135
4.4.2 Solidity 的几个实用技巧 138
4.5 小结 138
第5章 使用Truffle和Drizzle构建Tontine游戏 139
5.1 背景情况 140
5.2 快速了解Truffle 140
5.2.1 安装Truffle 141
5.2.2 简单了解Truffle 141
5.2.3 首次运行Truffle 142
5.3 Tontine合约 145
5.4 作为CRUD合约的Cplayer 147
5.4.1 智能合约数据位置 147
5.4.2 CRUD——创建 149
5.4.3 CRUD——读取 149
5.4.4 CRUD——更新 151
5.4.5 CRUD —— 删除 151
5.5 Tontine接口——Itontine 152
5.6 接口实现——Ctontine合约 153
5.6.1 智能合约交互 154
5.6.2 加入游戏 156
5.6.3 ping()方法 159
5.6.4 eliminate()方法 160
5.6.5 share_pension()方法 160
5.6.6 claimReward()方法 161
5.7 Truffle单元测试 162
5.7.1 准备测试环境 162
5.7.2 迁移合约 162
5.7.3 准备测试 163
5.7.4 测试addPlayer() 164
5.7.5 测试findPlayer() 164
5.7.6 测试removePlayer() 165
5.7.7 测试Ctontine 165
5.7.8 测试payable函数 166
5.7.9 测试事件 167
5.7.10 测试claimReward() 167
5.7.11 运行测试 169
5.7.12 使用Solidity进行测试 169
5.7.13 使用Truffle 和Remix进行调试 171
5.8 使用Drizzle的前端 180
5.8.1 准备环境 180
5.8.2 Drizzle box是什么 180
5.8.3 初次了解Drizzle box 181
5.8.4 黑客攻击Drizzle box 183
5.8.5 游戏主页 184
5.9 试用DApp 187
5.9.1 将Ganache连接到MetaMask 188
5.9.2 运行Tontine DApp 189
5.9.3 表演时间——准备好了吗 191
5.9.4 获取帮助 193
5.10 小结 194
第6章 以区块链为基础的期货系统 195
6.1 项目展示 195
6.2 期货智能合约 196
6.3 web3j 199
6.3.1 准备环境 200
6.3.2 设置web3j Maven 项目 200
6.3.3 安装web3j 202
6.3.4 创建钱包 202
6.4 Java客户端 203
6.4.1 封装生成器 205
6.4.2 初始化web3j 205
6.4.3 设置以太坊账户 206
6.4.4 部署合约 206
6.4.5 与智能合约交互 207
6.4.6 调用合约函数 207
6.4.7 调用 view 方法 209
6.4.8 web3j事件 209
6.4.9 性能提升 210
6.5 小结 211
第7章 商业区块链 212
7.1 区块链的公共与私有、许可与无许可 212
7.2 以太坊中的隐私和匿名 213
7.3 为什么隐私和匿名很重要 214
7.4 以太坊企业联盟 214
7.5 区块链即服务 215
7.6 Quorum 215
7.6.1 隐私 215
7.6.2 更高性能和吞吐量 216
7.6.3 许可和治理 216
7.6.4 Quorum 客户端 216
7.6.5 我们的项目 217
7.7 小结 223
第8章 分布式存储IPFS和Swarm 224
8.1 背景 224
8.2 Swarm和IPFS 225
8.2.1 IPFS的安装 226
8.2.2 安装Swarm 228
8.3 托管前端 229
8.3.1 使用IPFS服务前端 229
8.3.2 使用Swarm服务前端 231
8.4 IPFS文件上传器项目 234
8.4.1 创建项目 234
8.4.2 网页 235
8.5 小结 238
第9章 超级账本上的供应链 239
9.1 食品供应链 239
9.2 超级账本概览 240
9.2.1 Hyperledger Fabric 240
9.2.2 Hyperledger Composer 242
9.3 建立开发环境 242
9.3.1 准备环境 243
9.3.2 安装Hyperledger Fabric 243
9.4 Fabric链码 243
9.4.1 编写链码 244
9.4.2 Init函数 245
9.4.3 Invoke函数 247
9.4.4 Query函数 250
9.5 创建商业网络 252
9.5.1 超级账本隐私 253
9.5.2 定义compose文件中的服务 253
9.5.3 资源和概要文件 256
9.5.4 Fabric通道和创世区块 257
9.5.5 生成对等节点和订单方证书 258
9.5.6 启动Docker容器 260
9.5.7 加入通道并安装链码 262
9.6 链码编译和部署 263
9.7 运行项目 264
9.7.1 通过REST API/JSON-RPC交互 266
9.7.2 Hyperledger Composer 272
9.8 小结 278
第10章 信用证超级账本 279
10.1 信用证理念和设计 279
10.2 开发环境 280
10.2.1 设置IDE 280
10.2.2 启动Hyperledger Fabric 281
10.3 创建一个Composer Fabric应用 282
10.4 信用证商业网络 286
10.4.1 初始信用证模型 287
10.4.2 参与者上线 288
10.4.3 初始协议 289
10.4.4 信用证请求 291
10.4.5 信用证批准 292
10.4.6 信用证通知 293
10.4.7 货物运输 293
10.4.8 提交文件 294
10.4.9 文件交付 295
10.4.10 借方付款 296
10.4.11 支付转账 297
10.4.12 给卖方付款 298
10.4.13 信用证闭卷 299
10.5 部署信用证 300
10.5.1 部署商业网络 300
10.5.2 生产一个REST服务器 301
10.5.3 测试信用证项目 302
10.6 IBM云上的Hyperledger Fabric 308
10.7 小结 313



---------------------------8062314 - 区块链开发实战:基于JavaScript的公链与DApp开发---------------------------


序言
前言
第一部分 区块链开发概述
第1章 自己动手实现一个区块链系统3
1.1 从比特币到区块链3
1.1.1 比特币的诞生和发展3
1.1.2 区块链5
1.2 用300 行代码开发一个区块链系统13
1.2.1 区块和区块链的创建13
1.2.2 工作量证明19
1.2.3 提供和区块链进行交互的API22
1.3 本章总结30
第2章 DApp开发简介32
2.1 智能合约32
2.2 DApp简介34
2.3 区块链应用开发平台简介37
2.3.1 以太坊38
2.3.2 Asch40
2.3.3 Hyperledger41
2.4 本章总结42
第二部分 Asch源码解读
第3章 Asch—区块链应用开发平台47
3.1 Asch的诞生和架构47
3.2 开发工具50
3.3 客户端的基本使用50
3.4 如何基于 Asch 注册自己的资产55
3.5 DApp案例简介57
3.6 本章总结58
第4章 Asch源码概览59
4.1 Asch生态架构59
4.2 asch库简要解读60
4.2.1 数据结构61
4.2.2 合约62
4.2.3 接口63
4.2.4 配置文件64
4.3 asch-core库简要解读64
4.4 Asch主链的启动流程66
4.4.1 app.js66
4.4.2 index.js68
4.4.3 runtime.js69
4.4.4 init.js70
4.5 本章总结72
第5章 账户与安全73
5.1 区块链里的密码学73
5.1.1 非对称加密73
5.1.2 ECDSA算法75
5.2 Asch的账户生成流程80
5.2.1 BIP 3980
5.2.2 ED2551982
5.3 Asch的账户类型82
5.4 本章总结84
第6章 共识机制86
6.1 拜占庭将军问题86
6.2 区块链的共识算法88
6.3 从 DPoS 到 PBFT89
6.3.1 DPoS算法89
6.3.2 PBFT算法91
6.4 共识算法源码解读93
6.4.1 base/consensus.js94
6.4.2 core/delegates.js96
6.5 本章总结102
第7章 区块104
7.1 区块链的数据结构104
7.2 区块的源码解读105
7.2.1 base/block.js106
7.2.2 core/blocks.js110
7.3 本章总结122
第8章 交易123
8.1 Asch上的交易类型123
8.2 交易的生命周期及其实现124
8.2.1 创建交易124
8.2.2 广播交易127
8.2.3 验证交易127
8.2.4 写入区块链129
8.3 本章总结130
第9章 跨链实现132
9.1 跨链技术的提出与探索132
9.2 比特币多签名交易的实现135
9.2.1 m-of-n 多签名交易的脚本135
9.2.2 多签名脚本的执行136
9.2.3 比特币里实现多签名交易137
9.2.4 兑现多签名交易142
9.3 Asch的跨链实现149
9.3.1 网关提案的发起与投票150
9.3.2 跨链账户的开通156
9.3.3 对跨链网关的充值与提现159
9.3.4 对跨链网关的提现160
9.4 本章总结166
第三部分 DApp开发实战
第10章 DApp设计与开发环境搭建169
10.1 DApp整体设计169
10.1.1 前期准备169
10.1.2 业务需求描述170
10.1.3 角色171
10.1.4 经济模型172
10.1.5 代码设计174
10.1.6 DApp 的结构176
10.2 开发环境搭建184
10.2.1 Asch 的网络类型184
10.2.2 配置 localnet185
10.2.3 DApp Demo187
10.3 本章总结193
第11章 DApp合约开发与接口实现194
11.1 DApp合约的开发194
11.1.1 创建频道(createChannel)195
11.1.2 更新频道(updateChannel)198
11.1.3 发布文章(postArticle)199
11.1.4 打赏文章(voteArticle)202
11.1.5 抽奖设计207
11.1.6 发布评论(postComment)208
11.1.7 点赞评论(likeComment)209
11.1.8 举报(report)210
11.1.9 结算抽奖(calculatePrize)211
11.1.10 领取奖励(getReward)214
11.2 DApp 接口的实现215
11.2.1 频道接口217
11.2.2 文章接口219
11.2.3 投票接口222
11.3 DApp的前端实现224
11.3.1 登录224
11.3.2 调用合约225
11.3.3 调用接口226
11.4 本章总结226
第12章 DApp测试227
12.1 测试准备227
12.1.1 初始化函数227
12.1.2 区块等待229
12.1.3 账户生成与转账229
12.2 合约流程测试233
12.3 本章总结238



---------------------------8061317 - 区块链工程实践:行业解决方案与关键技术---------------------------


前言
第1章 基于区块链的可信电子证照1
1.1 背景与现状1
1.1.1 电子证照的发展历史1
1.1.2 区块链在电子证件和身份认证领域的国内外发展现状3
1.2 区块链与电子证照的匹配度分析5
1.3 基于区块链的可信电子证照方案设计7
1.3.1 业务设计7
1.3.2 架构设计9
1.3.3 交互设计11
1.4 关键技术及方法16
1.4.1 以太坊的账户体系16
1.4.2 许可链的节点准入机制18
1.4.3 以太坊的共识机制18
1.4.4 以太坊虚拟机与智能合约20
1.4.5 基于区块链的数据安全共享23
1.4.6 搭建及部署以太坊私有链26
1.5 应用与实践33
1.6 商业模式34
1.6.1 市场空间及潜力34
1.6.2 商业模式34
1.6.3 应用前景35
第2章 电力市场交易结算智能合约38
2.1 背景与现状38
2.1.1 目前电力市场交易结算的痛点38
2.1.2 区块链在能源领域的应用现状40
2.1.3 区块链在清结算领域的应用现状43
2.2 区块链与电力交易结算的匹配度分析45
2.3 电力市场交易结算区块链的方案设计47
2.3.1 以电网为结算主体的电力市场私有链48
2.3.2 以电网为结算主体的电力市场联盟链49
2.3.3 售电平台上的零售智能合约49
2.4 业务流程和主要功能50
2.4.1 总体业务流程50
2.4.2 主要功能53
2.5 关键技术及方法54
2.5.1 电力市场交易结算智能合约54
2.5.2 权益证明共识算法及图灵完备计算环境57
2.5.3 并行存储策略与数据上链方法59
2.5.4 可信智能电表60
2.5.5 电网能源终端交互方法62
2.5.6 小额电费离链支付方法66
2.6 结束语69
第3章 企业红包记账系统71
3.1 背景与现状71
3.1.1 企业红包的优势与挑战71
3.1.2 企业级区块链平台的国内外发展现状73
3.2 区块链与企业红包记账系统的匹配度分析84
3.3 企业红包记账系统的方案设计85
3.3.1 业务设计85
3.3.2 架构设计88
3.3.3 接口设计89
3.3.4 实施方案94
3.4 关键技术及方法98
3.4.1 多通道与隐私保护策略98
3.4.2 Hyperledger Fabric的共识机制99
3.4.3 多排序服务设计原则100
3.5 应用与实践100
3.6 结束语102
第4章 基于区块链的购售电云合同103
4.1 背景与现状103
4.1.1 电力体制改革环境下,电力市场对电子合同的需求激增103
4.1.2 电子合同的优势104
4.1.3 目前购售电电子合同的痛点105
4.2 区块链技术与购售电云合同的匹配度分析106
4.3 区块链在合同存证领域的应用案例108
4.3.1 兴业银行基于区块链防伪平台的合同管理系统108
4.3.2 众签电子合同存证联盟链108
4.3.3 法链电子合同存证联盟链109
4.3.4 微众银行基于区块链的仲裁链110
4.3.5 北京互联网法院“天平链”111
4.3.6 基于区块链的存证App—远光存证111
4.4 业务流程和主要功能112
4.4.1 总体业务流程112
4.4.2 主要功能113
4.5 关键技术与方法115
4.5.1 合同数据的接入及保全方式115
4.5.2 基于区块链的分布式云存储架构119
4.5.3 数据交互智能合约122
4.5.4 基于区块链的云端数据安全共享协议128
4.6 结束语131
第5章 基于区块链的供应链管理132
5.1 背景与现状132
5.1.1 供应链管理与区块链132
5.1.2 供应链金融与区块链136
5.2 区块链技术与供应链的匹配度分析141
5.3 区块链在供应链领域的应用案例144
5.3.1 沃尔玛食品供应链144
5.3.2 马士基跨境供应链解决方案145
5.3.3 Everledger钻石认证145
5.3.4 腾讯“微企链”146
5.3.5 京东“债转平台”147
5.3.6 浙商银行“应收款链平台”148
5.3.7 布比“壹诺金融”148
5.4 基于区块链的供应链管理方案设计148
5.4.1 总体设计148
5.4.2 业务设计152
5.4.3 主要功能156
5.4.4 架构设计157
5.5 关键技术及方法160
5.5.1 微服务160
5.5.2 多链164
5.5.3 物联网设备的数据安全与隐私保护166
5.6 结束语169
参考文献170



---------------------------8061295 - GO语言公链开发实战---------------------------


推荐序一
推荐序二
前言
第1章 公链设计架构 1
1.1 概述 1
1.2 公链总体架构 2
1.3 比原链各模块功能 2
1.3.1 用户交互层 2
1.3.2 接口层 4
1.3.3 内核层 4
1.3.4 钱包层 6
1.3.5 共识层 6
1.3.6 数据存储层 7
1.3.7 P2P分布式网络 8
1.4 编译部署及应用 9
1.5 本章小结 12
第2章 交互工具 13
2.1 概述 13
2.2 bytomcli交互工具 13
2.2.1 bytomcli命令flag参数 13
2.2.2 使用bytomcli查看节点状态信息 15
2.2.3 bytomcli运行案例 16
2.3 dashboard交互工具 21
2.3.1 使用dashboard发送一笔交易 22
2.3.2 使用dashboard开启挖矿模式 22
2.4 本章小结 24
第3章 守护进程的初始化与运行 25
3.1 概述 25
3.2 bytomd守护进程初始化流程及命令参数 25
3.3 bytomd守护进程的初始化实现 27
3.3.1 Node对象 28
3.3.2 配置初始化 29
3.3.3 创建文件锁 32
3.3.4 初始化网络类型 33
3.3.5 初始化数据库(持久化存储) 35
3.3.6 初始化交易池 35
3.5.7 创建一条本地区块链 36
3.3.8 初始化本地钱包 37
3.3.9 初始化网络同步管理 37
3.3.10 初始化Pprof性能分析工具 38
3.3.11 初始化CPU挖矿功能 38
3.4 bytomd守护进程的启动方式和停止方式 39
3.5 本章小结 40
第4章 接口层 41
4.1 概述 41
4.2 实现一个简易HTTP Server 41
4.3 API Server创建HTTP服务 42
4.3.1 创建API对象 42
4.3.2 创建路由项 43
4.3.3 实例化http.Server 44
4.3.4 启动API Server 45
4.3.5 接收并响应请求 45
4.4 HTTP请求的完整生命周期 47
4.5 比原链API接口描述 48
4.6 API接口调用工具 50
4.6.1 使用curl命令行调用API接口 50
4.6.2 使用Postman调用API接口 50
4.7 比原链HTTP错误码一览 51
4.8 本章小结 52
第5章 内核层:区块与区块链 53
5.1 概述 53
5.2 区块 53
5.2.1 区块的数据结构 53
5.2.2 区块头的数据结构 54
5.2.3 区块标识符 55
5.2.4 创世区块 56
5.2.5 生成创世区块 57
5.2.6 区块验证 58
5.2.7 计算下一个区块的难度目标 60
5.2.8 孤块管理 60
5.3 区块链 63
5.3.1 区块链的数据结构 63
5.3.2 区块上链 64
5.3.3 区块连接 65
5.3.4 链重组 66
5.3.5 主链的状态 69
5.4 本章小结 70
第6章 内核层:交易 71
6.1 概述 71
6.2 交易的概念 71
6.2.1 现实生活中的交易 71
6.2.2 虚拟世界中的交易 72
6.3 核心数据结构 72
6.3.1 普通交易核心数据结构 73
6.3.2 Coinbase交易核心数据结构 78
6.3.3 交易Action数据结构 81
6.3.4 MUX交易类型 85
6.4 BUTXO模型 86
6.4.1 BUTXO模型原理 87
6.4.2 MUX结构 88
6.5 交易的流程 89
6.5.1 构建交易 89
6.5.2 签名交易 93
6.5.3 提交交易 95
6.6 隔离见证 97
6.7 交易脚本 97
6.7.1 支付到公钥 98
6.7.2 支付到脚本 99
6.7.3 资产上链 100
6.7.4 资产销毁 102
6.7.5 见证脚本 102
6.7.6 栈语言 103
6.8 交易验证 105
6.8.1 标准交易 105
6.8.2 交易验证流程 106
6.9 交易费 108
6.9.1 估算交易手续费 108
6.9.2 计算交易手续费 110
6.10 交易池 111
6.11 默克尔树 112
6.12 本章小结 115
第7章 内核层:智能合约 116
7.1 概述 116
7.2 基础知识 116
7.2.1 智能合约 116
7.2.2 图灵完备的智能合约 117
7.2.3 UTXO模型和Account模型 117
7.3 合约层设计 118
7.4 智能合约语言 119
7.4.1 Equity语言 119
7.4.2 Equity合约组成 119
7.5 基于UTXO模型合约开发实战 122
7.5.1 编写合约 123
7.5.2 编译合约 123
7.5.3 部署合约 125
7.5.4 解锁合约 129
7.6 本章小结 132
第8章 内核层:虚拟机 133
8.1 概述 133
8.2 BVM介绍 134
8.2.1 虚拟机的栈 134
8.2.2 具有图灵完备性的BVM 135
8.2.3 equity & vm代码结构 135
8.3 virtualMachine对象 136
8.4 栈实现 137
8.5 BVM操作指令集 139
8.6 智能合约在BVM上的运行过程 141
8.6.1 智能合约数据结构 141
8.6.2 合约编译流程与原理 142
8.6.3 合约程序字节码示例 156
8.6.4 合约程序字节码的执行 157
8.6.5 合约程序字节码的执行示例 159
8.7 BVM指令集 160
8.8 本章小结 165
第9章 钱包层 166
9.1 概述 166
9.2 钱包对象 167
9.3 密钥管理 167
9.3.1 密钥对生成 169
9.3.2 密钥对生成算法 170
9.3.3 密钥加密存储 172
9.4 账户管理 174
9.4.1 账户创建 175
9.4.2 账户地址 176
9.4.3 账户余额 178
9.5 资产管理 179
9.5.1 初始默认资产 179
9.5.2 发行资产 180
9.6 交易管理 182
9.6.1 筛选交易 182
9.6.2 筛选UTXO 183
9.6.3 UTXO花费选择算法 184
9.7 钱包管理 186
9.7.1 数据更新 186
9.7.2 备份 187
9.7.3 恢复 188
9.8 本章小结 188
第10章 P2P分布式网络 189
10.1 概述 189
10.2 P2P的四种网络模型 189
10.3 网络节点初始化 191
10.3.1 SyncManager初始化 191
10.3.2 P2P Switch初始化 194
10.4 节点发现机制 196
10.4.1 种子节点 196
10.4.2 Kademlia算法 197
10.4.3 UPnP协议 203
10.4.4 RLPX网络协议 205
10.5 节点发现代码实现 206
10.5.1 节点发现初始化 206
10.5.2 路由表实现 207
10.5.3 Kademlia通信协议 212
10.5.4 邻居节点发现实现 212
10.6 节点状态机 219
10.7 区块同步 223
10.7.1 区块同步流程 223
10.7.2 快速同步算法 225
10.7.3 普通同步算法 230
10.7.4 区块数据请求与发送 231
10.8 交易同步 233
10.9 快速广播 235
10.9.1 新交易快速广播 236
10.9.2 新区块快速广播 238
10.10 节点管理 239
10.10.1 TCP连接数管理 240
10.10.2 Outbound连接数管理 240
10.10.3 动态节点评分机制DynamicBanScore 241
10.11 本章小结 245
第11章 数据存储 246
11.1 概述 246
11.2 为什么使用键值数据库 246
11.3 LevelDB常用操作 247
11.3.1 增删改查操作 247
11.3.2 迭代查询 248
11.3.3 按前缀查询 249
11.3.4 批量操作 249
11.4 存储层缓存 250
11.4.1 缓存淘汰算法 250
11.4.2 比原链缓存实现 252
11.5 存储层持久化 254
11.5.1 比原链数据库 254
11.5.2 持久化存储接口 255
11.5.3 持久化key数据前缀 255
11.5.4 持久化存储区块过程 256
11.6 Varint变长编码 257
11.7 本章小结 258
第12章 共识算法 259
12.1 概述 259
12.2 PoW和PoS 259
12.3 实现一个简易PoW共识算法 261
12.4 比原链PoW共识算法 266
12.4.1 PoW hash值 266
12.4.2 难度动态调整 267
12.4.3 Tensority算法 268
12.5 本章小结 278
第13章 矿池及挖矿流程 279
13.1 概述 279
13.2 与矿池相关的基本概念 279
13.3 矿池总架构 280
13.4 挖矿流程解析(矿池视角) 282
13.5 挖矿流程解析(矿机视角) 283
13.6 拒绝数与拒绝率 286
13.7 矿池的收益分配模式 286
13.8 交易打包至区块 287
13.8.1 Coinbase交易奖励 288
13.8.2 交易手续费Gas 289
13.9 矿池优化建议 290
13.10 本章小结 291
第14章 展望 292
14.1 概述 292
14.2 跨链 293
14.2.1 打通链与链的连接 293
14.2.2 BTC、ETH与BTM的跨链资产交换 293
14.3 闪电网络 294
14.4 子链 295
14.5 本章小结 296



---------------------------8060188 - 基于区块链的物联网项目开发---------------------------


译者序
前言
作者简介
审稿者简介
第1章 了解物联网并在IBM Watson物联网平台上开发 1
1.1 什么是物联网 2
1.2 物联网通用案例 3
1.2.1 车互联 3
1.2.2 人互联 3
1.3 物联网技术要素 4
1.3.1 设备 4
1.3.2 边缘计算 5
1.3.3 网络 6
1.3.4 应用程序协议 11
1.3.5 分析与人工智能 12
1.4 IBM Watson物联网平台特性 12
1.4.1 仪表盘 13
1.4.2 设备、网关和应用 14
1.4.3 安全性 14
1.5 创建你的第一个物联网解决方案 14
1.5.1 创建网关 16
1.5.2 创建应用 17
1.5.3 创建设备 20
1.6 小结 24
1.7 补充阅读 24
第2章 创建物联网解决方案 25
2.1 技术要求 26
2.2 园艺解决方案 26
2.2.1 需求概述 26
2.2.2 解决方案概览 27
2.2.3 设备选择 27
2.2.4 设备布线 32
2.3 对设备固件进行编码 33
2.3.1 测量土壤湿度 34
2.3.2 检测环境温度 36
2.3.3 打开继电器 37
2.3.4 发布事件 38
2.3.5 监测事件 39
2.3.6 订阅行动 43
2.4 创建后端应用 45
2.4.1 在IBM Cloud平台上创建Cloud Foundry应用程序 45
2.4.2 上传代码 47
2.5 小结 50
2.6 补充阅读 51
第3章 区块链技术概述及使用超级账本 53
3.1 区块链是什么 54
3.2 区块链和超级账本 56
3.2.1 Hyperledger项目 57
3.2.2 Hyperledger Fabric 59
3.3 选择一个经典应用案例 64
3.4 小结 66
3.5 问答 67
3.6 补充阅读 67
第4章 创建自己的区块链网络 69
4.1 先决条件 70
4.2 使用Hyperledger Composer创建自己的区块链网络 70
4.2.1 获取Hyperledger Composer 70
4.2.2 探讨一个区块链网络案例的结构 72
4.3 使用Hyperledger Fabric和Composer安装区块链网络 83
4.3.1 设置Docker 83
4.3.2 安装Hyperledger Composer 84
4.3.3 使用Docker安装HyperledgerFabric 1.3 87
4.3.4 在Kubernetes环境中部署Hyperledger Fabric 1.3 88
4.4 小结 88
4.5 补充阅读 89
第5章 运用区块链解决食品安全问题 91
5.1 现代食品链中的规则、挑战和问题 91
5.1.1 来自食品安全的挑战 92
5.1.2 食品安全管理体系:ISO 22000 92
5.2 区块链和物联网如何在食品链中发挥作用 93
5.2.1 食品生态系统 94
5.2.2 食品生态系统中的机遇与挑战 95
5.2.3 食品链是物联网和区块链技术应用的经典案例吗 102
5.3 小结 103
5.4 补充阅读 104
第6章 设计解决方案架构 105
6.1 食品产业 105
6.1.1 食品生态系统的挑战 106
6.1.2 食品加工环节 107
6.1.3 食品配送环节 108
6.1.4 食品零售环节 110
6.2 技术方案 111
6.2.1 前端应用 112
6.2.2 基于物联网的资产跟踪技术 113
6.2.3 API/SDK 115
6.2.4 Hyperledger Composer—高级概述 116
6.3 软件组件 117
6.3.1 Composer REST服务器 117
6.3.2 Hyperledger Composer模型 121
6.3.3 Hyperledger Composer访问控制语言 123
6.3.4 Hyperledger Composer交易处理函数 124
6.4 小结 125
6.5 问答 126
6.6 补充阅读 127
第7章 创建自己的区块链和物联网解决方案 129
7.1 技术要求 130
7.2 解决方案概览 130
7.3 创建区块链网络 131
7.3.1 概念和枚举 132
7.3.2 资产定义 133
7.3.3 参与者 134
7.3.4 为Hyperledger部署和测试业务网络 134
7.3.5 通过区块链中的交易操控资产 137
7.3.6 创建并导出参与者业务卡片 139
7.3.7 定义访问控制列表 141
7.3.8 升级业务网络 144
7.3.9 为每个参与者设置Composer REST服务器 146
7.4 创建解决方案的物联网部分 147
7.4.1 硬件设置 147
7.4.2 固件开发 149
7.4.3 应用开发 150
7.5 端到端测试 153
7.5.1 创建食品盒 154
7.5.2 将资产移交给运输者 155
7.5.3 运输时测量温度 156
7.5.4 将资产转移到仓库 156
7.5.5 创建一个搬运托盘并添加食品盒 157
7.5.6 运输搬运托盘时测量温度 158
7.5.7 跟踪食品盒 158
7.6 小结 160
第8章 物联网、区块链和工业4.0 161
8.1 工业4.0 162
8.2 作为创新平台的云计算 162
8.2.1 云计算模型 162
8.2.2 云计算对于工业4.0的重要性 164
8.3 物联网 165
8.4 区块链—简化业务链 165
8.5 小结 167
第9章 开发区块链和物联网解决方案的最佳实践 169
9.1 开发云应用 170
9.1.1 参考架构 171
9.1.2 使用12因子应用模型进行开发 172
9.1.3  无服务器计算 173
9.2 使用Hyperledger Composer进行区块链开发 174
9.2.1 Hyperledger Composer工具包 174
9.2.2 Hyperledger ComposerREST服务器 174
9.3 小结 176
9.4 补充阅读 176



---------------------------8059533 - Stellar区块链:原理与实践---------------------------



前言
第1章 区块链基础 1
1.1 关键特征 1
1.2 适合场景 2
1.3 关键组成 3
1.3.1 P2P网络 3
1.3.2 共识机制 4
1.3.3 密码学 6
1.3.4 智能合约 9
1.4 网络类型 10
1.5 安全性考量 11
1.6 性能考量 13
1.7 常见基础协议 13
1.7.1 BitCoin 13
1.7.2 Ethereum 15
1.7.3 Ripple 16
1.7.4 Tendermint 16
1.8 标准化 19
1.9 本章小结 21
第2章 Stellar概述 22
2.1 主要特点 22
2.2 关键部件 23
2.2.1 网络结构 23
2.2.2 stellar-core 23
2.2.3 horizon 24
2.3 常用工具 27
2.3.1 Account-Viewer 27
2.3.2 Laboratory 29
2.3.3 Dashboard 32
2.4 Hello New World 34
2.5 联邦拜占庭共识 36
2.6 本章小结 38
第3章 Stellar详解 39
3.1 数据大图 39
3.1.1 账本数据 39
3.1.2 实体数据 41
3.1.3 形态数据 41
3.2 账户 43
3.3 账页 46
3.4 数字资产 50
3.4.1 原生资产 50
3.4.2 通货膨胀 51
3.4.3 发行资产 53
3.4.4 信任资产 53
3.4.5 资产锚点 55
3.5 分布式交易 56
3.5.1 交易挂单 56
3.5.2 被动挂单 58
3.5.3 路径支付 58
3.6 智能合约 58
3.6.1 多签名 58
3.6.2 阈值 62
3.6.3 时间事件 64
3.7 管理数据 64
3.8 事务&操作 65
3.8.1 事务 65
3.8.2 操作 66
3.9 其他概念 75
3.9.1 序列号 75
3.9.2 通道 75
3.9.3 事件 77
3.10 本章小结 79
第4章 数据存证 80
4.1 场景需求 81
4.2 实现原理 82
4.2.1 实名认证 82
4.2.2 数据确权 84
4.2.3 数据查验 84
4.3 实现过程 85
4.3.1 实现代码结构 85
4.3.2 接入区块链网络 86
4.3.3 数据Hash上链 87
4.3.4 事务查验 91
4.4 最佳实践 91
4.5 本章小结 92
第5章 资产交易 93
5.1 场景需求 93
5.2 实现原理 94
5.3 实现过程 96
5.4 最佳实践 101
5.4.1 区块链网络高可用性 101
5.4.2 发行资产总量控制 101
5.4.3 与业务系统集成 102
5.4.4 有效的账户架构设计 102
5.5 本章小结 103
第6章 基于Stellar区块链技术的系统架构设计 104
6.1 业务架构设计 104
6.1.1 什么场景适合区块链? 104
6.1.2 区块链网络形态 105
6.1.3 去中心化? 108
6.1.4 协作模式 108
6.1.5 如何证明是区块链? 109
6.2 逻辑架构设计 109
6.2.1 DApp 109
6.2.2 三种区块链网络链接方式 110
6.2.3 业务监控 110
6.2.4 事务性逻辑处理 111
6.3 物理架构设计 111
6.3.1 节点类型 111
6.3.2 物理架构设计视图 111
6.4 数据架构设计 113
6.4.1 四种数据 113
6.4.2 数据上链 113
6.4.3 数据隐私 113
6.5 账户架构设计 114
6.5.1 用户账户处理 114
6.5.2 发行账户处理 114
6.5.3 账户认证 117
6.6 本章小结 118
第7章 搭建Stellar公有区块链网络节点 119
7.1 公有区块链网络状态 119
7.2 状态机复制 121
7.3 stellar-core部署 123
7.3.1 环境准备 123
7.3.2 安装方式 123
7.3.3 依赖环境安装 124
7.3.4 安装PostgreSQL 124
7.3.5 选择安装分支 127
7.3.6 编译安装 127
7.3.7 创建节点seed 129
7.3.8 配置文件实例 129
7.3.9 初始化数据库 131
7.3.10 启动节点 133
7.4 stellar-core配置参数 134
7.4.1 通用管理类 134
7.4.2 网络类 135
7.4.3 SCP类 137
7.4.4 历史数据类 137
7.4.5 测试类 138
7.4.6 历史归档配置 138
7.4.7 Quorum Set配置 140
7.5 stellar-core最佳实践 141
7.5.1 创建系统服务 141
7.5.2 远程HTTP命令 142
7.5.3 控制台命令 146
7.5.4 使用阿里云OSS作为历史归档数据源 149
7.5.5 stellar-core部署硬盘采用SSD硬盘 149
7.5.6 配置文件特殊字符问题 150
7.5.7 stellar-core安全退出 151
7.5.8 操作系统的系统时间问题 151
7.6 horizon部署 154
7.6.1 环境准备 154
7.6.2 安装方式 155
7.6.3 安装Golang 155
7.6.4 数据库准备 156
7.6.5 源码编译安装 156
7.6.6 最小配置参数 156
7.6.7 启动horizon 157
7.7 horizon配置参数 158
7.8 horizon最佳实践 159
7.8.1 创建系统服务 159
7.8.2 高可用配置 160
7.9 本章小结 161
第8章 搭建一个新的Stellar区块链网络 162
8.1 为什么需要? 162
8.2 网络方案设计 163
8.2.1 网络健壮性方案 163
8.2.2 服务健壮性方案 164
8.2.3 网络性能方案 165
8.2.4 历史归档方案 165
8.3 网络配置启动 166
8.3.1 stellar-core配置 166
8.3.2 启动stellar-core 168
8.3.3 启动后原生资产处理 168
8.3.4 horizon配置 168
8.4 关键代码定制 171
8.4.1 账户地址和Seed前缀修改 171
8.4.2 设置通货膨胀率 171
8.4.3 修改默认配置 172
8.4.4 创世区块修改 173
8.5 本章小结 175
第9章 系统集成 176
9.1 基础服务套件 176
9.2 联邦协议 177
9.2.1 工作原理 178
9.2.2 参考实现 181
9.3 桥接服务 182
9.3.1 工作原理 183
9.3.2 参考实现 183
9.4 合规协议 185
9.4.1 工作原理 185
9.4.2 参考实现 187
9.5 本章小结 188
后记 189
附录 术语中英文对照表 191



---------------------------8058634 - Hyperledger Fabric菜鸟进阶攻略---------------------------


前 言
基 础 篇
第1章 Hyperledger Fabric认知与环境搭建 3
1.1 全面认识超级账本 3
1.1.1 超级账本由来 3
1.1.2 超级账本分类 4
1.1.3 认识Hyperledger Fabric 4
1.2 迈出第一步:搭建环境 5
1.2.1 操作系统 5
1.2.2 安装所需工具 5
1.3 安装Hyperledger Fabric 10
1.3.1 下载fabric-samples与二进制文件 10
1.3.2 Hyperledger Fabric源码方式编译 12
1.4 测试Hyperledger Fabric网络环境 17
1.4.1 测试Hyperledger Fabric环境 18
1.4.2 构建你的第一个Hyperledger Fabric网络 18
第2章 深入浅出介绍Hyperledger Fabric架构设计 21
2.1 透视逻辑架构与运行时架构 21
2.1.1 逻辑架构 21
2.1.2 运行时架构 22
2.2 Hyperledger Fabric交易流程分析 24
2.3 Hyperledger Fabric核心配置文件详解 28
2.3.1 core.yaml详解 29
2.3.2 orderer.yaml详解 36
第3章 搭建自己的Hyperledger Fabric网络 39
3.1 生成组织结构与身份证书 39
3.1.1 与组织结构及身份证书关联的配置文件 39
3.1.2 如何生成组织结构及身份证书 40
3.2 不可或缺的配置文件 45
3.2.1 configtx.yaml配置文件指定的核心内容 45
3.2.2 Orderer服务启动初始区块的创建 47
3.2.3 创建必需的应用通道交易配置文件 48
3.2.4 生成锚节点更新配置文件 49
3.3 一分钟启动分布式网络 49
3.3.1 网络服务的配置 50
3.3.2 关联的docker-compose-base.yaml 52
3.3.3 又被关联的peer-base.yaml 54
3.3.4 启动网络 55
3.4 以最快的方式完成应用通道的创建 57
3.4.1 创建应用通道 57
3.4.2 将节点加入应用通道 58
3.4.3 更新锚节点 59
链 码 篇
第4章 全方位认识链码:链码管理与测试 63
4.1 初识链码:链码的概念与原理 63
4.2 链码使用:安装、实例化、查询与调用 65
4.2.1 安装链码 66
4.2.2 实例化链码 66
4.2.3 查询链码 67
4.2.4 调用链码 67
4.3 链码的其他操作:实现链码的打包与升级 69
4.3.1 链码的打包与签名 69
4.3.2 链码的升级 70
4.4 开发模式下的测试:简化链码的测试过程 72
4.4.1 启动网络 72
4.4.2 构建并启动链码 73
4.4.3 调用链码 74
第5章 链码开发与实践 77
5.1 如何利用Fabric提供的接口编写链码 77
5.1.1 链码接口 78
5.1.2 必要结构 78
5.2 如何操作账本数据:熟悉链码相关API 79
5.3 链码实现的Hello World 81
5.3.1 链码开发 82
5.3.2 链码测试 84
5.4 动手编码一:链码实现资产管理 85
5.4.1 资产链码开发 85
5.4.2 链码测试 88
5.5 动手编码二:链码实现转账 89
5.5.1 转账链码开发 89
5.5.2 链码测试 97
核 心 篇
第6章 MSP成员管理与Hyperledger Fabric CA服务实现 101
6.1 走进MSP 101
6.1.1 MSP的定义与作用 101
6.1.2 MSP的组成结构 102
6.1.3 MSP应用 103
6.2 认识与安装Hyperledger Fabric CA 105
6.3 启动Hyperledger Fabric CA 107
6.3.1 初始化 107
6.3.2 快速启动 108
6.3.3 配置数据库 109
6.3.4 配置LDAP 110
6.4 应用Hyperledger Fabric CA的客户端命令 111
6.4.1 Hyperledger Fabric CA客户端命令 112
6.4.2 查看AKI和序列号 116
第7章 白话Hyperledger Fabric共识机制 118
7.1 Hyperledger Fabric中的共识实现 118
7.1.1 共识算法的属性和类型 118
7.1.2 Hyperledger Fabric中的共识实现 120
7.2 基于Kafka排序服务的实现 121
7.2.1 指定Kafka实现排序服务 122
7.2.2 配置网络环境 123
7.2.3 启动网络 129
7.2.4 测试Kafka排序服务 131
7.3 多链及多通道实现 133
7.3.1 多链及多通道 133
7.3.2 应用多通道 135
第8章 Hyperledger Fabric中数据分发机制的实现 139
8.1 认识Gossip 139
8.1.1 Gossip协议 139
8.1.2 Gossip数据传输 140
8.2 Hyperledger Fabric中数据同步的实现 141
8.2.1 Hyperledger Fabric中的Gossip 141
8.2.2 Hyperledger Fabric的数据同步实现 144
第9章 Hyperledger Fabric分布式账本数据存储 147
9.1 交易数据的存储 147
9.1.1 区块链账本数据 147
9.1.2 数据存储 150
9.2 Hyperledger Fabric状态数据库 154
9.2.1 CouchDB数据库简介 154
9.2.2 CouchDB在Hyperledger Fabric中的具体实现 154
9.2.3 测试CouchDB 159
项目实战篇
第10章 Web项目实战之环境搭建 165
10.1 环境准备清单 165
10.2 搭建网络环境 166
10.2.1 网络环境准备 166
10.2.2 配置docker-compose.yml文件 167
10.2.3 测试网络环境 171
第11章 Web项目实战之使用Fabric-SDK-Go 173
11.1 创建Fabric-SDK对象并建立通道 173
11.1.1 配置Fabric-SDK 173
11.1.2 定义所需结构体 177
11.1.3 创建Fabric-SDK 178
11.1.4 测试创建通道 179
11.2 满足依赖 180
11.2.1 安装dep工具 180
11.2.2 下载所需依赖 181
11.2.3 测试Fabric-SDK 181
11.2.4 关闭网络并清理环境 182
11.2.5 利用Makefile简化步骤 182
11.3 链码实现 184
11.4 使用Fabric-SDK实现链码的自动部署 186
11.4.1 添加结构体成员 186
11.4.2 使用Fabric-SDK安装及实例化链码 187
11.4.3 在main中调用 188
11.4.4 测试 188
第12章 Web项目实战之Web应用实现 190
12.1 理解MVC,合理地设计应用 190
12.2 调用链码:设计业务层 192
12.2.1 事件处理 192
12.2.2 调用链码添加状态 193
12.2.3 调用链码查询状态 194
12.3 MVC架构应用实现 196
第13章 实战:构建学历信息征信系统 201
13.1 需求分析与架构设计 201
13.1.1 需求分析 201
13.1.2 架构设计 202
13.1.3 数据模型设计 202
13.1.4 网络环境 203
13.1.5 测试网络环境 205
13.2 SDK与链码的实现 205
13.2.1 创建config.yaml文件 205
13.2.2 声明结构体 205
13.2.3 编写链码 206
13.2.4 Fabric-SDK-Go实现 211
13.2.5 安装依赖 214
13.2.6 链码自动部署 216
13.3 业务层实现 218
13.3.1 事件处理 218
13.3.2 业务层调用链码实现添加状态 219
13.3.3 根据证书编号与姓名查询状态 221
13.3.4 根据身份证号码查询状态 223
13.3.5 修改/添加信息状态 224
13.4 控制层实现 226
13.4.1 设置系统用户 226
13.4.2 处理响应 228
13.4.3 处理请求 228
13.4.4 指定路由 228
13.5 视图层实现 228
13.5.1 结构 228
13.5.2 相关源码实现 229
13.5.3 照片上传 230
13.6 项目交互演示 231
13.6.1 启动Web服务 231
13.6.2 访问页面 232
附录 词汇术语表 235



---------------------------8058637 - 深入以太坊智能合约开发---------------------------


推荐序
赞誉
前言
第一部分 准备篇
第1章 快速了解以太坊2
1.1 以太坊是什么2
1.2 以太坊的历史和发展路线图5
1.3 以太坊的基本概念8
1.3.1 账户(accounts)8
1.3.2 合约(contracts)9
1.3.3 交易(transaction)和消息(message)9
1.3.4 气(gas)10
1.4 以太币(ether)12
1.4.1 以太币的发行12
1.4.2 以太币的单位13
1.4.3 以太坊挖矿13
1.5 以太坊测试网络13
1.6 以太坊客户端14
1.7 以太坊生态系统全景扫描15
1.7.1 Swarm15
1.7.2 ENS15
1.7.3 Whisper16
1.7.4 其他相关项目16
1.8 本章小结17
第2章 以太坊基础交互及基础开发工具详解18
2.1 以太坊客户端的下载、安装及简介18
2.1.1 Geth下载18
2.1.2 Geth安装19
2.1.3 Geth启动与数据结构20
2.1.4 网络环境分类20
2.2 核心命令和参数解析21
2.2.1 如何获得命令及参数21
2.2.2 常见基础操作命令22
2.2.3 常见web3j交互命令23
2.3 Remix详解26
2.3.1 Remix简介26
2.3.2 Remix实战27
2.4 本章小结32
第二部分 基础篇
第3章 智能合约开发语言Solidity基础34
3.1 智能合约与Solidity简介34
3.2 Solidity基础语法35
3.2.1 版本杂注35
3.2.2 import的用法35
3.2.3 代码注释36
3.2.4 数据类型36
3.2.5 全局变量52
3.2.6 表达式和控制结构55
3.3 Solidity语言速查表63
3.4 Solidity源代码书写风格68
3.5 本章小结82
第4章 Solidity编译器83
4.1 安装Solidity编译器83
4.1.1 直接获取可执行程序包83
4.1.2 从源代码编译构建84
4.1.3 Solidity编译器版本号详解86
4.2 使用Solidity编译器87
4.2.1 命令行编译器87
4.2.2 编译器输入、输出的JSON描述88
4.3 合约元数据93
4.4 本章小结96
第5章 Solidity智能合约编写97
5.1 创建智能合约97
5.2 可见性控制99
5.3 getter函数100
5.4 函数修饰器102
5.5 状态常量104
5.6 函数104
5.6.1 view函数105
5.6.2 pure函数105
5.6.3 fallback函数106
5.6.4 函数重载107
5.7 事件108
5.8 继承110
5.8.1 基类构造函数110
5.8.2 多重继承111
5.8.3 线性化114
5.9 抽象智能合约114
5.10 接口115
5.11 库116
5.12 using for的用法119
5.13 本章小结121
第6章 Solidity集成开发工具简介122
6.1 Truffle122
6.1.1 Truffle简介122
6.1.2 快速体验123
6.1.3 用Truffle的开发过程124
6.1.4 Truffle高级用法134
6.2 Embark136
6.2.1 Embark安装137
6.2.2 Embark快速开始138
6.2.3 Embark常规用法139
6.2.4 智能合约的配置与调用143
6.2.5 Embark去中心化存储145
6.2.6 Embark去中心化通信148
6.3 其他工具(Remix)149
6.3.1 Solidity编辑与编译149
6.3.2 Solidity合约部署150
6.4 本章小结151
第三部分 进阶篇
第7章 深入理解以太坊虚拟机154
7.1 区块链范式154
7.2 状态、交易、收据和区块155
7.2.1 状态155
7.2.2 交易156
7.2.3 收据157
7.2.4 区块158
7.2.5 以太坊基础数据结构汇总160
7.2.6 理解gas161
7.3 交易执行162
7.4 执行模型—以太坊虚拟机163
7.4.1 EVM概述164
7.4.2 EVM基础操作码164
7.4.3 EVM代码的执行166
7.5 合约创建167
7.6 消息调用168
7.7 区块定稿170
7.8 本章小结172
第8章 应用二进制接口174
8.1 函数选择器174
8.2 参数编码175
8.2.1 类型的规范表达175
8.2.2 编码的形式化说明176
8.2.3 编码实例178
8.3 动态类型的使用180
8.4 事件184
8.5 合约接口的JSON描述185
8.6 处理元组类型186
8.7 非标准打包模式188
8.8 本章小结189
第9章 OpenZeppelin源代码详解190
9.1 通用基础合约191
9.1.1 地址工具(AddressUtils.sol)191
9.1.2 椭圆曲线签名操作(ECRecovery.sol)192
9.1.3 限制子合约的余额(LimitBalance.sol)194
9.1.4 Merkle证明(Merkle-Proof.sol)195
9.1.5 拒绝重入(Reentrancy-Guard.sol)196
9.2 算术运算197
9.2.1 基本算术(Math.sol)197
9.2.2 安全算术(SafeMath.sol)198
9.3 自省(introspection)200
9.3.1 ERC165(ERC165.sol)200
9.3.2 接口查找基础合约(Supports-InterfaceWithLookup.sol)201
9.4 归属权(用户权限)202
9.4.1 归属权(Ownable.sol)202
9.4.2 用户角色(Roles.sol)204
9.4.3 基于角色的访问控制(RBAC.sol)205
9.4.4 超级用户(Superuser.sol)208
9.4.5 联系方式(Contactable.sol)210
9.4.6 归属权转移请求(Claimable.sol)210
9.4.7 有时限的归属权转移请求(DelayedClaimable.sol)211
9.4.8 归属权继承(Heritable.sol)212
9.4.9 合约不归属于合约(HasNoContracts.sol)215
9.4.10 合约不持有以太币(HasNoEther.sol)216
9.4.11 合约可找回token(Can-ClaimToken.sol)218
9.4.12 合约不持有token(HasNo-Tokens.sol)218
9.4.13 合约什么都不持有(NoOwner.sol)219
9.5 访问控制220
9.5.1 签名保镖(Signature-Bouncer.sol)220
9.5.2 白名单(Whitelist.sol)224
9.6 生命周期226
9.6.1 可自毁(Destructible.sol)226
9.6.2 可暂停运作(Pausable.sol)227
9.6.3 token可自毁(Token-Destructible.sol)228
9.7 支付和悬赏230
9.7.1 托管(Escrow.sol)230
9.7.2 条件托管(Conditional-Escrow.sol)231
9.7.3 退还托管(Refund-Escrow.sol)232
9.7.4 费用支付(PullPayment.sol)233
9.7.5 分割付款(SplitPayment.sol)235
9.7.6 悬赏(Bounty.sol)237
9.8 ERC20239
9.8.1 ERC20Basic(ERC20Basic.sol)240
9.8.2 BasicToken(BasicToken.sol)240
9.8.3 ERC20(ERC20.sol)241
9.8.4 SafeERC20(SafeERC20.sol)243
9.8.5 ERC20详情(Detailed-ERC20.sol)244
9.8.6 标准token(Standard-Token.sol)244
9.8.7 可销毁的token(BurnableToken.sol)247
9.8.8 可销毁的标准token(StandardBurnableToken.sol)248
9.8.9 可暂停的标准token(PauseableToken.sol)249
9.8.10 可增发的标准token(MintableToken.sol)250
9.8.11 有增发上限的标准token(CappedToken.sol)252
9.8.12 可授权增发的标准token(RBACMintableToken.sol)252
9.8.13 锁定token的提取(TokenTimelock.sol)254
9.8.14 定期发放token(Token-Vesting.sol)255
9.9 Crowdsale258
9.9.1 Crowdsale(Crowdsale.sol)258
9.9.2 有上限的Crowdsale(CappedCrowdsale.sol)263
9.9.3 有独立上限的Crowdsale(IndividuallyCapped-Crowdsale.sol)264
9.9.4 有时限的Crowdsale(TimedCrowdsale.sol)266
9.9.5 有白名单的Crowdsale(WhitedlistedCrowdsale.sol)268
9.9.6 自动涨价的Crowdsale(IncreasingPriceCrowdsale.sol)269
9.9.7 可增发的Crowdsale(MintedCrowdsale.sol)270
9.9.8 有额度的Crowdsale(AllowanceCrowdsale.sol)271
9.9.9 有完结处理的Crowdsale(FinalizableCrowdsale.sol)272
9.9.10 后发送token的Crowdsale(PostDeliveryCrowdsale.sol)273
9.9.11 退款库(RefundVault.sol)274
9.9.12 可退款的Crowdsale(RefundableCrowdsale.sol)276
9.10 ERC721278
9.10.1 ERC721Basic(ERC721Basic.sol)278
9.10.2 ERC721(ERC721.sol)281
9.10.3 ERC721Receiver(ERC721Receiver.sol)282
9.10.4 ERC721Holder(ERC721Holder.sol)283
9.10.5 ERC721BasicToken(ERC721BasicToken.sol)284
9.10.6 ERC721Token(ERC721Token.sol)292
9.11 本章小结298
第10章 智能合约安全编码指南299
10.1 已知的攻击299
10.1.1 重入299
10.1.2 算术溢出303
10.1.3 意外之财305
10.1.4 delegatecall308
10.1.5 默认的可见性313
10.1.6 随机错觉313
10.1.7 外部智能合约引用315
10.1.8 短地址/参数攻击316
10.1.9 未检查的返回值317
10.1.10 竞争条件/预先交易317
10.1.11 拒绝服务318
10.1.12 时间戳操纵320
10.1.13 未初始化的存储指针320
10.1.14 浮点和数据精度321
10.1.15 tx.origin判定322
10.2 智能合约开发最佳实践323
10.2.1 智能合约安全开发的基本理念323
10.2.2 智能合约设计开发中的基本权衡324
10.2.3 使用Solidity进行智能合约开发的部分最佳实践325
10.2.4 软件工程上的考量329
10.3 智能合约安全开发辅助工具331
10.4 安全信息/安全通知渠道332
10.5 本章小结332
第四部分 实战篇
第11章 Java版本DApp完整示例336
11.1 DApp智能合约的编写及发布336
11.1.1 DApp智能合约336
11.1.2 智能合约发布337
11.2 环境配置337
11.2.1 逆向生成代码338
11.2.2 创建Java项目与功能验证339
11.3 本章小结341
第12章 DApp示例—宠物店342
12.1 环境准备343
12.2 创建项目343
12.3 编写智能合约343
12.3.1 创建智能合约文件344
12.3.2 定义变量344
12.3.3 领养方法344
12.3.4 查询领养者的方法344
12.4 编译部署合约345
12.4.1 编译合约345
12.4.2 部署合约345
12.5 智能合约测试347
12.5.1 测试adopt()方法347
12.5.2 测试获取单个宠物的领养者348
12.5.3 测试获取所有宠物的领养者348
12.5.4 运行测试348
12.6 前端代码编号349
12.6.1 初始化Web3349
12.6.2 初始化合约349
12.6.3 获取领养的宠物并更新界面350
12.6.4 处理adopt()方法350
12.7 浏览器中与DApp交互350
12.7.1 安装配置MetaMask351
12.7.2 DApp交互352
12.8 本章小结354
附录A Merkle Patricia Tree355
A.1 MPT中的节点类型355
A.2 十六进制前缀编码356
A.3 树的示例356
附录B 递归长度前缀编码359
附录C EVM中的费用设计和操作码设计361
附录D Solidity汇编语言367
D.1 内联汇编库合约实例368
D.2 内联汇编语言特性370
D.3 独立汇编378
D.4 汇编语法380



---------------------------8057274 - Hyperledger Fabric技术内幕:架构设计与实现原理---------------------------


前言
第1章 区块链基础与Hyperledger Fabric架构1
1.1 区块链背景、概念与现状1
1.1.1 区块链产生的背景及研究热潮1
1.1.2 区块链概念与核心技术6
1.1.3 区块链典型平台现状及趋势12
1.2 Hyperledger Fabric基本概念与架构15
1.2.1 基本概念15
1.2.2 Hyperledger Fabric架构22
1.2.3 安装基础环境与部署Fabric系统25
1.2.4 Fabric初始化启动流程30
1.2.5 Fabric交易处理流程58
1.3 Hyperledger Fabric源码分析说明60
1.3.1 源码分析思路60
1.3.2 配置机制64
1.4 小结66
第2章 Orderer排序节点67
2.1 功能概述68
2.2 Orderer节点启动流程70
2.2.1 加载orderer.yaml配置文件71
2.2.2 初始化日志与本地MSP组件73
2.2.3 启动Orderer排序节点74
2.3 Broadcast交易广播服务92
2.3.1 概述92
2.3.2 Broadcast服务消息处理93
2.4 Orderer共识排序服务(配置交易消息)102
2.4.1 概述102
2.4.2 Solo共识组件103
2.4.3 Kafka共识组件110
2.5 Orderer共识排序服务(普通交易消息)122
2.5.1 概述122
2.5.2 Solo共识组件123
2.5.3 Kafka共识组件126
2.6 Deliver区块分发服务131
2.6.1 概述132
2.6.2 Deliver服务消息处理133
2.6.3 Deliver服务客户端140
2.7 小结150
第3章 Peer节点151
3.1 功能概述152
3.1.1 链码生命周期管理152
3.1.2 系统链码155
3.1.3 用户链码156
3.2 Peer节点启动流程157
3.2.1 启动流程概述157
3.2.2 定义、注册命令与初始化配置157
3.2.3 初始化本地MSP组件159
3.2.4 执行启动Peer节点命令161
3.3 peer channel通道子命令183
3.3.1 定义注册channel子命令183
3.3.2 创建通道命令create189
3.3.3 Peer节点加入通道命令join193
3.3.4 获取区块命令fetch198
3.3.5 获取区块链信息getinfo201
3.3.6 获取已加入通道列表list205
3.3.7 签名配置交易文件signconfigtx207
3.3.8 更新通道配置update210
3.4 peer chaincode链码子命令212
3.4.1 定义注册chaincode子命令213
3.4.2 安装链码命令install216
3.4.3 实例化链码命令instantiate224
3.4.4 调用链码命令invoke232
3.4.5 查询链码命令query237
3.4.6 升级链码命令upgrade239
3.4.7 查询链码列表命令list244
3.4.8 打包链码命令package250
3.4.9 签名链码包命令signpackage254
3.5 其他子命令257
3.5.1 状态查询子命令257
3.5.2 版本子命令257
3.5.3 日志子命令257
3.6 小结258
第4章 Endorser背书节点259
4.1 功能概述259
4.2 Endorser背书服务261
4.3 预处理签名提案消息264
4.3.1 验证消息格式与签名合法性265
4.3.2 检查是否为允许外部调用的系统链码266
4.3.3 检查签名提案消息的唯一性266
4.3.4 检查是否满足通道的访问权限策略267
4.4 模拟执行提案268
4.4.1 检查实例化策略270
4.4.2 启动链码容器概述271
4.4.3 准备启动链码容器276
4.4.4 启动系统链码inprocContainer容器285
4.4.5 启动用户链码Docker容器290
4.4.6 消息处理核心函数300
4.4.7 请求链码执行311
4.4.8 停止链码容器321
4.4.9 处理模拟执行结果323
4.5 对模拟执行结果签名背书326
4.6 小结330
第5章 Committer记账节点331
5.1 功能概述332
5.2 创建与调用Committer功能模块333
5.2.1 创建Committer功能模块333
5.2.2 调用Committer功能模块335
5.3 交易验证器341
5.3.1 验证交易数据的合法性342
5.3.2 VSCC验证交易背书策略353
5.4 账本提交器370
5.4.1 验证与准备数据374
5.4.2 提交账本数据388
5.5 小结397
第6章 Gossip消息模块398
6.1 功能概述399
6.2 Gossip消息模块启动流程402
6.2.1 创建与初始化Gossip服务器实例402
6.2.2 初始化通道上的Gossip服务模块410
6.3 Gossip消息通信与处理机制418
6.3.1 Gossip消息概述418
6.3.2 Gossip消息通信与处理机制420
6.3.3 Gossip服务实例中的消息处理462
6.3.4 state模块中的数据消息处理485
6.3.5 state模块中的远程状态与隐私数据消息处理490
6.3.6 Fetcher组件中的隐私数据请求与响应消息处理494
6.3.7 election选举模块中的主节点选举消息处理499
6.4 Gossip节点管理机制501
6.4.1 管理新加入Peer节点501
6.4.2 选举Leader主节点503
6.4.3 更新节点相关信息机制508
6.5 Gossip数据分发与状态同步机制513
6.5.1 分发区块数据流程513
6.5.2 分发隐私数据流程515
6.5.3 更新通道状态信息521
6.5.4 更新数据消息522
6.6 Gossip反熵算法523
6.6.1 获取当前最大的账本高度523
6.6.2 分批发送远程状态请求消息525
6.6.3 处理远程状态请求消息527
6.7 小结530
第7章 公共功能模块531
7.1 账本数据存储模块531
7.1.1 Peer节点账本532
7.1.2 idStore数据库541
7.1.3 区块数据文件与隐私数据库542
7.1.4 区块索引数据库565
7.1.5 状态数据库565
7.1.6 历史数据库579
7.1.7 transient隐私数据库580
7.2 安全服务模块600
7.2.1 MSP(成员关系服务模块)600
7.2.2 BCCSP(区块链密码服务模块)609
7.3 Events事件模块611
7.3.1 创建事件服务器611
7.3.2 订阅与发布事件613
7.3.3 注册与注销事件616
7.4 小结618
附录A Hyperledger Fabric配置文件619
附录B e2e_cli示例相关文件情况628
参考文献633



---------------------------8057071 - 区块链财税管理与Corda开发指南---------------------------


前言
第1章 区块链与分布式账本技术1
1.1 概念理解1
1.1.1 区块链的核心本质1
1.1.2 区块链与分布式账本的异同点4
1.2 技术理解4
1.2.1 区块链和分布式账本架构的组成4
1.2.2 五种非常有用的加密算法6
1.2.3 几种具有代表性的架构和共识算法7
1.2.4 区块链激励机制设计与发展趋势9
第2章 区块链重塑企业财务管理11
2.1 现代企业财务管理的现状11
2.1.1 资金往来管理11
2.1.2 成本费用管理12
2.1.3 会计核算管理12
2.2 现代企业财务管理的痛点13
2.3 区块链重塑企业财务管理14
2.3.1 区块链改善生产、运营、财务协同效率的应用设计14
2.3.2 区块链改善内部、外部信息系统连接关系的应用设计15
2.3.3 区块链简化业务单据和业务留痕机制的应用设计16
2.3.4 区块链筑起合规墙减少审计与稽核投入的应用设计17
2.3.5 财务虚拟机与会计智能合约编辑语言的应用设计18
第3章 区块链重塑税收管理19
3.1 当前社会税收管理现状19
3.1.1 税收领域的税种分类19
3.1.2 各类税收管理的特点20
3.2 区块链对税收科技产生影响的四个阶段22
3.3 区块链在电子发票领域的应用23
3.3.1 电子发票的应用现状23
3.3.2 电子发票大规模应用的难点25
3.3.3 区块链技术的主要特点与电子发票对应分析26
3.3.4 区块链技术用于电子发票管理的4个基本要点27
3.4 全国区块链税收总账与分类账体系设计29
3.5 财税联盟链的设计30
第4章 关键概念33
4.1 基础概念33
4.1.1 Corda网络33
4.1.2 账本34
4.1.3 身份35
4.2 交易与共识相关概念36
4.2.1 状态36
4.2.2 合约38
4.2.3 交易39
4.2.4 流43
4.2.5 共识46
4.2.6 公证人47
4.2.7 时间窗49
4.3 其他相关概念49
4.3.1 预言机49
4.3.2 节点51
4.3.3 权衡53
第5章 快速入门55
5.1 安装设置55
5.1.1 Windows平台安装说明56
5.1.2 Mac平台安装说明57
5.1.3 Corda源代码58
5.2 运行CorDapp例子59
5.2.1 在IntelliJ中打开例子59
5.2.2 项目结构60
5.2.3 运行例子62
第6章 Corda应用开发基础69
6.1 什么是CorDapp69
6.2 编写一个CorDapp70
6.3 平台升级的方法72
6.3.1 平台升级的一般规则73
6.3.2 从V1.0或V2.0升级到V3.073
6.3.3 网络地图服务的升级修改73
6.3.4 Corda插件74
6.3.5 AMQP74
6.3.6 配置75
6.3.7 测试75
6.4 应用升级的方法76
6.4.1 与应用升级有关的概念76
6.4.2 如何升级流78
6.4.3 合约和状态的版本控制80
6.5 构建应用84
6.6 基于平台主版本构建应用87
第7章 Corda应用开发API88
7.1 Corda API总览88
7.1.1 内部API和稳定性保证89
7.1.2 Corda稳定模块89
7.1.3 Corda孵化中的模块90
7.1.4 Corda不稳定模块90
7.1.5 @DoNotImplement 注释91
7.2 States91
7.2.1 ContractState91
7.2.2 ContractState sub-interfaces91
7.2.3 用户定义的字段93
7.2.4 Vault94
7.2.5 TransactionState94
7.3 Persistence95
7.3.1 模式95
7.3.2 定制模式注册96
7.3.3 对象关系映射96
7.3.4 JDBC会话98
7.4 Contracts99
7.4.1 合约99
7.4.2 账本交易100
7.4.3 命令101
7.4.4 用命令进行分支验证102
7.5 Contract Constraints102
7.6 Vault Query106
7.7 Transactions114
7.8 Flows121
7.8.1 启动器121
7.8.2 应答器122
7.8.3 流逻辑122
7.8.4 服务集线器123
7.8.5 公证人124
7.8.6 流会话124
7.8.7 交易发送125
7.8.8 交易对方反应126
7.8.9 为什么要会话126
7.8.10 子流128
7.8.11 进度跟踪器131
7.8.12 并发、锁定132
7.9 Identity133
7.9.1 当事人133
7.9.2 机密身份133
7.9.3 SWAP流134
7.9.4 身份同步流134
7.10 ServiceHub136
7.11 RPC operations136
7.12 Core types137
7.12.1 安全散列137
7.12.2 复合密钥137
7.13 Testing138
7.13.1 流测试138
7.13.2 访问StartedMockNode内部构件140
7.13.3 合约测试140
第8章 Corda应用开发其他要点145
8.1 对象序列化145
8.1.1 白名单146
8.1.2 AMQP146
8.1.3 核心类型147
8.2 安全编码准则154
8.2.1 流154
8.2.2 合约154
8.3 流操作示范154
8.4 Corda要点一览表163
8.5 应用样本163
第9章 Corda节点165
9.1 创建本地节点165
9.2 运行本地节点170
9.3 部署节点171
9.3.1 在Linux系统上安装和运行Corda作为系统服务171
9.3.2 在Windows系统上安装和运行Corda并作为Windows服务173
9.3.3 测试安装175
9.4 节点配置175
9.5 客户端RPC180
9.6 SHELL185
9.6.1 连接SHELL185
9.6.2 参数语法186
9.7 节点数据库188
9.8 节点管理189
9.9 进程外验证192
第10章 Corda网络193
10.1 设置Corda网络193
10.2 网络许可196
10.3 网络地图200
10.4 版本管理203
第11章 合约开发示范204
11.1 Hello World204
11.1.1 我们的用例204
11.1.2 编写状态206
11.1.3 编写流208
11.1.4 运行我们的CorDapp211
11.1.5 结论214
11.2 Hello World!Pt.2-Contract Constraints214
11.2.1 编写合约214
11.2.2 更新流218
11.2.3 结论221
11.3 编写合约221
11.4 编写合约测试233
11.5 升级合约240
11.5.1 工作流程240
11.5.2 授权升级240
11.5.3 提出升级241
11.5.4 例子241
第12章 集成测试与流开发示范243
12.1 集成测试243
12.2 使用客户端RPC API246
12.3 构建交易250
12.3.1 交易的基本生命周期251
12.3.2 交易准备251
12.3.3 开始构建交易254
12.4 编写流256
12.4.1 基础内容256
12.4.2 进一步深入261
12.5 编写流测试268
第13章 高级特性开发示范272
13.1 运行公证服务272
13.2 编写预言机服务273
13.3 编写定制公证服务(实验阶段)280
13.4 交易撕裂282
13.5 使用附件284
13.6 事件调度287
13.7 观测器节点289
第14章 工具291
14.1 网络模拟器291
14.2 DemoBench293
14.3 节点资源管理器295
14.4 负载测试301
第15章 节点内构件305
15.1 节点服务305
15.1.1 节点内的服务305
15.1.2 流框架和事件调度服务307
15.1.3 公证服务308
15.1.4 本地库相关服务309
15.1.5 Corda网络服务器309
15.2 Vault309
15.3 网络和消息传递311
15.3.1 网络地图服务311
15.3.2 消息队列312
15.3.3 安全性312
第16章 组件库314
16.1 流库314
16.2 合约315
16.3 金融模型316
16.3.1 数量316
16.3.2 财务状况317
16.4 利率互换319



---------------------------8055018 - 深入理解EOS:原理解析与开发实战---------------------------


推荐序
前言
第一部分 原理篇
第1章 EOS基本介绍2
1.1 区块链2.0的痛点2
1.2 EOS项目定义与愿景5
1.3 EOS项目的发展历程8
1.4 EOS项目版本更迭简况与现状11
第2章 EOS项目技术优势解析15
2.1 EOS的共识机制(BFT-DPoS)16
2.1.1 超级节点竞选18
2.1.2 持币者投票19
2.1.3 超级节点治理20
2.2 EOS的账户体系20
2.2.1 基于角色的多层级账户体系21
2.2.2 账户权限管理21
2.2.3 强制延迟消息执行策略22
2.2.4 密钥丢失或被盗后的恢复23
2.3 网络资源Token化23
2.3.1 带宽和日志存储23
2.3.2 计算和计算积压(CPU)24
2.3.3 状态存储器(RAM)24
2.4 EOS的节点治理25
2.4.1 宪法和协议指导下的关键操作25
2.4.2 宪法和协议的升级26
2.5 脚本与虚拟机27
第3章 EOS代码原理分析29
3.1 EOS项目代码框架总览29
3.1.1 脚本层29
3.1.2 插件层31
3.1.3 合约层36
3.1.4 支持层39
3.2 共识算法代码实现42
3.2.1 DPoS机制实现关键代码分析43
3.2.2 BFT算法实现关键代码分析53
3.3 网络层代码实现61
3.4 区块打包与广播的代码实现66
3.5 系统合约层代码实现70
3.5.1 eosio.system合约代码分析71
3.5.2 eosio.Token合约代码分析79
3.5.3 eosio.msig合约代码分析82
3.5.4 eosiolib依赖库84
3.6 EOS关键工具的代码实现89
3.6.1 nodeos代码实现89
3.6.2 cleos代码实现92
3.6.3 keosd代码实现94
第二部分 实战篇
第4章 EOS网络启动与原生功能介绍104
4.1 EOS项目安装部署与编译104
4.2 配置文件修改与测试106
4.3 EOS测试网启动108
4.3.1 Bios节点109
4.3.2 预出块节点109
4.3.3 普通节点111
4.4 EOS项目常用功能112
4.4.1 链上信息查询112
4.4.2 钱包管理126
4.4.3 账户创建与权限管理132
4.4.4 代币的交易135
4.4.5 交易的签名与发送137
4.4.6 系统资源获取138
4.5 智能合约的部署与调用140
第5章 智能合约开发142
5.1 智能合约简介142
5.1.1 智能合约定义143
5.1.2 智能合约历史148
5.1.3 智能合约优劣势154
5.1.4 智能合约应用场景155
5.2 EOS中的智能合约165
5.3 EOS智能合约文件结构169
5.3.1 .abi文件170
5.3.2 .wasm/.wast文件171
5.3.3 eosioapp编译器使用172
5.4 EOS智能合约依赖库介绍179
5.5 EOS智能合约实战项目196
5.5.1 HelloWorld合约196
5.5.2 数据库合约200
5.6 常见bug与debug思路总结205
第6章 基于EOS的DApp开发207
6.1 什么是DApp207
6.1.1 比特币是第一个DApp208
6.1.2 DApp命名的原因208
6.1.3 DApp运作的法律模型209
6.2 开发DApp的一般流程210
6.2.1 建立共识的机制210
6.2.2 设计分发Token的机制211
6.2.3 常见DApp开发阶段213
6.3 DApp的应用领域214
6.3.1 游戏领域214
6.3.2 社交/内容分发平台216
6.3.3 数字货币钱包216
6.4 基于EOS的DApp开发思路217
6.5 DApp开发实例—网页发币227
第7章 基于EOS的侧链/竞争链开发232
7.1 侧链/竞争链的概念与起源232
7.2 侧链实现方式235
7.3 主流侧链项目239
7.4 EOS侧链242
7.5 EOS竞争链245
附录A EOS系统优化方向展望248



---------------------------8054962 - 深入理解以太坊---------------------------


前言
第1章 以太坊概述 1
1.1 区块链起源 1
1.2 以太坊发展之路 3
1.3 以太坊核心技术 6
1.3.1 智能合约 6
1.3.2 PoS 7
1.4 以太坊系统架构 8
1.5 以太坊社区 9
1.6 以太坊路线图 10
1.7 本章小结 11
第2章 设计理念 12
2.1 密码学 13
2.1.1 Hash 13
2.1.2 椭圆曲线的加解密 18
2.1.3 签名 20
2.1.4 Merkle树和验证 24
2.1.5 MPT状态树 24
2.2 共识问题 28
2.2.1 分布式一致性问题 28
2.2.2 Paxos 和Rfat 30
2.2.3 拜占庭容错及PBFT 31
2.2.4 以太坊IBFT共识 33
2.2.5 PoW 35
2.2.6 Casper 36
2.2.7 以太坊性能 38
2.3 图灵完备 40
2.3.1 比特币脚本 41
2.3.2 EVM虚拟机 44
2.3.3 Gas机制 46
2.4 本章小结 49
第3章 技术架构 50
3.1 分层设计 51
3.1.1 应用层 51
3.1.2 合约层 54
3.1.3 激励层 55
3.1.4 共识层 56
3.1.5 网络层 59
3.1.6 数据层 60
3.2 数据结构设计 62
3.2.1 交易 62
3.2.2 状态树 65
3.2.3 区块 67
3.2.4 区块链 71
3.2.5 数据库 72
3.3 P2P网络 76
3.3.1 节点发现 76
3.3.2 节点管理 78
3.4 客户端 84
3.4.1 RPC 85
3.4.2 web3 88
3.5 本章小结 89
第4章 共识算法 90
4.1 PoW 90
4.1.1 算法概述 90
4.1.2 设计实现 93
4.1.3 优缺点分析 96
4.2 PoA 97
4.2.1 算法概述 97
4.2.2 设计实现 99
4.2.3 优缺点分析 102
4.3 PoS 103
4.3.1 算法概述 103
4.3.2 优缺点分析 111
4.4 本章小结 112
第5章 智能合约开发 113
5.1 智能合约的诞生 113
5.2 以太坊上的智能合约 114
5.2.1 以太坊智能合约概述 114
5.2.2 关于智能合约的理解误区 114
5.2.3 合约账户 115
5.2.4 智能合约举例 116
5.2.5 智能合约在以太坊上的运行流程 118
5.3 智能合约编程语言 119
5.4 智能合约应用开发 120
5.4.1 连接和访问以太坊 120
5.4.2 以太坊集成开发环境remix 120
5.4.3 truffle 126
5.4.4 智能合约编译器solc 129
5.5 solidity语法详解 130
5.5.1 智能合约源文件 130
5.5.2 solidity数据类型 132
5.5.3 智能合约的内建全局变量和函数 141
5.5.4 智能合约中的单位 143
5.5.5 solidity表达式和控制结构 144
5.5.6 函数 148
5.5.7 常量状态变量 152
5.5.8 智能合约的事件 153
5.5.9 智能合约的继承性 153
5.5.10 智能合约的创建 154
5.5.11 智能合约的销毁 154
5.6 solidity编程规范 155
5.6.1 代码布局 155
5.6.2 编码约定 157
5.6.3 命名约定 159
5.7 本章小结 159
第6章 智能合约运行机制 160
6.1 调用智能合约函数 160
6.1.1 外部调用 161
6.1.2 内部调用 162
6.2 以太坊ABI协议 163
6.2.1 ABI接口定义 164
6.2.2 函数选择器 165
6.2.3 参数编码 165
6.2.4 abi编码举例 166
6.3 交易的费用和计算 167
6.3.1 什么是Gas机制 167
6.3.2 为什么需要Gas机制 168
6.3.3 交易费用计算法方法 169
6.3.4 交易费用的组成 170
6.4 智能合约的事件 170
6.4.1 事件的存储和解析 170
6.4.2 Logs的底层接口 173
6.4.3 事件的查询 174
6.4.4 事件查询过程 174
6.5 库和链接原理 175
6.5.1 库的定义 175
6.5.2 库的使用 175
6.5.3 库的连接 176
6.5.4 库中的事件 176
6.6 智能合约元数据 177
6.7 智能合约安全性分析 179
6.7.1 智能合约中的陷阱 179
6.7.2 建议 182
6.7.3 案例分析:资金回退流程 183
6.8 智能合约和外界的通信 184
6.8.1 oracle介绍 184
6.8.2 oracle需要解决的问题 185
6.8.3 数据商店 185
6.9 智能合约的动态升级 185
6.9.1 solidity是一个受限的语言 185
6.9.2 动态升级的实现 186
6.10 智能合约的数据存储 187
6.10.1 存储 187
6.10.2 内存 187
6.10.3 栈 188
6.11 本章小结 188
第7章 智能合约字节码与汇编 189
7.1 智能合约汇编指令集 189
7.2 智能合约字节码解析 192
7.3 状态变量的存储 196
7.3.1 普通状态变量的存储 196
7.3.2 动态数据的storage存储 198
7.3.3 总结 201
7.4 solidity内嵌汇编 201
7.4.1 内嵌汇编指令 201
7.4.2 单独使用汇编指令 203
7.5 本章小结 204
第8章 开发者工具 205
8.1 MetaMask 205
8.1.1 MetaMask安装 205
8.1.2 MetaMask作为Web钱包 206
8.1.3 MetaMask作为DApp客户端 207
8.2 以太坊测试网络 209
8.2.1 Morden 209
8.2.2 Ropsten 210
8.2.3 Kovan 210
8.2.4 Rinkeby 211
8.2.5 本地以太坊私链 212
8.2.6 连接测试网络 213
8.3 Remix 213
8.3.1 本地安装Remix 213
8.3.2 在线Remix 214
8.4 truffle 217
8.4.1 安装truffle 218
8.4.2 构建应用项目 218
8.4.3 demo合约实践 220
8.4.4 智能合约测试和验证 222
8.5 myetherwallet 223
8.5.1 创建钱包 223
8.5.2 在线发送ETH和代币 224
8.5.3 离线发送ETH和代币 225
8.5.4 币间互换 225
8.5.5 智能合约操作 226
8.5.6 以太坊域名服务 227
8.6 Etherscan 228
8.6.1 以太坊浏览器 228
8.6.2 智能合约操作 230
8.6.3 以太坊统计图表 231
8.6.4 Etherscan API 233
8.7 本章小结 234
第9章 企业以太坊 235
9.1 联盟成立 235
9.2 技术框架 238
9.2.1 分层设计 240
9.2.2 组件模块化 242
9.2.3 可插拔共识 242
9.2.4 权限和隐私保护 243
9.2.5 数据安全 244
9.3 治理框架 245
9.4 本章小结 247
第10章 跨链 248
10.1 跨链技术方案 248
10.1.1 见证人 249
10.1.2 侧链技术 249
10.1.3 中继技术 250
10.1.4 Hash锁定 252
10.2 跨链项目 253
10.2.1 Ripple的Interledger
Protocol 253
10.2.2 Plasma 253
10.2.3 Cosmos 254
10.2.4 Aion链 256
10.3 跨链中的潜在问题 257
10.3.1 事务处理原子性 258
10.3.2 跨异构系统 258
10.3.3 通信方式 258
10.3.4 跨链中的隐私保护 259
10.4 本章小结 259
第11章 展望 260
11.1 以太坊扩容 260
11.1.1 以太坊扩容挑战 260
11.1.2 分片 261
11.1.3 Plasma 263
11.2 零知识证明 266
11.2.1 什么是零知识证明? 266
11.2.2 应用场景 267
11.2.3 以太坊支持零知识证明 267
11.3 Casper 267
11.4 本章小结 268



---------------------------8053410 - DAG区块链技术:原理与实践---------------------------


序一
序二
序三
序四
前言
第1章 区块链基础1
1.1 区块链简介1
1.1.1 基本概念1
1.1.2 分类3
1.1.3 应用与价值3
1.2 区块链相关技术简介4
1.2.1 底层通信技术4
1.2.2 共识技术6
1.2.3 智能合约6
1.2.4 加密与签名6
1.2.5 匿名保护7
1.3 DAG区块链8
1.3.1 起源8
1.3.2 DAG区块链与单链技术的对比8
1.3.3 DAG区块链的优势与价值9
1.4 本章小结10
第2章 DAG区块链通信机制11
2.1 计算机网络的基本概念和技术11
2.1.1 计算机网络体系结构11
2.1.2 P2P对等网络19
2.1.3 网络安全技术24
2.2 IOTA通信机制28
2.2.1 网络结构及特性28
2.2.2 掩码认证消息29
2.2.3 交易隐私保护34
2.3 Byteball通信机制37
2.3.1 Byteball网络结构37
2.3.2 Byteball网络节点通信协议38
2.3.3 Byteball加密通信原理与实现40
2.3.4 Byteball私有不可追踪的支付41
2.4 InterValue通信机制42
2.4.1 网络结构42
2.4.2 大规模组网方法43
2.4.3 匿名通信机制44
2.4.4 跨链通信机制46
2.5 本章小结49
第3章 DAG区块链的共识机制50
3.1 IOTA共识机制50
3.1.1 Tangle确认规则50
3.1.2 轻量化的PoW52
3.1.3 蒙特卡洛马尔可夫链52
3.1.4 双花问题54
3.2 Byteball共识机制56
3.2.1 单元确认规则56
3.2.2 主链57
3.2.3 稳定点扩展 58
3.2.4 双花问题58
3.3 Hashgraph共识机制59
3.3.1 Gossip协议59
3.3.2 witness选择60
3.3.3 投票规则62
3.3.4 双花问题64
第4章 DAG区块链的智能合约65
4.1 Byteball智能合约65
4.1.1 Smart Payments简介66
4.1.2 Smart Payments原理68
4.1.3 实战Byteball智能合约75
4.2 DAG图灵完备智能合约探索86
4.2.1 DAG图灵完备智能合约的挑战87
4.2.2 Vite项目90
4.2.3 InterValue项目92
4.3 本章小结94
第5章 DAG区块链中的密码学技术95
5.1 DAG区块链中的Hash函数95
5.1.1 Hash函数的基本模型95
5.1.2 SHA256密码算法97
5.1.3 SHA3计划胜选Hash函数99
5.1.4 中国商用密码Hash函数SM3101
5.1.5 Merkle哈希树103
5.2 DAG区块链中的非对称加密机制104
5.2.1 RSA加密算法104
5.2.2 EIGamal公钥加密算法107
5.2.3 椭圆曲线公钥加密算法108
5.3 区块链中的数字签名机制110
5.3.1 RSA数字签名110
5.3.2 DSA数字签名111
5.3.3 ECDSA数字签名112
5.3.4 EIGamal数字签名113
5.3.5 SM2数字签名114
5.3.6 Schnorr数字签名116
5.3.7 特殊数字签名117
5.3.8 零知识证明122
5.4 后量公钥密码体制124
5.4.1 基于Hash函数抗量子密码124
5.4.2 基于纠错码抗量子密码125
5.4.3 多变量密码125
5.4.4 格密码126
第6章 DAG区块链安全原理与实践130
6.1 区块链安全介绍131
6.1.1 背景131
6.1.2 威胁模型132
6.1.3 安全目标132
6.2 数据安全与防护133
6.2.1 交易匿名133
6.2.2 隐私保护133
6.3 算法安全与分析134
6.3.1 签名算法134
6.3.2 共识机制135
6.3.3 智能合约135
6.4 代码安全与缓解136
6.4.1 模糊测试137
6.4.2 符号执行137
6.4.3 自动化漏洞挖掘138
6.4.4 攻击缓解139
6.5 基础设施安全威胁与防护140
6.6 典型漏洞分析与实践141
6.6.1 重入漏洞141
6.6.2 访问控制漏洞143
6.6.3 整数溢出漏洞146
6.6.4 底层函数返回值未检查漏洞148
6.6.5 拒绝服务漏洞149
6.6.6 随机性不当漏洞150
6.6.7 提前交易漏洞151
6.6.8 时间篡改漏洞152
6.6.9 短地址漏洞153
6.7 区块链生态安全的未来155
6.8 本章小结155
第7章 IOTA详解156
7.1 IOTA原理分析156
7.1.1 IOTA简介156
7.1.2 IOTA数据结构157
7.1.3 IOTA系统稳定性分析162
7.1.4 IOTA安全性分析166
7.2 IOTA实战开发172
7.2.1 IOTA钱包安装 172
7.2.2 IOTA API176
7.2.3 IOTA私有测试链搭建180
7.2.4 第一个简单小程序184
7.2.5 IOTA应用实例186
第8章 Byteball详解189
8.1 Byteball原理分析189
8.1.1 Byteball简介189
8.1.2 Byteball区块链结构190
8.1.3 Byteball地址和脚本192
8.1.4 Byteball网络结构199
8.1.5 Byteball应用方法203
8.2 Byteball实战开发211
8.2.1 Byteball安装部署211
8.2.2 Byteball应用实例218
8.3 本章小结220
第9章 InterValue详解222
9.1 InterValue原理分析222
9.1.1 InterValue简介222
9.1.2 InterValue数据结构228
9.1.3 InterValue共识机制233
9.1.4 InterValue智能合约241
9.1.5 InterValue安全机制245
9.1.6 InterValue匿名通信技术250
9.2 InterValue生态圈251
9.2.1 InterValue跨链技术和多链融合252
9.2.2 全节点适配器多链融合253
9.2.3 InterValue跨链通信254
9.2.4 InterValue跨链资产交换255
9.2.5 InterValue跨链资产转移256
9.3 本章小结256
第10章 DAG区块链与区块链3.0生态259
10.1 DAG区块链链上应用259
10.1.1 分布式社交网络应用259
10.1.2 分歧合约应用260
10.1.3 文件存储网格应用261
10.2 DAG区块链应用场景262
10.2.1 应用场景概述262
10.2.2 实物资产交易确权264
10.2.3 去中心化旅行服务平台264
10.2.4 资产分红权利交易区块链266
第11章 DAG区块链展望269
11.1 从1.0到4.0269
11.2 未来展望270



---------------------------8017605 - 区块链开发实战:以太坊关键技术与案例分析---------------------------


前言
第1章 全面认识区块链 1
1.1 区块链技术的起源和解释 1
1.2 区块链的核心技术及其特性 2
1.2.1 区块链技术的特性 3
1.2.2 区块链的分布式存储技术特性 3
1.2.3 区块链的密码学技术特性 4
1.2.4 区块链中的共识机制 8
1.2.5 区块链中的智能合约 12
1.3 区块链技术演进过程 13
1.4 区块链技术的3个缺点 13
1.5 区块链技术常见的4个错误认识 14
1.6 区块链技术的应用领域 15
1.6.1 区块链在金融行业的应用 15
1.6.2 区块链在供应链中的应用 16
1.6.3 区块链在公证领域的应用 17
1.6.4 区块链在数字版权领域的应用 18
1.6.5 区块链在保险行业的应用 19
1.6.6 区块链在公益慈善领域的应用 21
1.6.7 区块链与智能制造 22
1.6.8 区块链在教育就业中的应用 23
1.7 区块链的其他常见技术框架 24
1.8 本章小结 25
第2章 实战准备 26
2.1 开发环境准备 26
2.1.1 操作系统的配置 26
2.1.2 Docker的使用 27
2.1.3 Git的使用 30
2.2 开发语言 30
2.2.1 GO语言 30
2.2.2 Node.js 32
2.3 常用工具 32
2.3.1 Curl 32
2.3.2 tree 33
2.3.3 Jq 33
2.4 本章小结 34
第3章 以太坊介绍 35
3.1 了解以太坊 35
3.2 以太坊发展路线 36
3.3 以太坊内置货币 37
3.4 以太坊交易吞吐量 38
3.5 以太坊账户 39
3.6 智能合约 40
3.7 Gas与GasPrice 41
3.8 工作量证明算法 41
3.9 以太坊网络类型 42
3.10 以太坊客户端 43
3.11 本章小结 44
第4章 以太坊的编译、安装与运行 45
4.1 在Ubuntu下安装 45
4.2 在MacOS下安装 46
4.3 在Windows下安装 46
4.4 以Docker方式安装 47
4.5 运行以太坊 47
4.6 本章小结 47
第5章 以太坊私有链的搭建与运行 48
5.1 搭建一个私有链 48
5.2 以太坊JavaScript控制台命令 53
5.3 以太坊CLI控制台命令 64
5.3.1 账户管理 64
5.3.2 区块数据管理 65
5.4 以太坊TestRPC测试链搭建 69
5.5 本章小结 78
第6章 以太坊的编程接口 79
6.1 web3.js API 79
6.1.1 安装web3.js并创建实例 79
6.1.2 账户相关API 80
6.1.3 交易相关API 80
6.1.4 区块相关API 87
6.2 JSON-RPC API 87
6.2.1 账户相关API 88
6.2.2 交易相关API 89
6.2.3 区块相关API 94
6.3 本章小结 95
第7章 Solidity IDE和Solidity快速入门 96
7.1 三种Solidity IDE 96
7.1.1 browser-solidity 96
7.1.2 Atom 97
7.1.3 IntelliJ IDEA 97
7.2 Solidity快速入门:编写一个简单的银行合约案例 99
7.3 本章小结 101
第8章 Solidity语法详解 102
8.1 注释 102
8.2 整型和布尔型 103
8.2.1 整型 103
8.2.2 布尔型 104
8.3 地址 104
8.4 字节数组 105
8.4.1 固定长字节数组 105
8.4.2 动态长度字节数组 105
8.5 类型转换和类型推断 106
8.5.1 类型转换 106
8.5.2 类型推断 107
8.6 时间单位和货币单位 107
8.6.1 时间单位 107
8.6.2 货币单位 108
8.7 数组和多维数组 108
8.7.1 数组 108
8.7.2 多维数组 109
8.8 映射/字典 109
8.9 结构体与枚举 111
8.9.1 结构体 111
8.9.2 枚举 112
8.10 全局变量 112
8.11 控制结构 113
8.12 函数 114
8.13 事件 122
8.14 合约 124
8.15 继承 125
8.16 抽象合约 127
8.17 接口 128
8.18 库 128
8.19 Using for 128
8.20 引入其他源文件 129
8.21 状态变量/局部变量 129
8.22 数据位置 130
8.22.1 数据位置概述 130
8.22.2 数据位置之间相互转换 130
8.23 异常处理 132
8.24 编写安全solidity智能合约最佳实践 133
8.24.1 尽早抛出异常 133
8.24.2 结构化函数代码顺序 134
8.24.3 在支付时使用pull模式而不是push模式 134
8.24.4 整数上溢和下溢 136
8.25 本章小结 137
第9章 Solidity 合约编译、部署 138
9.1 编译合约 138
9.1.1 安装solc编译工具 138
9.1.2 开始编译合约 139
9.2 部署合约 141
9.2.1 启动以太坊geth节点 141
9.2.2 部署智能合约 143
9.3 调用合约 145
9.4 本章小结 146
第10章 Truffle详解 147
10.1 什么是Truffle 147
10.2 安装Truffle 148
10.3 创建并初始化项目 149
10.4 创建合约 150
10.5 编译合约 150
10.6 迁移合约 151
10.7 合约交互 156
10.7.1 交易 156
10.7.2 调用 157
10.7.3 合约抽象 157
10.7.4 与合约交互 158
10.7.5 添加一个新合约到网络 159
10.7.6 使用现有合约地址 160
10.7.7 向合约发送以太币 161
10.8 测试合约 163
10.9 JavaScript测试 164
10.10 Solidity测试 165
10.11 Truffle 配置文件 167
10.12 依赖管理 169
10.13 本章小结 171
第11章 以太坊DApps应用开发实战 172
11.1 DApps架构与开发流程 172
11.1.1 DApps架构 VS Web应用架构 172
11.1.2 DApps开发流程 173
11.2 案例:去中心化微博 174
11.2.1 创建项目 175
11.2.2 合约 176
11.2.3 前端应用 181
11.3 本章小结 192
附录A 比特币的原理和运行方式 193
附录B 比特币的bitcoin-cli模块详解 203
附录C 比特币系统的编程接口 213
附录D 比特币系统客户端项目实战 218
附录E 区块链相关术语 225
后记 228


---------------------------8017604 - 区块链开发实战:Hyperledger Fabric关键技术与案例分析---------------------------


前言
第1章 全面认识区块链 1
1.1 区块链技术的起源和解释 1
1.2 区块链的核心技术及其特性 2
1.2.1 区块链技术的特性 3
1.2.2 区块链的分布式存储技术特性 3
1.2.3 区块链的密码学技术特性 4
1.2.4 区块链中的共识机制 8
1.2.5 区块链中的智能合约 12
1.3 区块链技术演进过程 13
1.4 区块链技术的3个缺点 13
1.5 区块链技术常见的4个错误认识 14
1.6 区块链技术的应用领域 15
1.6.1 区块链在金融行业的应用 15
1.6.2 区块链在供应链中的应用 16
1.6.3 区块链在公证领域的应用 17
1.6.4 区块链在数字版权领域的应用 18
1.6.5 区块链在保险行业的应用 19
1.6.6 区块链在公益慈善领域的应用 21
1.6.7 区块链与智能制造 22
1.6.8 区块链在教育就业中的应用 23
1.7 区块链的其他常见技术框架 24
1.8 本章小结 25
第2章 实战准备 26
2.1 开发环境准备 26
2.1.1 操作系统的配置 26
2.1.2 Docker的使用 27
2.1.3 Git的使用 30
2.2 开发语言 30
2.2.1 GO语言 30
2.2.2 Node.js 32
2.3 常用工具 32
2.3.1 Curl 32
2.3.2 tree 33
2.3.3 Jq 33
2.4 本章小结 34
第3章 Hyperledger简介 35
3.1 Hyperledger综述 35
3.1.1 Hyperledger的项目背景 35
3.1.2 Hyperledger的项目成员 36
3.2 Hyperledger的体系结构 37
3.2.1 获取Hyperledger源代码并成为开发者 37
3.2.2 Hyperledger的9个正式项目 38
3.3 本章小结 43
第4章 Fabric快速入门 44
4.1 Fabric的技术特性 44
4.1.1 Fabric的多账本特性 44
4.1.2 Fabric的智能合约 45
4.1.3 Fabric的权限系统 46
4.1.4 Fabric的共识算法 47
4.2 Hyperledger中与Fabric相关的项目 47
4.3 Fabric的模块、安装和使用 48
4.3.1 Fabric的编译和安装 49
4.3.2 Fabric模块安装结果检查 50
4.3.3 利用Docker运行Fabric相关模块 51
4.4 快速运行一个简单的Fabric网络 53
4.4.1 Fabric环境准备 53
4.4.2 生成Fabric需要的证书文件 54
4.4.3 创始块的生成 56
4.4.4 Orderer节点的启动 59
4.4.5 Peer节点的启动 60
4.4.6 创建通道 64
4.4.7 Chaincode的部署和调用 65
4.5 本章小结 66
第5章 Fabric核心模块详解 67
5.1 Fabric的核心模块功能、通用选项和命令 67
5.1.1 Fabric核心模块及其功能 67
5.1.2 Fabric模块的通用选项和命令 68
5.2 Fabric模块的子命令、选项和配置文件 68
5.2.1 cryptogen 69
5.2.2 configtxgen 74
5.2.3 configtxlator 77
5.2.4 orderer 79
5.2.5 peer 85
5.3 Fabric模块在系统中的作用 92
5.3.1 peer模块在Fabric系统中的作用 92
5.3.2 orderer模块在Fabric系统中的作用 95
5.4 Fabric数据安全传输的方式 95
5.4.1 Fabric中orderer模块TLS设置 95
5.4.2 Fabric中peer模块TLS设置 96
5.5 本章小结 98
第6章 Fabric的账号体系 99
6.1 Fabric账号简介 99
6.1.1 Fabric账号是什么 99
6.1.2 什么地方需要使用Fabric的账号 101
6.2 基于cryptogen的账号管理体系 103
6.3 Fabric账号服务器:Fabric-ca 106
6.3.1 Fabric-ca的编译和安装 107
6.3.2 fabric-ca-server的启动和配置 108
6.3.3 fabric-ca-client的使用 115
6.4 将fabric-ca-server绑定到现有项目中 117
6.5 本章小结 120
第7章 Fabric的智能合约详解 121
7.1 Chaincode初探 121
7.2 快速编写和运行一个Chaincode 122
7.3 Golang版本的Chaincode的代码结构 125
7.3.1 Chaincode源代码的基本结构 125
7.3.2 shim包的核心方法 127
7.3.3 ChaincodeStubInterface接口中的核心方法 128
7.4 Chaincode相关的操作命令和选项 136
7.5 如何通过Chaincode进行交易的endorse 140
7.6 Chaincode的调试方法 142
7.6.1 Chaincode在Docker容器之外的运行 142
7.6.2 Chaincode在IDE中的调试 145
7.7 本章小结 148
第8章 Fabric和Fabric-ca的编程接口 149
8.1 Fabric接口的通信协议和功能划分 149
8.2 Fabric Nodejs SDK的使用 151
8.2.1 如何获取Fabric Nodejs SDK源代码 151
8.2.2 快速构建基于Nodejs的Fabric客户端 151
8.2.3 Fabric Nodejs SDK中TLS的设置 159
8.3 Fabric Java SDK 160
8.3.1 Fabric Java SDK的安装 160
8.3.2 Fabric Java SDK的常用接口 161
8.3.3 Fabirc Java SDK中TLS的设置 169
8.4 Fabric Go SDK 170
8.4.1 Fabric Golang的安装 170
8.4.2 创建配置文件 170
8.4.3 一个简单的Golang访问Fabric的例子 171
8.4.4 Fabric Golang SDK其他用法 174
8.4.5 Fabric Golang SDK的背书操作 176
8.5 本章小结 176
第9章 Fabric系统架构设计 177
9.1 Fabric架构中的组织规划 177
9.1.1 确认组织 178
9.1.2 组织的管理方式 178
9.2 Fabric系统的结构 179
9.2.1 Fabric系统的逻辑结构 179
9.2.2 Fabric系统的物理结构 181
9.3 Fabric中Channel的设计 181
9.4 Chaincode 182
9.5 数据访问层 183
9.6 历史遗留系统的兼容 185
9.7 Fabric系统的维护和管理 186
9.8 本章小结 187
第10章 Fabric开发实战:开发流程与实例详解 188
10.1 Fabric项目的开发流程 188
10.2 Fabric项目开发实例详解 191
10.2.1 系统初始化 191
10.2.2 Orderer节点的初始化和启动 193
10.2.3 启动第一个Peer 198
10.2.4 Channel的创建和加入 200
10.2.5 启动当前组织的Fabric-ca 202
10.2.6 测试Chaincode的部署和开发 202
10.2.7 客户端的开发 203
10.2.8 启动本组织的其他Peer 205
10.2.9 其他组织Peer节点的加入 208
10.2.10 背书交易的测试 210
10.2.11 非初始化组织的加入 214
10.3 本章小结 220
第11章 基于Fabric的区块链浏览器项目实战 221
11.1 项目介绍 221
11.2 开发过程 222
11.2.1 项目准备 222
11.2.2 项目开发 222
11.3 本章小结 229
第12章 基于Fabric的供应链金融项目实战 230
12.1 供应链金融的背景知识和痛点 230
12.1.1 供应链金融的背景知识 230
12.1.2 供应链金融的痛点 231
12.1.3 用Fabric解决供应链金融痛点的方法 231
12.2 用Fabric构建供应链金融系统的方法 232
12.2.1 系统的设计 232
12.2.2 系统环境搭建 233
12.2.3 客户端开发 239
12.3 本章小结 244
第13章 基于Fabric的食品溯源项目实战 245
13.1 数据溯源的背景知识和痛点 245
13.1.1 数据溯源的背景知识 245
13.1.2 数据溯源的痛点 245
13.2 Fabric如何优化数据溯源系统 246
13.3 Fabric如何构建数据溯源系统 246
13.3.1 系统环境搭建 247
13.3.2 客户端开发 262
13.4 本章小结 271
附录A 比特币的原理和运行方式 272
附录B 比特币的bitcoin-cli模块详解 282
附录C 比特币系统的编程接口 292
附录D 比特币系统客户端项目实战 297
附录E 区块链相关术语 304


---------------------------7731485 - 以太坊技术详解与实战---------------------------


前 言
第1章 以太坊:新一代的区块链平台 1
1.1 理解区块链 2
1.2 以太坊设计思路与特色技术 4
1.3 应用场景 8
1.4 去中心化应用DApp 10
1.4.1 DApp的优势 10
1.4.2 DApp实例 11
1.5 以太坊的主流开源项目 13
1.6 本书的组织结构 14
第2章 以太坊架构和组成 15
2.1 以太坊整体架构 15
2.2 区块 16
2.3 账户 18
2.3.1 外部账户 19
2.3.2 合约账户 20
2.3.3 私钥和公钥 20
2.3.4 钱包 22
2.4 数据结构与存储 24
2.4.1 数据组织形式 24
2.4.2 状态树 29
2.4.3 交易树 29
2.4.4 收据树 29
2.4.5 数据库支持——LevelDB 30
2.5 共识机制 30
2.5.1 PoW 31
2.5.2 PoS 34
2.6 以太币 36
2.7 交易 41
2.7.1 交易费用 41
2.7.2 交易内容 43
2.7.3 一个交易在以太坊中的“旅程” 45
2.8 数据编码与压缩 51
2.9 以太坊客户端和API 52
2.10 以太坊域名服务 57
2.11 本章小结 58
第3章 不同类型的以太坊区块链及其部署 59
3.1 区块链类型 59
3.1.1 公有链 60
3.1.2 联盟链 61
3.1.3 私有链 66
3.2 安装和部署以太坊 67
3.2.1 安装以太坊客户端 67
3.2.2 部署以太坊联盟链 70
3.3 如何在Azure上挖矿 81
3.3.1 部署虚拟机 81
3.3.2 安装GPU驱动 82
3.3.3 安装挖矿工具包 83
3.3.4 加入矿池 83
3.3.5 GPU挖矿收益权衡 83
3.4 本章小结 84
第4章 智能合约与以太坊虚拟机 86
4.1 智能合约 86
4.1.1 智能合约的操作 89
4.1.2 存储方式 90
4.1.3 指令集和消息调用 92
4.1.4 日志 93
4.2 Solidity语言 93
4.2.1 结构 93
4.2.2 变量类型 94
4.2.3 内置单位、全局变量和函数 100
4.2.4 控制结构语句 101
4.2.5 函数 103
4.2.6 constant函数和fallback函数 105
4.2.7 函数修改器 106
4.2.8 异常处理 107
4.2.9 事件和日志 109
4.2.10 智能合约的继承 110
4.3 本章小结 112
第5章 编写和部署智能合约 113
5.1 智能合约工具 113
5.2 Solidity集成开发工具Remix 115
5.2.1 Remix界面 115
5.2.2 初探Remix调试 117
5.2.3 使用Remix调试智能合约的多种调用方式 120
5.3 Truffle 126
5.3.1 Truffle安装 126
5.3.2 创建 128
5.3.3 编译 129
5.3.4 部署 129
5.3.5 测试 132
5.3.6 配置文件 133
5.4 如何保证智能合约的安全可靠 134
5.4.1 常见的安全陷阱 135
5.4.2 智能合约开发建议 140
5.5 本章小结 141
第6章 智能合约案例详解 143
6.1 投票 143
6.2 拍卖和盲拍 153
6.2.1 公开拍卖 153
6.2.2 盲拍 156
6.3 状态机 161
6.4 权限控制 163
6.5 本章小结 166
第7章 以太坊上数字资产的发行和流通 167
7.1 以太坊上的数字资产定义 167
7.2 发行和流通 168
7.3 ERC 20代币合约标准 168
7.3.1 标准定义 169
7.3.2 ERC 20标准接口 169
7.3.3 现有ERC 20标准代币 171
7.4 ERC 721代币合约标准 174
7.4.1 标准定义 174
7.4.2 CryptoKitties DApp 175
7.5 本章小结 177
第8章 以太坊数据查询与分析工具 178
8.1 以太坊浏览器Etherscan 178
8.1.1 Etherscan的基本功能 179
8.1.2 其他功能 190
8.1.3 API 193
8.1.4 ENS域名查询 194
8.2 ETHERQL 195
8.2.1 同步管理器 197
8.2.2 处理程序链 197
8.2.3 持久化框架 198
8.2.4 开发者接口 198
8.2.5 实现 199
8.3 本章小结 199
第9章 以太坊性能优化 201
9.1 分片技术 201
9.2 雷电网络 205
9.3 Casper——下一代以太坊共识协议 208
9.4 本章小结 210
第10章 隐私保护和数据安全 211
10.1 区块链的隐私问题 212
10.1.1 “化名”与“匿名” 212
10.1.2 去匿名攻击:交易表分析 212
10.2 零钞:基于zkSNARK的完美混币池 214
10.2.1 零知识证明 214
10.2.2 零钞的运行原理 215
10.3 Hawk:保护合约数据私密性 216
10.4 Coco框架 218
10.4.1 TEE环境简介 219
10.4.2 Coco框架的运行原理 219
10.5 以太坊隐私保护技术路线:Baby ZoE 221
10.6 总结与展望 223
10.6.1 隐私方案总结 223
10.6.2 隐私技术展望 223
后记 225


---------------------------7017941 - 区块链项目开发指南---------------------------


译者序
前言
第1章 去中心化应用1
1.1 什么是DApp1
1.1.1 去中心化应用的优点2
1.1.2 去中心化应用的缺点3
1.2 去中心化自治组织3
1.3 DApp中的用户身份4
1.4 DApp中的用户账户5
1.5 访问中心化应用6
1.6 DApp中的内部货币6
1.7 什么是授权的DApp7
1.8 热门的DApp7
1.8.1 比特币7
1.8.2 以太坊9
1.8.3 超级账本项目9
1.8.4 IPFS10
1.8.5 Namecoin11
1.8.6 达世币12
1.8.7 BigChainDB14
1.8.8 OpenBazaar14
1.8.9 Ripple14
1.9 总结16
第2章 以太坊的工作原理17
2.1 以太坊概览17
2.2 以太坊账户18
2.3 交易18
2.4 共识19
2.5 时间戳20
2.6 随机数21
2.7 区块时间21
2.8 分叉24
2.9 创世区块24
2.10 以太币面值24
2.11 以太坊虚拟机25
2.12 gas25
2.13 发现对等节点26
2.14 Whisper和Swarm27
2.15 geth27
2.15.1 安装geth28
2.15.2 JSON-RPC和JavaScript操作台28
2.15.3 子命令和选项29
2.15.4 创建账户29
2.16 以太坊钱包31
2.17 浏览器钱包31
2.18 以太坊的缺点32
2.19 serenity33
2.20 总结35
第3章 编写智能合约36
3.1 Solidity源文件36
3.2 智能合约的结构37
3.3 数据位置38
3.4 什么是不同的数据类型39
3.4.1 数组类型39
3.4.2 字符串类型40
3.4.3 结构类型41
3.4.4 枚举类型42
3.4.5 mapping类型42
3.4.6 delete操作符43
3.4.7 基本类型之间的转换44
3.4.8 使用var44
3.5 控制结构45
3.6 用new操作符创建合约46
3.7 异常46
3.8 外部函数调用46
3.9 合约功能48
3.9.1 可见性48
3.9.2 函数修改器50
3.9.3 回退函数51
3.9.4 继承52
3.10 库54
3.11 返回多值56
3.12 导入其他Solidity源文件57
3.13 全局可用变量57
3.13.1 区块和交易属性57
3.13.2 地址类型相关58
3.13.3 合约相关58
3.14 以太币单位58
3.15 存在、真实性和所有权合约的证明59
3.16 编译和部署合约60
3.17 总结62
第4章 开始使用web3.js63
4.1 web3.js概述63
4.1.1 导入web3.js64
4.1.2 连接至节点64
4.1.3 API结构65
4.1.4 BigNumber.js66
4.1.5 单位转换66
4.1.6 检索gas价格、余额和交易细节67
4.1.7 发送以太币68
4.1.8 处理合约69
4.1.9 检索和监听合约事件71
4.2 为所有权合约创建客户端73
4.2.1 项目结构74
4.2.2 创建后端74
4.2.3 创建前端76
4.2.4 测试客户端80
4.3 总结82
第5章 创建钱包服务83
5.1 在线钱包和离线钱包的区别83
5.2 Hooked-Web3-Provider和EthereumJS-tx库84
5.3 分层确定性钱包87
5.4 密钥衍生函数87
5.5 LightWallet88
5.6 创建钱包服务89
5.6.1 必要条件89
5.6.2 项目结构90
5.6.3 创建后端90
5.6.4 创建前端91
5.6.5 测试97
5.7 总结101
第6章 创建智能合约部署平台102
6.1 计算一个地址的交易nonce102
6.2 solcjs概述104
6.2.1 安装solcjs104
6.2.2 solcjs API104
6.3 创建合约部署平台107
6.3.1 项目结构108
6.3.2 创建后端108
6.3.3 创建前端113
6.3.4 测试117
6.4 总结118
第7章 创建投注App119
7.1 Oraclize概述119
7.1.1 Oraclize的工作原理120
7.1.2 数据源120
7.1.3 真实性证明121
7.1.4 定价122
7.1.5 开始使用Oraclize API123
7.1.6 加密查询127
7.1.7 Oraclize Web IDE128
7.2 处理字符串128
7.3 创建投注合约130
7.4 为投注合约创建客户端133
7.4.1 项目结构133
7.4.2 创建后端134
7.4.3 创建前端135
7.4.4 测试客户端143
7.5 总结147
第8章 创建企业级智能合约148
8.1 探索ethereumjs-testrpc148
8.1.1 安装和使用149
8.1.2 可用RPC方法151
8.2 什么是事件主题153
8.3 开始使用truffle-contract154
8.3.1 安装和导入truffle-contract155
8.3.2 建立测试环境156
8.3.3 truffle-contract API156
8.4 truffle概述163
8.4.1 安装truffle163
8.4.2 初始化 truffle163
8.4.3 编译合约165
8.4.4 配置文件165
8.4.5 部署合约166
8.4.6 单元测试合约169
8.4.7 包管理175
8.4.8 使用truffle的操作台178
8.4.9 在truffle环境中运行外部脚本179
8.4.10 truffle的创建管线179
8.4.11 truffle的服务器端186
8.5 总结187
第9章 创建联盟区块链188
9.1 什么是联盟区块链189
9.2 什么是权威证明共识189
9.3 parity概述189
9.3.1 Aura的工作原理190
9.3.2 运行parity191
9.3.3 创建私有网络192
9.3.4 许可和隐私197
9.4 总结198


---------------------------6877023 - 白话区块链---------------------------


技术审校
前言
第1章 初识区块链 1
1.1 例说区块链 1
1.1.1 从一本账本说起 1
1.1.2 区块链技术理念 3
1.1.3 一般工作流程 4
1.2 区块链技术栈 5
1.3 区块链分类与架构 10
1.3.1 区块链架构 10
1.3.2 区块链分类 13
1.4 一切源自比特币 16
1.4.1 比特币技术论文介绍 16
1.4.2 比特币核心程序:中本聪客户端 18
1.4.3 比特币的发行:挖矿 30
1.4.4 比特币钱包:核心钱包与轻钱包 35
1.4.5 比特币账户模型:UTXO 39
1.4.6 动手编译比特币源码 41
1.5 区块链的技术意义 48
1.6 知识点导图 51
第2章 区块链应用发展 53
2.1 比特币及其朋友圈:加密数字货币 53
2.1.1 以太坊 54
2.1.2 比特币现金 56
2.1.3 莱特币 57
2.1.4 零币 57
2.1.5 数字货币发展总结 59
2.2 区块链扩展应用:智能合约 61
2.2.1 比特币中包含的合约思想 61
2.2.2 以太坊中图灵完备的合约支持 62
2.3 交易结算 62
2.3.1 银行结算清算 62
2.3.2 瑞波 :开放支付网络 64
2.4 IPFS:星际文件系统 65
2.5 公证防伪溯源 66
2.6 供应链金融 70
2.7 区块链基础设施:可编程社会 74
2.8 链内资产与链外资产 76
2.9 知识点导图 77
第3章 区块链骨骼:密码算法 79
3.1 哈希算法 79
3.1.1 什么是哈希计算 79
3.1.2 哈希算法的种类 80
3.1.3 区块链中的哈希算法 81
3.2 公开密钥算法 83
3.2.1 两把钥匙:公钥和私钥 83
3.2.2 RSA算法 84
3.2.3 椭圆曲线密码算法 85
3.3 编码/解码算法 86
3.3.1 Base64 87
3.3.2 Base58 88
3.3.3 Base58Check 89
3.4 应用场景 90
3.5 知识点导图 91
第4章 区块链灵魂:共识算法 92
4.1 分布式系统的一致性 92
4.1.1 一致性问题 93
4.1.2 两个原理:FLP与CAP 94
4.1.3 拜占庭将军问题 95
4.1.4 共识算法的目的 96
4.2 Paxos算法 98
4.3 Raft算法 99
4.4 PBFT算法 101
4.5 工作量证明——PoW 102
4.6 股权权益证明——PoS 104
4.7 委托权益人证明机制——DPoS 104
4.8 共识算法的社会学探讨 106
4.9 知识点导图 107
第5章 区块链扩展:扩容、侧链和闪电网络 108
5.1 比特币区块扩容 108
5.2 侧链技术 113
5.3 闪电网络的设计 116
5.4 多链:区块链应用的扩展交互 121
5.5 知识点导图 122
第6章 区块链开发平台:以太坊 123
6.1 项目介绍 123
6.1.1 项目背景 123
6.1.2 以太坊组成 125
6.1.3 关键概念 127
6.1.4 官方钱包使用 143
6.2 以太坊应用 151
6.2.1 测试链与私链 151
6.2.2 编写一个代币合约 158
6.3 知识点导图 164
第7章 区块链开发平台:超级账本 166
7.1 项目介绍 166
7.1.1 项目背景 166
7.1.2 项目组成 167
7.2 Fabric项目 169
7.2.1 Fabric基本运行分析 169
7.2.2 Fabric安装 170
7.3 Fabric示例 173
7.3.1 部署准备 173
7.3.2 启动Fabric网络 178
7.3.3 Fabric智能合约 180
7.3.4 Fabric部署总结 187
7.4 知识点导图 187
第8章 动手做个实验:搭建微链 189
8.1 微链是什么 189
8.2 开发环境准备 190
8.3 设计一个简单的结构 191
8.4 源码解析 193
8.4.1 结构 193
8.4.2 代码之旅 194
8.5 微链实验的注意问题 214
8.6 知识点导图 214
第9章 潜在的问题 216
9.1 两个哭泣的婴儿:软分叉与硬分叉 217
9.2 达摩克利斯剑:51%攻击 220
9.3 简单的代价:轻钱包的易攻击性 222
9.4 忘了保险箱密码:私钥丢失 223
9.5 重放攻击:交易延展性 225
9.6 代码漏洞:智能合约之殇 227
9.6.1 说说TheDAO事件 227
9.6.2 Parity多重签名漏洞 228
9.7 网络拥堵:大量交易的确认延迟 229
9.8 容量贪吃蛇:不断增长的区块数据 231
9.9 知识点导图 232
后记 区块链与可编程社会 234


---------------------------6479750 - 区块链原理、设计与应用---------------------------


序 言
前 言
理 论 篇
第1章 区块链思想的诞生 2
1.1 从实体货币到数字货币 2
1.2 站在巨人的肩膀上 5
1.3 了不起的社会学实验 5
1.4 潜在的商业价值 7
1.5 本章小结 8
第2章 核心技术概览 9
2.1 定义与原理 9
2.2 技术的演化与分类 11
2.3 关键问题和挑战 13
2.4 趋势与展望 17
2.5 认识上的误区 19
2.6 本章小结 19
第3章 典型应用场景 20
3.1 应用场景概览 20
3.2 金融服务 22
3.2.1 银行业金融管理 22
3.2.2 证券交易 24
3.2.3 众筹投资 25
3.3 征信和权属管理 26
3.4 资源共享 28
3.5 贸易管理 29
3.6 物联网 30
3.7 其他场景 31
3.8 本章小结 33
第4章 分布式系统核心问题 34
4.1 一致性问题 34
4.1.1 定义与重要性 34
4.1.2 问题与挑战 35
4.1.3 一致性要求 36
4.1.4 带约束的一致性 36
4.2 共识算法 37
4.2.1 问题与挑战 38
4.2.2 常见算法 38
4.2.3 理论界限 38
4.3 FLP 不可能原理 39
4.3.1 定义 39
4.3.2 正确理解 39
4.4 CAP 原理 40
4.4.1 定义 40
4.4.2 应用场景 41
4.5 ACID 原则 41
4.6 Paxos 算法与 Raft 算法 42
4.6.1 Paxos 算法 42
4.6.2 Raft 算法 45
4.7 拜占庭问题与算法 45
4.8 可靠性指标 48
4.8.1 几个 9 的指标 48
4.8.2 两个核心时间 49
4.8.3 提高可靠性 49
4.9 本章小结 49
第5章 密码学与安全技术 50
5.1 Hash 算法与数字摘要 50
5.1.1 Hash定义 50
5.1.2 常见算法 51
5.1.3 性能 51
5.1.4 数字摘要 52
5.1.5 Hash 攻击与防护 52
5.2 加解密算法 52
5.2.1 加解密系统基本组成 53
5.2.2 对称加密算法 53
5.2.3 非对称加密算法 54
5.2.4 选择明文攻击 55
5.2.5 混合加密机制 56
5.2.6 离散对数与 Diffie–Hellman密钥交换协议 57
5.3 消息认证码与数字签名 57
5.3.1 消息认证码 58
5.3.2 数字签名 58
5.3.3 安全性 59
5.4 数字证书 59
5.4.1 X.509 证书规范 60
5.4.2 证书格式 61
5.4.3 证书信任链 62
5.5 PKI 体系 63
5.5.1 PKI 基本组件 63
5.5.2 证书的签发 63
5.5.3 证书的撤销 66
5.6 Merkle树结构 66
5.7 布隆过滤器 67
5.8 同态加密 68
5.9 其他问题 70
5.10 本章小结 71
第6章 比特币——区块链思想诞生的摇篮 72
6.1 比特币项目简介 72
6.1.1 比特币大事记 73
6.1.2 其他数字货币 74
6.2 原理和设计 75
6.2.1 基本交易过程 75
6.2.2 重要概念 76
6.2.3 创新设计 78
6.3 挖矿 80
6.3.1 基本原理 80
6.3.2 挖矿过程 81
6.3.3 如何看待挖矿 81
6.4 共识机制 82
6.4.1 工作量证明 82
6.4.2 权益证明 83
6.5 闪电网络 83
6.6 侧链 85
6.6.1 SPV 证明 85
6.6.2 双向挂钩 86
6.6.3 最新进展 87
6.7 热点问题 87
6.7.1 设计中的权衡 87
6.7.2 分叉 87
6.7.3 交易延展性 88
6.7.4 扩容之争 89
6.7.5 比特币的监管和追踪 90
6.8 相关工具 91
6.9 本章小结 92
第7章 以太坊——挣脱数字货币的枷锁 93
7.1 以太坊项目简介 93
7.1.1 以太坊项目简史 94
7.1.2 主要特点 95
7.2 核心概念 95
7.3 主要设计 97
7.3.1 智能合约相关设计 97
7.3.2 交易模型 97
7.3.3 共识 97
7.3.4 降低攻击 98
7.3.5 提高扩展性 98
7.4 相关工具 98
7.4.1 客户端和开发库 98
7.4.2 以太坊钱包 99
7.4.3 IDE 100
7.4.4 网站资源 100
7.5 安装客户端 100
7.5.1 从 PPA 直接安装 100
7.5.2 从源码编译 101
7.6 使用智能合约 102
7.6.1 搭建测试用区块链 102
7.6.2 创建和编译智能合约 104
7.6.3 部署智能合约 105
7.6.4 调用智能合约 106
7.7 智能合约案例:投票 106
7.7.1 智能合约代码 107
7.7.2 代码解析 109
7.8 本章小结 111
第8章 超级账本——面向企业的分布式账本 112
8.1 超级账本项目简介 112
8.2 社区组织结构 114
8.2.1 基本结构 114
8.2.2 大中华区技术工作组 114
8.3 顶级项目介绍 115
8.3.1 Fabric 项目 116
8.3.2 Sawtooth 项目 117
8.3.3 Iroha 项目 117
8.3.4 Blockchain Explorer 项目 117
8.3.5 Cello 项目 118
8.3.6 Indy 项目 118
8.3.7 Composer 项目 118
8.3.8 Burrow 项目 119
8.4 开发必备工具 119
8.4.1 Linux Foundation ID 119
8.4.2 Jira——任务和进度管理 119
8.4.3 Gerrit——代码仓库和 Review管理 120
8.4.4 RocketChat——在线沟通 121
8.5 贡献代码 121
8.6 本章小结 126
实 践 篇
第9章 超级账本 Fabric 部署和使用 128
9.1 简介 128
9.2 本地编译安装 129
9.2.1 操作系统 130
9.2.2 环境配置 130
9.2.3 获取代码 131
9.2.4 编译安装 fabric-peer 组件 131
9.2.5 编译安装 fabric-orderer 组件 132
9.2.6 编译安装 fabric-ca 组件 133
9.2.7 编译安装辅助工具 133
9.2.8 获取 chaintool 133
9.2.9 安装Go语言相关工具 134
9.2.10 示例配置 134
9.3 使用 Docker 镜像 134
9.3.1 安装 Docker 服务 134
9.3.2 安装 docker-compose 135
9.3.3 获取 Docker 镜像 135
9.3.4 镜像 Dockerfile 138
9.4 启动 Fabric 网络 143
9.4.1 网络拓扑 143
9.4.2 准备相关配置文件 144
9.4.3 启动 Orderer 节点 150
9.4.4 启动 Peer 节点 151
9.4.5 操作网络 152
9.4.6 基于容器方式 156
9.5 链码的概念与使用 157
9.5.1 链码操作命令 158
9.5.2 命令参数 158
9.5.3 安装链码 159
9.5.4 实例化链码 162
9.5.5 调用链码 165
9.5.6 查询链码 167
9.5.7 升级链码 168
9.5.8 打包链码和签名 169
9.6 使用多通道 170
9.6.1 通道操作命令 170
9.6.2 命令选项 171
9.6.3 创建通道 172
9.6.4 加入通道 174
9.6.5 列出所加入的通道 175
9.6.6 获取某区块 176
9.6.7 更新通道配置 177
9.7 SDK 支持 178
9.8 生产环境注意事项 179
9.9 本章小结 181
第10章 超级账本 Fabric 配置管理 182
10.1 简介 182
10.1.1 配置文件 182
10.1.2 配置管理工具 183
10.2 Peer 配置剖析 183
10.2.1 logging部分 184
10.2.2 peer部分 184
10.2.3 vm部分 188
10.2.4 chaincode部分 189
10.2.5 ledger部分 190
10.3 Orderer 配置剖析 191
10.4 cryptogen 生成组织身份配置 194
10.4.1 配置文件 195
10.4.2 子命令和参数 196
10.4.3 生成密钥和证书文件 196
10.4.4 查看配置模板信息 198
10.5 configtxgen 生成通道配置 199
10.5.1 configtx.yaml配置文件 199
10.5.2 命令选项 203
10.5.3 生成Orderer初始区块并进行查看 203
10.5.4 生成新建通道交易文件并进行查看 211
10.5.5 生成锚节点更新交易文件 215
10.6 configtxlator 转换配置 215
10.6.1 RESTful接口 215
10.6.2 解码为Json格式 216
10.6.3 编码为二进制格式 217
10.6.4 计算配置更新量 217
10.6.5 更新通道配置 218
10.7 本章小结 219
第11章 超级账本 Fabric CA 应用与配置 220
11.1 简介 220
11.2 安装服务端和客户端 221
11.2.1 本地编译 221
11.2.2 获取和使用Docker镜像 223
11.2.3 示例Dockerfile 223
11.3 启动 CA 服务 225
11.4 服务端命令剖析 228
11.4.1 全局命令参数 228
11.4.2 init命令 230
11.4.3 start命令 230
11.5 服务端配置文件解析 231
11.6 与服务端进行交互 235
11.7 客户端命令剖析 237
11.7.1 全局命令参数 237
11.7.2 enroll命令 239
11.7.3 getcacert命令 240
11.7.4 reenroll命令 241
11.7.5 register命令 241
11.7.6 revoke命令 242
11.8 客户端配置文件解析 243
11.9 生产环境部署 245
11.10 本章小结 247
第12章 超级账本 Fabric 架构与设计 248
12.1 整体架构概览 248
12.1.1 核心特性 248
12.1.2 整体架构 249
12.1.3 典型工作流程 249
12.2 核心概念与组件 251
12.2.1 网络层相关组件 252
12.2.2 共识相关组件 254
12.2.3 权限管理相关组件 255
12.2.4 业务层相关组件 257
12.3 gRPC 消息协议 262
12.3.1 Envelope消息结构 262
12.3.2 客户端访问Peer节点 263
12.3.3 客户端、Peer节点访问Orderer 265
12.3.4 链码容器和Peer节点之间的操作 265
12.3.5 多个节点之间的操作 266
12.4 权限管理和策略 267
12.4.1 策略应用场景 267
12.4.2 身份证书 268
12.4.3 权限策略的实现 268
12.4.4 通道策略 272
12.4.5 背书策略 273
12.4.6 实例化策略 273
12.5 用户链码 274
12.5.1 基本结构 274
12.5.2 链码与Peer的交互过程 275
12.5.3 链码处理状态机 277
12.6 系统链码 279
12.7 排序服务 281
12.7.1 gRPC服务接口 282
12.7.2 链和账本管理 283
12.7.3 通道配置更新 284
12.7.4 共识插件 286
12.8 本章小结 288
第13章 区块链应用开发 290
13.1 简介 290
13.2 链码的原理、接口与结构 292
13.2.1 Chaincode接口 292
13.2.2 链码结构 293
13.2.3 链码基本工作原理 294
13.3 链码开发 API 295
13.3.1 账本状态交互API 296
13.3.2 交易信息相关API 296
13.3.3 参数读取API 297
13.3.4 其他API 297
13.4 应用开发案例一:转账 298
13.4.1 链码结构 298
13.4.2 Init方法 299
13.4.3 Invoke方法 300
13.5 应用开发案例二:资产权属管理 301
13.5.1 链码结构 301
13.5.2 Invoke方法 303
13.6 应用开发案例三:调用其他链码 312
13.7 应用开发案例四:发送事件 313
13.8 开发最佳实践小结 314
13.9 本章小结 316
第14章 区块链服务平台设计 317
14.1 简介 317
14.1.1 参考架构 318
14.1.2 考量指标 318
14.2 IBM Bluemix 云区块链服务 319
14.3 微软 Azure 云区块链服务 321
14.4 使用超级账本 Cello 搭建区块链服务 324
14.4.1 基本架构和特性 324
14.4.2 环境准备 325
14.4.3 下载Cello源码 325
14.4.4 配置Worker节点 325
14.4.5 配置Master节点 326
14.4.6 使用Cello管理区块链 327
14.4.7 基于Cello进行功能扩展 330
14.5 本章小结 330
附  录
附录A 术语表 334
附录B 常见问题解答 338
附录C Golang 开发相关 342
附录D ProtoBuf 与 gRPC 349
附录E 参考资源 353


---------------------------6019644 - 区块链开发指南---------------------------


推荐序一 区块链的价值实现
推荐序二 区块链,推动金融代际跃升的新力量
推荐序三 区块链技术的现实和未来
前言
第1章 区块链基础 1
1.1 交易和交易链 2
1.1.1 比特币地址 3
1.1.2 交易的本质 3
1.1.3 输入和输出 5
1.1.4 交易类型 5
1.1.5 找零地址 6
1.2 区块和区块链 8
1.2.1 区块结构 8
1.2.2 创世块 10
1.2.3 区块链原理 13
1.3 挖矿、矿池 14
1.3.1 挖矿原理与区块的产生 14
1.3.2 挖矿难度 16
1.3.3 矿池原理与商业模式 18
1.4 脚本系统 19
1.4.1 脚本特点 20
1.4.2 脚本运行过程 24
1.4.3 脚本操作码解读 25
1.4.4 脚本执行过程 26
1.5 合约应用案例 27
1.5.1 合约应用原理 28
1.5.2 示例1:提供押金证明 29
1.5.3 示例2:担保和争端调解 30
1.5.4 示例3:保证合约 30
1.5.5 示例4:使用外部状态 32
1.5.6 示例5:跨链交易 34
1.5.7 示例6:支付证明合约 35
1.5.8 示例7:特定对象的快速调整(微)支付 36
1.5.9 示例8:多方去中心化彩票 37
参考资料 37
第2章 区块链进阶 39
2.1 外带数据 39
2.1.1 OP_RETURN外带数据 39
2.1.2 Multi-Signatures外带数据 40
2.2 Counterparty 40
2.2.1 Counterparty附生链的实现机制详解 41
2.2.2 发送 41
2.2.3 订单 42
2.2.4 发行 42
2.2.5 广播 43
2.2.6 赌约 43
2.3 挖矿算法解析 43
2.3.1 PoW挖矿算法及分析 43
2.3.2 PoS股权证明算法及分析 44
2.3.3 DPoS股份授权证明算法及分析 45
2.4 Sidechains 45
2.4.1 侧链背景 45
2.4.2 技术原理 46
2.5 最新比特币技术 49
2.5.1 IBLT 49
2.5.2 隔离见证 50
2.5.3 闪电网络 51
2.5.4 RSMC 51
2.5.5 HTLC 52
参考资料 53
第3章 密码学基础 54
3.1 Hash函数 54
3.1.1 技术原理 54
3.1.2 SHA-1算法 55
3.1.3 SHA-2算法 57
3.1.4 SHA-3算法 64
3.1.5 RIPEMD160算法 65
3.2 椭圆曲线密码 66
3.2.1 椭圆曲线方程 67
3.2.2 公钥和私钥的产生算法 68
3.3 ECDSA数字签名 69
3.4 Schnorr数字签名 70
3.4.1 技术思想 70
3.4.2 Schnorr与ECDSA的异同 70
3.5 Bloom filter 71
3.5.1 技术原理 71
3.5.2 应用案例 72
第4章 比特币区块链开发 74
4.1 Bitcoin的编译过程 74
4.1.1 Ubuntu下的编译 74
4.1.2 Mac下的编译 75
4.1.3 Windows下的编译 76
4.2 代码剖析 77
4.2.1 主要模块 77
4.2.2 初始化和启动 79
4.2.3 P2P网络 80
4.2.4 交易和区块 89
4.2.5 脚本系统 89
4.2.6 挖矿 91
4.2.7 私钥 92
4.3 性能实战 93
4.3.1 建立私链 93
4.3.2 优化改进 96
4.4 API开发 97
4.4.1 命令行调用 97
4.4.2 RPC API调用接口 100
4.4.3 如何调用API进行开发 103
4.4.4 通过命令实现区块链的查询实例 103
第5章 以太坊智能合约开发 109
5.1 以太坊 109
5.1.1 以太坊的定义 109
5.1.2 下一代区块链 109
5.1.3 以太坊虚拟机 110
5.1.4 以太坊的工作原理 110
5.2 以太坊账户管理 111
5.2.1 账户 111
5.2.2 钥匙文件 112
5.2.3 创建账号 112
5.3 更新、备份、恢复账号 115
5.3.1 更新账号 115
5.3.2 账号备份和恢复 116
5.4 公有链、联盟链、私有链及网络配置 117
5.4.1 以太坊网络 117
5.4.2 公有链、私有链和联盟链 117
5.4.3 如何连接 118
5.4.4 更快地下载区块链 119
5.4.5 静态节点、信任节点和启动节点 120
5.5 搭建测试网络和私有链 121
5.5.1 Modern测试网 121
5.5.2 设置本地私有测试网 121
5.6 账户、交易核心概念及投注合约解析 125
5.6.1 外有账户与合约账户 125
5.6.2 什么是交易 126
5.6.3 什么是消息 126
5.6.4 什么是gas 126
5.6.5 估算交易成本 127
5.6.6 账户交互示例:投注合约 128
5.7 深入浅出智能合约 131
5.7.1 合约的定义 131
5.7.2 以太坊高级语言 131
5.7.3 写合约 131
5.7.4 编译合约 132
5.7.5 创建和部署合约 134
5.7.6 与合约互动 135
5.7.7 合约元数据 136
5.7.8 测试合约和交易 137
5.8 如何部署、调用智能合约 138
5.8.1 RPC 138
5.8.2 惯例 138
5.8.3 部署合约 139
5.8.4 和智能合约互动 141
5.8.5 Web3.js 142
5.8.6 控制台 143
5.8.7 查看合约与交易 143
5.9 智能合约案例实战 143
参考资料 146
第6章 Fabric原理和实操 147
6.1 超级账本项目背景 147
6.2 Fabric简介 149
6.3 系统架构 150
6.3.1 交易 150
6.3.2 区块链数据结构 150
6.3.3 节点 151
6.4 交易背书的基本流程 155
6.4.1 客户端创建交易后发送到它所选择的背书节点 156
6.4.2 背书节点模拟交易,然后生成背书签名 157
6.4.3 提交客户端获取交易的背书,通过排序服务广播 158
6.4.4 排序服务向所有节点投递交易消息 158
6.5 背书策略 159
6.5.1 背书策略规范 159
6.5.2 交易评估与背书策略 159
6.5.3 背书策略示例 160
6.6 验证总账(1.0版本之后的功能)和原始总账检查点(精简) 160
6.6.1 验证总账 160
6.6.2 原始总账检查点 161
6.7 Fabric V1.0开发者快速入门 163
6.7.1 前置条件和系统配置 163
6.7.2 下载源代码,创建Fabric网络 164
6.7.3 生成配置文件 164
6.7.4 使用Docker创建Fabric网络&创建/加入通道(账本) 165
6.7.5 示例合约执行过程解析 165
6.7.6 查看智能合约执行日志 166
6.7.7 手工创建和加入通道 166
6.7.8 使用命令行工具部署、调用、查询智能合约 167
6.7.9 开发环境故障排除 168
6.7.10 Fabric常用的Docker命令 168
6.8 智能合约开发 169
6.8.1 智能合约的定义 169
6.8.2 GO语言智能合约的开发和部署 169
6.8.3 Java智能合约的编写与部署 174
6.8.4 开发和提交代码 180
相关术语 182
附录A 国内区块链联盟介绍 184
附录B 《ChinaLedger面向中国资本市场应用的分布式总账白皮书》全文 201

推荐

车牌查询
桂ICP备20004708号-3