超级账本HyperLedgerFabric区块链开发实战_第1页
超级账本HyperLedgerFabric区块链开发实战_第2页
超级账本HyperLedgerFabric区块链开发实战_第3页
超级账本HyperLedgerFabric区块链开发实战_第4页
超级账本HyperLedgerFabric区块链开发实战_第5页
已阅读5页,还剩169页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

超级账本第

1页封面页HyperLedgerFabric区块链开发实战主讲:灵龙目录第1章区块链介绍第

2页目录页Fabric基础篇目录第2章第3章第4章第5章第6章第7章第8章第9章超级账本(HyperLedger)介绍Fabric介绍Fabric基础环境搭建官方End-2-End运行自主Helloworld编写Fabricsolo测试环境部署Fabrickafka生产环境部署生产环境使用FabricCA第

3页目录页Fabric入门篇第10章生产环境使用CouchDB第11章生产环境使用智能合约第12章生产环境Java-SDK客户端目录第13章SAAS区块链支付系统第

4页目录页Fabric实战篇第

5页过渡页区块链介绍区块链技术起源区块链核心技术

区块链开发平台第1章Fabric正文第1章第

8页第1

节区块链技术起源区块链介绍第1点区块链技术形成在比特币诞生之时,技术专家们开始研究比特币的底层技术,并抽象提取出来,形成区块链技术,或者称分布式账本技术起源简称BT(Blockchaintechnology),也称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录,同时数据不可篡改把数据库比喻为一个账本,一次记账的行为就是一次数据库的读写;当产生一个数据时,在一段时间内谁最快拿到记账权的人,将由这个人来记账,然后把这个账本信息发给整个系统里的其它所有人,所有人达成共识时,本次记账有效,最终在账本上的数据谁也无权修改定义理解Fabric正文第1章第

7

页第1

节区块链技术起源区块链介绍第2点区块链技术发展区块链1.0以比特币为代表的去中心化虚拟货币,是与转账、汇款和数字化支付相关的密码学货币应用,主要以公有链方式存在区块链2.0被广泛应用于各个金融领域,不只是单纯的虚拟货币,如股票、债券、期货、贷款、抵押、产权、智能财产和智能合约,主要以公有链、联盟链方式存在区块链3.0被应用到除金融以外的各个领域,不再需要第三方信任认证机构的前提下,实现信息的交换和共享,达到人与人之间的信任,变革生产关系;主要以公有链、联盟链和私有链方式存在Fabric正文第1章第

10页第1

节区块链核心技术区块链介绍第3点区块链技术定义区块链技术指使用点对点传输、共识机制、加密算法等技术,保证分布式数据库区块写入链中数据的一致性,达到去中心化和不可篡改的目的;是各种技术的结合,建立一种全新的技术架构。定义技术点对点传输加密算法共识机制1.工作量证明机制(ProofofWork)2.股权证明机制(ProofofStake)3.授权股权证明机制(DelegatedProofofStake)4.实用拜占庭容错算法(PracticalByzantineFaultTolerance)Fabric正文第1章第

11页第2

节区块链核心技术区块链介绍第4点区块链技术基本概念区块链从字面上理解:数据记录在区块中,通过一定的算法把区块连成一个链。理解概念交易(Transaction)区块(Block)链(Chain)Fabric正文第1章第

12页第2

节区块链核心技术区块链介绍第5点区块链技术原理

每一次交易,都需要对账本状态进行一次改变,生成一个区块,需要所有人进行确认,达成全员共识时,该区块才生效。

区块链通过哈希(Hash)算法,生成一串字符串,保存在区块的头部中,一个区块通过指向上一个Hash值,加入到区块链中;Hash算法是一种加密算法,指对原始信息进行特定的转换运算,换算成对应的加密值(称为Hash值);是一种单向的加密方式,加密后的密文不可逆推,只有加密过程,没有解密过程;区块链中使用SHA-256算法对区块进行加密。Fabric正文第1章第

13页第2

节区块链核心技术区块链介绍第6点区块链结构区块区块链Fabric正文第1章第

14页第3

节区块链核心技术区块链介绍第7点区块链工作过程Fabric正文第1章第

15页第1

节区块链核心技术区块链介绍第8点区块链应用场景三个阶段区块链1.0比特币是区块链应用最早的场景,随着比特币安全稳定运行多年以后,数字货币的场景应用遍地开花区块链2.0在区块链1.0架构的基础上,加上智能合约,应用扩展到金融领域,解决跨境支付与结算、证券发行与交易、贸易金融等行业痛点,可以大幅减少人工核对工作,为金融机构节省成本区块链3.0各种行业使用区块链技术去解决本行业的痛点,区块链去中心化、不可篡改和数据本地化存储的特性,给传统的架构方式带来了变革,最终改善人类互信的社会关系Fabric正文第1章第

16页第3

节区块链开发平台区块链介绍第9点区块链应用场景Fabric正文第1章第

17页第3

节区块链开发平台区块链介绍第10点区块链开发平台分类公有链平台主要以以太坊为主的平台,可以在该类平台上进行代币的发行和根据各种模块搭建应用联盟链系统主要以超级账本为主的开源系统,该类开源系统提供完善的区块链底层技术,开发者只要在其框架下进行二次开发,根据自身需求编写智能合约,通过SDK接口访问区块中的数据,实现具体的区块链业务场景Fabric正文第1章第

18页第3

节区块链开发平台区块链介绍第11点公有链平台

以太坊平台以公有链为主,方便开发者在其平台上使用区块链技术开发去中心化应用,在应用中运用Solidity来编写与区块链交互的智能合约,通过Truffle框架方便部署和运行合约,最后使用Geth或testrpc来搭建测试网络,测试通过后部署到以太坊正式环境中。Fabric正文第1章第

19页第3节区块链开发平台区块链介绍第12点联盟链系统

区块链开源系统以Fabric为主,还有Corda和BCOS,都是以联盟链为代表,三大系统都发布开源,在Github上都可下载。开发者无须关心区块链的底层技术,只须专注业务需求,在其基础上搭建出满足业务逻辑的区块链应用Fabric第20页过渡页超级账本(Hyperledger)介绍超级账本起源超级账本简介超级账本组织超级账本项目第2章Fabric正文第2章第

21页第1节超级账本起源超级账本(Hyperledger)介绍第1

点超级账本起源开放式账本项目(OpenLedgerProject)是超级账本(Hyperledger)前身,由Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,在2015年底IBM宣布加入到开放式账本项目(OpenLedgerProject)后,该项目更名为超级账本(Hyperledger)起源目前2016年12月1日,超级账本项目(HyperledgerProject)开源联盟技术指导委员会(TSC)宣布成立TWGChina

中国技术工作组,促进超级账本当中的各国成员与中国贡献者和技术用户之间的交流,目前中国区成员有百度、万达、小米、华为、招商银行、民生银行等Fabric正文第2章第

22页第2节超级账本简介超级账本(Hyperledger)介绍第2

点超级账本简介超级账本(Hyperledger)是推动区块链跨行业应用的开源项目的总称,组织成员可以发起新的区块链项目,加入到超级账本项目(Hyperledger)中,但需要遵循Hyperledger的生命周期定义流程Hyperledger的生命周期分为五个阶段,分别为Proposal(提案)、Incubation(孵化)、Active(活跃)、Deprecated(过时)、EndofLife(结束)项目超级账本(Hyperledger)有Fabric、Sawtooth、Iroha、BlockchainExplorer、Cello、Indy、Composer、Burrow八大顶级项目,目前提到超级账本(Hyperledger)默认指FabricFabric正文第2章第

23页第3节超级账本组织超级账本(Hyperledger)介绍第3

点超级账本组织Fabric正文第2章第

24页第4节超级账本项目超级账本(Hyperledger)介绍第4

点超级账本项目Fabric第

25页过渡页Fabric介绍Fabric简介Fabric架构Fabric交易流程Fabric关键技术第3章Fabric正文第3章第

26页第1

节Fabric简介Fabric介绍第1

点Fabric简介Fabric是一个提供模块化分布式账本解决方案的框架定义特性保密性灵活性可伸缩性可扩展性Fabric正文第3章第

27页第2

节Fabric架构Fabric介绍第2点架构演进Orderer节点Fabric-ca组件Channel通道Fabric正文第3章第

28页第2

节总体架构Fabric介绍第3点总体架构Fabric正文第3章第

29页第3

节Fabric交易流程Fabric介绍第4

点Fabric交易流程Fabric正文第3章第

30页第4

节Fabric关键技术Fabric介绍第4

点Fabric关键技术帐本(Ledger)智能合约(Smartcontract)通道(Channel)排序(Orderer)接口(SDK)节点(Peer)Fabric正文第3章第

31页第4

节Fabric关键技术Fabric介绍第5

点Fabric关键技术-账本(Ledger)Fabric帐本(Ledger)是一系列有序和防篡改的状态转换的记录,结构由一个区块链构成,并将不可变的、有序的记录存放在区块中;同时包含一个状态数据库来记录当前的状态,账本的当前状态信息是链交易日志中记录过的所有键的最新值,由于当前状态表示的是通道已知的所有键的最新值,由此也被称为世界状态定义结构Fabric正文第3章第

32页第4

节Fabric关键技术Fabric介绍第6

点Fabric关键技术-智能合约(Smartcontract)智能合约又称为链码,是在区块链上运行的一段代码,是应用系统与区块链底层交互的中间件,通过智能合约可以实现各种复杂的应用定义交互Fabric正文第3章第

33页第4

节Fabric关键技术Fabric介绍第7

点Fabric关键技术-通道(Channel)

通道是两个节点(Peer)或多个节点之间信息通信的私有空间,在通道内的交易的数据与通道外隔绝,保证通道内数据的安全Fabric是多通道设计,系统可以创建多条通道,某个节点(Peer)可以加入到不同的通道中,在每个通道中有自身的创世区块和实例化智能合约(Smartcontract)

每个通道都有属于自己的锚节点,通过锚节点可以与其它通道进行信息交互,但本身通道内的账本不会通过一个通道传到另一个通道上,通道对账本是分离的定义结构Fabric正文第3章第

34页第4

节Fabric关键技术Fabric介绍第8

点Fabric关键技术-节点(Peer)

节点(Peer)是区块链的交易处理和账本维护的主体,主要负责参与共识过程和通过执行链码(chaincode)实现对账本的读写操作。

节点(Peer)根据功能不同分为背书节点(Endorserpeer)和提交节点(Committerpeer);

根据通讯不同分为锚节点(Anchorpeer)和主节点(Leadingpeer)定义交互Fabric正文第3章第

35页第4

节Fabric关键技术Fabric介绍第9

点Fabric关键技术-排序(Orderer)

排序(Orderer)指对区块链网络中不同通道产生的交易进行排序,并广播给节点(Peer)。排序(Orderer)是以可插拔组件的方式实现,目前分为SOLO和Kafka两种类型。定义分类

SOLO:仅有一个Orderer服务节点负责接收交易信息进行排序,是最简单的排序算法,一般用于测试环境。

Kafka:是由Apache软件基金会开发的一个开源流处理平台,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,可以配置多个排序节点集群方式,以便使用在生成环境。HyperledgerFabric利用kafka的高吞吐、低延时的特性,对交易信息进行排序处理,实现在集群内部支持节点故障容错。Fabric正文第3章第

36页第4

节Fabric关键技术Fabric介绍第10点Fabric关键技术-Kafka处理流程Fabric正文第3章第

37页第4

节Fabric关键技术Fabric介绍第11点Fabric关键技术-Kafka节点数量规定kafka集群节点的最小值为4,是故障容错所需要的最小数值。四个kafka结点可以容许一个节点崩溃后,所有的通道(Channel)还可以继续读写且创建通道。1zookeeper可以为3,5或7。它必须是一个奇数来避免分裂(split-brain)情景,同时选择大于1是为了避免单点故障,超过7个ZooKeeper节点是多余的。2Fabric正文第3章第

38页第4

节Fabric关键技术Fabric介绍第12点Fabric关键技术-排序操作步骤1在网络的创世块中写入Kafka相关的信息2设置区块最大容量3创建创世区块4配置Kafka集群5所有排序(Orderer)节点都指向创世区块6调整轮询间隔和超时时间7设置排序节点和Kafka集群间为SSL通讯8集群启动顺序Fabric正文第3章第

39页第4

节Fabric关键技术Fabric介绍第13点Fabric关键技术-接口(SDK)FabricSDK提供调用账本(Ledger)、智能合约(Smartcontract)、通道(Channel)、节点(Peer)、排序(Orderer)等接口,方便用第三方应用程序的开发,大大扩展了Fabric的应用场景。定义语言HyperledgerFabric提供了许多SDK来支持各种编程语言,目前正式发布了Node.js和Java两种版本的SDK。将来还会发布Python、Go、REST版本的SDK,还在测试阶段。Fabric第

38

页过渡页Fabric基础环境搭建Docker安装Docker-Compose安装GO语言环境安装Git安装Fabric安装Fabric镜像下载第4章Fabric正文第4章第

39

页第1

节Docker安装Fabric基础环境搭建第1

点Docker安装Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。定义步骤yum-utils提供yum-config-manager工具,设备映射存储驱动需要device-mapper-persistent-data和lvm2工具卸载旧版本设置稳定存储库开启edge开启test安装docker-ce运行docker查看docker版本,判断是否安装成功设置开机自启动Fabric正文第4章第

42页第2节Docker-Compose安装Fabric基础环境搭建第2

点Docker-Compose安装Docker-Compose是用来定义和运行复杂应用的Docker工具。可以在一个文件中定义一个多容器应用和容器依赖,并且使用一条命令来启动你的应用,完成一切准备工作。定义步骤下载最新版本docker-compose到/usr/local/bin/docker-compose目录下设置/usr/local/bin/docker-compose目录为可执行权限测试docker-compose安装是否成功Fabric正文第4章第

43页第3节GO语言环境安装Fabric基础环境搭建第3

点GO语言环境安装Go语言是谷歌2009发布的第二款开源编程语言,专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。定义步骤下载并安装GO语言环境配置GO语言环境变量查看GO语言版本查看GO语言环境变量Fabric正文第4章第

44页第4节Git安装Fabric基础环境搭建第4

点Git安装Git是一个开源的分布式版本控制系统,可以有效、高速的处理各类大小项目版本管理。定义步骤#yuminstallgitFabric正文第4章第

45页第5节Fabric安装Fabric基础环境搭建第5

点Fabric安装Fabric安装可以有两种方式,一种通过Git安装,一种通过手动下载安装。定义步骤Git安装生成目录Git克隆源码切换Fabric版本手动安装访问github网站并下载Fabric,地址为:/hyperledger/fabric/tree/v1.4.0,然后拷贝到$GOPATH/src//hyperledger/这个目录下面。Fabric正文第4章第

46页第6节Fabric镜像下载Fabric基础环境搭建第6

点Fabric镜像下载#dockerpullhyperledger/fabric-peer:latest#dockerpullhyperledger/fabric-orderer:latest#dockerpullhyperledger/fabric-tools:latest#dockerpullhyperledger/fabric-ccenv:latest#dockerpullhyperledger/fabric-baseos:latest#dockerpullhyperledger/fabric-kafka:latest#dockerpullhyperledger/fabric-zookeeper:latest#dockerpullhyperledger/fabric-couchdb:latest#dockerpullhyperledger/fabric-ca:latestFabric正文第4章第

45

页第7

节实验一Fabric基础环境搭建第7

点实验一Fabric基础环境搭建Fabric了解Fabric环境所需的工具,如Docker等;掌握搭建Fabric环境的过程;实验目的实验环境独立计算机;计算机中安装centos7操作系统;如果计算机中安装windows系统,需要安装VMware虚拟机软件,并在虚拟机上安装centos7操作系统;在windows系统上安装SSHSecureShellClient工具。第

46

页过渡页官方End-2-End运行End-2-End案例简介End-2-End案例运行End-2-End案例分析第5章Fabric正文第5章第

47

页第1节End-2-End案例简介官方End-2-End运行第1点End-2-End案例简介Fabric官方提供了实现点对点的Fabric网络示例,该网络有两个组织(organizations),一个组织有两个节点(Peer),通过Kafka方式实现排序(Orderer)服务。说明工具FabricEnd-2-End案例的运行需要“cryptogen”和“configtxgen”两个工具,用于Fabric网络所需的数字证书验证和访问控制功能cryptogen:生成用于识别和验证网络中各种组件的x509证书configtxgen:生成用于通道和区块所需要配置文件正文第5章第

48

页第1节End-2-End案例简介官方End-2-End运行第2

点End-2-End案例简介-工具生成

两个工具可以通过命令方式生成,在该End-2-End例子中命令已集成到generateArtifacts.sh这个文件,运行后自动生成,无需手动命令操作,两个文件生成到$GOPATH/src//hyperledger/fabric/release/linux-amd64/bin这个目录自动手动Fabric

还可以通过以下网址直接访问下载,地址:/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/,本书使用V1.4.0版本,对应文件为hyperledger-fabric-linux-amd64-1.4.0.tar.gz,下载完成后解压,获取bin目录正文第5章第

49

页第1节End-2-End案例运行官方End-2-End运行第3点End-2-End案例运行Fabric步骤复制e2e_cli源文件修改为可执行权限运行e2e_cli#./network_setup.shup正文第5章第

50

页第1节End-2-End案例分析官方End-2-End运行第4

点End-2-End案例分析-案例架构Fabric所有的配置都在docker-compose-cli.yaml文件里,配置顺序分别为zookeeper、kafka、orderer、peer和cli,先运行zookeeper集群、再运行kafka集群,最后运行orderer和peer,必须按照以上运行顺序;实现的功能集中写在script.sh文件里,自动运行全部功能,直到显示成功验证排序(orderer)服务是否可用,函数:checkOSNAvailability创建通道,函数:createChannel加入通道,函数:checkOSNAvailability更新组织1的锚节点,函数:updateAnchorPeers更新组织2的锚节点,函数:updateAnchorPeers在组织1的节点0上安装智能合约,函数:installChaincode在组织2的节点0上安装智能合约,函数:installChaincode在组织2的节点0上实例化智能合约,函数:instantiateChaincode在组织1的节点0上查询智能合约,函数:chaincodeQuery从组织1的节点0向组织2的节点0转移数据10的交易,函数:chaincodeInvoke在组织2的节点1上安装智能合约,函数:installChaincode在组织2的节点1上查询智能合约,函数:chaincodeQuery正文第5章第

51

页第1节End-2-End案例分析官方End-2-End运行第5

点End-2-End案例分析-文件结构Fabric文件(或目录)名称说明base存放配置提炼的公有部分,有两个文件,分别为docker-compose-base.yaml和peer-base.yamlchannel-artifacts存放生成的通道和创世纪块等文件,包括有channel.tx、genesis.block、Org1MSPanchors.tx和Org2MSPanchors.txcrypto-config存放生成的公私钥和证书等文件scripts只有一个script.sh文件,该文件是案例的运行功能的集合,运行后会自动执行全部功能,直到完成configtx.yaml通道配置文件crypto-config.yaml生成的公私钥和证书的配置文件docker-compose-cli.yamlFabric网络Docker运行配置文件download-dockerimages.sh下载Fabric镜像执行文件generateArtifacts.sh生成公私钥和证书的执行文件network_setup.sh案例运行的入口文件正文第5章第

52

页第3

节End-2-End案例分析官方End-2-End运行第6点End-2-End案例分析-执行流程Fabric正文第5章第

53

页第3

节End-2-End案例分析官方End-2-End运行第7

点End-2-End案例分析-链码介绍Fabric智能合约通过Go语言编写,实现存储a和b值,并在a和b之间数据交易转移,主要包括Init(初始化)、Invoke(交易)、delete(删除)和query(查询)四个函数简介代码func(t*SimpleChaincode)Init(stubshim.ChaincodeStubInterface)pb.Response{…err=stub.PutState(A,[]byte(strconv.Itoa(Aval)))…

err=stub.PutState(B,[]byte(strconv.Itoa(Bval)))…returnshim.Success(nil)}func(t*SimpleChaincode)Invoke(stubshim.ChaincodeStubInterface)pb.Response{ ... function,args:=stub.GetFunctionAndParameters() iffunction=="invoke"{ returnt.invoke(stub,args) }elseiffunction=="delete"{ returnt.delete(stub,args) }elseiffunction=="query"{ returnt.query(stub,args) }...}正文第5章第

54

页第3

节End-2-End案例分析官方End-2-End运行第8点End-2-End案例分析-证书配置Fabriccrypto-config.yamlOrdererOrgs://构成Orderer集群的节点所属组织-Name:Orderer//组织名称Domain://组织命名域CA://组织的CA配置Country:USProvince:CaliforniaLocality:SanFranciscoSpecs://若干节点配置-Hostname:ordererPeerOrgs://构成Peer集群的节点所属组织-Name:Org1Domain:EnableNodeOUs:true

//定义节点是否支持组织单元,如果设置为true,就在msp下生成config.yaml文件CA:Country:USProvince:CaliforniaLocality:SanFranciscoTemplate://允许定义按照模板顺序创建1个或多个主机。默认情况下,生成从0到Count-1个peer,如:peer0.、Count:2//表示生成Peer个数Users:Count:1//表示生成普通用户个数,除admin以外-Name:Org2Domain:EnableNodeOUs:true

Template:Count:2Users:Count:1第9

点End-2-End案例分析-通道配置configtx.yamlProfiles://定义用于configtxgen工具的配置入口TwoOrgsOrdererGenesis:<<:*ChannelDefaultsOrderer:<<:

*OrdererDefaultsOrganizations:-*OrdererOrgConsortiums://联盟信息

SampleConsortium:Organizations:-*Org1-*Org2-*Org3TwoOrgsChannel:Consortium:SampleConsortium<<:*ChannelDefaultsApplication:<<:*ApplicationDefaultsOrganizations:-*Org1-*Org2-*Org3Organizations://组织配置-&OrdererOrg//Orderer组织Name:OrdererOrg//组织名称ID:OrdererMSP//组织IDMSPDir:crypto-config/ordererOrganizations//msp//MSP目录-&Org1//Peer组织Name:Org1MSP//组织名称ID:Org1MSP//组织IDMSPDir:crypto-config/peerOrganizations//msp//MSP目录AnchorPeers://锚结点-Host://锚结点主机Port:7051//锚结点主机端口Orderer:&OrdererDefaults//Orderer配置OrdererType:kafka//Orderer排序类型Addresses://Orderer地址-:7050BatchTimeout:2s//区块生成超时时间BatchSize:MaxMessageCount:10//区块消息数量AbsoluteMaxBytes:98MB//区块绝对最大字节数PreferredMaxBytes:512KB//设置首选的区块大小Kafka:Brokers://orderer连接的Kafak代理列表-kafka0:9092-kafka1:9092-kafka2:9092-kafka3:9092Fabric正文第5章第

55

页第3

节End-2-End案例分析官方End-2-End运行第10点End-2-End案例分析-启动基础配置docker-compose-base.yamlservices:zookeeper:image:hyperledger/fabric-zookeeperrestart:alwaysports:-'2181'-'2888'-'3888'kafka:image:hyperledger/fabric-kafkarestart:alwaysenvironment:-KAFKA_MESSAGE_MAX_BYTES=103809024#99*1024*1024B-KAFKA_REPLICA_FETCH_MAX_BYTES=103809024#99*1024*1024B-KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=falseports:-'9092':container_name:image:hyperledger/fabric-ordererenvironment:-ORDERER_GENERAL_LOCALMSPID=OrdererMSP-ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/mspcommand:orderervolumes:ports:-7050:7050Fabric正文第5章第

56

页第3

节End-2-End案例分析官方End-2-End运行第11点End-2-End案例分析-启动基础配置peer-base.yamlversion:'2'services:peer-base:image:hyperledger/fabric-peerenvironment:-CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock#thefollowingsettingstartschaincodecontainersonthesame#bridgenetworkasthepeers#/compose/networking/-CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default#-CORE_LOGGING_LEVEL=ERROR-CORE_LOGGING_LEVEL=DEBUG-CORE_PEER_TLS_ENABLED=true-CORE_PEER_GOSSIP_USELEADERELECTION=true-CORE_PEER_GOSSIP_ORGLEADER=false-CORE_PEER_PROFILE_ENABLED=true-CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt-CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key-CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crtworking_dir:/opt/gopath/src//hyperledger/fabric/peercommand:peernodestartFabric正文第5章第

57

页第3

节End-2-End案例分析官方End-2-End运行第12点End-2-End案例分析-启动Zookeeper配置docker-compose-cli.yamlzookeeper0:container_name:zookeeper0extends:file:base/docker-compose-base.yamlservice:zookeeperenvironment:-ZOO_MY_ID=1-ZOO_SERVERS=server.1=zookeeper0:2888:3888server.2=zookeeper1:2888:3888server.3=zookeeper2:2888:3888zookeeper1:container_name:zookeeper1extends:file:base/docker-compose-base.yamlservice:zookeeperenvironment:-ZOO_MY_ID=2-ZOO_SERVERS=server.1=zookeeper0:2888:3888server.2=zookeeper1:2888:3888server.3=zookeeper2:2888:3888zookeeper2:container_name:zookeeper2extends:file:base/docker-compose-base.yamlservice:zookeeperenvironment:-ZOO_MY_ID=3-ZOO_SERVERS=server.1=zookeeper0:2888:3888server.2=zookeeper1:2888:3888server.3=zookeeper2:2888:3888Fabric正文第5章第

58

页第3

节End-2-End案例分析官方End-2-End运行第13点End-2-End案例分析-启动Kafka配置docker-compose-cli.yamlkafka0:container_name:kafka0extends:file:base/docker-compose-base.yamlservice:kafkaenvironment:-KAFKA_BROKER_ID=0-KAFKA_MIN_INSYNC_REPLICAS=2-KAFKA_DEFAULT_REPLICATION_FACTOR=3-KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181depends_on:-zookeeper0-zookeeper1Fabric正文第5章第

59

页第3

节End-2-End案例分析官方End-2-End运行第14点End-2-End案例分析-启动Orderer配置docker-compose-cli.yaml:extends:file:base/docker-compose-base.yamlservice:container_name:depends_on:-zookeeper0-zookeeper1-zookeeper2-kafka0-kafka1-kafka2Fabric正文第5章第

60

页第3

节End-2-End案例分析官方End-2-End运行第15点End-2-End案例分析-启动Peer配置docker-compose-cli.yaml:container_name:extends:file:base/docker-compose-base.yamlservice:

:container_name:extends:file:base/docker-compose-base.yamlservice:

:container_name:extends:file:base/docker-compose-base.yamlservice:

:container_name:extends:file:base/docker-compose-base.yamlFabric正文第5章第

61

页第3

节End-2-End案例分析官方End-2-End运行第16点End-2-End案例分析-启动Cli配置docker-compose-cli.yamlcli:container_name:cliimage:hyperledger/fabric-toolsenvironment:-GOPATH=/opt/gopath-CORE_PEER_ID=cli-CORE_PEER_ADDRESS=:7051-CORE_PEER_LOCALMSPID=Org1MSP-CORE_PEER_TLS_ENABLED=true-CORE_PEER_TLS_CERT_FILE=-CORE_PEER_TLS_KEY_FILE=-CORE_PEER_TLS_ROOTCERT_FILE=-CORE_PEER_MSPCONFIGPATH=

working_dir:/opt/gopath/src//hyperledger/fabric/peercommand:/bin/bash-c'./scripts/script.sh${CHANNEL_NAME};sleep$TIMEOUT'volumes:-/var/run/:/host/var/run/-../chaincode/go/:/opt/gopath/src//hyperledger/fabric/examples/chaincode/go-./crypto-config:/opt/gopath/src//hyperledger/fabric/peer/crypto/-./scripts:/opt/gopath/src//hyperledger/fabric/peer/scripts/-./channel-artifacts:/opt/gopath/src//hyperledger/fabric/peer/channel-artifactsdepends_on:----Fabric正文第5章第

62

页第3

节End-2-End案例分析官方End-2-End运行正文第5章第

63

页第4

节实验二官方End-2-End运行第17点实验二官方End-2-End运行Fabric在实验一搭建Fabric环境的基础上,成功运行官方End-2-End案例;掌握Fabric应用的运行方式;初步了解官方End-2-End案例结构;实验目的实验环境独立计算机;计算机中安装centos7操作系统;如果计算机中安装windows系统,需要安装VMware虚拟机软件,并在虚拟机上安装centos7操作系统;在windows系统上安装SSHSecureShellClient工具。在centos7操作系统中搭建Fabric基础环境第

66页过渡页自主Helloworld编写Helloworld案例简介Helloworld案例运行Helloworld案例分析第6章Fabric正文第6章第

67页第1节Helloworld案例简介自主Helloworld编写第1点Helloworld案例简介通过手动方式搭建一个orderer、一个组织和一个peer的SOLO排序的Fabric网络,把配置独立出来,形成orderer和peer配置等单个yaml文件,通过手动执行orderer和peer搭建Fabric网络说明Fabric编写最简单的智能合约,初始化时在区块中存储Helloworld字符串,然后通过智能合约可以查询出Helloworld字符串,初步了解智能合约编写通过执行官方End-2-End案例,初始了解Fabric网络的运行流程及yaml配置,官方End-2-End案例把执行过程集成,通过一条命令即可完成全部操作,对于初学者只能了解Fabric网络搭建是否成功,对于Fabric网络的执行细节还是迷惑正文第6章第

68页第2

节Helloworld链码编写自主Helloworld编写第2

点Helloworld链码编写-简介Init(stubshim.ChaincodeStubInterface):用于智能合约初始化及升级初始化,实现初始化时保存链值对;简介FabricInvoke(stubshim.ChaincodeStubInterface):是节点(peer)调用链码的入口函数,实现对账本进行保存和获取链值对Helloworld链码实现Init和Invoke两个接口,通过stub.PutState和stub.GetState保存和获取链值对数据第3点Helloworld链码编写-代码介绍介绍Fabric实现两个文件,分别chaincode.go和cmd/main.go,main.go是主入口函数packagemainimport(

"fmt"

"/hyperledger/fabric/core/chaincode/shim"

"/hyperledger/fabric/helloworld/chaincode/go/helloworld")funcmain(){

err:=shim.Start(new(helloworld.SimpleChaincode))

iferr!=nil{

fmt.Printf("ErrorstartingSimplechaincode:%s",err)

}}正文第6章第

69页第2

节Helloworld链码编写自主Helloworld编写main.go第4

点Helloworld链码编写-代码介绍Fabricfunc(t*SimpleChaincode)Init(stubshim.ChaincodeStubInterface)pb.Response{

args:=stub.GetStringArgs()

err:=stub.PutState(args[0],[]byte(args[1]))

returnshim.Success(nil)}func(t*SimpleChaincode)Invoke(stubshim.ChaincodeStubInterface)pb.Response{

fn,args:=stub.GetFunctionAndParameters()

varresultstring

varerrerror

iffn=="set"{

result,err=set(stub,args)

}else{//assume'get'eveniffnisnil

result,err=get(stub,args)

}

iferr!=nil{

returnshim.Error(err.Error())

}

returnshim.Success([]byte(result))}正文第6章第

70页第2

节Helloworld链码编写自主Helloworld编写chaincode.go第5

点Helloworld案例运行Fabric正文第6章第

71页第2

节Helloworld案例运行自主Helloworld编写步骤创建helloworld目录获取生成工具准备生成证书和区块配置文件生成公私钥和证书生成创世区块生成通道配置区块准备docker配置文件准备部署智能合约启动Fabric网络启动orderer启动peer启动cli容器创建ChannelPeer加入Channel安装与运行智能合约安装智能合约实例化智能合约Peer上查询A,显示Helloworld正文第6章第

70

页第3节实验三自主Helloworld编写第6

点实验三自主Helloworld编写Fabric在实验一搭建Fabric环境的基础上,成功运行自主编写的Helloworld案例;掌握Fabric应用的运行方式;初步了解Yaml配置文件配置参数;初步了解智能合约编写方法;实验目的实验环境预习教材中的“自主Helloworld编写”相关内容;熟悉Linux基本操作命令;搭建完整的Fabric基础环境;了解GO语言的基础语法;第

73页过渡页FabricSolo测试环境部署Solo模式简介单机单节点部署多机多节点部署第7章Fabric正文第10章第

74页第1节Solo模式简介FabricSolo测试环境部署第1点Solo模式简介概念FabricSolo模式指单节点通信模式,该环境中只有一个排序(orderer)服务,从节点(peer)发送来的消息由一个orderer进行排序和产生区块;由于排序(orderer)服务只有一个orderer为所有节点(peer)服务,没有高可用性和可扩展性,不适合用于生产环境,可以用于开发和测试环境时序正文第10章第

75页第2

节单机单节点部署FabricSolo测试环境部署第2

点单机单节点部署说明Fabric单机单节点指在一台电脑上部署一个排序(Orderer)服务、一个组织(Org1),一个节点(Peer,属于Org1),然后运行官方案例中的example02智能合约例子,实现转帐交易和查询功能结构图正文第10章第

76页第2

节单机单节点部署FabricSolo测试环境部署第3

点单机单节点部署Fabric步骤创建singlepeer目录获取生成工具准备生成证书和区块配置文件生成公私钥和证书生成创世区块生成通道配置区块准备docker配置文件准备部署智能合约启动Fabric网络启动orderer和peer启动cli容器创建ChannelPeer加入Channel安装与运行智能合约安装智能合约实例化智能合约Peer上查询a,显示100Peer上进行a向b转10交易Peer上查询a,显示210正文第10章第

77页第3节多机多节点部署FabricSolo测试环境部署第4

点多机多节点部署-概述说明Fabric多机多节点指在多台电脑上部署多个组织和节点,本案例部署一个排序(orderer)服务,两个组织(org1,org2)和四个节点(peer),每个组织包括两个节点,需要五台计算机结构图正文第10章第

78页第3节多机多节点部署FabricSolo测试环境部署第5

点多机多节点部署-Fabric步骤创建multipeer目录获取生成工具准备生成证书和区块配置文件生成公私钥和证书生成创世区块生成通道配置区块拷贝生成文件到其它电脑准备docker配置文件启动Fabric网络正文第10章第

79页第3节多机多节点部署FabricSolo测试环境部署第6

点多机多节点部署-Fabric步骤准备docker配置文件准备部署智能合约启动Fabric网络启动peer启动cli容器创建ChannelPeer加入Channel保存mychannel.blockmychannel.block拷贝到org1的peer1电脑安装与运行智能合约安装智能合约实例化智能合约Peer上查询a,显示100Peer上进行a向b转10交易Peer上查询a,显示210正文第10章第

80页第3节多机多节点部署FabricSolo测试环境部署第7

点多机多节点部署-Fabric步骤准备docker配置文件准备部署智能合约启动Fabric网络启动peer启动cli容器拷贝mychannel.block到peer中Peer加入Channel4.安装与运行智能合约安装智能合约Peer上查询a,显示90Peer上进行a向b转10交易Peer上查询b,显示220正文第10章第

81页第3节多机多节点部署FabricSolo测试环境部署第8

点多机多节点部署-Fabric步骤准备docker配置文件准备部署智能合约启动Fabric网络启动peer启动cli容器拷贝mychannel.block到peer中Peer加入Channel4.安装与运行智能合约安装智能合约Peer上查询a,显示80Peer上进行a向b转20交易Peer上查询b,显示240正文第10章第

82页第3节多机多节点部署FabricSolo测试环境部署第9

点多机多节点部署-Fabric步骤准备docker配置文件准备部署智能合约启动Fabric网络启动peer启动cli容器拷贝mychannel.block到peer中Peer加入Channel4.安装与运行智能合约安装智能合约Peer上查询a,显示60Peer上进行a向b转30交易Peer上查询b,显示270正文第10章第

81

页第4节实验四FabricSolo测试环境部署第10点实验四FabricSolo测试环境部署Fabric在实验一搭建Fabric环境的基础上,成功搭建Solo模式排序方式;掌握Fabricorderer排序类型之Solo模式的概念;实验目的实验环境预习教材中的“FabricSolo测试环境部署”相关内容;熟悉Linux基本操作命令;搭建完整的Fabric基础环境;了解GO语言的基础语法;第

84页过渡页Fabrickafka生产环境部署kafka模式简介Kafka网络拓扑Kafka运行配置Kafka集群启动Kafka运行验证第8章Fabric正文第8章第

85

页第1节Kafka模式简介Fabrickafka生产环境部署第1点Kafka模式简介说明Fabric上一章介绍的Solo模式只存在一个排序(orderer)服务,是一种中心化结构,一旦排序(orderer)服务出现了问题,整个区块链网络将会崩溃,为了能在正式环境中稳定运行,需要对排序(orderer)服务采用集群方式,HyperledgerFabric采用kafka方式实现排序(orderer)服务的集群,kafka模块被认为是半中心化结构。去中心化的BFT(拜占庭容错)排序(orderer)服务集群方式目前还在开发,还没有规定发布时间,将在1.x周期内发布,可以关注跟踪FAB-33的更新正文第8章第

86页第2

节Kafka网络拓扑Fabrickafka生产环境部署第2

点Kafka模式简介概念FabricKafka模式由排序(orderer)服务、kafka集群和zookeeper集群组成。每个排序(orderer)服务相互之间不通信,只与kafka集群通信,kafka集群与zookeeper相互连接拓扑图正文第8章第

87页第3节Kafka运行配置Fabrickafka生产环境部署第3

点Kafka运行配置-案例说明FabricKafka生产环境部署案例采用三个排序(orderer)服务、四个kafka、三个zookeeper和四个节点(peer)组成,共准备八台服务器拓扑图正文第8章第

88页第3节Kafka运行配置Fabric

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论