掌桥专利:专业的专利平台
掌桥专利
首页

一种基于联盟链的商城系统

文献发布时间:2023-06-19 09:38:30


一种基于联盟链的商城系统

技术领域

本发明属于联盟链技术领域,尤其涉及一种基于联盟链的商城系统。

背景技术

目前已有的电子商城系统主要仍旧以中心化的方式存储各种交易数据,如果作为交易担保的商城系统持有方发生腐败篡改数据,或者数据库被病毒攻击,均会导致交易数据的真实性发生变化,进而引发信任问题,如何保证交易数据的真实性,是亟待需要解决的问题。

发明内容

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于联盟链的商城系统,通过将交易数据存储到联盟链上,能够保证交易数据的真实性,基于联盟链特有的溯源不丢失的特性,可有效避免传统电商的数据中心化,信息不透明等难题。

为解决上述技术问题,本发明采用的技术方案是:一种基于联盟链的商城系统,包括服务端和与服务端数据交互的用户端;所述服务端部署有商城系统和联盟链系统;所述用户端与商城系统间交互产生的交易数据存储在联盟链系统上,所述交易数据包括订单数据、运单数据和积分数据中的一种或多种。

上述一种基于联盟链的商城系统,所述用户端包括账户创建单元、账户登录单元、账户找回单元和账户更新单元;

所述账户创建单元,用于在所述联盟链系统上针对商城系统的专属通道上创建账户;创建的账户可用于用户端访问商城系统和联盟链系统;创建的账户包括用户名和两个公私密钥对;

所述账户登录单元,用于账户登录;

所述账户找回单元,用户找回用户名对应的两个公私密钥对;

所述账户更新单元,用于对用户名下的两个公私密钥对进行更新;

两个所述公私密钥对,其中一个公私密钥对用于账户权限管理,另一个公私密钥对用于账户资产管理。

上述一种基于联盟链的商城系统,所述用户端还包括商品推荐单元和商品购买单元;

所述商品推荐单元,用于从商城系统获取商品推荐信息;

所述商品购买单元,用于从商城系统购买商品,每个购买操作执行中,所述商城系统生成对应于购买操作的订单数据、运单数据和积分数据中的一种或多种。

上述一种基于联盟链的商城系统,所述用户端还包括账户积分查询单元和账户积分消费单元;

所述账户积分查询单元,用于供用户查询联盟链系统中的账户积分信息;

所述账户积分消费单元,用于供用户使用联盟链系统中的账户积分在商城系统中消费。

上述一种基于联盟链的商城系统,所述商品推荐子系统包括商品信息导入模块、商品聚类模块、商品推荐度计算模块;

所述商品信息导入模块,用于导入商品信息,所述商品信息包括商品名、商品品类信息、商品价格信息和商品用户兴趣度信息;

所述商品聚类模块,用于根据商品信息,对所有商品进行聚类操作;

所述商品推荐度计算模块,用于对聚类得到的多个商品簇,根据协同过滤算法计算出每个商品针对每个用户的推荐度;

计算出每个商品针对每个用户的推荐度数据后,将推荐度数据存储至联盟链系统中。

上述一种基于联盟链的商城系统,所述商品推荐度计算模块对于无法使用协同过滤算法计算出推荐度的新商品,针对每个用户取该用户对应的历史所有商品的推荐度均值为该新商品对应该用户的推荐度;

所述商品推荐度计算模块对于无法使用协同过滤算法计算出各个商品推荐度的新用户;针对每个商品,取其他用户在该商品上的推荐度的均值为该商品对应新用户的推荐度。

本发明与现有技术相比具有以下优点:通过将交易数据存储到联盟链上,能够保证交易数据的真实性,基于联盟链特有的溯源不丢失的特性,可有效避免传统电商的数据中心化,信息不透明等难题。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为本发明的系统架构图。

图2为本发明系统内的数据交互示意图。

图3为本发明商品推荐子系统的原理示意图。

图4为本发明用户端的原理示意图。

附图标记说明:

100—服务端; 200—用户端; 300—商城系统;

400—联盟链系统;

201—账户创建单元; 202—账户登录单元; 203—账户找回单元;

204—账户更新单元; 205—商品推荐单元; 206—商品购买单元;

207—账户积分查询单元; 208—账户积分消费单元;

300—商城系统; 301—商品推荐子系统; 302—下单子系统;

303—数据上链子系统;

301-1—商品信息导入模块; 301-2—商品聚类模块;

301-3—推荐度计算模块;

具体实施方式

如图1所示,本发明包括服务端100和与服务端100数据交互的用户端200;所述服务端100部署有商城系统300和联盟链系统400;所述商城系统300和联盟链系统400对外支持RESTAPI进行消息推荐信息和联盟链智能合约交互。

如图1和图2所示,所述用户端200包括账户创建单元201、账户登录单元202、账户找回单元203、账户更新单元204、商品推荐单元205、商品购买单元206、账户积分查询单元207和账户积分消费单元208。

所述商城系统300包括商品推荐子系统301、下单子系统302和数据上链子系统303。

所述商品推荐子系统301,用于向用户端200自动推送和/或在接收到商品推荐单元205的商品推荐指令时,向用户端200发送推荐商品信息。

所述下单子系统302,用于在接收到商品购买单元206的商品购买指令时,生成订单数据和运单数据。

所述数据上链子系统303,用于对订单数据和运单数据执行上链操作。

所述联盟链系统400,用于储存,以及在所述下单子系统302生成订单数据后,计算对应订单数据的奖励积分,并更新对应用户账户下的积分值。

如图4所示,需要说明的是,使用账户创建单元201创建新账户时包括以下操作步骤:

Step1-1、用户端200通过短信验证的方式获取用户的手机号信息,然后用户端200通过账户创建单元201向联盟链系统400发送【newaccount】请求;

Step1-2、联盟链系统400接收到链码调用【newaccount】请求后,调用本地通道Recommendation内链码Recommendation的newaccount方法,通过newaccount方法产生1个新用户名和2个公私密钥对;其中1个公私密钥对用于账户权限管理,另1个公私密钥对用于账户资产管理;

Step1-3、联盟链系统400调用链上存储接口PutState,将用户名作为健值,2个密钥对通过base64编码后,存储到链上Recommendation通道【世界状态】存储中;

Step1-4、联盟链系统400调用链码将用户名和2个密钥对信息作为返回值回传给用户端200,并且将用户名和手机号码信息关联;其中用户名和其2个密钥对格式如下所示:

account:abddedop23sd

public:4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq

private:5JKbLfCXgcafDQVwHMm3shHt6iRWgrr9adcmt6vX3FNjAEtJGaT

Privatekey:5J6YHicUZZiEViWe3MCQD2vdCC99WW8VHhCQST5NaHScYQibwLy

Publickey:8kLLKdikhpY99EWSj8L8HHLSyE8xiRQW9mZAXxcf5thYK2LCzM

需要说明的是,上述的用户名和密钥对采用随机数和椭圆加密原理产生,生成逻辑如下:

生成用户名过程:通过随机数产生过任意12字节长度字符串,并通过查询链码Recommendation(通过调用链上GetSate查询用户)确保不存在重名;

生成密钥对过程:

生成私钥:产生32字节16进制随机数,并通过WIF格式编码转化为52字节长度字私钥符串;

通过椭圆加密曲线(SECP256,K1曲线)计算,将私钥映射在椭圆曲线上对应X点,通过SECP256,K1曲线推导出Y点;

将Y点转化成32字节字符串并通过压缩得出导出公钥;

需要说明的是,使用账户登录单元202登录账户时,需要传入一开始创建的用户密钥对文件,选择导入用户名和密钥文件后,登陆成功。所述用户端200还设置有登陆活跃检测机制,在例如5-10分钟无交互操作状态下,会自动退出登录,通过双密钥对和登陆活跃检测两种机制保护账户数据资产隐私安全。

需要说明的是,使用所述账户找回单元203进行账户信息找回时,用户端200通过短信验证的方式验证用户信息,再向联盟链系统400调用Recommendation链码的【getaccountkey-pairs】REST请求来发起账号密钥文件找回操作。Recommendation合约会在链上查询用户base64的已编码密钥信息回传给用户端200,用户端200收到后进行解码重组用户密钥文件,通过HTTPS回传给用户,来确保信息安全。

需要说明的是,使用所述账户更新单元204更新账户信息时,向联盟链系统400meel合约发起【updateaccount】调用,链码将会为用户名重建2个密钥对并编码返回,用户端200将密钥信息解码后重组用户信息文件传给用户。实际中为了避免用户恶意操作账户更新单元204,可限制每日账户更新单元204的使用次数不超过2次。

需要说明的是,使用商品推荐单元205获取商品推荐信息时,所述用户端200通过商品推荐单元205向商品推荐子系统301发送商品推荐指令,所述商品推荐子系统301将根据预设推荐机制生成的商品推荐列表信息发送至用户端200;当用户使用商品购买单元206执行商品购买操作后,所述下单子系统302生成订单数据,然后等待用户支付,用户支付完毕后,商品推荐子系统301向联盟链系统400发起积分奖励请求,联盟链通过INVOKE调用链码为用户计算奖励积分并更新用户名下积分值,调用方法:[Invoke],参数:[用户名-AccountName,通道名-Recommendation,合约名-Recommendation,方法名:TokenReward],返回值:[最新TOKEN积分值]。

需要说明的是,使用所述账户积分查询单元207进行积分查询时,用户端200向联盟链系统400发起RESTAPI查询当前用户的积分请求,联盟链收到查询请求后调用链码QUERY方法,查询用户名下的积分资产。调用方法:[Query],参数:[用户名-AccountName,通道名-Recommendation,合约名-Recommendation,方法名:QueryToken]。返回值:[TOKEN积分值]。

需要说明的是,使用账户积分消费单元208进行积分消费时,包括积分抽奖、积分兑换、积分转让。

实际中用户在积分累计到一定额度后可以通过用户端200进入积分抽奖。比如积分抽奖将会消耗1-5点积分值。用户点抽奖后,用户端200向联盟链系统400发送REST抽奖请求,联盟链系统400收到后转化为对对抽奖合约的调用方法。调用方法:[Invoke],参数:[用户名-AccountName,通道名-Recommendation,合约名-Recommendation,方法名:luckydraw]。返回值:[中奖/未中奖,奖励积分/扣除积分,当前最新积分]。

用户选择积分兑换时,用户端200计算商品抵扣费用后,提示用户抵扣额度,再切换到商品购买页面,等待用户下单购买时,向推荐系统发起用户端200向推荐系统发起订单请求,传入抵扣积分值;推荐系统进行数据订单核对,计算价格和奖励积分,清算商品价格和抵扣积分后后产生订单数据,等待用户支付;用户支付完毕后,推荐系统向联盟链发起积分奖励请求,联盟链通过INVOKE调用链码为用户计算抵扣积分和奖励积分;并更新用户名下积分值。抵扣积分调用方法:[Invoke],参数:[用户名-AccountName,通道名-Recommendation,合约名-Recommendation,方法名:TokenDeduction]。返回值:[最新TOKEN积分值];奖励积分调用方法:[Invoke],参数:[用户名-AccountName,通道名-Recommendation,合约名-Recommendation,方法名:TokenReward]。返回值:[最新TOKEN积分值]

用户选择积分转让时,需提已知的另一个账号的注册用户手机信息,之后进行积分转让(即积分合并)。用户端200从REDIS缓存中验证手机号有效后,将积分按输入值进行合并。即:向联盟链系统400发起积分转账请求,从当前用户A转账X积分到转账用户B。调用方法:[Invoke],参数:[用户名-AccountNameA,用户名-AccountNameB,通道名-Recommendation,合约名-Recommendation,方法名:TokenTransfer]。返回值:[成功或失败]

需要说明的是,所述商品推荐子系统301包括商品信息导入模块301-1、商品聚类模块301-2、商品推荐度计算模块301-3;在有新商品需要上线时通过商品信息导入模块301-1,依靠人工通过手工输入商品信息,更新商品信息总表,商品信息包括商品名、品类信息、价格和评估后的用户兴趣度;

如图3所示,所述商品推荐子系统301在根据预设推荐机制生成的商品推荐列表信息时包括以下步骤:

Step2-1、在每次商品信息总表更新后,根据商品信息总表获取商品总集,对商品总集利用商品聚类模块301-2进行聚类操作;聚类出K个聚类簇商品集;

具体的,(1)商品信息总表被更新后,商品推荐子系统301将触发新一轮的K-means聚类。聚类能帮助市场分析人员从客户基本库中发现不同的客户群,并且用购买模式来为每个实体用户刻画用户画像,预测用户和待购买商品之间的关联度和粘度。本发明利用聚类算法的目的是要计算出每个用户对未购买商品的预测购买兴趣值。算法过程如下:

将所有商品按品类(种类)根据价格高低按(业务加权系数*利润*销量)进行数据集化,对每个商品标注不同的数据s;

(2)再给定大小为n的数据集,令O=l,从数据中选择k个对象作为初始聚类中心,即:选取k个初始聚类中心Zj(O),j=1,2,3,...,k,O代表每一轮的迭代轮数的聚类中心(质心)。其中,K个对象的选取方法可以从二择一进行选取:a)选择彼此距离尽可能远的K个点b)先对数据用层次聚类算法或者Canopy算法进行聚类,得到K个簇之后,从每个类簇中选择一个点,该点可以是该类簇的中心点,或者是距离类簇中心点最近的那个点;

(3)再计算每个样本数据对象与质心的距离D(xi,Zj(O)),i=1,2,3,…,并分类;

(4)然后再令O=O+1,计算新的聚类中心和误差平方和准则f(目标函数)值:

(5)判断:若If(O+1)-f(O)I

经过多轮迭代后,可取得K个聚类簇商品集。

本领域技术人员应当理解,实现此处的聚类操作,还可以有其他聚类操作方式。

Step2-2、利用商品推荐度计算模块301-3计算出每个簇内各件商品的推荐度;对商品推荐度利用数据上链子系统303执行上链操作。

具体的,经过上一步得到的K个簇类商品集合后,针对每个商品集将进行协同过滤计算;

簇内商品协同过滤计算过程如下例所示:

针对同簇内每一个商品,结合商城销售记录,整理出购买用户-商品-用户兴趣度表;其中用户兴趣度由业务专家打分决定,获得的用户兴趣度进行数据上链操作。

构建用户-商品倒排矩阵

构建商品-商品同现矩阵

构建商品间余弦相似度矩阵

计算商品之间的相似度,即计算相似矩阵,两个商品之间的相似度:

其中分子含义为:N(i)表示喜欢商品i的用户数,N(j)表示喜欢商品j的用户数,|N(i)∩N(j)|表示同时喜欢商品i,j的用户数。

商品与商品的同现矩阵其实就是此式的分子。分母含义为:N(i)表示喜欢商品i的用户数*N(j)表示喜欢商品j的用户数,然后开平方。

商品的总用户数在构建出商品与商品的同现矩阵方法中求出。

所构建商品之间的余弦相似矩阵二维数组需要根据横向、纵向的商品列表,再循环商品与商品的同现矩阵对角线一边的每一个值然后再套公式即可。

计算商品推荐度

预测商品推荐度=∑(用户购买的每一类商品数量*余弦相似度)

根据(1)所得的用户/商品表和根据(3)所得的余弦相似度表,可得出每一个用户的商品预测商品推荐度,如下表所示。

以224商品为例,购买用户102对商品224的购买预测商品推荐度为:

取224横向列和纵向列并过滤出列内用户102购买过的商品列215/239/257,再乘用户兴趣度,得到102用户对224商品推荐度=1*0.408+1*0.50=0.908

同理,所有用户的推荐度如下表所示。

新用户/新商品冷启动预测推荐度计算

协同过滤算法的问题在于,新用户和新商品的冷启动无法获得既往其他商品的参考推荐数据以作为基准做推荐计算。所述商品推荐度计算模块对于无法使用协同过滤算法计算出推荐度的新商品,针对每个用户取该用户对应的历史所有商品的推荐度均值为该新商品对应该用户的推荐度;

所述商品推荐度计算模块对于无法使用协同过滤算法计算出各个商品推荐度的新用户;针对每个商品,取其他用户在该商品上的推荐度的均值为该商品对应新用户的推荐度。

将推荐度数据收集上链:

每当发生推荐度计算后,推荐子系统将触发对于每个用户的用户兴趣度数据进行数据存链操作。即:向联盟链发起数据上链请求,调用方法:[Invoke],参数:[用户名-AccountNameA,通道名-Recommendation,合约名Recommendation,方法名:InterestPrediction,参数:用户名AccountNameA,商品编号ProductionNumber,推荐度PredictionValue]。返回值:[成功或失败]。

本实施例中,所述下单子系统302在用户交易成功后,下单子系统302根据交易金额进行随机奖励积分结算(如:随机金额1~3%积分奖励率),计算完成后向联盟链请求积分上链。调用方法:[Invoke],参数:[用户名-AccountName,通道名-Recommendation,合约名-Recommendation,方法名:TokenReward]。返回值:[最新TOKEN积分值];下单操作完成后(订单生成),下单子系统302会在线产生新运单流水号和派送信息(按中途运单状态实时更新)并按最新查询状态进行数据上链操作。调用方法:[Invoke],参数:[用户名-AccountName,订单ID,通道名-Recommendation,合约名-Recommendation,方法名:Transmission]。返回值:[成功或失败]。

本实施例中,所述数据上链子系统303主要负责向联盟链发送用户商品推荐度上链、订单上链、运单上链、积分上链。上链合约信息具体详见下述联盟链系统400的函数和表设计。

推荐度上链:所需上链数据主要包括用户名,商品列表,各商品对应推荐度值,本月加权系数等。

订单上链:所需上链数据主要包括订单号,订单客户信息,下单时间,交易状态等。

运单上链:所需上链数据主要包括运单号,运单状态,运输抵达城市,更新时间,预计到达时间等。

积分上链:所需上链数据包括用户最新奖励积分更新操作请求等。

本实施例中,所述联盟链系统400上设计了一个套独立的业务通道Recommendation.在此通道基础上,设计了一个针对商品推荐系统的数据上链合约Recommendation,用来实现各类数据、积分、订单信息上链和积分转账等交易内容。

1.合约表设计

用户账户和积分表

用户用户兴趣度表设计

2.订单表设计

3.运单表设计

2.链码函数设计

综上所述,本发明结合联盟链上用户的商品推荐度和用户的总体商品购买行为趋势,较好的解决了用户冷启动以及商品冷启动的推荐度问题。通过对K-means聚类和对基于K簇内的商品集做基于用户的商品用户兴趣度预测,以及结合业务加权系数,可以较好的得到用户的商品推荐度,同时将用户的购买操作和联盟链的积分奖励和积分抵扣绑定,较好的维系了用户的购物体验和用户粘度;用户可通过用户端200实时从链上查询定位历史区块和交易来获得历史和最新的商品运单信息,因联盟链特有的溯源不丢失的特性,可有效避免传统电商的物流信息中心化,信息不透明等难题。

以上所述,仅是本发明的较佳实施例,并非对本发明作任何限制,凡是根据本发明技术实质对以上实施例所作的任何简单修改、变更以及等效结构变化,均仍属于本发明技术方案的保护范围内。

相关技术
  • 一种基于联盟链的商城系统
  • 一种基于移动商城零售商城系统及其使用方法
技术分类

06120112243461