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

交易凭证的生成、验证及存储方法、装置、设备和系统

文献发布时间:2023-06-19 11:39:06


交易凭证的生成、验证及存储方法、装置、设备和系统

技术领域

本发明涉及计算机技术领域,尤其涉及一种交易凭证的生成、验证及存储方法、装置、设备和系统。

背景技术

现有的数字货币交易中,收款方与付款方进行的交易中没有支付证明,产生纠纷时无法追查,同时由于传输过程中数据很有可能被中间人劫持或伪造,数字货币很有可能被盗取,容易导致在传输过程中信息外泄。此外,无论是收款方和付款方,大多数都是采用数组的方式对交易记录数据进行固定储存,导致对于每笔交易的详细内容的存储和读取效率较为低下。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:交易中没有支付证明,交易无法追溯,且无法保证交易的安全性,并且交易数据的读取和存储效率低下,交易效率低,用户体验差。

发明内容

有鉴于此,本发明实施例提供一种交易凭证的生成方法、验证方法、存储方法和相关装置、付款设备、收款设备以及交易系统,能够为交易提供支付证明,并使得交易可追溯,还可保证交易的安全性,提高交易数据的读取和存储效率,提高交易效率和用户体验。

为实现上述目的,根据本发明实施例的一个方面,提供了一种交易凭证的生成方法。

一种交易凭证的生成方法,包括:响应于接收到的交易请求,获取数字货币的链式结构数据,所述链式结构数据包括第一币串;基于所述链式结构数据,生成与本次交易的面额对应的交易凭证,所述交易凭证包括所对应面额的第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息。

可选地,所述链式结构数据还包括第一子链,所述第一子链包括所述第一币串的历史交易信息,所述第二子链还包括所述第一子链。

可选地,所述第一币串的面额大于所述第二币串的面额;所述基于所述链式结构数据,生成与本次交易的面额对应的交易凭证,包括:基于所述链式结构数据,生成两个或两个以上的第一链式结构数据,所述第一链式结构数据包括所述第一子链,且至少一个所述第一链式结构数据包括所述第二币串;根据包括所述第二币串的所述第一链式结构数据,以及所述第二币串的本次交易信息,生成所述交易凭证。

可选地,所述根据包括所述第二币串的所述第一链式结构数据,以及所述第二币串的本次交易信息,生成所述交易凭证,包括:将包括所述第二币串的所述第一链式结构数据中的所述第一子链与基于所述第二币串的本次交易信息生成的链式数据连接,得到所述第二子链;对所述第二子链进行签名,并根据所述第二币串和签名后的所述第二子链,生成所述交易凭证。

可选地,所述第一币串与所述第二币串为同一币串;基于所述链式结构数据,生成与本次交易的面额对应的交易凭证,包括:将所述链式结构数据中的所述第一子链与基于所述第二币串的本次交易信息生成的链式数据连接,得到所述第二子链;对所述第二子链签名,并根据所述第二币串和签名后的所述第二子链,生成所述交易凭证。

可选地,生成所述交易凭证之后,包括:将用于生成所述交易凭证的所述链式结构数据,从所在的链式存储结构中删除。

可选地,所述链式存储结构为链表,通过遍历所述链表获取所述链式结构数据。

可选地,生成的所述交易凭证的数量为多个,每个所述交易凭证基于一个所述链式结构数据生成,各所述链式结构数据的所述第一币串分别有各自的面额,该多个所述交易凭证对应的面额之和等于本次交易的数字货币总金额;所述方法还包括:根据多个所述交易凭证生成数据链形式的交易凭证链。

可选地,所述生成与本次交易的面额对应的交易凭证之后,包括:利用第一随机数和第二随机数进行哈希运算,得到会话密钥;利用所述会话密钥对所述交易凭证加密,并将加密的所述交易凭证发送到收款设备。

根据本发明实施例的另一方面,提供了一种交易凭证的验证方法。

一种交易凭证的验证方法,包括:接收付款设备发送的交易凭证,所述交易凭证与本次交易的面额相对应;从所述交易凭证中得到所对应面额的第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息;分别对所述第二币串和所述第二子链进行验证,以验证所述交易凭证。

可选地,所述分别对所述第二币串和所述第二子链进行验证,包括:分别验证所述第二币串的签名和所述第二子链的签名的合法性。

可选地,验证所述第二币串的签名的合法性包括:验证所述第二币串的签名为由中央银行数字货币系统和运营机构数字货币系统生成的二级签名;验证所述第二子链的签名的合法性包括:验证所述第二子链的签名为所述付款设备对应的付款方签名。

可选地,所述接收付款设备发送的交易凭证,包括:接收所述付款设备发送的数据链形式的交易凭证链,所述交易凭证链包括多个所述交易凭证,该多个所述交易凭证对应的面额之和等于本次交易的数字货币总金额;所述从所述交易凭证中得到所对应面额的第二币串和第二子链,包括:由所述交易凭证链得到多个所述交易凭证,从每一所述交易凭证中得到对应面额的所述第二币串和所述第二子链。

根据本发明实施例的又一方面,提供了一种交易凭证的存储方法。

一种交易凭证的存储方法,包括:获取收到的付款设备发送的交易凭证,所述交易凭证包括第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息;将所述交易凭证作为数字货币的链式结构数据,存储到链式存储结构中。

可选地,所述交易凭证的数量为一个;所述将所述交易凭证作为数字货币的链式结构数据,存储到链式存储结构中,包括:将所述交易凭证插入到所述链式存储结构的一个节点的数据区域,该节点还包括凭证区域,所述凭证区域用于存储该节点的下一节点的地址。

可选地,所述交易凭证的数量为多个,且该多个所述交易凭证构成数据链形式的交易凭证链;所述将所述交易凭证作为数字货币的链式结构数据,存储到链式存储结构中,包括:将所述交易凭证链的多个所述交易凭证,按照在所述交易凭证链中的顺序插入到所述链式存储结构的多个节点的数据区域,每个节点还包括凭证区域,所述凭证区域用于存储对应的节点的下一节点的地址。

可选地,所述链式存储结构为链表。

可选地,所述链式存储结构存储于本地SE(Secure Element,安全单元)芯片中。

根据本发明实施例的又一方面,提供了一种交易凭证的生成装置。

一种交易凭证的生成装置,包括:链式结构数据获取模块,用于响应于接收到的交易请求,获取数字货币的链式结构数据,所述链式结构数据包括第一币串;交易凭证生成模块,用于基于所述链式结构数据,生成与本次交易的面额对应的交易凭证,所述交易凭证包括所对应面额的第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息。

可选地,所述链式结构数据还包括第一子链,所述第一子链包括所述第一币串的历史交易信息,所述第二子链还包括所述第一子链。

可选地,所述第一币串的面额大于所述第二币串的面额;所述交易凭证生成模块还用于:基于所述链式结构数据,生成两个或两个以上的第一链式结构数据,所述第一链式结构数据包括所述第一子链,且至少一个所述第一链式结构数据包括所述第二币串;根据包括所述第二币串的所述第一链式结构数据,以及所述第二币串的本次交易信息,生成所述交易凭证。

可选地,所述交易凭证生成模块还用于:将包括所述第二币串的所述第一链式结构数据中的所述第一子链与基于所述第二币串的本次交易信息生成的链式数据连接,得到所述第二子链;对所述第二子链进行签名,并根据所述第二币串和签名后的所述第二子链,生成所述交易凭证。

可选地,所述第一币串与所述第二币串为同一币串;所述交易凭证生成模块还用于:将所述链式结构数据中的所述第一子链与基于所述第二币串的本次交易信息生成的链式数据连接,得到所述第二子链;对所述第二子链签名,并根据所述第二币串和签名后的所述第二子链,生成所述交易凭证。

可选地,还包括删除模块,用于:将用于生成所述交易凭证的所述链式结构数据,从所在的链式存储结构中删除。

可选地,所述链式存储结构为链表,通过遍历所述链表获取所述链式结构数据。

可选地,生成的所述交易凭证的数量为多个,每个所述交易凭证基于一个所述链式结构数据生成,各所述链式结构数据的所述第一币串分别有各自的面额,该多个所述交易凭证对应的面额之和等于本次交易的数字货币总金额;所述交易凭证生成模块还用于:根据多个所述交易凭证生成数据链形式的交易凭证链。

可选地,还包括交易凭证发送模块:用于利用第一随机数和第二随机数进行哈希运算,得到会话密钥;利用所述会话密钥对所述交易凭证加密,并将加密的所述交易凭证发送到收款设备。

根据本发明实施例的又一方面,提供了一种交易凭证的验证装置。

一种交易凭证的验证装置,包括:交易凭证接收模块,用于接收付款设备发送的交易凭证,所述交易凭证与本次交易的面额相对应;数据提取模块,用于从所述交易凭证中得到所对应面额的第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息;数据验证模块,用于分别对所述第二币串和所述第二子链进行验证,以验证所述交易凭证。

可选地,所述数据验证模块还用于:分别验证所述第二币串的签名和所述第二子链的签名的合法性。

可选地,所述数据验证模块还用于:验证所述第二币串的签名为由中央银行数字货币系统和运营机构数字货币系统生成的二级签名,以及,验证所述第二子链的签名为所述付款设备对应的付款方签名。

可选地,所述交易凭证接收模块还用于:接收所述付款设备发送的数据链形式的交易凭证链,所述交易凭证链包括多个所述交易凭证,该多个所述交易凭证对应的面额之和等于本次交易的数字货币总金额;所述数据提取模块还用于:由所述交易凭证链得到多个所述交易凭证,从每一所述交易凭证中得到对应面额的所述第二币串和所述第二子链。

根据本发明实施例的又一方面,提供了一种交易凭证的存储装置。

一种交易凭证的存储装置,包括:交易凭证获取模块,用于获取收到的付款设备发送的交易凭证,所述交易凭证包括第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息;数据存储模块,用于将所述交易凭证作为数字货币的链式结构数据,存储到链式存储结构中。

可选地,所述交易凭证的数量为一个;所述数据存储模块还用于:将所述交易凭证插入到所述链式存储结构的一个节点的数据区域,该节点还包括凭证区域,所述凭证区域用于存储该节点的下一节点的地址。

可选地,所述交易凭证的数量为多个,且该多个所述交易凭证构成数据链形式的交易凭证链;所述数据存储模块还用于:将所述交易凭证链的多个所述交易凭证,按照在所述交易凭证链中的顺序插入到所述链式存储结构的多个节点的数据区域,每个节点还包括凭证区域,所述凭证区域用于存储对应的节点的下一节点的地址。

可选地,所述链式存储结构为链表。

可选地,所述链式存储结构存储于本地SE芯片中。

根据本发明实施例的又一方面,提供了一种付款设备。

一种付款设备,包括:本发明实施例的交易凭证的生成装置。

根据本发明实施例的又一方面,提供了一种收款设备。

一种收款设备,包括:本发明实施例的交易凭证的验证装置、本发明实施例的的交易凭证的存储装置。

根据本发明实施例的又一方面,提供了一种交易系统。

一种交易系统,包括:本发明实施例的付款设备、本发明实施例的收款设备。

根据本发明实施例的又一方面,提供了一种电子设备。

一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的交易凭证的生成方法、验证方法、或存储方法。

根据本发明实施例的又一方面,提供了一种计算机可读介质。

一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的交易凭证的生成方法、验证方法、或存储方法。

上述发明中的一个实施例具有如下优点或有益效果:响应于接收到的交易请求,获取数字货币的链式结构数据,该链式结构数据包括第一币串,基于链式结构数据,生成与本次交易的面额对应的交易凭证,交易凭证包括所对应面额的第二币串和第二子链,第二子链包括第二币串的本次交易信息。能够为交易提供支付证明,并使得交易可追溯,本发明另一个实施例提供的交易凭证的验证方法可保证交易的安全性,本发明又一个实施例的交易凭证的存储方法能够提高交易数据的读取和存储效率,本发明各实施例能够提高交易效率和用户体验。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明一个实施例的交易凭证的生成方法的主要步骤示意图;

图2是根据本发明一个实施例的链式存储结构的示意图;

图3是根据本发明一个实施例的交易凭证的验证方法的主要步骤示意图;

图4是根据本发明一个实施例的交易凭证的存储方法的主要步骤示意图;

图5是根据本发明一个实施例的交易流程示意图;

图6是根据本发明一个实施例的交易凭证的生成装置的主要模块示意图;

图7是根据本发明一个实施例的交易凭证的验证装置的主要模块示意图;

图8是根据本发明一个实施例的交易凭证的存储装置的主要模块示意图;

图9是根据本发明一个实施例的付款设备的主要构成示意图;

图10是根据本发明一个实施例的收款设备的主要构成示意图;

图11是根据本发明一个实施例的交易系统的主要构成示意图;

图12是本发明实施例可以应用于其中的示例性系统架构图;

图13是适于用来实现本发明实施例的终端设备的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明一个实施例的交易凭证的生成方法的主要步骤示意图。

如图1所示,本发明一个实施例的交易凭证的生成方法主要包括如下的步骤S101至步骤S102。

步骤S101:响应于接收到的交易请求,获取数字货币的链式结构数据,链式结构数据包括第一币串;

数字货币的链式结构数据存储在本地的链式存储结构中。可以根据交易请求中指示的本次交易的数字货币总金额,从链式存储结构中查找并获取一个或多个面额的数字货币的链式结构数据,获取的每个面额的数字货币的链式结构数据均包括代表数字货币的币串,该币串称为第一币串,获取的各链式结构数据的面额之和应大于或等于本次交易的数字货币总金额。

链式存储结构中存储的数字货币的链式结构数据可以只包括第一币串,也可以包括第一币串和第一子链,第一子链包括第一币串的历史交易信息。

本地交易信息或历史交易信息均可以包括但不限于交易双方的信息、交易的币串的面额的信息,交易索引,付款公钥等等。

步骤S102:基于获取的链式结构数据,生成与本次交易的面额对应的交易凭证,交易凭证包括所对应面额的第二币串和第二子链,第二子链包括第二币串的本次交易信息。

本次交易的面额即本次交易的币串的面额,例如本次交易的数字货币总金额为10元,获取的各数字货币的链式结构数据分别包括2元、3元、5元的币串,那么本次交易的币串的面额即包括三种:2元、3元、5元。本次交易的币串称为第二币串。对应每一面额的链式结构数据,均可按照步骤S102来生成对应面额的交易凭证,对于本例,即分别生成对应2元、3元、5元的三个交易凭证,每个交易凭证至少包括对应面额的币串和对应面额币串的本次交易信息。

第二子链还可以包括第一子链,即,生成的交易凭证还可以包括与对应面额币串相关的历史交易信息。

在一个实施例中,第一币串的面额可以大于第二币串的面额。在第一币串的面额大于第二币串的面额的情况下,基于链式结构数据,需要生成与本次交易的面额对应的交易凭证,具体可以包括:基于链式结构数据,生成两个或两个以上的第一链式结构数据,第一链式结构数据包括第一子链,且至少一个第一链式结构数据包括第二币串;根据包括第二币串的第一链式结构数据,以及第二币串的本次交易信息,生成交易凭证。例如,本次交易的数字货币总金额为3元,获取的数字货币的链式结构数据对应5元面额,那么可以根据该链式结构数据生成对应2元、3元的两个第一链式结构数据,两个第一链式结构数据分别包括2元的币串和3元的币串,基于包括3元的币串(第二币串)的第一链式结构数据和该面额为3元的币串的本次交易信息,生成包括面额为3元的币串的交易凭证,已支付给收款设备。

对于不包括第二币串的第一链式结构数据,不参与本次交易,可以将其存储到本地的链式存储结构中,具体存储方法与下文介绍的交易凭证的存储方法相同,可参见下文实施例的介绍。

根据包括第二币串的第一链式结构数据,以及第二币串的本次交易信息,生成交易凭证,具体可以包括:将包括第二币串的第一链式结构数据中的第一子链与基于第二币串的本次交易信息生成的链式数据连接,得到第二子链;对第二子链进行签名,并根据第二币串和签名后的第二子链,生成交易凭证。对第二子链进行签名具体可以是添加付款方签名。

在一个实施例中,第一币串可以与第二币串为同一币串。在第一币串与第二币串为同一币串的情况下,基于链式结构数据,生成与本次交易的面额对应的交易凭证,具体可以包括:将链式结构数据中的第一子链与基于第二币串的本次交易信息生成的链式数据连接,得到第二子链;对第二子链签名,并根据第二币串和签名后的第二子链,生成交易凭证。

生成交易凭证之后,可将用于生成交易凭证的链式结构数据,从所在的链式存储结构中删除。

在一个实施例中,链式存储结构为链表,通过遍历链表获取链式结构数据。

本发明一个实施例的链式存储结构的示意图如图2所示,其中,凭证即交易凭证,next为指针用于执行下一个凭证的地址,data表示后续更多的凭证,NULL表示空地址。

在一个实施例中,生成的交易凭证的数量为多个,每个交易凭证基于一个链式结构数据生成,各链式结构数据的第一币串分别有各自的面额,不同链式结构数据的第一币串的面额可以相同或不同。该多个交易凭证对应的面额之和等于本次交易的数字货币总金额。

还可以根据多个交易凭证生成数据链形式的交易凭证链。

生成与本次交易的面额对应的交易凭证之后,可以利用第一随机数和第二随机数进行哈希运算,得到会话密钥,使用公钥对会话密钥加密后传输,利用会话密钥对交易凭证加密,并将加密的交易凭证发送到收款设备。

本发明实施例的交易凭证的生成方法可由付款设备执行,付款设备通过本发明实施例的方法生成交易凭证,然后将生成的交易凭证发送至收款设备进行交易,由于交易凭证中包括币串,交易过程即实现了付款设备将该币串支付给收款设备,在此过程中,支付设备和收款设备可以在离线状态下完成,即均不连接互联网,二者可通过近距通信(例如NFC、蓝牙等)等进行交互。本发明实施例的交易凭证的生成方法在币值不够、币值需要拆分等情形下,在收付款设备端都可以自动将大面额转换成小面额的数字货币,且支付的数字货币是交易凭证的形式,其链式结构中记录了数字货币的币串对应的历史交易信息和本次交易信息,从而既能够为交易提供交易证明,又使得交易可追溯。此外,支付设备还可以根据交易的需要,基于多个面额的数字货币的币串生成多个凭证,构成交易凭证链发送至收款设备,提高了多币离线付款的效率。

图3是根据本发明一个实施例的交易凭证的验证方法的主要步骤示意图。

如图3所示,本发明一个实施例的交易凭证的验证方法包括如下的步骤S301至步骤S303。

步骤S301:接收付款设备发送的交易凭证,交易凭证与本次交易的面额相对应;

步骤S302:从交易凭证中得到所对应面额的第二币串和第二子链,第二子链包括第二币串的本次交易信息;

步骤S303:分别对第二币串和第二子链进行解密后验证签名,以验证交易凭证。

接收到的交易凭证可以为一个或多个,在收到多个交易凭证的情况下,对于每一交易凭证均可按照上述S302、S303的步骤来实现交易凭证的验证。

本发明实施例的交易凭证的验证方法可由收款设备执行。由于交易凭证通常以密文形式发送,接收付款设备发送的交易凭证后,还需要先对交易凭证进行解密。具体地,付款设备与收款设备可以通过协商确定会话密钥,付款设备通过会话密钥加密交易凭证,收款设备通相应的会话密钥解密交易凭证。付款设备可以利用收款设备提供的公钥对会话密钥进行加密,以传输给收款设备,收款设备收到加密的会话密钥后,用自己的私钥解密,得到会话密钥的明文,以用于解密交易凭证密文。

分别对第二币串和第二子链进行验证,可以包括:分别验证第二币串的签名和第二子链的签名的合法性。

在一个实施例中,验证第二币串的签名的合法性包括:验证第二币串的签名为由中央银行数字货币系统和运营机构数字货币系统(例如商业银行数字货币系统)生成的二级签名;验证第二子链的签名的合法性包括:验证第二子链的签名为付款设备对应的付款方签名。

在一个实施例中,接收付款设备发送的交易凭证,包括:接收付款设备发送的数据链形式的交易凭证链,交易凭证链包括多个交易凭证,该多个交易凭证对应的面额之和等于本次交易的数字货币总金额。

从交易凭证中得到所对应面额的第二币串和第二子链,可以包括:由交易凭证链得到多个交易凭证,从每一交易凭证中得到对应面额的第二币串和第二子链。

本发明实施例的交易凭证的验证方法实现了对链式数字货币的安全认证,保证交易的安全性。

图4是根据本发明一个实施例的交易凭证的存储方法的主要步骤示意图。

如图4所示,本发明一个实施例的交易凭证的存储方法主要包括如下的步骤S401至步骤S402。

步骤S401:获取收到的付款设备发送的交易凭证,交易凭证包括第二币串和第二子链,第二子链包括第二币串的本次交易信息;

其中,该获取到的交易凭证可以是已验证通过的凭证,具体可以从本地的交易凭证的验证装置(参见对交易凭证的验证装置700的介绍)获取该交易凭证,本地的交易凭证的验证装置用于执行上文介绍的本发明实施例的交易凭证的验证方法。

步骤S402:将交易凭证作为数字货币的链式结构数据,存储到链式存储结构中。

在一个实施例中,交易凭证的数量为一个。将交易凭证作为数字货币的链式结构数据,存储到链式存储结构中,可以包括:将交易凭证插入到链式存储结构的一个节点的数据区域,该节点还包括凭证区域,凭证区域用于存储该节点的下一节点的地址。

在一个实施例中,交易凭证的数量为多个,且该多个交易凭证构成数据链形式的交易凭证链。将交易凭证作为数字货币的链式结构数据,存储到链式存储结构中,可以包括:将交易凭证链的多个交易凭证,按照在交易凭证链中的顺序插入到链式存储结构的多个节点的数据区域,每个节点还包括凭证区域,凭证区域用于存储对应的节点的下一节点的地址。

在一个实施例中,链式存储结构为链表。

在一个实施例中,链式存储结构存储于本地SE芯片中。

本发明实施例的交易凭证的存储方法由收款设备执行,通过本发明实施例的交易凭证的存储方法,能够提高数据的存取效率,解决当前数字货币交易的低效率、不同币串的快速支付问题。此外,本发明实施例的数字货币的链式结构数据通过本发明实施例的存储方法分散存储在SE等介质上,可便于存储和验证,并且可以随时将旧的数据删除,从而减少在运行过程中对存储空间的需求。

本领域技术人员可以理解的是,上述实施例的付款设备、收款设备相对于某个具体设备而言,是动态定义的,即某个设备W当接收另一设备支付的交易凭证时,该设备W即为收款设备,而该设备W在向另外的设备支付交易凭证时,该设备W又称为付款设备。

图5是根据本发明一个实施例的交易流程示意图。

如图5所示,本发明一个实施例的交易流程包括如下的步骤S501至步骤S503。

步骤S501:付款设备生成支付凭证,将生成的支付凭证发送至收款设备;

步骤S502:收款设备对收到的支付凭证进行验证,并确定该支付凭证验证通过;

其中,支付凭证即本发明实施例的交易凭证。支付凭证验证通过即表示该支付凭证合法,则执行步骤S503;若验证未通过,表示该支付凭证不合法,则报错,以拒绝交易。

步骤S503:收款设备将验证通过的支付凭证存入链式存储结构。

其中,收款设备可以将支付凭证转换为自己的余额凭证后,再将余额凭证存入链式存储结构。支付凭证转换为余额凭证的具体方法是将支付凭证上预设的标志(通常设置在首字节上)修改为本地预设的另一个标志,转换的目的是在本地区分收到的支付凭证和已存储到链式存储结构的支付凭证,另外通过改变标志可以提高凭证的插入和删除等操作效率。

下面详细介绍本发明实施例的交易流程。

付款设备将可信机构签发的个人证书存储在本地SE存储介质(例如付款设备中的SE芯片)中,用于后续识别用户身份,在离线交易过程,付款设备和收款设备首先在通过机构证书来验证双方的个人证书是否合法有效,采取双向认证,若验证失败,拒绝交易,当验证成功后则进行下一步交易。

在验证双方的个人证书合法有效的情况下,付款设备通过临时生成的真随机数(即第一随机数)和Fact随机数(即第二随机数)组成的数字货币会话密钥因子,用于生成会话密钥,具体地,将该两种作为数字货币会话密钥因子的随机数进行哈希运算,来得到会话密钥。生成的会话密钥可以采用收款设备提供的公钥进行加密,并传递给收款设备。付款设备生成支付凭证时,根据当前支付的币串(即第二币串)和包括该币串在本次支付中的交易信息的子链(即第二子链)来生成支付凭证,该子链中还可以包括与该币串相关的历史交易信息。例如,B作为付款设备,当前向收款设备C支付5元面额的币串,该币串是在本次交易之前由A作为付款设备支付给B的,那么,该数字货币的链式结构数据中包括该5元面额的币串(即第一币串),以及记录由A支付给B的该币串的历史交易信息的子链(即第一子链),当前的付款设备B基于本次交易中将该5元面额的币串由B支付给C的交易信息生成链式数据,将该链式数据连接到第一子链上,得到包括该5元面额的币串、该币串由A支付给B的历史交易信息、该币串由B支付给C的本次交易信息的支付凭证,其中,该币串由A支付给B的历史交易信息、该币串由B支付给C的本次交易信息等构成的链式数据即第二子链。币串通常由央行、运营机构进行签名,即二级签名。付款设备还可利用私钥对第二子链进行签名,基于二级签名的币串和签名后的第二子链生成支付凭证。付款设备生成支付凭证后,采用会话密钥对支付凭证进行加密,并计算生成包括加密的支付凭证的报文MAC发送至收款设备。

收款设备验证收到的报文MAC,得到加密的支付凭证,使用协商的会话密钥解密并验证支付凭证,以得到支付凭证明文,在本地验证支付凭证中数字货币币串的真实性,如验证失败,则提示错误,并中止流程;如验证成功,收款设备更新交易记录,其中,收款设备在接收到支付凭证之后对其中币串(即第二币串)的签名(具体可包括央行签名、运营机构签名)以及子链(即第二子链)的签名(具体可包括付款方签名)进行验证,若签名验证通过,则支付凭证具备合法性。本发明实施例的数字货币凭证(即支付凭证)的传递,使得对于数字货币币串通过构造交易链条的方式,来实现部分金额价值转移时的可分性,并可通过NFC等通信方式进行传递,实现了可转移性,数字货币凭证中包含交易信息,实现了交易可追溯可追踪性,并可储存在保障硬件钱包介质、SE芯片中,具有不可篡改性,不可伪造性,且通过用户签名(即支付方签名)实现数字货币币串传递的不可抵赖性。本发明实施例通过对生成的数字货币凭证进行验证,降低了数字货币在流通过程中被篡改、伪造的风险,提高了数字货币的流通安全性。

收款设备验证支付凭证成功(即支付凭证合法)后,将支付凭证按照自定义链表(即链式存储结构)的形式进行储存,链式存储结构中除了数据区域外,还有凭证区域,凭证区域存储了当前节点的下一节点的地址。链式存储结构中有两个节点比较特殊,即第一个节点和最后一个节点。在链式存储结构中,第一个节点可称为凭证头结点,最后一个节点可称为凭证尾节点。凭证头节点记录链表的起始地址,基于该起始地址,可遍历整个链表。凭证尾节点的后继指针或者引用不是指向一个具体的节点,而是指向一个空地址(NULL),从而表示该节点为链表的尾节点。

本发明实施例通过链式存储结构存储支付凭证,能够提高操作的效率。例如,当收款方作为付款方再向第三方付款时,该付款方需要将从收款方处收到的支付凭证付给该第三方,由于本发明实施例的链表也支持数据的插入、查找、删除,从而提高了操作效率。而现有技术大都是采用数组的方式,固定储存交易记录数据,对于每笔交易的详细内容的存储和读取效率较为低下,因为数组在进行数据的插入,删除操作时,为了保证内存数据的连续性,往往需要做大量的数据搬移工作,所以时间复杂度是O(n)。而本发明实施例在链表中插入或删除数据时,因为链表结构中的节点并不需要连续的存储空间,所以在链表中进行数据的插入和删除时并不需要搬移节点。对于存储支付凭证的链表的删除和插入操作,只需要调整相邻节点的后继指针即可,所以对应的时间复杂度是O(1)。这样有效地提高了多币离线付款的的效率。

图6是根据本发明一个实施例的交易凭证的生成装置的主要模块示意图。

如图6所示,本发明一个实施例的交易凭证的生成装置600主要包括:链式结构数据获取模块601、交易凭证生成模块602。

链式结构数据获取模块601,用于响应于接收到的交易请求,获取数字货币的链式结构数据,链式结构数据包括第一币串;

交易凭证生成模块602,用于基于链式结构数据,生成与本次交易的面额对应的交易凭证,交易凭证包括所对应面额的第二币串和第二子链,第二子链包括第二币串的本次交易信息。

链式结构数据还可以包括第一子链,第一子链包括第一币串的历史交易信息。

第二子链还可以包括第一子链。

在一个实施例中,第一币串的面额大于第二币串的面额。交易凭证生成模块602具体用于:基于链式结构数据,生成两个或两个以上的第一链式结构数据,第一链式结构数据包括第一子链,且至少一个第一链式结构数据包括第二币串;根据包括所述第二币串的所述第一链式结构数据,以及所述第二币串的本次交易信息,生成所述交易凭证。

交易凭证生成模块602可以将包括所述第二币串的所述第一链式结构数据中的所述第一子链与基于第二币串的本次交易信息生成的链式数据连接,得到第二子链;对第二子链进行签名,并根据第二币串和签名后的第二子链,生成交易凭证。

在一个实施例中,第一币串与第二币串为同一币串。交易凭证生成模块602具体用于:将链式结构数据中的第一子链与基于第二币串的本次交易信息生成的链式数据连接,得到第二子链;对第二子链签名,并根据第二币串和签名后的第二子链,生成交易凭证。

交易凭证的生成装置600还可以包括删除模块,用于:将用于生成交易凭证的链式结构数据,从所在的链式存储结构中删除。

在一个实施例中,链式存储结构为链表,通过遍历链表获取链式结构数据。

在一个实施例中,生成的交易凭证的数量为多个,每个交易凭证基于一个链式结构数据生成,各链式结构数据的第一币串分别有各自的面额,该多个交易凭证对应的面额之和等于本次交易的数字货币总金额。

交易凭证生成模块602可以用于根据多个交易凭证生成数据链形式的交易凭证链。

交易凭证的生成装置600还可以包括交易凭证发送模块:用于利用第一随机数和第二随机数进行哈希运算,得到会话密钥;利用会话密钥对交易凭证加密,并将加密的交易凭证发送到收款设备。

图7是根据本发明一个实施例的交易凭证的验证装置的主要模块示意图。

本发明一个实施例的交易凭证的验证装置700主要包括:交易凭证接收模块701、数据提取模块702、数据验证模块703。

交易凭证接收模块701,用于接收付款设备发送的交易凭证,所述交易凭证与本次交易的面额相对应;

数据提取模块702,用于从所述交易凭证中得到所对应面额的第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息;

数据验证模块703,用于分别对所述第二币串和所述第二子链进行验证,以验证所述交易凭证。

数据验证模块703具体可以用于:分别验证所述第二币串的签名和所述第二子链的签名的合法性。

数据验证模块703具体可以验证所述第二币串的签名为由中央银行数字货币系统和运营机构数字货币系统生成的二级签名,以及,验证所述第二子链的签名为所述付款设备对应的付款方签名。

在一个实施例中,交易凭证接收模块701具体可以用于:接收所述付款设备发送的数据链形式的交易凭证链,所述交易凭证链包括多个所述交易凭证,该多个所述交易凭证对应的面额之和等于本次交易的数字货币总金额。

数据提取模块702具体可以用于:由所述交易凭证链得到多个所述交易凭证,从每一所述交易凭证中得到对应面额的所述第二币串和所述第二子链。

图8是根据本发明一个实施例的交易凭证的存储装置的主要模块示意图。

如图8所示本发明一个实施例的交易凭证的存储装置800主要包括:交易凭证获取模块801、数据存储模块802。

交易凭证获取模块801,用于获取收到的付款设备发送的交易凭证,交易凭证包括第二币串和第二子链,第二子链包括第二币串的本次交易信息;

数据存储模块802,用于将交易凭证作为数字货币的链式结构数据,存储到链式存储结构中。

在一个实施例中,交易凭证的数量为一个。数据存储模块802具体用于:将交易凭证插入到链式存储结构的一个节点的数据区域,该节点还包括凭证区域,凭证区域用于存储该节点的下一节点的地址。

在一个实施例中,交易凭证的数量为多个,且该多个交易凭证构成数据链形式的交易凭证链。数据存储模块802具体用于:将交易凭证链的多个交易凭证,按照在交易凭证链中的顺序插入到链式存储结构的多个节点的数据区域,每个节点还包括凭证区域,凭证区域用于存储对应的节点的下一节点的地址。

在一个实施例中,链式存储结构为链表。

在一个实施例中,链式存储结构存储于本地SE芯片中。

另外,在本发明实施例中交易凭证的生成装置、验证装置、存储装置的具体实施内容,在上面所述交易凭证的生成方法、验证方法、存储方法中已经详细说明了,故在此重复内容不再说明。

图9是根据本发明一个实施例的付款设备的主要构成示意图。

如图9所示,本发明一个实施例的付款设备900可以包括:交易凭证的生成装置600。

图10是根据本发明一个实施例的收款设备的主要构成示意图。

如图10所示,本发明一个实施例的收款设备1000主要包括:交易凭证的验证装置700、交易凭证的存储装置800。

图11是根据本发明一个实施例的交易系统的主要构成示意图。

如图11所示,本发明一个实施例的交易系统1100主要包括:付款设备900、收款设备1000。

图12示出了可以应用本发明实施例的交易凭证的生成方法、验证方法、存储方法或交易凭证的生成装置、验证装置、存储装置的示例性系统架构1200。

如图12所示,系统架构1200可以包括终端设备1201、1202、1203,网络1204和服务器1205。网络1204用以在终端设备1201、1202、1203和服务器1205之间提供通信链路的介质。网络1204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备1201、1202、1203通过网络1204与服务器1205交互,以接收或发送消息等。终端设备1201、1202、1203上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备1201、1202、1203可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。服务器1205可以是提供各种服务的服务器,例如对用户利用终端设备1201、1202、1203所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息--仅为示例)反馈给终端设备。

需要说明的是,本发明实施例所提供的交易凭证的生成方法、验证方法、存储方法一般由终端设备1201、1202、1203执行,相应地,交易凭证的生成装置、验证装置、存储装置一般设置于终端设备1201、1202、1203中。

应该理解,图12中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图13,其示出了适于用来实现本申请实施例的终端设备的计算机系统1300的结构示意图。图13示出的终端设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图13所示,计算机系统1300包括中央处理单元(CPU)1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。在RAM 1303中,还存储有系统1300操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。

以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括链式结构数据获取模块、交易凭证生成模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,链式结构数据获取模块还可以被描述为“用于响应于接收到的交易请求,获取数字货币的链式结构数据的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:响应于接收到的交易请求,获取数字货币的链式结构数据,所述链式结构数据包括第一币串;基于所述链式结构数据,生成与本次交易的面额对应的交易凭证,所述交易凭证包括所对应面额的第二币串和第二子链,所述第二子链包括所述第二币串的本次交易信息。

根据本发明实施例的技术方案,响应于接收到的交易请求,获取数字货币的链式结构数据,该链式结构数据包括第一币串,基于链式结构数据,生成与本次交易的面额对应的交易凭证,交易凭证包括所对应面额的第二币串和第二子链,第二子链包括第二币串的本次交易信息。能够为交易提供支付证明,并使得交易可追溯,本发明另一个实施例提供的交易凭证的验证方法可保证交易的安全性,本发明又一个实施例的交易凭证的存储方法能够提高交易数据的读取和存储效率,本发明各实施例能够提高交易效率和用户体验。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

相关技术
  • 交易凭证的生成、验证及存储方法、装置、设备和系统
  • 资产类证券型通证交易凭证的存储方法、装置和电子设备
技术分类

06120113006857