《区块链概论》-第8章-区块链实战_第1页
《区块链概论》-第8章-区块链实战_第2页
《区块链概论》-第8章-区块链实战_第3页
《区块链概论》-第8章-区块链实战_第4页
《区块链概论》-第8章-区块链实战_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

区块链概论第8章区块链实战第8章区块链实战支持单机或者K8S集群环境运行;支持网络、组织、通道规模的可设置可动态调整;支持状态数据库类型LevelDB和CouchDB;支持Go、Java、NodeJS多种语言链码;支持平台与区块链节点间通信SSL加密;支持RAFT、solo共识;支持各个组织的user-dashboard隔离;支持链码模拟执行和链码升级;支持基于CA的用户管理。01H3CGaea区块链平台8.1.1部署和使用1.系统部署1)硬件要求Gaea平台使用的服务器为Ubuntu系统16.04版本。所需服务器的数量跟具体需要部署的区块链规模相关,建议最低配置如下:如果部署K8S网络,一般为一个Master主机,多个Node主机、主机数目与需要部署的区块链规模相关。如果部署单机网络,则只需要一台服务器。设备类型规格Ubuntu服务器基本配置如下:InterXeonE5-2620V3/v4或更高(新)型号,建议不少于4vCPU,内存>=32GBDDR4,高速磁盘,1T以上硬盘,1+1冗余电源8.1.1部署和使用1.系统部署2)软件安装Gaea服务器是指最后部署并运行Gaea节点并存储账本的服务器。当采用K8S网络时,需要先部署好K8S环境。服务器基础软件建议版本宿主服务器Docker-composeVersion1.21.0DockerVersion:18.03.1-cemakeGNUMake4.1Gaea服务器nfs-commonapt-getinstallnfs-common即可用于创建单机模式区块链网络K8S相关软件

Version:1.15(含)以上用于创建K8S集群模式区块链网络Keepalived配置最新版本即可8.1.1部署和使用1.系统部署3)部署容器Gaea系统采用容器方式部署,易部署、易升级、相互之间互不干扰。服务器ImageVersion宿主服务器h3c/Gaea-operator-dashboardlatesth3c/Gaea-user-dashboardlatesth3c/oauth2-server-sso0.0.4mongo3.4.10nginx1.0.0h3c/blockchaindata1.0itsthenetwork/nfs-server-alpine9服务器ImageVersionGaea服务器hyperledger/Fabric-CA1.4.2hyperledger/Fabric-Orderer1.4.2hyperledger/Fabric-Peer1.4.2hyperledger/Fabric-ccenvlatesthyperledger/Fabric-couchdb2.1.1hyperledger/Fabric-baseosamd64-0.4.14bobrik/socat(“单机模式”需要)latest8.1.1部署和使用1.系统部署4)一键启动将获取到的Gaea区块链平台安装部署压缩包,解压到宿主服务器中。进入gaea-deploy目录,执行bashoffline_deploy.sh命令。在gaea-deploy目录中执行makestart命令,即可启动Gaea区块链部署平台8.1.1部署和使用1.系统部署5)一键启动创建单机模式的区块链网络;将区块链镜像文件部署到Gaea服务器;创建K8S集群模式的区块链网络。8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机单机模式的区块链网络8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机创建K8S集群模式的区块链网络8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机(2)创建Orderer组织和Peer组织Gaea网络管理平台的【组织管理】页面8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机(2)创建Orderer组织和Peer组织创建peer类型的组织8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机(2)创建Orderer组织和Peer组织创建orderer类型的组织8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机(2)创建Orderer组织和Peer组织(3)新建网络8.1.1部署和使用2.平台操作1)区块链网络部署(1)添加host主机(2)创建Orderer组织和Peer组织(3)新建网络8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点(2)上传链码8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点(2)上传链码(3)安装链码8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点(2)上传链码(3)安装链码(4)实例化链码8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点(2)上传链码(3)安装链码(4)实例化链码(5)链码的升级8.1.1部署和使用2.平台操作2)区块链业务部署(1)创建通道并添加节点(2)上传链码(3)安装链码(4)实例化链码(5)链码的升级(6)查询交易信息8.1.1部署和使用2.平台操作3)网络、组织扩容网络,通道创建好,且链码已经实例化、有了很多笔交易之后,扩容8.1.1部署和使用2.平台操作3)网络、组织扩容网络,通道创建好,且链码已经实例化、有了很多笔交易之后,扩容网络中的组织扩容8.1.1部署和使用2.平台操作3)网络、组织扩容网络,通道创建好,且链码已经实例化、有了很多笔交易之后,扩容通道的组织扩容8.1.2代码设计Gaea系统分为两个平台,分别是区块链网络管理平台(监听8071端口)、区块链业务管理平台(监听8081端口)。区块链网络管理平台的后台框架是flask,区块链业务管理平台的后台框架是Egg,前端框架都是Ant-design。Gaea区块链网络管理平台Ant-design+flask区块链业务管理平台Ant-design+Egg8.1.2代码设计1.Gaea网络管理平台网络管理平台的后台框架是Flask,Flask是一个使用Python编写的轻量级Web应用框架,其WSGI工具采用Werkzeug,模板引擎则使用jinja2。8.1.2代码设计1.Gaea网络管理平台路由管理数据库业务逻辑处理一般通用功能平台采用了flask内置的一个模块化处理的类。使用Blueprint实现模块化,Blueprint具有如下属性:I.一个应用可以具有多个Blueprint,可以将一个Blueprint注册到任何一个未使用的URL下比如“/”、“/sample”或者子域名。II.在一个应用中,一个模块可以注册多次。III.Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的。IV.在一个应用初始化时,就应该要注册需要使用的Blueprint。8.1.2代码设计1.Gaea网络管理平台路由管理数据库业务逻辑处理一般通用功能数据库模块选择MongoDB数据库,基于分布式文件存储的数据库。MongoDB的数据模式可以随着应用程序的发展而灵活地更新,够使企业具有敏捷性和可扩展性。8.1.2代码设计1.Gaea网络管理平台路由管理数据库业务逻辑处理一般通用功能Gaea的区块链BaaS平台支持Docker类型和K8S类型的主机,对网络相关资源进行一般的增、删、改、查、更新等操作时,均需要针对不同的主机类型进行定制的处理。8.1.2代码设计1.Gaea网络管理平台路由管理数据库业务逻辑处理一般通用功能网络管理平台中实现其他通用功能,比如:yaml文件的dump及load操作;日志功能;yaml文件的更新操作;License管理等等其他功能。8.1.2代码设计2.Gaea业务管理平台业务管理平台的后台框架是Egg,使用的是node.js语言。Egg框架按照约定进行开发,奉行约定优于配置的原则,团队协作成本低。提供定制上层框架的能力;高度可扩展的插件机制;内置多进程管理。业务管理平台主要分为如下几个模块:路由管理;数据库;通道、链码、用户等业务功能模块;FabricSDK操作8.1.2代码设计2.Gaea业务管理平台路由管理数据库通道、链码、用户等业务功能模块FabricSDK操作8.1.2代码设计2.Gaea业务管理平台路由管理数据库通道、链码、用户等业务功能模块FabricSDK操作8.1.2代码设计2.Gaea业务管理平台路由管理数据库通道、链码、用户等业务功能模块FabricSDK操作业务管理平台的核心功能,是通过Fabric提供的SDK,来执行Fabric支持的相关操作,包括但不限于通道的创建,将Peer节点加入通道中,上传链码,将链码安装到Peer节点上,实例化链码,链码升级,链码的调用,网络扩容,组织扩容、通道扩容等等功能。8.1.2代码设计2.Gaea业务管理平台路由管理数据库通道、链码、用户等业务功能模块FabricSDK操作8.1.2代码设计2.Gaea业务管理平台路由管理数据库通道、链码、用户等业务功能模块FabricSDK操作通过对FabricSDK的调用,实现区块链Fabric容器中对应资源的使用,是业务平台的核心目的。目前Fabric支持NodeJS和python代码的SDK。由于NodeJS发展时间较久,更为成熟,我们采用了NodeJS版本的SDK。8.1.2代码设计2.Gaea业务管理平台路由管理数据库通道、链码、用户等业务功能模块FabricSDK操作8.1.3智能合约编写1.一个链码的整体逻辑链码(Chaincode)会对Fabric应用程序发送的交易做出响应,执行代码逻辑,与账本进行交互。HyperledgerFabric中,Chaincode默认运行在Docker容器中。Peer通过调用DockerAPI来创建和启动ChainCode容器。Chaincode启动与Peer创建gRPC连接,双方通过发送ChaincodeMessage来进行交互通信。Chaincode容器利用core.chaincode.shim包提供的接口来向Peer发起请求。8.1.3智能合约编写2.基本的链码结构引入必要的包fmt是golang系统的通用输入输出包。shim包是Fabric系统的上下文环境,包含了Chaincode和Fabric交互的接口,在Chaincode中,执行赋值、查询等功能都需要通过shim。声明一个结构体,即Chaincode的主结构体该结构体需要实现Fabric提供的接口"/hyperledger/Fabric/protos/Peer",其中必须实现Init()和Invoke()两个方法。8.1.3智能合约编写2.基本的链码结构实现Init()和Invoke()方法Init()方法中实现链码初始化或升级时的处理逻辑。Invoke()方法中实现链码运行中被调用或查询时的处理逻辑。主函数需要调用shim.Start()方法只有存在该方法,才会启动对应的链码容器,才会有环境来执行链码中的其他方法。8.1.4与应用对接1.获取TokenURL:https://IP:port/v2/token方法:POST请求参数:body返回参数说明:该接口获取用户Token值,以备后续调用Gaea区块链平台API时使用。8.1.4与应用对接2.智能合约部署好区块链网络、安装好实例化链码之后,不仅可以通过Gaea区块链平台调用链码,也可以通过对接其他应用系统来执行链码,而应用调用链码的方式为RestAPI方式。URL:http://IP:port/v2/channels/:channel_id/chaincodeOperation方法:POST请求参数:body02链码开发与部署实例8.2.1转账链码示例在链码实例化的时候,会初始化两个账户,并分别赋予账号指定的余额数;链码有三个功能函数invoke、query和delete。invoke函数实现一个转账功能,可以实现A账户将部分余额X转账给B账户;query函数实现一个查询余额的功能,可以从区块链中读取到某个账户的余额;delete函数则可以从区块链中删除某个指定的账户,但是这里

温馨提示

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

评论

0/150

提交评论