一种基于区块链的可扩展快速支付方法及系统与流程

文档序号:21044090发布日期:2020-06-09 20:50阅读:303来源:国知局
一种基于区块链的可扩展快速支付方法及系统与流程

本发明涉及互联网数字交易技术领域,尤其涉及一种基于区块链的可扩展快速支付方法系统。



背景技术:

传统的区块链可以广泛用于去中心化的支付等功能。但是这样的区块链系统的支付效率比较低,不能够支持海量用户的大量支付的需求。同时,这些区块链系统不能够支持离线支付,所有的交易必须通过区块链的确认才能保证支付正常完成。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是现有的基于区块链的支付方法支付效率低,不能支持海量用户的大量支付需求以及无法实现离线支付。

为实现上述目的,本发明提供了一种基于区块链的可扩展快速支付方法,包括以下步骤:

支付方向发行方的用户接口发送获取token请求;

发行方收到支付方发送的获取token请求后,验证支付方的公钥信息是否有效;

验证有效后,发行方签发相应数量数字资产的信息,并返回给支付方,数字资产的信息包括数字资产的c-tree证明;

支付方创建一个支付信息,至少包括接收方的信息、以及使用支付方的私钥对接收方的公钥的签名;

支付方将数字资产的c-tree证明和已签名的支付信息交付给接收方。

进一步地,支付方将数字资产的c-tree证明和已签名的支付信息交付给接收方,具体包括以下步骤:

在有网络连接的情况下,支付方向发行方的用户接口递交支付请求;

用户接口接收到支付请求后,验证支付方的数字资产的合法拥有权和支付信息的签名有效性;

验证通过后,发行方将交易信息添加到数字资产的拥有权记录中,并将数字资产的新c-tree证明发送给接收方。

进一步地,支付方将数字资产的c-tree证明和签名的支付信息交付给接收方,具体包括以下步骤:

在离线的情况下,支付方将已签名的支付信息和数字资产的c-tree证明直接发送给接收方;

接收方在有网络的情况下,通过发行方提供的用户接口,递交支付方的已签名的支付信息,以及支付方的数字资产的c-tree证明;

发行方验证支付方的数字资产的合法拥有权以及支付信息的签名有效性,验证通过后,将支付信息添加到数字资产的拥有权记录中,并将一个数字资产的拥有权的c-tree证明发送给接收方。

进一步地,支付方可以设定一个开放的支付信息,开放的支付信息不设定指定的接收方,支付方可以将数字资产的c-tree证明、支付方的签名、开放的支付信息发给任意接收方。

本发明的另一较佳实施例提供了一种基于区块链的可扩展快速支付系统,包括:

请求模块,用于支付方向发行方的用户接口发送获取token请求;

验证模块,用于发行方收到支付方发送的获取token请求后,验证支付方的公钥信息是否有效;

签发模块,用于验证有效后,发行方签发相应数量数字资产的信息,并返回给支付方,数字资产的信息包括数字资产的c-tree证明,c-tree证明中包含拥有者的全部历史记录;

签名模块,用于支付方创建一个支付信息,至少包括接收方的信息、以及使用支付方的私钥对接收方的公钥的签名;

支付模块,用于将数字资产的c-tree证明和已签名的支付信息交付给接收方。

进一步地,支付模块,具体包括:

第一递交单元,用于在有网络连接的情况下,支付方向发行方的用户接口递交支付请求;

第一验证单元,用于用户接口接收到支付请求后,验证支付方的数字资产的合法拥有权和支付信息的签名有效性;

第一支付单元,用于验证通过后,发行方将交易信息添加到数字资产的拥有权记录中,并将数字资产的新c-tree证明发送给接收方。

进一步地,支付模块,具体包括:

第二支付单元,用于在离线的情况下,支付方将已签名的支付信息和数字资产的c-tree证明直接发送给接收方;

第二递交单元,用于接收方在有网络的情况下,通过发行方提供的用户接口,递交支付方的已签名的支付信息,以及支付方的数字资产的c-tree证明;

第二验证单元,用于发行方验证支付方的数字资产的合法拥有权以及支付信息的签名有效性,验证通过后,将支付信息添加到数字资产的拥有权记录中,并将一个数字资产的拥有权的c-tree证明发送给接收方。

进一步地,支付方可以设定一个开放的支付信息,开放的支付信息不设定指定的接收方,支付方可以将数字资产的c-tree证明、支付方的签名、开放的支付信息发给任意接收方。

本发明的又一较佳实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如上述中任一项的方法。

本发明的另一较佳实施例提供了一种存储有计算机程序的计算机可读存储介质,计算机程序使计算机执行时实现如上述中任一项的一种基于区块链的可扩展快速支付方法。

技术效果

本发明的一种基于区块链的可扩展快速支付方法及系统,采用可确定唯一性的c-tree实现对数字资产的拥有权的确认,实现链下交易以及链上确认。本发明的一种基于区块链的可扩展快速支付方法及系统可以同时支持在线支付以及离线支付功能。同时,在同一个区块链系统上,可以实现对多个发行方以及多种数字资产的支持,从而实现对海量用户的大量交易处理的支持。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的一种基于区块链的可扩展快速支付方法的整体架构图;

图2是本发明的一个较佳实施例的一种基于区块链的可扩展快速支付方法的c-tree示意图与c-tree证明;

图3是本发明的一个较佳实施例的一种基于区块链的可扩展快速支付方法的在线支付流程示意图;

图4是本发明的一个较佳实施例的一种基于区块链的可扩展快速支付方法的离线支付流程示意图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

如图1所示,本发明实施例提供了一种基于区块链的可扩展快速支付方法,包括以下步骤:

步骤100,支付方向发行方的用户接口发送获取token请求;

步骤200,发行方收到支付方发送的获取token请求后,验证支付方的公钥信息是否有效;

步骤300,验证有效后,发行方签发相应数量数字资产的信息,并返回给支付方,数字资产的信息包括数字资产的c-tree证明;

步骤400,支付方创建一个支付信息,至少包括接收方的信息、以及使用私钥对所述接收方的公钥的签名,然后支付方将数字资产的c-tree证明和已签名的支付信息交付给接收方。其中步骤400,支付方将数字资产的c-tree证明和已签名的支付信息交付给接收方,包括在线支付和离线支付。在线支付时,具体包括以下步骤:

步骤410,在有网络连接的情况下,支付方向发行方的用户接口递交支付请求;

步骤411,用户接口接收到支付请求后,验证支付方的数字资产的合法拥有权和支付信息的签名有效性;其中,数字资产的合法拥有权指的是数字资产的所有者,在某个时刻,所有者是唯一的。所有权的变更的表现是上一个拥有者用其私钥签名接收方的公钥。

步骤412,验证通过后,发行方将交易信息添加到数字资产的拥有权记录中,并将数字资产的新c-tree证明发送给接收方。

离线支付时,具体包括以下步骤:

步骤420,步骤在离线的情况下,支付方将已签名的支付信息和数字资产的c-tree证明直接发送给接收方;

步骤421,接收方在有网络的情况下,通过发行方提供的用户接口,递交支付方的已签名的支付信息,以及支付方的数字资产的c-tree证明;

步骤422,发行方验证支付方的数字资产的合法拥有权以及支付信息的签名有效性,验证通过后,将支付信息添加到数字资产的拥有权记录中,一个数字资产的拥有权的c-tree证明发送给接收方。

进一步地,支付方可以设定一个开放的支付信息,开放的支付信息不设定指定的接收方,支付方可以将数字资产的c-tree证明、支付方的签名、开放的支付信息发给任意接收方。本实例是采用设定格式的公钥地址作为接收方。

以下将具体解释本实施例的具体方案及其支持,本实施例的一种基于区块链的可扩展快速方法包括以下条件:

一条支持多个发行数字资产的发行方的区块链系统;

每个发行方维护多个按照c-tree结构设置的数据库;

发行方在区块链系统中拥有唯一有效的标识id;

发行方周期性地将多个c-tree的根节点信息写入区块链系统;

本实施例支付方和接收方均拥有一个公钥私钥对。

发行方提供一个用户接口,支付方以通过用户接口获得某一数字资产,支付方的数字资产的拥有权记录在c-tree中支付方同时获得一个数字资产的c-tree证明;

如支付方需要支付数字资产给接受方,支付方将所拥有的私钥对支付信息进行签名;

支付信息包含接受方的信息,以及支付方的合法签名;

在线支付的条件下,支付方可以通过发行方提供的用户接口,递交支付信息;

发行方验证支付方的数字资产的合法拥有权以及支付信息的签名有效性,如果验证通过,将交易信息添加到数字资产的拥有权记录中;

接受方可以查询发行方提供的用户接口,确认支付完成,并获得一个数字资产的的拥有权的c-tree证明;

在离线支付的条件下,支付方可以将有效支付信息,以及支付方所拥有的数字资产的c-tree证明直接发送给接受方;

接受方在有网络连接的条件下,通过发行方提供的用户接口,递交支付方的有效支付信息,以及支付方所拥有的数字资产的c-tree证明;

发行方验证支付方的数字资产的合法拥有权以及支付信息的签名有效性,如果验证通过,将支付信息添加到数字资产的拥有权记录中,接受方获得一个数字资产的的拥有权的c-tree证明。

其中,c-tree,具有以下特征:

1、c-tree是一个排序二叉树;

2、同一个c-tree存储发行方发行的多个同类数字资产;

3、c-tree的同属一个父节点的两个叶节点分别存储数字资产的唯一编号、数字资产在流通过程中的拥有者的历史记录;

4、c-tree的叶节点的父节点记录二元信息:其子节点的数字资产编号,左右子节点的组合信息的哈希值;

5、c-tree的非叶节点的父节点记录三元信息:其子节点的最小数字资产编号,其子节点的最大数字资产编号,左右子节点的组合信息的哈希值;

6、c-tree的根节点记录三元信息:整个c-tree的最小数字资产编号,整个c-tree的最大数字资产编号,左右子节点的组合信息的哈希值;

7、c-tree的根节点的三元信息周期性地写入区块链系统。

其中,c-tree可以部署很多个,相互独立,平行处理,增加整个系统的处理能力,可支持海量用户的大量支付需求,使得本发明实施例的快速支付方法可扩展。

对于指定的数字资产,其c-tree证明包括以下按序排列的信息组合:

1、数字资产的编号,数字资产在流通过程中的拥有者的历史记录;

2、c-tree中对应于数字资产编号的叶节点的直接父节点的记录信息,以及直接父节点的兄弟节点的记录信息;

3、直接父节点设为当前节点;

4、按c-tree的树状结构,按序获得当前节点的父节点的记录信息,以及当前节点的的父节点的兄弟节点的记录信息;

5、重复以上过程,直至当前节点的父节点为c-tree的根节点;

6、c-tree根节点记录信息。

以下将举一具体例子来说明本实施例中一种基于区块链的可扩展快速方法的具体过程。

如图1所示,区块链101是一条公链或者联盟链。发行方1可以通过在区块链101里面部署一个智能合约102,实现对发行的数字资产的票面价值、数量、编号范围等进行定义。同时,发行方1在本地部署一个基于c-tree架构的数据库。发行方1通过周期性的操作103将c-tree的根节点信息写入区块链。同时发行方的数字资产以c-tree证明的方式发行给支付方,作为唯一有效的证明。同样地,其他发行方也可以通过类似的方式发行一种或多种数字资产。

如图2所示,c-tree是默克尔树的一个扩展实现。c-tree是一个排序树。c-tree的叶子节点有一个特殊处理。201显示的是一个左叶子节点的实例,代表数字资产的编号。203显示的是一个右叶子节点的实例,用于保存该数字资产的拥有者历史记录。所有的数字资产的拥有权初始化为发行方。202指代的是发行方的公钥。叶节点的直接父节点204包含至少二元信息:其子节点所代表的数字资产的编号,以及对数字资产的编号与拥有者历史记录的组合的哈希。节点204的父节点205包含至少三元信息:其子节点所代表的数字资产的编号最小值,其子节点所代表的数字资产的编号最大值,以及子节点信息组合的哈希。与此类推,所有非叶节点的父节点都包含三元信息。206指代的是c-tree的根信息,在图1中的103操作就是将c-tree的根信息周期性地写入区块链。

c-tree证明是用来表示一个数字资产存在且唯一的证明。图2中的黑色部分207是一个数字资产的c-tree证明的实例。

在线情况下数字资产支付如图3所示,其中,用户甲即为支付方,用户乙为接收方。发行方维护一个用户接口以及内部的一个或多个c-tree。用户甲可以通过兑换或购买的用户甲通过向发行方的用户节点递交一个合适的获取token请求,至少包含用户甲的公钥信息,发行方验证有效后,从c-tree中尚未分配的数字资产中签发相应数量的数字资产的信息,返回给用户甲。这个数字资产的信息记录包括至少:该数字资产在该c-tree中的编号,一个c-tree证明,以及发行方私钥签名的支付信息。这样,该数字资产的当前所有者即为用户甲。

当用户甲需要将该数字资产支付给用户乙时,用户甲用自己的私钥对支付信息进行签名,并将签名、支付信息递交到发行方的用户接口。发行方检测签名有效性,如果有效,发行方更新c-tree中的该数字资产的拥有权历史,将签名、支付信息添加到原拥有权历史中。用户乙可以相应地访问发行方的用户接口,请求该数字资产的新的证明。发行方的用户接口验证用户乙是否为当前的合法拥有者,如果正确,将该数字资产的新的c-tree证明返回给用户乙。这样就实现了数字资产的在线支付过程。

数字资产的离线支付功能如图4所示,其中,用户甲即为支付方,用户乙为接收方。当用户甲需要向用户乙进行离线支付时,用户甲用自己的私钥对支付信息进行签名,并将当前数字资产的c-tree证明与签名信息线下交付给用户乙。用户乙可以在后续的适当时候,向发行方的用户接口递交数字资产的在线请求。发行方验证用户乙递交的数字资产的c-tree证明、用户甲的签名、支付信息的有效性,如果有效,发行方添加新的支付信息到数字资产的拥有权历史中,并将新的c-tree证明返回给用户乙。

需要解释的是,用户乙可以选择连续的离线支付功能给用户丙,只要用户乙正确地对新的支付信息进行签名。此时,用户乙成为支付方,用户丙为接收方。这个连续的离线支付过程可以任意持续,直至最后一个用户选择向发行方的用户接口递交在线请求,并获得新的c-tree证明。本发明实施例的另外一个离线支付功能是,某个数字资产的拥有者用户甲(即支付方),可以设定一个开放的支付信息。该开放的支付信息不设定接受方。用户甲可以用自己的私钥对该开放支付信息进行正确地签名。用户甲可以将该数字资产的c-tree证明、用户甲的签名、开放支付信息发给任意接受方,让接受方获得该数字资产的拥有权。

接受方在有网络连接的条件下,通过发行方提供的用户接口,向数字资产递交一个申明,申明至少包括第三方的公钥;

申明在设定的有效期内有效,在有效期内数字资产不接受其他的申明;

申明如果有效,第三方获得该申明的c-tree证明;

第三方,通过发行方提供的用户接口,递交支付方a的有效开放支付信息,以及支付方a所拥有的数字资产的c-tree证明;

发行方验证支付方a的数字资产的合法拥有权以及开放支付信息的签名有效性,如果验证通过,将开放支付信息以及申明信息添加到数字资产的拥有权记录中,申明的第三方获得一个数字资产的的拥有权的c-tree证明。

以下将解释以下离线支付及多次离线支付的过程,以便更清楚的理解。接受方b获得支付方a的有效支付信息p1,以及支付方a所拥有的数字资产的c-tree证明之后,可以在离线的情况下,支付给第三方c,具体过程包括:

接受方b构建一个新的支付信息p2,新的支付信息p2包含第三方c的公钥,以及当前接受方b的合法签名;

接受方b将获得的支付方a的支付信息p1与新的支付信息p2串联,形成一个有效的支付信息组合pc;

接受方b将有效的支付信息组合pc,以及支付方a所拥有的数字资产的c-tree证明,直接递交给第三方c;

第三方c可以持续这样的离线支付过程,直至最后一个接受方e,在有网络连接的条件下,通过发行方提供的用户接口,递交有效支付信息组合,以及支付方a所拥有的数字资产的c-tree证明;

发行方验证支付方a的数字资产的合法拥有权以及支付信息组合的签名有效性,如果验证通过,将支付信息组合添加到数字资产的拥有权记录中,最后一个接受方e获得一个数字资产的的拥有权的c-tree证明。

为了实现数字资产的信息轻量化,数字资产的拥有权记录在达到以下条件之一(拥有权记录中的交易次数超过设定值、拥有权记录的信息量超过设定值)的情况下,发行方可以关闭数字资产在当前c-tree中的记录,在新的同价c-tree中给最后一个拥有者一个新的等价的数字资产。

本发明的优点是采用可确定唯一性的c-tree实现对数字资产的拥有权的确认,实现链下交易以及链上确认。本发明可以同时支持在线支付以及离线支付功能。同时,在同一个区块链系统上,可以实现对多个发行方以及多种数字资产的支持,从而实现对海量用户的大量交易处理的支持。

实施例二

本发明的另一较佳实施例提供了一种基于区块链的可扩展快速支付系统,包括:

请求模块,用于支付方向发行方的用户接口发送获取token请求;

验证模块,用于发行方收到支付方发送的获取token请求后,验证支付方的公钥信息是否有效;

签发模块,用于验证有效后,发行方签发相应数量数字资产的信息,并返回给支付方,数字资产的信息包括数字资产的c-tree证明;

签名模块,用于支付方创建一个支付信息,至少包括接收方的信息、以及使用支付方的私钥对接收方的公钥的签名;

支付模块,用于支付方将数字资产的c-tree证明和已签名的支付信息交付给接收方。

进一步地,支付模块,具体包括:

第一递交单元,用于在有网络连接的情况下,支付方向发行方的用户接口递交支付请求;

第一验证单元,用于用户接口接收到支付请求后,验证支付方的数字资产的合法拥有权和支付信息的签名有效性;

第一支付单元,用于验证通过后,发行方将交易信息添加到数字资产的拥有权记录中,并将数字资产的新c-tree证明发送给接收方。

进一步地,支付模块,具体包括:

第二支付单元,用于在离线的情况下,支付方将已签名的支付信息和数字资产的c-tree证明直接发送给接收方;

第二递交单元,用于接收方在有网络的情况下,通过发行方提供的用户接口,递交支付方的已签名的支付信息,以及支付方的数字资产的c-tree证明;

第二验证单元,用于发行方验证支付方的数字资产的合法拥有权以及支付信息的签名有效性,验证通过后,将支付信息添加到数字资产的拥有权记录中,一个数字资产的拥有权的c-tree证明发送给接收方。

进一步地,支付方可以设定一个开放的支付信息,开放的支付信息不设定指定的接收方,支付方可以将数字资产的c-tree证明、支付方的签名、开放的支付信息发给任意接收方。

支持本实施例的一种基于区块链的可扩展快速支付系统的装置,包括:

一条支持多个发行数字资产的发行方的区块链系统由多个网络服务节点组成,每个网络服务节点包含网络接口、存储器、和耦合网络接口和存储器的处理器,其中,处理器配置为:

接受发行方递交的多个c-tree的根节点信息,通过设定的节点的共识过程记录在存储器中;

处理器配置为:

按照c-tree的结构逻辑构建、存储、更新、删除多个c-tree实例。

每个发行方维护多个按照c-tree结构设置的数据库服务节点。

本实施例是为了实现实施例一所述的一种基于区块链的可扩展快速支付方法,其实现过程如实施例一,此处将不再赘述。

实施例三

本发明实施例三提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现上述任一项的方法。

该实施例的计算机设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如支付程序。所述处理器执行所述计算机程序时实现上述各个组网方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机设备中的执行过程。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。

所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器可以是所述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。所述存储器也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器还可以既包括所述计算机设备的内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机程序以及所述计算机设备所需的其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。

本发明实施例还提供了一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序使计算机执行时实现上述任一项所述的一种基于区块链的可扩展快速支付方法。

上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1