基于区块链技术的虚拟积分系统设计

(整期优先)网络出版时间:2022-05-19
/ 2

基于区块链技术的虚拟积分系统设计


许仁兴、钟声振、谭周健、翁江鹏、张云、彭小成

中移互联网有限公司,广东 广州 510000

1引言

随着市场经济不断发展,越来越多的商家通过发放积分来提高用户黏性,商家的每一积分的发放,都代表商家对该消费者的消费行为的回馈意愿,该回馈意愿可以用具体的价值来衡量。但现实中,消费者往往难以达到该商家的兑换规则,造成消费者手中的积分过期或失效,影响消费者体验。

本设计基于区块链,搭建一套积分通兑系统,为了给消费者更好的消费体验,盘活消费者手中的积分,让整个商业氛围更加活跃,让消费者手中的积分可以相互兑换,主要包括以下模块:区块链模块、商家模块、消费者模块、监管模块、CA验证模块等。此外,本系统分布式部署,弹性伸缩,高可用,具备应对大规模用户量的处理能力。

2总体方案设计

本系统的架构图如下

6285cfe17a33a_html_c9a3d3ad09d67850.png

本系统包括五个模块,分别是区块链模块、商家模块、消费者模块、监管模块、CA验证模块。

本系统各个模块之间运转逻辑如下:

1)消费者、商家、监管机构和每个区块链节点都分别向CA申请秘钥,包括公钥和私钥;

2)消费者的消费行为,商家都会提交到区块链,一旦触发商家的积分发放规则,区块链就会给消费者账号发放相应积分;

3)商家设定兑换规则,把可以兑换的商品放上货架,并且将此兑换规则和可兑换商品信息提交到区块链,不可篡改;

4)消费者用积分兑换商品,可以多个商家的积分混合使用,只要用来兑换的积分总价值等于商品价值即可成交,整个交易能否成功,由区块链智能合约运算决定,由区块链来对比积分总价值和商品总价值的大小。

3主要流程设计

本系统涉及三个核心流程,分别是积分发放流程、积分兑换流程、商家和区块链结算流程。

3.1积分发放

积分发放时序图如下:

6285cfe17a33a_html_78f47e1179de097.png

其中,在本系统中,考虑到有些商户会因为一些原因,如为了刺激用户消费等,多发放积分,造成积分贬值的情况,使得持有其他商户的用户手中的积分贬值,从而造成其他商户的利益受损。本方案创造性地提出了积分价值,并在发放积分信息时,一并发放对应积分的积分价值。

在确定积分价值时,为确保确定出的积分价值相对于其他商户恒定,本方案中的积分价值的计算公式为:

积分价值 = (商品A价值 / 商品A所需积分) * (商品A库存 / 可兑换商品总库存) + (商品B价值 / 商品B所需积分) * (商品B库存 / 可兑换商品总库存) + (商品C价值 / 商品C所需积分) * (商品C库存 / 可兑换商品总库存) + ……。

其中,商品A、商品B以及商品C为当前商户当前上架的产品。

本方案的上述第10步中,返回的积分信息包括:商家ID、商品ID、商品名称、成交商品数量、成交金额、获得积分数量、积分兑换规则、积分价值、成交时间。

第11步,带上消费者签名,授权区块链给本账号积分,其中消费者签名逻辑如下:

积分信息 = 积分信息 + 消费者唯一ID

签名= ECC(消费者私钥(hash(积分信息)))

1)用积分信息计算hash值;

2)用椭圆曲线加密算法加密,秘钥为消费者从CA申请的私钥。

第14步,验证消费者签名合法性,逻辑如下:

1)利用椭圆曲线加密算法解密,秘钥为消费者公钥,得到解密结果;

2)用积分信息计算hash值;

3)比较得到的hash值和解密结果,相同则为合法提交,否则为非法提交。

第15步,在根据商家积分规则给消费者账号增加积分时,根据积分信息来增加对应的积分。

3.2积分兑换

积分兑换时序图如下:

6285cfe17a33a_html_2fa59ab826b370f8.png

其中,第8步,返回支付信息,包括商家ID、消费者ID、兑换商品ID、商品名称、商品数量、兑换时间。

第10步,生成签名,逻辑如下:

签名= ECC(消费者私钥(hash(支付信息)))

1)用支付信息计算hash值;

2)用椭圆曲线加密算法加密,秘钥为消费者从CA申请的私钥。

第14步,校验签名合法性,逻辑如下:

1)利用椭圆曲线加密算法解密,秘钥为消费者公钥,得到解密结果;

2)用支付信息计算hash值;

3)比较得到的hash值和解密结果,相同则为合法提交,否则为非法提交。

第17步,验证本积分商家是否结算完上周期款项,如果本积分的发行商家尚未跟区块链结算完上一周期款项,那么本积分是不允许在其他商家那里兑换商品的。

第18步,积分划扣和商品库存减少,可以使用多个商家的积分组合,而且同一个商家的积分,对应当时发放时候的兑换规则不同,蕴含的价值也不同,所以,积分划扣需要叠加每一积分的蕴含价值,当消费者选择的积分组合的价值等于商品价值,直接划扣,当消费者选择的积分组合的价值小于商品价值,划扣失败,当消费者选择的积分组合的价值大于商品价值,划扣成功,区块链还会给消费者账户返还相应剩余价值的积分。

3.3商家和区块链结算

流程图如下:

6285cfe17a33a_html_767b0b1cbd5dca72.png

其中,积分兑换后,商家和商家之间不再需要结算,商家只需要跟区块链结算即可,区块链在固定周期会生成每个商家的结算账单,商家只需按照结算账单来支付或者提现即可。倘若商家的应付金额大于0,那么商家就需要给区块链支付相应金额的账款,倘若商家的应付金额小于0,那么商家即可从区块链中提现出来。

假如有商家在某个结算周期内没有把应付的账款付清,那么该商家就会被标记为欠费状态,消费者只能拿积分来本商家兑换商品,无法拿本商家的积分去兑换其他商家的商品。一直等到下一结算周期,从下一个周期的应体现金额里扣取上一周期的欠款,一直将欠款补上为止。

4系统关键技术

4.1区块链层

基于开源区块链框架hyperledger Fabric搭建的联盟链,主要技术栈为Fabric + kafka + zookeeper,多组织多节点,每个商家作为一个联盟成员接入联盟链,在区块链中拥有各自的peer节点,在联盟中,共享多个orderer节点,而orderer节点采用分布式部署,弹性伸缩,高可用,每个联盟成员的交易信息由各自peer节点背书,发到kafka集群,kafka节点全部注册到zookeeper,最后,orderer节点集群消费kafka集群的消息队列,将所有交易上链保存。

区块链上的所有业务逻辑,都由基于go语言开发的智能合约实现,相同业务的联盟成员都join到同一channel,部署该智能合约并且升级至相同版本,由此来确保所有节点上执行相同业务逻辑。

4.2业务层

本层主要包括商家模块、消费者模块、监管模块,主要技术栈为Fabric java SDK + Spring cloud + MySQL + H5,所有用户都可从前端H5页面访问后端服务,后端服务以基于开源spring cloud开发和部署,包含注册中心Consul、服务调用与负载均衡Ribbon和Feign、熔断器Hystrix、网关Spring cloud gateway、配置中心Spring cloud Config与Spring cloud Bus、链路追踪Spring cloud Sleuth和Zipkin。本集群由k8s+docker容器的方式部署,弹性伸缩,高可用,能为海量流量提供稳定服务。

业务层与区块链层的交互,主要是通过Fabric java SDK,以grpc或者grpcs的方式连接区块链,进行数据的存证和查证等操作。

4.3 CA验证层

本层主要基于Fabric的CA证书颁发和验证能力,主要技术栈为Fabric CA+docker+Nginx,所有的业务层实体,都需要通过CA来申请各自的账号和秘钥以及证书,CA对于整个系统的安全运行至关重要,分布式容器化部署,负载均衡,可同时支撑账号的注册、证书发放、证书的更新和撤销,以及提供实时认证等工作。


5结语

本系统可以盘活消费者手中大量零散积分,提高消费者的消费体验,同时也提高了商品交易的活跃度。而依托于区块链技术,为参与通兑的多方联盟成员,提供一个公平公正,不可篡改,可信赖的交易系统,让涉及利益交易的多方可以全部精力投入生产经营,不用花费大量人力物力来对账和结算,只要跟区块链结算即可。

本系统具有广阔的商业前景,积分是商家回馈消费者的惯用手段,这就使得零散积分的兑换和使用,成为广大消费者的普遍需求,而兑换就势必涉及多个商业主体,商业主体之间的不信任,成为合作的最大障碍,而区块链技术一经写入不可篡改,高度透明,可信赖的特性,从根本上解决了信任问题。因此,在未来的发展中,本系统将会逐渐被市场接受,并且发挥出应有的潜力。