区块链原理、设计与应用

区块链原理、设计与应用

作者:杨保华陈昌

出版社:机械工业

出版年:2017年8月

ISBN:9787111577829

所属分类:网络科技

书刊介绍

《区块链原理、设计与应用》内容简介

本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深,系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1~3章介绍区块链技术的由来、核心思想及典型的应用场景;第4~5章重点介绍区块链技术中大量出现的分布式系统技术和密码学安全技术;第6~8章介绍区块链领域的三个典型开源项目:比特币、以太坊以及超级账本;第9~11章以超级账本Fabric项目为例,具体讲解了安装部署、配置管理,以及使用Fabric CA进行证书管理的实践经验;第12章重点剖析超级账本Fabric项目的核心架构设计;第13章介绍区块链应用开发的相关技巧和示例;第14章介绍区块链服务平台的设计与开发,并讲解应用超级账本Cello项目构建服务平台的相关知识。本书覆盖了区块链和分布式账本领域的最新技术,可帮助读者深入理解区块链核心原理和典型设计实现,以及高效地开发基于区块链平台的分布式应用。
杨保华,博士,毕业于清华大学。超级账本(Hyperledger)大中华区技术工作组主席,IBM大中华区Blockchain技术社区首席顾问,资深研究员。曾主持多个大规模系统平台的架构设计和研发实施,是区块链、云计算、大数据等技术的早期研究者和实践者。他热爱开源技术,曾贡献于OpenStack、OpenDaylight等开源项目,是超级账本Fabric项目的核心设计和开发者,Cello和Fabric-SDK-Py项目的发起人。个人主页为https://yeasy.github.com。
陈昌,毕业于清华大学。纸贵科技CTO,曾任IBM高级研究员。技术方向包括云计算、区块链、机器学习等。他是区块链技术的早期研究和推动者,是超级账本(Hyperledger)项目的核心开发者。他有丰富的区块链应用实践经验,曾负责金融行业区块链解决方案的架构设计和实施,并主导开发了若干区块链服务平台。

作品目录

序言
前言
理论篇
第1章:区块链思想的诞生
1.1、从实体货币到数字货币
1.2、站在巨人的肩膀上
1.3、了不起的社会学实验
1.4、潜在的商业价值
1.5、本章小结
第2章:核心技术概览
2.1、定义与原理
2.2、技术的演化与分类
2.3、关键问题和挑战
2.4、趋势与展望
2.5、认识上的误区
2.6、本章小结
第3章:典型应用场景
3.1、应用场景概览
3.2、金融服务
3.3、征信和权属管理
3.4、资源共享
3.5、贸易管理
3.6、物联网
3.7、其他场景
3.8、本章小结
第4章:分布式系统核心问题
4.1、一致性问题
4.2、共识算法
4.3、FLP不可能原理
4.4、CAP原理
4.5、ACID原则
4.6、Paxos算法与Raft算法
4.7、拜占庭问题与算法
4.8、可靠性指标
4.9、本章小结
第5章:密码学与安全技术
5.1、Hash算法与数字摘要
5.2、加解密算法
5.3、消息认证码与数字签名
5.4、数字证书
5.5、PKI体系
5.6、Merkle树结构
5.7、布隆过滤器
5.8、同态加密
5.9、其他问题
5.10、本章小结
第6章:比特币——区块链思想诞生的摇篮
6.1、比特币项目简介
6.2、原理和设计
6.3、挖矿
6.4、共识机制
6.5、闪电网络
6.6、侧链
6.7、热点问题
6.8、相关工具
6.9、本章小结
第7章:以太坊——挣脱数字货币的枷锁
7.1、以太坊项目简介
7.2、核心概念
7.3、主要设计
7.4、相关工具
7.5、安装客户端
7.6、使用智能合约
7.7、智能合约案例:投票
7.8、本章小结
第8章:超级账本——面向企业的分布式账本
8.1、超级账本项目简介
8.2、社区组织结构
8.3、顶级项目介绍
8.4、开发必备工具
8.5、贡献代码
8.6、本章小结
实践篇
第9章:超级账本Fabric部署和使用
9.1、简介
9.2、本地编译安装
9.3、使用Docker镜像
9.4、启动Fabric网络
9.5、链码的概念与使用
9.6、使用多通道
9.7、SDK支持
9.8、生产环境注意事项
9.9、本章小结
第10章:超级账本Fabric配置管理
10.1、简介
10.2、Peer配置剖析
10.3、Orderer配置剖析
10.4、cryptogen生成组织身份配置
10.5、configtxgen生成通道配置
10.6、configtxlator转换配置
10.7、本章小结
第11章:超级账本Fabric
CA应用与配置
11.1、简介
11.2、安装服务端和客户端
11.3、启动CA服务
11.4、服务端命令剖析
11.5、服务端配置文件解析
11.6、与服务端进行交互
11.7、客户端命令剖析
11.8、客户端配置文件解析
11.9、生产环境部署
11.10、本章小结
第12章:超级账本Fabric架构与设计
12.1、整体架构概览
12.2、核心概念与组件
12.3、gRPC消息协议
12.4、权限管理和策略
12.5、用户链码
12.6、系统链码
12.7、排序服务
12.8、本章小结
第13章:区块链应用开发
13.1、简介
13.2、链码的原理、接口与结构
13.3、链码开发API
13.4、应用开发案例一:转账
13.5、应用开发案例二:资产权属管理
13.6、应用开发案例三:调用其他链码
13.7、应用开发案例四:发送事件
13.8、开发最佳实践小结
13.9、本章小结
第14章:区块链服务平台设计
14.1、简介
14.2、IBM
Bluemix云区块链服务
14.3、微软Azure云区块链服务
14.4、使用超级账本Cello搭建区块链服务
14.5、本章小结
附录
附录A
术语表
附录B
常见问题解答
附录C
Golang开发相关
附录D
ProtoBuf与gRPC
附录E
参考资源

热门书摘

也许有人会想到,银行中的货币实际上也是数字化的,因为通过电子账号里面的数字记录了客户的资产。说的没错,有人称这种电子货币模式为“数字货币1.0”,它实际上依赖于一个前提:假定存在一个安全可靠的第三方记账机构负责记账,这个机构负责所有的担保环节,最终完成交易。

比特币自身的价值通过背后的计算力进行背书

比特币网络自2009年上线以来,在无人管理的情况下,已经在全球范围内7×24小时运行超过8年时间,成功处理了几百万笔交易,甚至支持过单笔1.5亿美元的交易。更为难得的是,比特币网络从未出现过重大的系统故障

要实现一套去中心化的数字货币机制,最关键的是要建立一套可靠的交易记录系统,以及形成一套合理的货币发行机制。

状态机

后继区块记录前导区块的哈希值(pre hash)

共识机制

nonce

跟传统的记账技术相比,基于区块链的分布式账本应该包括如下特点:·维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;·去中心化,或者说多中心化,无需集中控制而能达成共识,实现上尽量采用分布式;·通过密码学的机制来确保交易无法被抵赖和破坏,并尽量保护用户信息和记录的隐私性。

2.分布式共识

问题的核心在于如何解决某个变更在分布式网络中得到一致的执行结果,是被参与多方都承认的,同时这个信息是被确定的,不可推翻的。

该问题在公开匿名场景下和带权限管理的场景下需求差异较大,从而导致了基于概率的算法和确定性算法两类思想。

让恶意破坏的参与者损失经济利益,从而保证大部分人的合作

PoW等基于概率的系列算法理论上允许少于一半的不合作节点,PBFT等确定性算法理论上则允许不超过1/3的不合作节点。

区块链在资源共享领域是否存在价值,还要看能否比传统的专业供应者或中间方形式实现更高的效率和更低的成本,同时不能损害用户体验

不一致

共识则描述了分布式系统中多个节点之间,彼此对某个状态达成一致结果的过程

一致性描述的是结果状态,共识则是一种手段

一般地,把出现故障(crash或fail-stop,即不响应)但不会伪造信息的情况称为“非拜占庭错误”(non-byzantine fault)或“故障错误”(Crash Fault);伪造信息恶意响应的情况称为“拜占庭错误”(Byzantine Fault),对应节点为拜占庭节点。

针对常见的非拜占庭错误的情况,已经存在一些经典的解决算法,包括Paxos、Raft及其变种等。这类容错算法往往性能比较好,处理较快,容忍不超过一半的故障节点。

对于要能容忍拜占庭错误的情况,一般包括PBFT(Practical Byzantine Fault Tolerance)为代表的确定性系列算法、PoW为代表的概率算法等。

科学告诉你什么是不可能的;工程则告诉你,付出一些代价,可以把它变成可行。这就是科学和工程不同的魅力。

CAP原理:分布式计算系统不可能同时确保以下三个特性:一致性(Consistency)、可用性(Availability)和分区容忍性(Partition),设计中往往需要弱化对某个特性的保证。

·一致性:任何操作应该都是原子的,发生在后面的事件能看到前面事件发生导致的结果,注意这里指的是强一致性;·可用性:在有限时间内,任何非失败节点都能应答请求;·分区容忍性:网络可能发生分区,即节点之间的通信不可保障。

ACID原则指的是:Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性),用了四种特性的缩写。

数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始完整的数字内容

PKI体系提供了一套完整的证书管理的框架,包括生成、颁发、撤销过程等。

1.快速比较大量数据

2.快速定位修改

3.零知识证明

布隆过滤器(Bloom Filter)

交易费用越高,越多矿工愿意包含该交易,也就越早被放到网络中。

一旦失败,这些算力都会被没收掉,成为沉没成本。

以太坊的早期发明者Vitalik Buterin提出应该能运行任意形式(图灵完备)的应用程序,而不仅仅是比特币中受限制的简单脚本。

以太币最小单位是wei,一个以太币等于10\(^{18}\)个wei。

节点之间彼此通过gRPC消息进行通信。

相关推荐

微信二维码