CN113034192A - 一种基于区块链的积分交易方法及装置 - Google Patents
一种基于区块链的积分交易方法及装置 Download PDFInfo
- Publication number
- CN113034192A CN113034192A CN202110347799.1A CN202110347799A CN113034192A CN 113034192 A CN113034192 A CN 113034192A CN 202110347799 A CN202110347799 A CN 202110347799A CN 113034192 A CN113034192 A CN 113034192A
- Authority
- CN
- China
- Prior art keywords
- list
- user
- account
- hanging
- hang
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
- G06Q30/0226—Incentive systems for frequent usage, e.g. frequent flyer miles programs or point systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明提供了一种基于区块链的积分交易方法及装置,利用区块链去中心化、安全、可溯源的特点,基于区块链实现不同积分类型之间的交易,不需要每个企业用户花费过多的精力维护各自的积分系统,避免了企业用户人力、物力的浪费。当某个用户想用拥有的积分去兑换其他用户拥有的其他类型积分时,向区块链节点发起挂单,区块链节点在挂单池中查询满足预设条件的该挂单的匹配挂单,自动撮合两个用户或多个用户之间的积分交易,实现了更为高效、快捷的积分兑换需求,有效提升了用户体验。
Description
技术领域
本发明涉及区块链技术领域,更具体的,涉及一种基于区块链的积分交易方法及装置。
背景技术
商家为了赢得更多新客户,留住更多老客户,通过向消费者发放积分的方式对消费者进行激励,消费者可以用积分兑换奖励。
但是,目前不同商家的积分系统是相互独立的,消费者只能在特定积分商城兑换特定积分,消费者体验较差。并且每个商家都需要维护自己的积分系统,造成了人力、物力的浪费。
发明内容
有鉴于此,本发明提供了一种基于区块链的积分交易方法及装置,实现不同积分类型之间的交易,提升了用户体验。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种基于区块链的积分交易方法,应用于区块链中的节点,所述方法包括:
在接收到用户发起挂单的情况下,解析该挂单,得到用户待出积分的类型及数量与待入积分的类型及数量,并将待出积分的数量与待入积分的数量的比值确定为该挂单的权重;
将该挂单加入挂单池,在挂单池中查询满足预设条件的该挂单的匹配挂单,该挂单与匹配挂单的权重的乘积大于1,匹配挂单的数量至少为1;
执行挂单用户与匹配挂单用户之间的积分交易,并将积分交易结果记录在区块链中。
可选的,所述在挂单池中查询满足预设条件的该挂单的匹配挂单,包括:
在挂单池中查询待出积分的类型与该挂单的待入积分的类型且待入积分的类型与该改单的待出积分的类型一致的挂单;
将查询到的多个挂单中权重最大且与该挂单的权重的乘积大于1的挂单,确定为该挂单的匹配挂单。
可选的,所述在挂单池中查询满足预设条件的该挂单的匹配挂单,包括:
将该挂单转换为一条有向边,由待出积分的类型指向待入积分的类型;
在挂单池中查询包括该挂单对应的有向边的最大有向环,所述最大有向环为挂单池中所有包括该挂单对应的有向边的有向环中所有挂单乘积最大且乘积大于1的有向环;
将所述最大有向环中除该挂单之外的其他挂单确定为匹配挂单。
可选的,所述执行挂单用户与匹配挂单用户之间的积分交易,包括:
根据挂单用户与匹配挂单用户中的最小积分需求量进行积分交易;
将完成积分交易需求的挂单删除;
对于未满足积分交易需求的挂单,根据已交易积分数量修改挂单,并将修改后的挂单加入挂单池。
可选的,所述方法还包括:
接收用户发起的账户创建请求;
控制根账户或信道用户为该用户创建账户,并随机生成一个密钥对,作为该用户账户的地址和密码;
控制根账户为该用户账户转账预设数量的原生币;
接收用户发起的信任关系建立请求,并根据信任关系建立请求中携带的积分类型,设置用户信任的积分类型,用户仅能与信任的积分类型进行积分交易。
可选的,所述执行所述最大有向环中用户之间的积分交易,还包括:
扣除交易中每个用户预设数量的原生币。
可选的,所述方法还包括:
在每个预设周期结束之前,检测每个用户账户的原生币的数量是否小于预设值;
若小于预设值,控制根账户为原生币数量小于预设值的账户转账原生币,使该账户的原生币的数量达到的预设值。
可选的,所述方法还包括:
接收企业用户发起的账户创建请求;
控制根账户或信道用户为企业用户创建积分发行账户和积分回收账户,并分别为积分发行账户和积分回收账户随机生成一个密钥对,作为积分发行账户和积分回收账户的地址和密码;
在积分发行账户的数据域中备注发行积分类型,在积分回收账户的数据域备注仅信任发行积分类型。
可选的,在将该挂单加入挂单池之后,所述方法还包括:
对该挂单进行计时;
在计时时长达到预设时长的情况下,若该挂单还未被处理,则删除该挂单,并通知用户。
一种基于区块链的积分交易装置,应用于区块链中的节点,所述装置包括:
挂单解析单元,用于在接收到用户发起挂单的情况下,解析该挂单,得到用户待出积分的类型及数量与待入积分的类型及数量,并将待出积分的数量与待入积分的数量的比值确定为该挂单的权重;
挂单匹配单元,用于将该挂单加入挂单池,在挂单池中查询满足预设条件的该挂单的匹配挂单,该挂单与匹配挂单的权重的乘积大于1,匹配挂单的数量至少为1;
积分交易单元,用于执行挂单用户与匹配挂单用户之间的积分交易,并将积分交易结果记录在区块链中。
可选的,所述挂单匹配单元,具体用于:
在挂单池中查询待出积分的类型与该挂单的待入积分的类型且待入积分的类型与该改单的待出积分的类型一致的挂单;
将查询到的多个挂单中权重最大且与该挂单的权重的乘积大于1的挂单,确定为该挂单的匹配挂单。
可选的,所述挂单匹配单元,具体用于:
将该挂单转换为一条有向边,由待出积分的类型指向待入积分的类型;
在挂单池中查询包括该挂单对应的有向边的最大有向环,所述最大有向环为挂单池中所有包括该挂单对应的有向边的有向环中所有挂单乘积最大且乘积大于1的有向环;
将所述最大有向环中除该挂单之外的其他挂单确定为匹配挂单。
可选的,所述积分交易单元,具体用于:
根据挂单用户与匹配挂单用户中的最小积分需求量进行积分交易;
将完成积分交易需求的挂单删除;
对于未满足积分交易需求的挂单,根据已交易积分数量修改挂单,并将修改后的挂单加入挂单池。
可选的,所述装置还包括:普通账户创建单元,具体用于:
接收用户发起的账户创建请求;
控制根账户或信道用户为该用户创建账户,并随机生成一个密钥对,作为该用户账户的地址和密码;
控制根账户为该用户账户转账预设数量的原生币;
接收用户发起的信任关系建立请求,并根据信任关系建立请求中携带的积分类型,设置用户信任的积分类型,用户仅能与信任的积分类型进行积分交易。
可选的,所述积分交易单元,还用于扣除交易中每个用户预设数量的原生币。
可选的,所述装置还包括:原生币检测单元,具体用于:
在每个预设周期结束之前,检测每个用户账户的原生币的数量是否小于预设值;
若小于预设值,控制根账户为原生币数量小于预设值的账户转账原生币,使该账户的原生币的数量达到的预设值。
可选的,所述装置还包括:企业账户创建单元,具体用于:
接收企业用户发起的账户创建请求;
控制根账户或信道用户为企业用户创建积分发行账户和积分回收账户,并分别为积分发行账户和积分回收账户随机生成一个密钥对,作为积分发行账户和积分回收账户的地址和密码;
在积分发行账户的数据域中备注发行积分类型,在积分回收账户的数据域备注仅信任发行积分类型。
可选的,所述装置还包括:挂单删除单元,具体用于:
对该挂单进行计时;
在计时时长达到预设时长的情况下,若该挂单还未被处理,则删除该挂单,并通知用户。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种基于区块链的积分交易方法,利用区块链去中心化、安全、可溯源的特点,基于区块链实现不同积分类型之间的交易,不需要每个企业用户花费过多的精力维护各自的积分系统,避免了企业用户人力、物力的浪费。当某个用户想用拥有的积分去兑换其他用户拥有的其他类型积分时,向区块链节点发起挂单,区块链节点在挂单池中查询满足预设条件的该挂单的匹配挂单,自动撮合两个用户或多个用户之间的积分交易,实现了更为高效、快捷的积分兑换需求,有效提升了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种基于区块链的积分交易系统的架构示意图;
图2为本发明实施例公开的一种基于区块链的积分交易方法的流程示意图;
图3为本发明实施例公开的挂单转换为有向边的示意图;
图4为本发明实施例公开的三方撮合场景下由挂单组成的有向环示意图;
图5为本发明实施例公开的多方撮合场景下由挂单组成的有向环示意图;
图6为本发明实施例公开的多方撮合场景下由挂单组成的拓扑结构示意图;
图7为本发明实施例公开的一种基于区块链的积分交易装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种基于区块链的积分交易系统,请参阅图1所示的系统架构图,区块链包括至少4个节点,每两个节点之间相连,构成了一个底层的区块链节点网,区块链节点连接horizon,其提供区块链的多种接口,可以使上层对其的调用简单化和规范化,普通用户和企业用户可以通过接口访问区块链,实现企业积分的发行和回收,普通用户之间的积分交易等。本发明主要是在区块链对外接口和后端之间,在区块链的基础上完成了积分交易兑换功能。
本实施例公开的一种基于区块链的积分交易方法,应用于区块链中的节点,区块链初始创建时,产生一个系统账户,也称为根账户,普通用户和企业用户在利用区块链实现积分的发行和回收,普通用户之间的积分交易等功能之前,首先需要在区块链中创建账户。
本实施例提供两种创建普通用户账户的方法:非通道法和通道法。非通道法即用根账户作为事务的签名者直接创建,随机产生一个密钥对(keypair)作为新账户的地址(address)和密码(seed),账户默认原生资产为100个原生币,返回一个字典,其键值有两个:地址,密钥。通道法则是利用了信道用户(channel)作为该笔事务的签名者,使用信道用户可以满足高并发下事务号的不冲突,每个线程可以在3-5s内结束,大大加快了批量或者并发创建账户的速度。
其中,信道账户用于加快区块链上的记账速度。原理是多个用于记账的账户并发进行,这些账户统称为信道账户。在系统创建初期时,就需要由系统账户创建500个(可以自行设定数目)信道账户,每个账户拥有地址和对映密钥且不重复,这些账户存储在一个集合中。当区块链上的某个事务发生时,需要一个账户来记账,那么此时会在集合中弹出一个信道账户用于此次记账,同时若有另一个事务发生,则从集合中弹出另一个信道账户,直至集合为空。等到信道账户完成记录,提交账本后,此信道账户会重新加入集合中,等待下次的记账。信道账户的用法体现在本发明的多个地方:创建账户、建立信任、转账、挂单等。大大加快了本系统的并发能力。
创建企业用户账户的原理与创建普通用户账户的原理类似,可以通过非通道法或通道法为企业用户创建积分发行账户和积分回收账户,分别为积分发行账户和积分回收账户随机生成一个密钥对,作为积分发行账户和积分回收账户的地址和密码,在积分发行账户的数据域中备注发行积分类型,在积分回收账户的数据域备注仅信任发行积分类型,用来实现业务上的积分对账。数据域中的数据为加密后的数据,如利用base64加密算法加密的数据。
在账户创建完成后,需要建立信任关系,通过向区块链发起信任关系建立请求建立信任关系。对于普通用户,通过信任关系建立请求携带的积分类型设置用户信任的积分类型,用户仅能与信任的积分类型进行积分交易。企业用户同样也需要建立信任关系,建立信任关系的方法与普通用户的原理一致,在此不再赘述。
普通用户在创建账户后可以进行积分交易,请参阅图2,本实施例公开的一种基于区块链的积分交易方法包括以下步骤:
S101:在接收到用户发起挂单的情况下,解析该挂单,得到用户待出积分的类型及数量与待入积分的类型及数量,并将待出积分的数量与待入积分的数量的比值确定为该挂单的权重。
如甲用户发起挂单,希望卖出10个A积分来换取5个B积分,则待出积分的类型为A数量为10,待入积分的类型为B数量为5,该挂单的权重为10/5=2。
S102:将该挂单加入挂单池,在挂单池中查询满足预设条件的该挂单的匹配挂单,该挂单与匹配挂单的权重的乘积大于1,匹配挂单的数量至少为1。
需要说明的是,可以根据实际需求设定预设条件,如实现两个用户之间的积分兑换使后挂单用户利益最大化的条件,实现多个用户之间的积分兑换使后挂单用户利益最大化的条件。
S103:执行挂单用户与匹配挂单用户之间的积分交易,并将积分交易结果记录在区块链中。
在实际应用中,由于不同用户的挂单兑换比例不同,所需要的积分数量也不同,可能出现两笔挂单正好匹配即积分交易双方需求均被满足的情况,也会出现满足某个用户的兑换需求,另外一个用户的兑换需求未满足的情况。因此,在执行挂单用户与匹配挂单用户之间的积分交易的过程中,根据挂单用户与匹配挂单用户中的最小积分需求量进行积分交易。将完成积分交易需求的挂单删除。对于未满足积分交易需求的挂单,根据已交易积分数量修改挂单,并将修改后的挂单加入挂单池,继续参与后续的积分交易。
进一步,为了避免区块链中产生垃圾信息,在执行积分交易的过程中,扣除交易中每个用户预设数量的原生币。每当账户创建时,根账户都会为其转账预设数量的原生币,如100个原生币。但随着用户频繁的交易,这些原生币迟早用完,此时用户将不能进行任何交易操作。为了避免这种情况的发生,在每个预设周期结束之前,检测每个用户账户的原生币的数量是否小于预设值,若小于预设值,控制根账户为原生币数量小于预设值的账户转账原生币,使该账户的原生币的数量达到的预设值。如每晚00:00检索数据库信息,用根账户为所有不足100个原生币的账户转账,补足到100个原生币。
进一步,为避免冷门挂单迟迟无法交易从而导致系统出现挂单“沉积”现象,超过一定时间的挂单将被自动删除并反馈给用户,用户可以重新挂单。具体的,在将挂单加入挂单池之后,对该挂单进行计时,在计时时长达到预设时长的情况下,若该挂单还未被处理,则删除该挂单,并通知用户。
当区块链上有挂单撮合成功时,系统并不会直接返回这个操作,那么在设计APP时,后端将无法把用户挂单的实时信息反馈给用户,在APP上表现为,用户仍挂了单,但实际挂单已经被撮合,用户的账户的资金已经发生变动。本实施例公开的基于区块链的积分交易方法提供了监听功能,可以实时返回区块链上的挂单信息,当有订单完全撮合,回调反馈给APP后端,后端将用户在APP上的挂单取消,反馈给用户交易成功信息;当有订单部分撮合,系统后端将通知用户,并将未撮合的部分重新挂单。
具体流程如下:我们利用区块链对外提供的trade接口,该接口会实时返回一段时间内的交易成功订单,我们用死循环不断地接收此接口的输出信息,若有信息则用交易资产的发行账户是否为根账户进行筛选,筛选后将此信息整合作为撮合成功的标志返回给后端,格式为JSON,后端接收后便可以轻易更改,两方挂单被撮合后只会返回一笔订单,而三方撮合将返回两笔且我们会主动将JSON中的type键值标记为三方撮合。
根据实际需求设定预设条件,如实现两个用户之间的积分兑换使后挂单用户利益最大化的条件,实现多个用户之间的积分兑换使后挂单用户利益最大化的条件,具体有以下几种情况:
1)双方撮合挂单:在区块链接收到用户发起的挂单后,当线上有另一个用户挂出相应比例的订单,区块链会自动撮合这两笔订单。但当两笔订单的积分比例不相同时,区块链会让后挂单者的利益最大化。
2)三方撮合挂单:如果把用户发起的A换B订单看成A->B的有向路径,当整个区块链上的所有挂单模型存在有向回环路径且路径长度等于3时,如果满足可撮合条件,区块链将会按照后挂单者利益最大化将资产分配。选择后挂单者利益最大化的原因是,既能不损害先挂单者利益,又能提高挂单撮合效率,每撮合一笔挂单,至少有一个挂单被撮合完毕。
3)多方撮合挂单:为了最大化订单的撮合量,同时优化分配资产提高市场活跃度,我们在三方撮合的基础上设计了多方撮合,即寻找挂单模型中路径大于3的有向环路,在满足可撮合条件时将按照后挂单者利益最大化将资产分配。
以下结合具体示例介绍以上三种撮合挂单情况:
(一)双方撮合挂单
在区块链中,当有订单挂上区块链时,区块链会将订单自动撮合,其撮合原则为“后挂单者占优”。若有订单正好撮合,则执行相应的转账并删除订单;若有订单部分撮合,则将少部分的订单完全交易,并将未撮合部分重新挂单;若没有订单可以撮合,则将新订单放入订单池,等待撮合。具体情况见以下例子。甲用户挂了一笔订单,希望卖出10个A积分来换取5个B积分,这笔订单的卖出买入比值为2。当乙挂单请求卖出B积分和买入A积分时,有如下三种情况:
1)乙卖出5个B积分并买入10个A积分,卖出买入比值为此时,两笔订单恰好可以被撮合,区块链。倘若乙卖出和买入的积分和甲不对应,但比值仍为两笔挂单仍可以有一个被撮合完毕。例如乙卖出6个B积分买入12个A积分,那么区块链同样会将甲的10个A积分转账给乙,同时将乙的5个B积分转账给甲,然后删除两笔挂单,但因为乙的订单有剩余,区块链将乙剩余的订单继续挂上,比例不变。
2)乙卖出5个B积分并买入5个A积分,卖出买入比值为1,此时两笔订单比值乘积大于1,区块链会将甲的5个A积分转账给乙,同时将乙的2.5个A积分转账给甲,然后删除两笔挂单。此时乙的要求已经满足(买入5个A积分,但实际上只消耗了2.5B积分),甲的利益也没有受损,甲订单剩余部分按照原比例挂上区块链。这部分表现出“后挂单者占优”,即花费比自己期望数量少的积分换得目标积分,但并没有损害对方的利益,还是公平的。
3)乙卖出5个B积分并买入20个A积分,卖出买入比值为此时两笔订单比值乘积为小于1。无论以何种形式,这两笔订单都无法被撮合。因为要么无法满足乙的期望,要么损害了甲的利益。这时,会将乙的订单和甲的订单同时放入订单池中,等待后续订单的撮合。
(二)三方挂单撮合:
在系统中可能存在这样一个情况:甲挂了A积分换B积分的订单,乙挂了B积分换C积分的订单,这时候有丙挂C积分换A积分的订单,在原来的区块链上并不能直接撮合订单,但用户之间的需求却是可以满足的。因此,我们自主设计增加了三方撮合的功能。订单撮合过程中以“后挂单者占优”的原则进行,且保证每次撮合必定可以完成至少一个订单。
我们将订单以有向图的方式表示。对于每个挂单,用户卖出S个CoinX以换取B个CoinY,令该挂单的权重:将X积分和Y积分作为图中的节点,用户挂单生成一条由X节点指向Y节点的一条有向边,边的权重为W,如图3所示。
三方挂单撮合具体步骤如下:
III.撮合挂单。从挂单Order′i和Orderj开始,在两者之间换的同一积分CoinB中选取较小的交易数量,将另一个挂单更改为较小数量但同权重的挂单。同样,根据两两相邻的挂单求出最小交易达成量。一轮计算完毕后,至少有一个挂单保持不变。根据这个挂单的交易量进行人工转账操作,转账完毕后这个挂单被完成,其余挂单还剩余一部分交易量。
Ⅳ.重新挂单。将剩余的订单池中挂单按照原比例和剩余的交易量进行重新挂单。
如果挂单Order′i在步骤(III)中是交易量最小的挂单,即Order′i被撮合完,在原挂单Orderi中会余下Si-S′i个要卖出的CoinA。此时用比原来少的CoinA交换到了原挂单需求数量的CoinB,这符合“后挂单者占优”的原则。
如果Order′i在步骤(III)中撮合后有剩余,则按照原挂单Orderi的比例和Order′i中的剩余再进行挂单。假设Order′i中被交易的CoinB数量为σ,那么还有Bi-σ个CoinB要被继续挂单,此时按照原Orderi的比例需要卖出Wi(Bi-σ)个CoinA。即最终挂单Order″i为此时挂单要再进行如上四个步骤,直至图中没有可撮合的订单。
(三)多方挂单撮合:
为了最大化订单的撮合量,同时优化分配资产提高市场活跃度,我们在三方撮合的基础上设计了多方撮合。
与三方撮合类似,挂单撮合可以转化为有向图,撮合挂单即寻找一个路劲乘积大于1的有向环,如图5所示。
方案整体思路为动态规划法。具体如下:
Ⅰ.将图转化为从B到A的拓扑结构。即从B点开始,去除B的所有入边(即去除以B积分类型为待入积分类型的挂单),将B和B的出边(即以B积分类型为待出积分类型的挂单,记为第一挂单)加入拓扑结构P中,然后从B的出边的尾端节点集合中寻找入度为0的节点(即去除以第一挂单的待入积分类型为待入积分类型的挂单,如第一挂单为B指向C,则去除所有待入积分类型为C的挂单),再将其如同B一样加入拓扑结构P中。每次都从剩余节点中寻找与P中相连且入度为0的节点,直至P中节点与剩余其他节点没有连接。如果P中没有A节点,则算法终止,直接挂单
Ⅱ.根据拓扑结构做动态规划。图中每个节点保存从B到此节点的最大路径值,初始为0。按照拓扑图中的先后顺序,从B开始,每个节点计算由其入边头端的不同节点与相应入边乘积的值,从中取最大的值并记录B到此节点的具体路径。当计算完A节点时,得出最大路径值WS,如果WS×wi≥1,则说明找到相应的多方,按照三方撮合中的Ⅱ、III、Ⅳ步骤进行撮合。如果WS×wi<1,说明不满足,直接挂单
但是,此图还有以下特点:
①有环路;
②存在双向边;
③存在一条边可能对映多个权重的情况(有多个类型相同的挂单)。
在此基础上,将算法作出修改:
对于①,在步骤Ⅰ中,从剩余节点选择时,同样是选择与P相连的节点集合,但此集合中不一定有剩余入度为0的节点,因此要选择剩余入度最小的节点,并将此节点的剩余入边全部删除后加入P中。例如图6先后删除了(2)和(1)边。
对于②,在步骤Ⅰ中,可能存在剩余节点选择时有多个节点的剩余入度最少且相同。如果这些节点相互之间不关联,则随机选择先后顺序;如果存在单向关系,则先将拓扑结构靠前的加入,如图6选择CoinC加入并删除了(2)边;如果存在双向关系,则同时加入,如图6的CoinE和CoinF。如果同时加入,那么在步骤Ⅱ中计算时,要先同时计算没有双向边时的值,再计算一轮仅包含相互关联的节点的值和路径。
对于③,每条边只保留权重最大的挂单,如图6删除了较小的(3)挂单。
最后,为防止此算法计算时间过久或有意外情况发生,本算法采用两个措施:
i.整个拓扑结构的节点数目不超过50,每个节点保留的路径长度不超过10,当拓扑结构过大时,采用多方撮合意义不大,直接挂单即可。
ii.每个预设周期结束之前在定时任务中,删除存在一周以上的挂单,并告知用户。
以上为积分交易的核心----撮合挂单。用户手中可能有着不同商家的不同积分,但数量可能不足以兑换任何商家的商品或服务,对商家来说也存在潜在的生意的流失。使用本发明的积分交易方法,可以让用户之间自由地进行积分交易,且没有任何第三方从中获利。同时,三方撮合和多方撮合也极大地提高了订单的完成率,提高了积分交易的灵活性。
基于上述实施例公开的一种基于区块链的积分交易方法,本实施例对应公开了一种基于区块链的积分交易装置,请参阅图7,该装置包括:
挂单解析单元100,用于在接收到用户发起挂单的情况下,解析该挂单,得到用户待出积分的类型及数量与待入积分的类型及数量,并将待出积分的数量与待入积分的数量的比值确定为该挂单的权重;
挂单匹配单元200,用于将该挂单加入挂单池,在挂单池中查询满足预设条件的该挂单的匹配挂单,该挂单与匹配挂单的权重的乘积大于1,匹配挂单的数量至少为1;
积分交易单元300,用于执行挂单用户与匹配挂单用户之间的积分交易,并将积分交易结果记录在区块链中。
可选的,所述挂单匹配单元200,具体用于:
在挂单池中查询待出积分的类型与该挂单的待入积分的类型且待入积分的类型与该改单的待出积分的类型一致的挂单;
将查询到的多个挂单中权重最大且与该挂单的权重的乘积大于1的挂单,确定为该挂单的匹配挂单。
可选的,所述挂单匹配单元200,具体用于:
将该挂单转换为一条有向边,由待出积分的类型指向待入积分的类型;
在挂单池中查询包括该挂单对应的有向边的最大有向环,所述最大有向环为挂单池中所有包括该挂单对应的有向边的有向环中所有挂单乘积最大且乘积大于1的有向环;
将所述最大有向环中除该挂单之外的其他挂单确定为匹配挂单。
可选的,所述积分交易单元300,具体用于:
根据挂单用户与匹配挂单用户中的最小积分需求量进行积分交易;
将完成积分交易需求的挂单删除;
对于未满足积分交易需求的挂单,根据已交易积分数量修改挂单,并将修改后的挂单加入挂单池。
可选的,所述装置还包括:普通账户创建单元,具体用于:
接收用户发起的账户创建请求;
控制根账户或信道用户为该用户创建账户,并随机生成一个密钥对,作为该用户账户的地址和密码;
控制根账户为该用户账户转账预设数量的原生币;
接收用户发起的信任关系建立请求,并根据信任关系建立请求中携带的积分类型,设置用户信任的积分类型,用户仅能与信任的积分类型进行积分交易。
可选的,所述积分交易单元300还用于扣除交易中每个用户预设数量的原生币。
可选的,所述装置还包括:原生币检测单元,具体用于:
在每个预设周期结束之前,检测每个用户账户的原生币的数量是否小于预设值;
若小于预设值,控制根账户为原生币数量小于预设值的账户转账原生币,使该账户的原生币的数量达到的预设值。
可选的,所述装置还包括:企业账户创建单元,具体用于:
接收企业用户发起的账户创建请求;
控制根账户或信道用户为企业用户创建积分发行账户和积分回收账户,并分别为积分发行账户和积分回收账户随机生成一个密钥对,作为积分发行账户和积分回收账户的地址和密码;
在积分发行账户的数据域中备注发行积分类型,在积分回收账户的数据域备注仅信任发行积分类型。
可选的,所述装置还包括:挂单删除单元,具体用于:
对该挂单进行计时;
在计时时长达到预设时长的情况下,若该挂单还未被处理,则删除该挂单,并通知用户。
本实施例公开的一种基于区块链的积分交易装置,利用区块链去中心化、安全、可溯源的特点,基于区块链实现不同积分类型之间的交易,不需要每个企业用户花费过多的精力维护各自的积分系统,避免了企业用户人力、物力的浪费。当某个用户想用拥有的积分去兑换其他用户拥有的其他类型积分时,向区块链节点发起挂单,区块链节点在挂单池中查询满足预设条件的该挂单的匹配挂单,自动撮合两个用户或多个用户之间的积分交易,实现了更为高效、快捷的积分兑换需求,有效提升了用户体验。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
上述各个实施例之间可任意组合,对所公开的实施例的上述说明,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于区块链的积分交易方法,其特征在于,应用于区块链中的节点,所述方法包括:
在接收到用户发起挂单的情况下,解析该挂单,得到用户待出积分的类型及数量与待入积分的类型及数量,并将待出积分的数量与待入积分的数量的比值确定为该挂单的权重;
将该挂单加入挂单池,在挂单池中查询满足预设条件的该挂单的匹配挂单,该挂单与匹配挂单的权重的乘积大于1,匹配挂单的数量至少为1;
执行挂单用户与匹配挂单用户之间的积分交易,并将积分交易结果记录在区块链中。
2.根据权利要求1所述的方法,其特征在于,所述在挂单池中查询满足预设条件的该挂单的匹配挂单,包括:
在挂单池中查询待出积分的类型与该挂单的待入积分的类型且待入积分的类型与该改单的待出积分的类型一致的挂单;
将查询到的多个挂单中权重最大且与该挂单的权重的乘积大于1的挂单,确定为该挂单的匹配挂单。
3.根据权利要求1所述的方法,其特征在于,所述在挂单池中查询满足预设条件的该挂单的匹配挂单,包括:
将该挂单转换为一条有向边,由待出积分的类型指向待入积分的类型;
在挂单池中查询包括该挂单对应的有向边的最大有向环,所述最大有向环为挂单池中所有包括该挂单对应的有向边的有向环中所有挂单乘积最大且乘积大于1的有向环;
将所述最大有向环中除该挂单之外的其他挂单确定为匹配挂单。
4.根据权利要求1所述的方法,其特征在于,所述执行挂单用户与匹配挂单用户之间的积分交易,包括:
根据挂单用户与匹配挂单用户中的最小积分需求量进行积分交易;
将完成积分交易需求的挂单删除;
对于未满足积分交易需求的挂单,根据已交易积分数量修改挂单,并将修改后的挂单加入挂单池。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户发起的账户创建请求;
控制根账户或信道用户为该用户创建账户,并随机生成一个密钥对,作为该用户账户的地址和密码;
控制根账户为该用户账户转账预设数量的原生币;
接收用户发起的信任关系建立请求,并根据信任关系建立请求中携带的积分类型,设置用户信任的积分类型,用户仅能与信任的积分类型进行积分交易。
6.根据权利要求5所述的方法,其特征在于,所述执行所述最大有向环中用户之间的积分交易,还包括:
扣除交易中每个用户预设数量的原生币。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在每个预设周期结束之前,检测每个用户账户的原生币的数量是否小于预设值;
若小于预设值,控制根账户为原生币数量小于预设值的账户转账原生币,使该账户的原生币的数量达到的预设值。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收企业用户发起的账户创建请求;
控制根账户或信道用户为企业用户创建积分发行账户和积分回收账户,并分别为积分发行账户和积分回收账户随机生成一个密钥对,作为积分发行账户和积分回收账户的地址和密码;
在积分发行账户的数据域中备注发行积分类型,在积分回收账户的数据域备注仅信任发行积分类型。
9.根据权利要求1所述的方法,其特征在于,在将该挂单加入挂单池之后,所述方法还包括:
对该挂单进行计时;
在计时时长达到预设时长的情况下,若该挂单还未被处理,则删除该挂单,并通知用户。
10.一种基于区块链的积分交易装置,其特征在于,应用于区块链中的节点,所述装置包括:
挂单解析单元,用于在接收到用户发起挂单的情况下,解析该挂单,得到用户待出积分的类型及数量与待入积分的类型及数量,并将待出积分的数量与待入积分的数量的比值确定为该挂单的权重;
挂单匹配单元,用于将该挂单加入挂单池,在挂单池中查询满足预设条件的该挂单的匹配挂单,该挂单与匹配挂单的权重的乘积大于1,匹配挂单的数量至少为1;
积分交易单元,用于执行挂单用户与匹配挂单用户之间的积分交易,并将积分交易结果记录在区块链中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110347799.1A CN113034192B (zh) | 2021-03-31 | 2021-03-31 | 一种基于区块链的积分交易方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110347799.1A CN113034192B (zh) | 2021-03-31 | 2021-03-31 | 一种基于区块链的积分交易方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113034192A true CN113034192A (zh) | 2021-06-25 |
CN113034192B CN113034192B (zh) | 2023-09-01 |
Family
ID=76453102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110347799.1A Active CN113034192B (zh) | 2021-03-31 | 2021-03-31 | 一种基于区块链的积分交易方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113034192B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113298578A (zh) * | 2021-07-28 | 2021-08-24 | 北京橙色云科技有限公司 | 基于区块链的积分兑换方法、装置以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018060951A1 (en) * | 2016-09-30 | 2018-04-05 | KALLA, Abdool Gani Anver | A system for trading in a contract-free manner |
CN108197974A (zh) * | 2017-12-12 | 2018-06-22 | 北京瑞卓喜投科技发展有限公司 | 基于区块链技术的积分处理方法及装置 |
CN109493126A (zh) * | 2018-10-26 | 2019-03-19 | 中国工商银行股份有限公司 | 基于区块链的积分数据处理方法及装置 |
-
2021
- 2021-03-31 CN CN202110347799.1A patent/CN113034192B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018060951A1 (en) * | 2016-09-30 | 2018-04-05 | KALLA, Abdool Gani Anver | A system for trading in a contract-free manner |
CN108197974A (zh) * | 2017-12-12 | 2018-06-22 | 北京瑞卓喜投科技发展有限公司 | 基于区块链技术的积分处理方法及装置 |
CN109493126A (zh) * | 2018-10-26 | 2019-03-19 | 中国工商银行股份有限公司 | 基于区块链的积分数据处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
YI OUYANG等: "Copyright Protection Application Based on Blockchain Technology", 《IEEE XPLORE》 * |
李超;戴炳荣;赵晓峰;王晓强;: "基于区块链技术的数字积分交易系统设计与实现", 现代计算机(专业版), no. 27 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113298578A (zh) * | 2021-07-28 | 2021-08-24 | 北京橙色云科技有限公司 | 基于区块链的积分兑换方法、装置以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113034192B (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Galal et al. | Verifiable sealed-bid auction on the ethereum blockchain | |
US10269006B2 (en) | System and method for chopping up and processing gift cards | |
CN108647958A (zh) | 一种基于区块链的数字资产交易方法和系统 | |
JP2019523495A (ja) | 分散トランザクションコンセンサスネットワークのデジタル財管理 | |
CN101554005A (zh) | 处理小额付款交易的方法和系统 | |
CN101484924A (zh) | 自动化交易处理系统和方法 | |
CN110851531B (zh) | 协作边缘计算方法、区块链和协作边缘计算系统 | |
CN109003129B (zh) | 一种基于物联网金融区块链的营销方法及系统 | |
KR20000054623A (ko) | 인터넷을 이용한 계모임 방법 | |
US20200074460A1 (en) | System and method for a stable cryptocurrency | |
CN113034192B (zh) | 一种基于区块链的积分交易方法及装置 | |
CN114742654A (zh) | 基于联盟链的数字资产流转方法、系统、电子装置和介质 | |
JP6409115B1 (ja) | 自動仕訳サーバおよび自動仕訳プログラム | |
JP7188997B2 (ja) | P2p保険を実施するための方法、コンピュータ、システム及びプログラム | |
CN110896353B (zh) | 一种通信资源共享处理方法及装置 | |
CN106815730A (zh) | 商务资讯信息网络交互方法及系统 | |
CN115203321A (zh) | 一种碳资产交易的方法、设备和区块链系统 | |
CN115203320A (zh) | 一种碳金融活动管理的方法、设备和计算机可读存储介质 | |
KR102256377B1 (ko) | 블록체인 기반 가상화폐 자동이체 방법 및 그를 위한 서버 | |
CN113744051A (zh) | 分布式数据交易方法和系统 | |
KR20220106400A (ko) | 하이퍼레저 블록체인 네트워크를 기반으로 한 p2p 에너지 거래 시스템 | |
CN111161074A (zh) | 一种支持金额锁定的区块链账户余额模型构建方法 | |
CN109829820A (zh) | 一种基于区块链的黄金资产上链方法 | |
TWI787125B (zh) | 數位資產管理之系統及方法 | |
CN107492012A (zh) | 网络终端阶梯分销系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |