目录
前言
一、概述
二、环境配置
1.安装虚拟机
2.安装Linux环境
三、系统需求分析与设计
1.概述
2.需求分析
3.模块设计
4.数据结构设计
四、底层设计与部署
1.开放网络操作指南
2.智能合约设计
五、顶层调用与实现
1.环境搭建
2.合约调用设计
3.合约调用过程实例
总结
前言
XuperChain是百度公司开发的一个开源区块链底层架构,其拥有链内并行技术、可插拔共识机制、一体化智能合约等多项国际领先技术,具备全球化部署能力,可以满足开发者各类业务场景需求,让区块链应用搭建更灵活、更安全、更高效。本文主要介绍利用XuperChain开发的一个“蝴蝶乒乓球拍认证与追溯系统”过程,及开发过程中的感受。
一、概述
在乒乓球拍底板领域,名气与实力最强的应该是日本产的蝴蝶乒乓球底板。目前是世界第一品牌,价格也相对贵一些。它的整体性能很高,能攻能守。
目前,每一个蝴蝶乒乓球拍都含有防伪码或者唯一标识,通过防伪码或者唯一标识可以鉴别乒乓球拍是否是当事人所有或者是否是仿制的,从而可以防止乒乓球拍丢失后被低价售出、违法厂商仿制等问题。
乒乓球拍认证与追溯应用就是利用区块链的特性(可追溯、透明安全等)确保蝴蝶乒乓球拍的真假与追溯,即正规厂商每出售一个商品给区域代理商都会进行上链(产品的唯一标识或防伪码、时间、厂商信息、代理商信息等),区域代理商售卖给买家会继续将这一过程上链(产品的唯一标识或防伪码、时间、代理商信息、买家信息等),以及买家之间的交易过程继续上链(产品的唯一标识或防伪码、时间、卖家信息、买家信息等),这一过程可能重复多次。因此通过一系列的上链过程,不但可以确保蝴蝶乒乓球拍是否正规合法(通过链上查询蝴蝶乒乓球拍信息),同时也可以追溯蝶乒乓球拍的交易过程,信息完全透明化。
本章内容分为5大部分,分别是环境准备、设计概览、底层设计与部署、顶层调用与实现、总结与扩展。
设计概览部分主要是关于如何设计实现该应用的结构,包括模块结构、数据结构等。底层设计与部署部分主要是关于如何设计智能合约与智能合约的部署实现过程,为上层调用提供SDK接口。顶层调用与实现部分主要是关于如何利用API实现接口调用完成应用的主要业务逻辑,为用户提供可视化结果。最后总结与扩展部分主要是关于实现该应用的总结,以及应用扩展相关的介绍。
二、环境配置
乒乓球拍认证与追溯应用涉及几个模块的设计与实现,每个模块涉及不同的技术,因此需要准备对应的技术语言与运行环境。
-
语言:C++、go(需要安装go语言环境依赖)
-
运行环境:Linux(可以通过虚拟机安装)
-
对应的安装包与环境已给出,如图1所示
图 1 系统所需安装包与环境
其中go1.14.4.linux-amd64.tar.gz是go语言程序运行所需要的环境依赖包,需要在Linux环境下解压并配置环境。
ubuntu-18.04.1-desktop-amd64.iso是桌面Linux系统镜像文件,可以根据这个镜像文件在虚拟机中安装Linux系统。
VMware-workstation-full-16.1.2-17966106.exe是虚拟机安装包,直接运行安装即可。
xuper-sdk-go-1.0.0.zip是官方Go SDK的压缩文件,调用智能合约需要用到的环境,需要解压并配置相关文件。
1.安装虚拟机
安装建议:通过在本机Windows系统下先安装虚拟机,再在安装的虚拟机下安装Linux系统。下过介绍安装虚拟机的过程。
第1步:双击运行文件VMware-workstation-full-16.1.2-17966106.exe,并在弹出的安装提示中单击“是”,如果没有就直接忽略即可,安装界面结果如图2所示,单击“下一步”
图2 虚拟机安装向导
第二步:勾选“我接受许可协议中的条款”,然后单击“下一步”,如图3所示。
图3 接受许可协议
第3步:选择软件安装路径,默认安装在C盘驱动器中,单击“更改”修改安装路径(如:D:/VMWare16/目录下),然后单击“下一步”,如图4所示。注意:安装路径文件夹名称不能包含汉字!
图4 自定义安装
第4步:取消“检查时启动…”和“加入VMware …”检查,然后单击“下一步”,如图5所示。
图5 用户体验设置
第5步:单击“下一步”,如图6所示。
图6 快捷方式
第6步:单击“安装”,如图7所示。
图7 准备安装
第7步:在安装中,此过程需要几分钟,请耐心等待……,如图8所示。
图8 正在安装
第8步:点击“完成”,如果之后有重启系统的提示,请点击“是”,完成重启系统,如图9所示。
图9 安装完成
第9点:重启系统后,在桌面找到安装好的虚拟机图标,右击选择“以管理员身份”运行打开,如图10所示。注意:如果同学有对应的许可证,输入对应的许可证即可;如果没有选择试用30天即可。
图10 激活或者试用虚拟机
2.安装Linux环境
完成虚拟机的安装后,接下来需要在虚拟机中安装Linux系统,步骤如下。
第1步:在桌面找到安装好的虚拟机图标,右击选择“以管理员身份”运行打开,并单击“创建新的虚拟机”,如图11所示。
图11 创建新的虚拟机
第2步:在弹出的新建虚拟机向导中,首先选择“自定义”,再单击“下一步”,如图12所示。
图12 新建虚拟机向导
第3步:在弹出的虚拟机硬件兼容性中,继续单击“下一步”,如图13所示。
图13 硬件兼容性
第4步:选择安装程序光盘映像文件,点击“浏览”,找到镜像文件ubuntu-18.04.1-desktop-amd64.iso位置,单击“下一步”,如图14所示。
图14 安装光盘映像文件
第5步:设置账户信息,系统名、登录账户、登录密码,然后单击“下一步”,如图15所示。注意:命名是英文,不要出现中文。
图15 设置账户信息
第6步:虚拟机的命名(自定义)以及选择安装位置,单击“下一步”,如图16所示。注意:路径不要出现中文以及特殊字符。
图16 虚拟机命名
第7步:处理器配置,默认设置都是2即可,点击“下一步”,如图17所示。
图17 处理器配置
第8步:设置虚拟机内存,设置4096MB或者推荐内存设置都可,单击“下一步”,如图18所示。
图18 设置虚拟机内存
第9步:选择网络类型为:使用网络地址转换(NAT),单击“下一步”,如图19所示。
图19 选择网络类型
第10步:选择I/O控制器类型,推荐选择即可,单击“下一步”,如图20所示。
图20 选择I/O控制器类型
第11步:选择磁盘类型,推荐选择即可,单击“下一步”,如图21所示。
图21 选择磁盘类型
第12步:磁盘选择:创建新虚拟磁盘,单击“下一步”,如图22所示。
图22 创建新虚拟盘
第13步:磁盘容量,建议选择20GB,单击“下一步”,如图23所示。
图23 指定磁盘容量
第14步:磁盘文件地址我这里选择默认,单击“下一步”,如图24所示。
图24 指定磁盘文件地址
第15步:完成创建,简易安装开始,等待安装完成即可,单击“完成”,如图25,26所示。
图25 完成创建
图26 简易安装过程
第16步:安装完成界面,点击界面后显示输入账户密码界面,使用之前设置的账户密码进行登录,如图27、28、29所示。
图27 安装完成界面
图28 输入账户密码界面
图29 成功登录界面
三、系统需求分析与设计
本小节介绍系统的需求分析与简单设计思想。
1.概述
通常应用设计分为3个层次,分别是业务应用层、服务接口层、底层实现层,下面分别介绍。
1.业务应用层
业务应用层最直接目的是给用户提供可视化或其他形式的展示,用户可以通过一定的操作得到自己想要的结果。如在该应用中,已经注册过的用户可以通过查询功能得到自己乒乓球拍的详细信息。
一般来说,该层可以通过Web端(浏览器访问)、移动App端(手机App访问)等方式实现,主要是结果的可视化展示。虽然实现方式不一样,不过其调用原理是一致的,都是通过调用服务接口层的API实现的,并不关心结果是如何生成的。
2.服务接口层
服务接口层主要是为业务应用层提供服务的,通常提供增加数据信息、删除数据信息、修改数据信息、查询数据信息这四种服务API接口。
3.底层实现层
底层实现层主要是提供数据、数据结构、网络访问、数据安全等内容,这些内容已经被完整的实现,不需要关心实现细节,只需要按照规定直接使用即可。
该层主要是为服务接口层提供支持的,对服务接口层实现增加数据信息、删除数据信息、修改数据信息、查询数据信息四种服务,需要在底层进行数据的存储、修改等。
注意以上描述只是简单介绍了每一层的目的或者功能,如图31所示,真正的具体实现是更为复杂的,因为需要考虑很多因素,本次应用快速迭代开发实现只是为了帮助更好地掌握区块链相关知识以及区块链的应用场景。
图31 应用层次结构
以上描述可能有些抽象,举个例子,公司老板给财务部的员工分配一个人任务(如完成去年的财务报表),财务部的员工就要去资料室收集相关数据,并根据自己所学的技能,将数据进行分析、筛选、统计、总结甚至形成图表的形式展示给老板。这个过程,老板或者老板的命令属于业务应用层,只关心结果即财务报表,并不关心报表是怎么生成的;财务部员工的工作属于服务接口层,访问并处理数据,对数据进行加工;而资料室或者档案室就属于底层实现层,只提供最原始的数据、数据存储形式以及对数据进行安全访问,即不是每个员工都可以进入资料室的。
2.需求分析
需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。
为了快速开发出该应用,需要进行简化,最终确定该应用要完成的功能即可,其他就暂时不用管,有兴趣的同学可以自己研究一下。
具体来说,该应用需要完成的功能有用户信息添加功能、用户——乒乓球拍信息添加功能、乒乓球拍信息追溯功能、乒乓球拍鉴伪功能,下面分别描述这四个主要功能。
1.用户信息添加功能
该功能是当用户(可能是代理商,也可能是个人购买者)购买蝴蝶乒乓球拍时,如果该用户信息没有在区块链上进行存储,需要将该用户信息上链(相当于用户注册功能),便于以后的信息追溯与乒乓球拍的绑定。
2.用户——乒乓球拍信息添加功能
该功能主要是将用户与购买的乒乓球拍进行绑定,以便确认某个乒乓球拍真正属于某个用户,而不是通过非法手段获取到的或者仿制的。
3.乒乓球拍信息追溯功能
该功能可以帮助用户查询乒乓球拍从生产到个人购买的整个流程追溯信息,更好的了解乒乓球拍信息以及对应的价值。
4.乒乓球拍鉴伪功能
该功能可以帮助用户通过用户信息与乒乓球拍的信息确认乒乓球拍的真伪,防止上当受骗。



