基于Hyperledger Fabric的电子商务网站的设计与实现

2021-09-22 06:14刘霆李博何栎
电子技术与软件工程 2021年15期
关键词:链码区块交易

刘霆 李博 何栎

(河南工程学院 河南省郑州市 451191)

1 引言

传统电商平台通常采用的是中心化记账节点,虽然便于管理,但平台对交易有着最高的操作权限,这会衍生出一系列的信任问题。最为直观的便是近日京东的“显卡穿仓”事件,客户的显卡在不经意间就不知所踪[1]。这一事件充分揭示了中心化节点存在的信用问题,中心节点可以对客户的数据随意更改,这将导致极为严重的信任危机。

区块链是近年来研究的热点,区块链技术具有不可篡改、开放透明、机器自治等重要特征,以此解决交易过程中的信任和安全问题。从定义来看,区块链是一种按时间顺序将不断产生的信息区块以顺序方式组合而成的一种可追溯的链式数据结构,是一种以密码学方式保证数据不可篡改、不可伪造的分布式账本[2]。区块链是非对称加密算法、共识机制、分布式存储、点对点传输等相关技术通过新方式组合形成的创新应用。为了提升交易数据的可靠性,区块链将交易数据全部存储在链式数据结构上,这保证了交易数据的唯一性与可靠性,从最大限度上避免交易被篡改[3]。从长远角度来看,区块链技术有着广阔的发展前景,不只是作为账本,任何需要公正、防伪的场合都可以使用区块链技术。

虽然从长远来看,区块链在很多产业都有应用潜力,但是目前区块链与金融行业明显最为契合。区块链技术可以应用在票据流转、供应链金融,再到证券发行与交易等领域[4]。现在存在的大量繁琐的手工操作也可以被智能合约所取代,减少交易延迟、欺诈、操作风险以及系统错误导致的损失。区块链技术不仅作为账本具有其不可篡改、分布式的特性,还可以为商品溯源提供技术支持,为商品的质量把关,并在出现问题时提供完整的证据链条[5-7]。从下单到货物的流转再到资金的流动,区块链技术可以打造一个完整的基于链的商业平台,从技术上保证平台交易的真实性与安全性。

网上购物已成为商业的重要形式,但由于产品质量不能保证和售后服务困难,消费者对电商平台的信心不足。出现这一现象的主要原因是消费者的购物交易的数据由电商平台存储和维护,易出现篡改和否认等情况。另外,电商平台公布的交易数据,比如销量等,是消费者购物活动的主要参考指标,而电商平台公布的交易数据存在可信性不高的问题。本文通过将交易数据保存在区块链中,实现了交易数据的无法篡改,从而获得了高可信性,有助于购物者参考交易数据进行购买活动,以及售后的维权。这种技术解决了电子商务的消费者信任的痛点问题,将会促进电子商务的持续高速健康发展。本文将区块链技术引入网上购物,能够让普通消费者对没有信任基础的电子商务网站建立信任,低成本、高效率地解决网上购物的信任问题。区块链的不可篡改的特征,可保证存储在系统中的交易数据完整可靠,避免数据在存储、传输和展示环节被内部管理人员和外部攻击者篡改。因为主要采用了成熟的网站开发技术,本文区块链网站的解决方案能够成功地应用于各种不同的行业领域。

2 技术框架与环境设置

本文采用JSP开发电子商务网站,使用Tomcat提供Web服务。将基于Hyperledger Fabric的区块链安装部署在服务器上,同时安装MySQL数据库,服务器使用Ubuntu16.04操作系统。用户通过JSP网页访问MySQL数据库和Hyperledger Fabric区块链。

2.1 联盟区块链

区块链是重要的新兴技术,拥有广阔的应用前景,受到了各方面的高度重视,现在主要有公有链、私有链和联盟链等三种形式。公有链是所有人都可以访问的区块链,私有链是只有区块链所有者可以访问,联盟链则是只有符合条件的授权用户才可以访问[8]。在本文中只有在电子商务网站合法注册的用户才可以访问区块链,所以采用的是联盟区块链,目前开发联盟链最常用的平台是Hyperledger Fabric。

2.2 Hyperledger Fabric

Hyperledger Fabric为完成高可靠性与网络的一致性,系统结构比较复杂,所使用的节点数量比较多,主要采用Docker作为节点的安装部署方式。Docker提供了一种虚拟化的环境,应用软件运行在此环境中。本文采用本地(Native)模式安装Hyperledger Fabric,使用的节点直接安装在硬件上,所以软件直接运行在计算机实际的硬件上而不需要通过仿真或其他程序的干预,这种方式方便可保证系统的运行效率,并方便应用软件的开发。为了开发JSP网站程序进行Hyperledger Fabric区块链的操作,还在服务器上安装了Fabric Java SKD,JSP程序实现了对区块链的数据新增、查询等。

安装Hyperledger Fabric前要先安装Go语言并设置环境变量GOROOT、GOPATH、GOBIN、PATH等。Hyperledger Fabric安装在/opt/hyperledger下,主要的文件结构如图1所示。

图1:Hyperledger Fabric主要的文件结构

在fabricconfig文件夹下配置crypto-config.yaml文件,在order文件夹下配置configtx.yaml和orderer.yaml文件,在peer文件夹下配置core.yaml文件。然后运行相关命令生成通道、组织、创始区块、排序节点等。本文网站在服务器上运行Orderer节点和Peer节点,Peer节点即作为背书节点,又作为执行节点。

Hyperledger Fabric对于区块链的操作都通过链码执行,链码程序被写入GO语言的文件里,并放在指定的文件夹里。链码文件放置的位置是~/go/src/MyChainCode,链码程序使用GO语言编写,链码程序名称是mycc6。

交易信息的数据结构如下所示。

链码中保存交易记录的程序如下:

在终端的/opt/hyperledger/fabricconfig目录下执行安装与初始化命令:

peer chaincode install -n mycc6 -v v1 -p MyChainCode

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v v1 -c '{"Args":["init"]}' -P "OR ('Org1MSP.member', 'Org2MSP.member')"

在编写完链码的程序后执行链码更新命令:

peer chaincode upgrade -o orderer.example.com:7050 -C mychannel -n mycc6 -v v5 -c '{"Args":["init"]}'

2.3 JSP、Tomcat服务器和MySQL数据库

JSP(Java Server Page)是广泛采用的动态网页开发技术,JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP使用Tomcat作为Web容器,在服务器端口提供相应的服务处理从客户端发出的请求。Tomcat运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。Tomcat是一个小型的轻量级应用服务器,普遍用于中小型系统和并发访问量较低的场合,是开发和调试JSP程序的首选。MySQL是最流行的关系型数据库,具有开源、跨平台的特点,在国内外被广泛地应用。本文网站的用户信息和商品的基本信息保存在数据库中,需要在服务器上安装MySQL数据库。用户在使用网站时,JSP程序读写数据库完成所需要的操作。

3 网站的设计与实现

3.1 网站的设计

3.1.1 系统方案

本文的区块链电子商务网站采用JSP与关系数据库相结合的方式,实现基础的B2C电子商务网站的功能。用户通过网页进行登录、查询商品信息等操作。常规的数据如用户名、密码、商品信息等都保存在MySQL中,但将销售数据的存储从数据库转移到了区块链。通过Web服务,用户能够购买商品,系统可以自动显示购买量最大的商品。用户的商品购买记录都保存在区块链中,用于系统自动统计销量并显示热销商品,也用于用户查询自己的购买记录。

3.1.2 软件流程

本系统前端使用JSP网页作为客户的操作页面,后端采用MySQL存储用户个人信息以及商品等信息,而最重要的交易信息则被存储在区块上。用户登录系统通过验证后查看商品信息和购买商品,此时商品交易信息会传至后台区块链上,由链进行记录,之后会将该交易的编号返回给用户,此编号将是该交易的标识信息。交易完成后,程序在区块链上查询同一商品的历史交易记录,计算出商品交易的总数,并将其保存到MySQL数据库,以供热销推荐。用户可以查询自己的交易记录,返回所有订单编号、交易时间、商品以及交易编号等信息。

3.2 网站的实现

本系统实现了用户注册和登录等基础功能,还可进行查询商品信息、购买以及显示用户历史订单等操作,另外还实现了自动将商品按采购数量排序显示。主页界面如图2所示。

图2:网站主页界面

3.2.1 注册、登录和修改密码

新用户用自己的身份证号注册,并设置密码。用户的身份证号是用户采购商品记录的凭证。用户用自己的身份证号和密码登录系统,并可以重新设置自己的登录密码。

3.2.2 查询商品的详细信息、购买商品

用户能够从主页直接选择商品查看详细信息,还可以查询某品牌的所有商品,并查看其中某个商品的详细信息。在商品详细信息页面,用户可以购买该商品。购买成功后,网站显示此项交易在Hyperledger Fabric中的交易编号。

3.2.3 查询历史订单记录

用户登录后可以查询自己的历史购买记录,系统将显示交易的商品名称、交易时间、交易编号等信息。

4 网站的测试与分析

本文网站可实现用户正常采购商品,且所有的销售数据均保存在区块链中。用户可以在区块链中保存和查询自己的销售数据,系统将销售数据从区块链中查询并汇总统计。系统的区块链保存与查询速度可满足一般电子商务网站的业务需要,响应迅速、结果准确。本文采用实际部署测试的方法,首先将本作品部署在服务器上,然后对各个功能进行实际测试,检查结果的正确性和响应所需的时间。

4.1 启动Hyperledger Fabric区块链

进入/opt/hyperledger/order目录下启动orderer节点,输入命令:orderer start。

进入/opt/hyperledger/peer目录下启动peer节点,输入命令:

export set FABRIC_CFG_PATH=/opt/hyperledger/peer

peer node start >> log_peer.log 2>&1 &

4.2 购买模块

执行购买动作后交易信息被保存到区块链mychannel中,并返回该交易编号。购买结束后,程序查询区块链中此商品的历史购买数量,然后在数据库中保存新的历史购买总数,用于热销推荐。经过多次购买商品进行测试,得到购买商品所需时间为85ms,基本可以满足电子商务网站的操作需要。购买商品的返回结果如图3所示。

图3:购买商品后的返回结果

4.3 订单查询模块

用户可从区块链mychannel中查找到用户的历史交易信息,通过多次查询不同的用户历史订单,得到用户查询历史订单的时间约为125ms,基本可以满足电子商务网站的操作需要。查询购买商品历史记录的返回结果如图4所示。

图4:查询购买商品历史记录的返回结果

5 结语

本文将区块链技术应用于电子商务网站,以区块链存储交易信息,依靠其透明和不可篡改的特性满足了供求双方对交易数据高真实性的需要,切中行业痛点。本文采用了常用的JSP技术开发网站,并用Fabric Java SDK访问区块链,所用技术易于学习和掌握,且效率较高。本文提供的方案适用于不同行业领域,特别是需要信息高度真实可信的应用,例如股票证券的交易、产品的溯源、银行贷款以及信用审查等方面。

未来的研究将增加Orderer节点的数量,减少对单节点的依赖;应用Kafka的多节点模式,实现网站的高并发吞吐;另外还将在区块链中存储和维护更多的信息,比如用户信息、商品信息等,实现功能更加优化的区块链系统。

猜你喜欢
链码区块交易
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
区块链+媒体业的N种可能
读懂区块链
一种新压缩顶点链码
交易流转应有新规
基于链码特征的几何图形快速识别算法*
无损链码技术的分析与比较
边界链码在字母与数字混合识别中的应用