详解区块链服务——部署区块链

部署区块链服务

步骤1:资源准备
为了更稳定的运行区块链服务需准备2台8u16g机器来进行服务的部署。注册并登陆华为云账号,进入华为云管理控制台, 选择计算/云容器引擎服务(见图2)。

点击创建Kubernetes集群按钮,进入创建虚拟机的界面,在集群名称输入框中命名集群的名字,按需选择自己要使用的配置(可以采用默认配置)并点击下一步按钮进入图3界面。

在图3的界面上选择2台8核16GB内存的机器,在弹性IP栏点击现在购买弹性IP,公网弹性IP主要用于对公网发布BCS代理的访问地址。在云容器引擎左侧导航条中点击资源管理/虚拟机集群如图4,查看集群列表中刚创建的集群状态是否购买成功。


图2 云容器引擎服务总览


图3 选择节点机器规格

图4 集群信息列表

步骤2:部署服务
在云管理控制台点击区块链服务进入如图5的区块链服务页面, 点击该页面右上角的“购买区块链服务”的按钮进入图6。

图5 区块链服务总览

在图6的区块链服务购买页面中填写区块链服务名称,选择步骤1中创建的容器集群。在该示例中我们创建了两个节点组织testorg和developerorg,并为每个组织分配两个peer节点;选择快速拜占庭容错共识策略,基于拜占庭容错共识节点的最小数量为4,即3f+1,f=1;选择ECDSA签名算法的成员证书分发机制;配置链码管理Portal的登录密码。

图6 购买区块链服务

区块链节点的通道配置如图7所示, 我们创建一个通道命名为testchannel, 把之前创建的组织testorg和developerorg加入该通道。完成如上配置之后, 点击下一步浏览该服务的概要信息,最后提交订单完成服务的订购和配置过程如图8。


图7 区块链节点的通道配置

图8 区块链服务订单详情

点击左侧导航条的服务管理进入服务状态查询页面,等待数分钟后查看所部署的服务状态如图9所示, 该服务进入成功运行状态。


图9 区块链服务运行界面

开发链码

链码也称为智能合约,实质上是控制区块链网络中的不同实体或相关方相互交易的业务逻辑。简言之,链码将业务网络交易封装在代码中,可以调用链码来设置和获取账本,即区块数据或世界状态(world state)。

步骤1:示例场景说明
该示例场景使用区块链来追踪研发团队内的某产品的测试数据,通过查询某个产品或者服务一段时间内的测试用例结果, 进而分析产品的功能状态。开发人员可以查询到失败用例是哪些、集中在产品的哪些模块,还可以根据测试人员的名字,联系测试人员快速定位问题;测试管理者能根据不同测试人员的测试用例,发现问题的多少和模块的稳定程度;测试人员在系统中记录测试结果,其他参与方可以查询测试结果。该示例场景的基本功能说明如下。链码的交互流程如图10。

1、 测试管理者manager创建项目和模块;

2、 测试管理者manager根据项目名称、模块添加测试用例、创建人和创建时间;

3、测试人员tester根据测试用例添加测试结果、测试时间、测试人员和备注;

4、测试人员tester、测试管理者manager、开发人员developer可以根据项目名称、模块查询测试用例;根据测试用例查询测试结果、时间、测试人员和备注。


图10 线下APP和链码的简单交互流程图

步骤2:编写链码
链码开发人员可从"github.com/hyperledger/fabric/core/chaincode/shim" 模块查看链码的接口,需实现init和invoke接口。shim模块中的接口定义如下:

在定义好整个代码的保存目录结构后,开发人员需将"github.com/hyperledger/fabric/core/chaincode/shim" 加入到方法引用。

对于有需要初始化处理的数据,可以在初始化函数init中编写并在链码实例化的过程中进行。这里我们定义了一个示例即初始化项目名称,代码实现如下:

接下来开始定义内部逻辑的启用函数invoke。首先通过接口中的内置方法GetFunctionAndParameters()来获取传入的函数别名和参数,通过switch case或if else条件语句把之前分析的各个用户角色可以调用的方法起个别名,然后和内部的真实方法做好一一对应关系,并将接口对象和相应调用参数传入对应的方法。

具体的用户能够访问哪个方法的权限逻辑控制可由上层的应用app实现,链码主要完成对数据的存储和查询的逻辑。Invoke 链码示例如下:

完成invoke函数后我们需要给这个go文件定义好它的入口main函数,通过fabric shim包中的Start方法来启动我们定义的全局智能合约,保证链码可以被正确的调用,示例如下:


这样我们链码的基本代码架构就搭建好了,开发人员可继续填充每个方法内的逻辑,即别名所对应的真实方法的实现。我们以创建测试用例和查询测试用例为示例说明。

● 创建测试用例以项目名称、模块名称及测试用例名称构成复合主键,然后为它创建一个索引,再将创建好的索引存入链中。这样查询的时候就可以使用不同的组合查询方式查询真实需要的结果。


● 查询测试用例通过部分匹配复合主键将具有相同的项目名称和模块名称的值查询出来,然后通过迭代器将键值中的测试用例名称截取出来存成一个列表,对其进行json序列化并作为查询结果返回给上层App。上层App需要对查询的数值进行反序列化即可拿到整个用例名称的列表,根据其他需要查询具体用例结果。

步骤3:安装部署链码
链码编写完成之后我们需要把链码部署到fabric集群环境中。华为云区块链服务提供了可视化的链码生命周期管理工具。在区块链服务的管理控制台上点击服务列表后面的链码管理链接,打开图11中的链码管理登陆页面,输入默认的用户名admin和用户创建服务时所设置的密码,登陆链码管理平台对链码进行相应的操作。


图11 链码管理登陆界面

登陆后用户可选择在哪个组织的哪个节点peer上安装链代码。如图12所示我们选择在testorg的peer-1节点安装链代码。点击右上角的安装链码按钮,需要填写链码名称、版本号以及为了保证完整性的信息摘要,最后上传一个图13所示的链码zip格式的压缩文件。

图12 链码管理界面


图13 链码安装界面

链码的zip压缩包和压缩包的摘要信息计算如图14和15所示。


图14 链码压缩包


图15 链码压缩包摘要信息

链码使用之前需要先实例化,安装成功以后我们在链码的操作按钮列中可以看到图16实例化按钮已经处于激活状态。点击实例化按钮,选择链码背书策略,输入链码的函数名、init方法的参数如上述示例中的项目名称testproject、选择要实例化的通道如testchannel,然后点击确定按钮,触发链码的实例化。实例化结束后可在如图17的界面上查询链码状态,在testchannel上可以查看链码是否已经实例化成功。


图16 链码激活状态界面


图17 链码实例化成功界面

原文地址:http://blog.51cto.com/13831707/2151015

时间: 2024-10-09 14:55:11

详解区块链服务——部署区块链的相关文章

详解Server 2012 R2部署WSUS4.0之四

在前面的文章中,我们介绍了如何进行WSUS4.0的部署以及如何利用WSUS进行补丁分发.但是现在我们要考虑这样一种情况,在一个大型企业中,一台WSUS服务器是满足不了所有用户的更新需求的,这时我们就需要进行WSUS服务器的链式部署,即分别设置WSUS的上游服务器和下游服务器.所谓上游服务器就是从微软下载更新,而下游服务器则从上游服务器下载更新.我们在最开始部署的第一台WSUS是roleserver,所以在此案例中,他就是我们的上游服务器.在下面的服务器名中填写roleserver.contoso

【详解】DNS服务工作原理、正反向解析和主从同步

目录: 一.理论部分 二.实验部分 ******************************理论部分*************************************** 正文: 一.什么是DNS服务. DNS服务是互联网的基础性服务之一.全称为Domain Name System(域名系统).DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,提供将域名转换成对应IP地址的信息条目,能够使用户更方便的通过域名(如baidu.com)去访问互联网,而不用去记住能够被机器直接

详解zabbix监控系统安装部署

前言:又来折腾监控了.关于监控,怎么说呢.现在都讲"自动化运维".传统的监控方式也是慢慢的走向自动化,智能化.相信不久后的未来,监控可以给我们减轻更多的工作负担.从原来的性能故障监控报警到以后的自动预警处理.本篇来讲下部署过程.安装也没什么技术含量,也就改改配置,装装库.不过博主有个好习惯:善于总结.刚好一举两得,新手们学习用吧. 系统信息 系统版本:Centos6.5 32位 Server端:192.168.175.133 Agent端 :192.168.175.130 Zabbix

Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 一.chkconfig 的使用语法 1.chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <levels等级代号>][系统服务][on/off/reset] 2.参数用法: --add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文

smb协议详解和samba服务的配置

理论部分 samba:基于smb协议使网络上的计算机能共享文件 samba的核心是smbd和nmbd两个守护进程 smbd:管理samba服务器上的共享目录 nmbd:进行netbios名解析,使客户端能浏览服务器的共享资源 协议端口: smbd:tcp 445和tcp139 nmbd:udp 137/138 工作流程: (图片来源网络) samba服务器的安装和配置 1.安装samba     yum install samba -y 2.修改配置文件/etc/samba/smb.conf #

详解Ansible(Roles)自动化部署配置LAMP架构

Roles简介Ansible为了层次化.结构化地组织Playbook,使用了角色(roles).Roles能够根据层次型结构自动装载变量文件.task以及handlers等.简单来讲,roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中.? 创建Roles 创建roles时一般需要以下步骤:首先创建以roles命名的目录.然后在roles目标下分别创建以个角色名称命令

详解CentOS 7 服务控制及优化启动过程

一.服务控制及切换运行级别1.服务控制常见的服务控制类型start 启动stop 停止restart 重启(慎用)reload 重载,无需停止服务[常用]status 查看状态系统引导级别图常见的systemd电源管理命令 2.切换运行级别1).查看系统的运行级别命令:runlevel2).切换系统的运行级别命令:systemctl isolate multi-user.target 或者 init 3 (切换字符终端界面)命令:systemctl isolate graphical.targe

详解zabbix监控系统安装部署 (接上)

[[email protected] ~]# yum install - y php-bcmath [[email protected] ~]# /etc/init.d/httpd restart Stopping httpd:                                            [  OK  ] Starting httpd: httpd: apr_sockaddr_info_get() failed for zabbix httpd: Could not r

详解某大厂区块链服务整体架构

某大厂区块链服务的整体架构 菊厂区块链服务BCS是面向企业及开发者的高性能.高可用和高安全的区块链技术平台服务,可以帮助企业和开发人员在华为云上快速.低成本的创建.部署和管理区块链应用. BCS基于Hyperledger1.0.kubernetes搭建,配置简单,数分钟内即可完成部署,提供全流程的自动化运维服务,多维度监控:支持多种高效共识算法,切换灵活,秒级共识(2000+ TPS):多角色节点和成员可动态加入/退出:采用容器化物理资源管理:一键上链,节约80%的开发.部署成本:按需付费,减少