基于区块链的交易处理方法及装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的交易处理方法及装置、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,利用区块链技术来搭建去中心化系统,并在区块链的分布式数据库中收录各种执行程序进行自动执行,已在众多的领域中广泛的进行应用。
发明内容
本说明书还提出一种基于区块链的交易处理方法,应用于客户端,所述方法包括:
确定用户通过用户账户发起的交易中是否存在需要并发执行的多笔交易;
如果用户通过用户账户发起的交易中存在需要并发执行的多笔交易,为所述多笔交易添加相同的分组标识;
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备在受理所述客户端发布的交易后,并发执行具有相同分组标识的多笔交易。
可选的,所述需要并发执行的多笔交易,包括交易类型相同的多笔交易。
可选的,还包括:
如果用户通过用户账户发起的交易中存在所包含的多笔交易需要并发执行的多组交易,确定所述多组交易的执行顺序;
为所述多组交易分别添加指示所述多组交易的执行顺序的分组标识。
可选的,所述区块链中维护了与所述用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;
所述为所述多笔交易添加相同的分组标识,包括:
从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录,并将获取到的可用Nonce记录分别添加至所述多笔交易。
可选的,从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录之前,还包括:
响应于针对所述客户端的初始化指令,获取所述区块链中维护的所述Nonce列表,并将获取到的所述Nonce列表在所述客户端本地进行维护;
从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录,包括:
从所述客户端本地维护的所述Nonce列表中,为所述多笔交易分别获取分组标识相同的可用Nonce记录。
可选的,所述客户端本地维护的所述Nonce列表中的Nonce记录默认被标记为可用;
所述方法还包括:
在从所述客户端本地维护的所述Nonce列表中为所述交易获取到了可用Nonce记录之后,在所述Nonce列表中将所述可用Nonce记录标记为不可用。
可选的,还包括:
确定是否接收到所述节点设备返回的所述交易被受理的通知消息;
如果是,基于预设幅度对所述可用Nonce记录中的Nonce值进行单调递增,并在所述Nonce值单调递增之后,在所述Nonce列表中将所述可用Nonce记录重新标记为可用。
可选的,将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备在受理所述客户端发布的交易后,并发执行具有相同分组标识的多笔交易,包括:
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备将所述客户端发布的交易中的可用Nonce记录与所述Nonce列表中的Nonce记录进行匹配,并在所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配时,受理所述交易,以及并发执行已受理的交易中具有相同分组标识的多笔交易。
可选的,所述客户端为多线程客户端;所述Nonce列表中的Nonce记录的数量,指示所述用户账户的交易并发能力。
可选的,所述Nonce记录还包括:所述Nonce记录的索引标识。
本说明书还提出一种基于区块链的交易处理方法,应用于区块链中的节点设备,所述方法包括:
接收客户端发送的用户通过用户账户发起的交易;其中,所述交易被所述客户端添加了分组标识;
确定所述客户端发送的交易中是否存在分组标识相同的多笔交易;其中,所述相同的分组标识由客户端在确定所述多笔交易需要并发执行时添加;
如果是,在所述多笔交易被受理后并发执行所述多笔交易。
可选的,所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易;所述客户端为所述多组交易添加的分组标识指示所述多组交易的执行顺序;
所述方法还包括:
如果所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易,按照所述多组交易的分组标识所指示的执行顺序,顺序执行所述多组交易。
可选的,所述区块链维护了Nonce列表集合;所述Nonce列表集合包括与若干用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;所述客户端发送的交易中添加的分组标识,为所述客户端从与所述用户账户对应的Nonce列表中获取到的可用Nonce记录;
所述方法还包括:
将所述客户端发送的交易中添加的可用Nonce记录,与所述区块链中维护的与所述用户账户对应的Nonce列表中的Nonce记录进行匹配;
如果所述可用Nonce记录,与所述Nonce列表中的任一目标Nonce记录匹配,受理所述交易。
可选的,还包括:
如果所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配,基于预设幅度对所述目标Nonce记录的Nonce值进行单调递增;以及,
向所述客户端返回所述交易被受理的通知消息。
可选的,所述Nonce记录还包括:所述Nonce记录的索引标识。
本说说明书还提出一种基于区块链的交易处理装置,应用于客户端,所述方法包括:
第一确定模块,确定用户通过用户账户发起的交易中是否存在需要并发执行的多笔交易;
添加模块,如果用户通过用户账户发起的交易中存在需要并发执行的多笔交易,为所述多笔交易添加相同的分组标识;
发布模块,将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备在受理所述客户端发布的交易后,并发执行具有相同分组标识的多笔交易。
可选的,所述需要并发执行的多笔交易,包括交易类型相同的多笔交易。
可选的,所述添加模块进一步:
如果用户通过用户账户发起的交易中存在所包含的多笔交易需要并发执行的多组交易,确定所述多组交易的执行顺序;
为所述多组交易分别添加指示所述多组交易的执行顺序的分组标识。
可选的,所述区块链中维护了与所述用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;
所述添加模块:
从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录,并将获取到的可用Nonce记录分别添加至所述多笔交易。
可选的,所述添加模块进一步:
在从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录之前,响应于针对所述客户端的初始化指令,获取所述区块链中维护的所述Nonce列表,并将获取到的所述Nonce列表在所述客户端本地进行维护;
从所述客户端本地维护的所述Nonce列表中,为所述多笔交易分别获取分组标识相同的可用Nonce记录。
可选的,所述客户端本地维护的所述Nonce列表中的Nonce记录默认被标记为可用;
所述添加模块进一步:
在从所述客户端本地维护的所述Nonce列表中为所述交易获取到了可用Nonce记录之后,在所述Nonce列表中将所述可用Nonce记录标记为不可用。
可选的,所述添加模块进一步:
确定是否接收到所述节点设备返回的所述交易被受理的通知消息;
如果是,基于预设幅度对所述可用Nonce记录中的Nonce值进行单调递增,并在所述Nonce值单调递增之后,在所述Nonce列表中将所述可用Nonce记录重新标记为可用。
可选的,所述发布模块进一步:
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备将所述客户端发布的交易中的可用Nonce记录与所述Nonce列表中的Nonce记录进行匹配,并在所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配时,受理所述交易,以及并发执行已受理的交易中具有相同分组标识的多笔交易。
可选的,所述客户端为多线程客户端;所述Nonce列表中的Nonce记录的数量,指示所述用户账户的交易并发能力。
可选的,所述Nonce记录还包括:所述Nonce记录的索引标识。
本说明书还提出一种基于区块链的交易处理装置,应用于区块链中的节点设备,所述方法包括:
接收模块,接收客户端发送的用户通过用户账户发起的交易;其中,所述交易被所述客户端添加了分组标识;
第二确定模块,确定所述客户端发送的交易中是否存在分组标识相同的多笔交易;其中,所述相同的分组标识由客户端在确定所述多笔交易需要并发执行时添加;
执行模块,如果是,在所述多笔交易被受理后并发执行所述多笔交易。
可选的,所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易;所述客户端为所述多组交易添加的分组标识指示所述多组交易的执行顺序;
所述方法还包括:
如果所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易,按照所述多组交易的分组标识所指示的执行顺序,顺序执行所述多组交易。
可选的,所述区块链维护了Nonce列表集合;所述Nonce列表集合包括与若干用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;所述客户端发送的交易中添加的分组标识,为所述客户端从与所述用户账户对应的Nonce列表中获取到的可用Nonce记录;
所述执行模块进一步:
将所述客户端发送的交易中添加的可用Nonce记录,与所述区块链中维护的与所述用户账户对应的Nonce列表中的Nonce记录进行匹配;
如果所述可用Nonce记录,与所述Nonce列表中的任一目标Nonce记录匹配,受理所述交易。
可选的,所述执行模块进一步:
如果所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配,基于预设幅度对所述目标Nonce记录的Nonce值进行单调递增;以及,
向所述客户端返回所述交易被受理的通知消息。
可选的,所述Nonce记录还包括:所述Nonce记录的索引标识。
本说明书还提出一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
确定用户通过用户账户发起的交易中是否存在需要并发执行的多笔交易;
如果用户通过用户账户发起的交易中存在需要并发执行的多笔交易,为所述多笔交易添加相同的分组标识;
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备在受理所述客户端发布的交易后,并发执行具有相同分组标识的多笔交易。
本说明书还提出一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收客户端发送的用户通过用户账户发起的交易;其中,所述交易被所述客户端添加了分组标识;
确定所述客户端发送的交易中是否存在分组标识相同的多笔交易;其中,所述相同的分组标识由客户端在确定所述多笔交易需要并发执行时添加;
如果是,在所述多笔交易被受理后并发执行所述多笔交易。
通过以上实施例,客户端通过为用户发起的需要并发执行的多笔交易添加相同的分组标识,使得区块链中的节点设备在受理用户发起的交易之后,可以并发执行具有相同的分组标识的多笔交易,从而可以提升客户端上单账户的交易并发能力。
附图说明
图1是一示例性实施例提供的一种对交易进行重放攻击检测的示意图。
图2是一示例性实施例提供的一种基于区块链的交易处理方法的流程图。
图3是一示例性实施例提供的一种在区块链中维护的Nonce列表集合的结构示意图。
图4是一示例性实施例提供的另一种对交易进行重放攻击检测的示意图。
图5是一示例性实施例提供的一种客户端维护的Nonce列表的结构示意图。
图6是一示例性实施例提供的一种电子设备的结构示意图。
图7是一示例性实施例提供的一种基于区块链的交易处理装置的框图。
图8是一示例性实施例提供的另一种基于区块链的交易处理装置的框图。
具体实施方式
区块链领域的重放攻击,是指通过在区块链中发布重复的交易,进而导致一笔相同的交易被执行多次,对用户造成损失的攻击行为;
例如,比特币网络中经典的“双花”(double spending)问题,就是一种较为典型的重放攻击行为。一笔转账交易在经过用户私钥的签名许可后,如果被非法节点截获,那么该非法节点可以在该笔交易执行完毕后,基于截获的该笔交易,发起重放攻击,在区块链中重复发布并执行该笔交易,造成一笔转账交易被执行多次,进而对用户造成资金损失。
在示出的一种实施方式中,通常可以在交易中携带一个致密递增的Nonce值(致密递增的整数)的方式,来应对针对该笔交易的重放攻击风险;
请参见图1,图1为本说明书示出的一种对交易进行重放攻击检测的示意图。
如图1所示,用户在客户端上通过个人的用户账户发起的每笔交易,都可以指定一个Nonce值,并使用用户持有的私钥对该笔交易的交易体和指定的Nonce值进行签名。其中,签名是对[交易体,Nonce值]的整体签名,这样可以保障该笔交易中的Nonce无法被篡改。
当签名完成后,客户端可以将该笔交易在区块链中进行发布。而区块链中的节点设备,在收到该笔交易后,除了需要验证该笔交易的签名是否合法以外,还需要检测该笔交易中的Nonce值,是否与之前已经成功受理的最近一笔交易中的Nonce值保持严格的致密递增;如果该笔交易与已经成功受理的最近一笔交易中的Nonce值保持致密递增,则可以受理该笔交易;反之,可以认定该比较交易为非法的交易。
例如,假设用户在客户端上通过个人的用户账户Account1发起了一笔Nonce值为1的交易,该笔交易在被区块链成功受理后,用户在客户端上通过Account1再次发起交易的时候,必须将该交易中的Nonce值指定为2,才会被区块链中的节点设备认定为一笔合法的交易进行受理。
相应的,区块链系统会维护用户个人的用户账户的Nonce状态,每成功受理Account1发起的一笔交易,区块链系统会将该用户账户的Nonce值自增1;区块链中的节点设备在收到客户端发布的一笔交易后,会将该笔交易中的Nonce值,与维护的Nonce状态中的Nonce值进行比较,来判断该笔交易中的Nonce值,是否与已经成功受理的最近一笔交易中的Nonce值严格递增1;如果是,则可以受理该笔交易。
通过以上方式,虽然在某种程度上可以避免交易的重放攻击风险,但对于用户账户而言,需要在前一笔交易被受理后,才可以继续发起下一笔交易,因此单账户的交易并发能力不足,无法在高并发的场景下进行应用。
基于此,在本说明书中,在以上示出的重放攻击防护方案的基础上,提出一种能够提升客户端上单账户的交易并发能力的技术方案。
在实现时,客户端在收到用户通过用户账户发起的众多交易时,可以确定用户发起的交易中是否存在需要并发执行的多笔交易;例如,在一种实施方式中,客户端可以将交易类型相同的多笔交易,确定为需要并发执行的多笔交易
当确定出用户发起的交易中存在需要并发执行的多笔交易时,客户端可以为该多笔交易添加相同的分组标识,并将添加了分组标识的交易在区块链中进行发布;其中,为多笔交易添加的相同的分组标识,用于触发区块链中的节点设备在受理该多笔交易后,并发执行该多笔交易;
而区块链中的节点设备,在收到客户端发送的交易后,可以确定客户端发送的交易中是否存在分组标识相同的多笔交易;如果是,可以在该多笔交易被成功受理后,并发执行该多笔交易。
通过以上实施例,客户端通过为用户发起的需要并发执行的多笔交易添加相同的分组标识,使得区块链中的节点设备在受理用户发起的交易之后,可以并发执行具有相同的分组标识的多笔交易,从而可以提升客户端上单账户的交易并发能力。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参考图2,图2是本说明书一实施例提供的一种基于区块链的交易处理方法;所述方法执行以下步骤:
步骤202,客户端确定用户通过用户账户发起的交易中是否存在需要并发执行的多笔交易;
步骤204,如果用户通过用户账户发起的交易中存在需要并发执行的多笔交易,客户端为所述多笔交易添加相同的分组标识;
步骤206,客户端将所述交易发布至所述区块链;
步骤208,区块链中的节点设备接收客户端发送的用户通过用户账户发起的交易,并确定客户端发送的交易中是否存在分组标识相同的多笔交易;如果是,在所述多笔交易被受理后并发执行所述多笔交易。
在本说明书所描述的区块链,具体可以包括私有链、共有链以及联盟链等,在本说明书中不进行特别限定。
例如,在一个场景中,上述区块链具体可以是由第三方支付平台的服务器、境内银行服务器、境外银行服务器、以及若干用户节点设备作为成员设备组成的一个联盟链。该联盟链的运营方可以依托于该联盟链,来在线部署诸如基于联盟链的跨境转账、资产转移等在线业务。
其中,需要说明的是,在本说明书中所描述的交易(Transaction),是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。
区块链中的交易,通常存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,防伪校验业务、租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
在本说明书中,上述客户端具体可以是一个多线程客户端;也即,客户端可以同时启用多个线程,每一个线程都可以独立运行,从而用户可以通过调用客户端的多个线程,通过个人的用户账户来同时发起多笔交易。
当客户端收到用户通过用户账户发起的多笔交易后,可以确定用户通过用户账户发起的交易中,是否存在需要并发执行的多笔交易;
其中,在本说明书中,需要并发执行的多笔交易,可以包括任意类型的,交易之间并不存在严格的交易执行顺序,能够进行并发处理和执行的交易;
例如,如果一笔交易的执行,需要将另一笔交易的执行结果作为输入,那么这两笔交易,将无法进行并发处理和执行;反之,如果两笔交易之间,并没有以上所描述的这种数据依赖关系,那么就可以进行并发处理和执行。
在实现时,需要并发执行的多笔交易,可以由用户在通过用户账户发起交易的过程中,来人为指定;
例如,在示出的一种实施方式中,用户在发起了众多笔交易后,可以通过客户端提供的用户界面来基于需求人工指定,需要并发执行的多笔交易。
在实际应用中,需要并发执行的多笔交易,也可以由客户端基于预设的并发处理规则,来进行动态确认。
其中,上述并发处理规则的具体内容,在本说明书中不进行特别限定,在实际应用中,本领域技术人员可以基于实际的并发处理需求,来灵活的定义;
例如,在示出的一种实施方式中,上述并发执行规则,可以是“针对交易类型相同的交易进行并发执行”的规则;
在这种情况下,客户端在收到用户发起的众多交易后,可以进一步检查这些交易的具体交易类型;然后,将交易类型相同的多笔交易,确定为需要并发执行的交易;比如,如果区块链所支持的交易类型,包括用于创建账户的交易类型、用于转账的交易类型,则客户端可以确定出用户所发起的众多交易中,用于创建账户的交易类型、和用于转账的交易类型,然后将与这两类交易类型对应的多笔交易,确定为需要并发执行的交易。
当然,在实际应用中,上述并发处理规则,除了可以是“针对交易类型相同的交易进行并发执行”的规则以外,也可以是其它形式的并发处理规则,在本说明书中不再进行一一列举。
在本说明书中,可以针对区块链所支持的交易格式进行扩展,引入一个分组标识字段;当客户端确定用户通过用户账户发起的交易中,存在需要并发执行的多笔交易,则可以在该多笔交易中的分组标识字段中,为该多笔交易添加相同的分组标识;
其中,在本说明书中,为多笔交易添加的相同的分组标识,用于触发区块链中的节点设备在受理该多笔交易后,并发执行该多笔交易;
相应的,区块链中的节点设备,在收到客户端发送的添加了分组标识的交易后,可以确定客户端发送的交易中,是否存在分组标识相同的多笔交易;如果存在,表明客户端要求该多笔交易在区块链中并发执行;此时,区块链中的节点设备可以在该多笔交易通过了区块链系统的一系列在受理之前的验证和检查被成功受理后,并发执行具有相同分组标识的多笔交易。
其中,在实际应用中,用户通过用户账户发起的交易中,可能会存在所包含的多笔交易需要并发执行的多组交易,并且该多组交易之间,可能会保持一定的执行顺序;在这种情况下,如果用户通过用户账户发起的交易中,存在所包含的多笔交易需要并发执行的多组交易,此时客户端还可以进一步确认该多组交易的执行顺序;
其中,该多组交易的执行顺序,可以由用户进行人工定义,也可以由客户端基于实际的业务流程进行动态确认,在本说明书中不进行具体的限定。
进一步的,客户端在确定该多组交易的执行顺序之后,除了需要为该多组交易中所包含的多笔交易添加相同的分组标识以外,还需要确保为该多组交易中所包含的多笔交易添加的分组标识,能够指示该多组交易的执行顺序;
其中,利用分组标识来指示多组交易的执行顺序,具体可以通过为该多组交易添加在数值上保持单调递增的分组标识的方式来实现;
例如,假设如果用户通过用户账户发起的交易中,存在所包含的交易需要并发执行的两组交易{A1,B1,C1}和{A2,B2,C2};在这种情况下,客户端可以为交易A1,B1,C1添加一个相同的分组标识1,为交易A2,B2,C2添加一个相同的分组标识2,利用分组标识数值上的递增,来表示交易分组{A1,B1,C1},需要先于交易分组{A2,B2,C2}执行。也即,交易分组的执行顺序,与被添加的交易标识的取值从小到大的顺序保持一致。
相应的,在这种情况下,区块链中的节点设备,在收到客户端发送的添加了分组标识的交易,并确定客户端发送的交易中,存在分组标识相同的多笔交易之后,可以按照该多笔交易的交易标识所指示出的交易顺序,顺序的执行该多组交易。
例如,仍以用户通过用户账户发起的交易中,存在所包含的交易需要并发执行的两组交易,{A1,B1,C1}和{A2,B2,C2};并且,客户端可以为交易A1,B1,C1添加一个相同的分组标识1,为交易A2,B2,C2添加一个相同的分组标识2为例;在这种情况下,区块链中的节点设备,在以上交易A1,B1,C1,A2,B2,C2均被受理后,会先并发执行分组标识为1的交易分组中的交易A1,B1,C1,再并发执行分组标识为2的交易分组中的交易A2,B2,C2。
在以上方案中,通过在区块链所支持的交易格式中,引入分组标识字段,并由客户端在用户发起的需要并发执行的多笔交易中的分组标识字段中,为该多笔交易添加相同的分组标识,可以触发区块链中的节点设备并发执行具有相同的分组标识的多笔交易,从而可以提升区块链上的单账户的交易并发能力。
在实际应用中,一笔交易由区块链中的节点设备受理并执行以前,通常需要通过区块链系统的一系列的验证和检查过程;其中,针对交易的重放攻击检测,通常是上述一系列验证和检查过程中的重要一环;因此,在本说明书中,以上描述的通过为多笔交易添加相同的分组标识,来触发区块链中的节点设备并发执行具有相同分组标识的多笔交易的技术方案,也可以与针对交易的重放攻击检测进行结合,在避免针对交易的重放攻击的基础上,来进一步提升客户端上的单账户的交易并发能力的技术方案。
在示出的一种实施方式中,可以在区块链中维护一个Nonce列表集合,在该Nonce列表集合中,可以包括与若干用户账户对应的Nonce列表。在上述Nonce列表中,均可以包括多条Nonce记录。而每一条Nonce记录可以包括辅助参数和Nonce值。
也即,在本说明书中,上述Nonce记录具体可以是一条由包含Nonce值在内的多个字段构成的复合结构。
在实现时,上述区块链的运营方,可以预先为每一个用户账户分配可用的Nonce值,并在分配的可用的Nonce值的基础上,为每一个Nonce值设置对应的辅助字段,再基于每一个可用的Nonce值和对应的辅助字段,来构造出多条Nonce记录;
然后,可以基于生成的多条Nonce记录为该用户账户构造Nonce列表;最后,可以基于为各个用户账户构造的Nonce列表,创建上述Nonce列表集合,并将上述Nonce列表集合发布至上述区块链,由上述区块链中的节点设备进行共识处理,并在共识通过后,将上述Nonce列表集合存储在上述区块链的分布式数据进行存储和维护。
其中,需要说明的是,上述辅助参数的具体参数内容,在本说明书中不进行特别限定;在实际应用中,上述辅助参数,具体可以包括上述区块链的运营方基于实际的需求,在用户账户可用的Nonce值的基础上扩展出的任意形式的参数;或者参数组合。
也即,在实际应用中,上述辅助参数中所能包含的参数数量以及类别,可以不固定;可以在Nonce值的基础上扩展出任意一种参数来作为辅助参数;也可以在Nonce值的基础上扩展出多种参数进行组合来作为辅助参数。
在本说明书中,以上描述的由客户端为交易添加的分组标识,具体可以作为上述Nonce列表中的Nonce记录中的辅助参数;其中,对于上述Nonce列表集合中的与各个用户账户对应的Nonce列表而言,均可以包括多条分组标识相同的Nonce记录,从而客户端在为用户通过用户账户发起的多笔交易添加相同的分组标识时,可以从上述Nonce列表中获取分组标识相同的Nonce记录。
在示出的一种实施方式中,上述Nonce列表中的Nonce记录中的辅助参数,除了可以包括上述分组标识以外,还可以进一步包括上述Nonce记录的索引标识(比如索引编号)。其中,上述索引标识,具体用于表示Nonce记录在Nonce列表中的顺序以及位置。
例如,请参见图3,以上述Nonce列表中的Nonce记录中的辅助参数,同时包含上述分组标识和上述Nonce记录的索引标识为例,此时上述Nonce记录具体可以是一个Group ID(分组标识)、Index(索引标识)、Value(Nonce值)等字段组成的复合结构。在这种情况下,在区块链中维护的Nonce列表集合,可以表示成如图3所示出的形式。
其中,上述Nonce记录以及上述Nonce记录中的Nonce值和上述辅助参数的具体的字节长度,在本说明书中不进行特别限定;在实际应用中,可以基于上述区块链的运营方的实际需求,进行灵活的设定(比如,运营方可以通过所占用的字节长度,来控制Nonce值以及辅助参数的具体取值范围);
例如,在一种实现方式中,上述Nonce记录具体可以是一个16字节组成的复合结构;其中,4字节表示Group ID(分组标识)、4字节表示Index(索引标识)、8字节表示Value(Nonce值)。
通过在Nonce值的基础上,扩展出多种参数进行组合来作为辅助参数,使得上述Nonce表中的Nonce记录能够涵盖丰富的取值字段,从而可以降低上述Nonce表中的多条Nonce记录由于取值相同发生冲突的概率;
例如,两条由Group ID(分组标识)和Value(Nonce值)构成的总长度为12字节的Nonce记录完全相同发生冲突的概率,会远低于,两条由Group ID(分组标识)、Index(索引标识)和Value(Nonce值)构成的总长度为16字节的Nonce记录完全相同发生冲突的概率。
请参见图4,当用户在客户端上调用客户端启用的多个线程,通过个人的用户账户发起需要并发执行的多笔交易后,客户端可以从区块链上维护的与该用户账户对应的上述Nonce列表中,为该多笔交易分别获取分组标识相同的可用Nonce记录(即为多笔交易添加相同的分组标识)。
由于上述Nonce列表中包括多条Nonce记录,使得客户端启动的多线程均能够从上述Nonce列表中为发起的交易获取到可用Nonce记录,进而用户可以使用个人的用户账户通过上述客户端同时发起多笔交易;因此,在本说明书中,上述Nonce列表中的Nonce记录的数量,实际上可以用于指示用户个人的用户账户的交易并发能力。比如,上述Nonce列表包括4条Nonce记录,那么用户可以通过用户账户同时发起4笔交易。
基于这一点,在实际应用中,区块链的运营方,可以基于客户端自身的性能,来灵活的为上述Nonce列表指定所包含的Nonce记录的数量;或者,客户端可以向区块链系统主动上报自身的性能,由区块链的运营方来灵活的指定上述Nonce列表所包含的Nonce记录的数量;
例如,假设客户端的性能决定,该客户端可以同时启动4个线程来发起交易,那么在为登录该客户端的用户账户创建上述Nonce列表时,可以为该Nonce列表添加4条可用Nonce记录。
在示出的一种实施方式中,客户端可以在初始化阶段,预先将区块链上维护的上述Nonce列表“下载”到本地进行维护;
例如,在实现时,客户端在启动运行,或者与区块链中的节点设备之间的连接断开需要重新进行连接时,通过都需要进行初始化操作。在这种情况下,当客户端收到用户触发的针对该客户端的初始化指令(比如启动指令、重连指令等)时,则可以响应该初始化指令,与区块链中的节点设备建立连接,并基于该连接访问区块链的分布式数据库,获取区块链中维护的上述Nonce列表,然后可以将获取到的上述Nonce列表本地进行存储和维护。
在这种情况下,当客户端需要为该多笔交易分别获取分组标识相同的可用Nonce记录时,可以直接从本地维护的上述Nonce列表中获取可用Nonce记录。
通过这种方式,可以避免与区块链上的节点设备进行数据交互,从区块链中维护的上述Nonce列表中读取数据,为该目标交易获取可用Nonce记录,可以提升客户端的处理性能。
其中,需要说明的是,对于用户通过用户账户发起的交易中,包括所包含的多笔交易需要并发执行的多组交易的情况下,由于该多组交易中的交易,除了需要添加相同的分组标识以外,还需要确保不同的交易分组对应的分组标识,在数值上也存在差异;因此,在这种情况下,上述Nonce列表中则需要包括分组标识相同,并且不同的交易分组的分组标识在数值上也存在差异的多组Nonce记录;也即,同一交易分组中的交易的分组标识保持相同,而不同的交易分组中的交易分组标识在数值上要保持一定的差异;从而,确保能够从上述Nonce列表中,为上述多组交易中的交易,获取到分组标识相同,并且所述分组标识指示所述多组交易的执行顺序的可用Nonce记录。
在示出的一种实施方式中,对于客户端在本地维护的上述Nonce列表,可以由客户端为该Nonce列表中的Nonce记录,均默认添加一个表示“可用”的标记。
例如,请参见图5,仍以上述Nonce记录为图4中示出的16字节组成的复合结构为例,可以为Nonce列表中的Nonce记录,扩展出一个1字节的Available字段;其中,当Available字段取值为T时,表示该条Nonce记录“可用”;当Available字段取值为F时,表示该条Nonce记录“不可用”。
一方面,当客户端上启用的线程,在从客户端本地维护的上述Nonce列表中为用户发起的多笔交易获取可用Nonce记录时,可以从上述Nonce列表中所有被标记为“可用”的Nonce记录来随机选择多笔分组标识相同的Nonce记录作为可用Nonce记录。
另一方面,当客户端上启用的线程,从客户端本地维护的上述Nonce列表中为用户发起的多笔交易获取到可用Nonce记录之后,可以对该可用Nonce记录携带的标记进行修改更新,为该可用Nonce记录重新添加一个表示“不可用”的标记,以将该可用Nonce记录标记为不可用。
在本说明书中,当客户端为用户发起的需要并发执行的多笔交易获取到可用Nonce记录之后,可以将获取到的可用Nonce记录添加至上述多笔交易中;
例如,请继续参见图4,客户端在为交易获取到可用Nonce记录之后,可以对交易的交易体,和上述可用Nonce记录进行打包,然后提示用户基于持有的私钥对打包后的[交易体,Nonce记录]进行整体签名,这样可以保障该笔交易中的Nonce记录无法被篡改。
进一步的,当客户端将获取到的可用Nonce记录添加至上述多笔交易之后,客户端可以将上述多笔交易发布至区块链;
例如,将上述多笔交易发布至该客户端接入的节点设备,或者将该多笔交易在区块链中进行广播发布;其中,客户端将上述多笔交易发布至区块链的具体方式,通常取决于区块链所采用的共识机制,在本说明书中不进行特别限定。
而当区块链中的节点设备在收到客户端发布的交易之后,首先可以在区块链采用的共识算法,发起针对收到的交易的共识处理;
其中,区块链采用的共识算法,以及基于共识算法对上述目标交易的共识处理过程,在本说明书中不再进行详述,本领域技术人员在将本说明书记载的技术方案付诸实现时,可以参考相关技术中的记载。
当收到的交易共识通过后,此时上述区块链中的节点设备,可以进一步发起针对收到的交易的合法性检测。
其中,在本说明书中,针对交易的合法性检测至少可以包括,针对交易携带的签名的合法性检测、以及,针对交易的重放攻击检测。
在实现时,上述区块链中的节点设备首先可以基于与上述用户持有的私钥对应的公钥,对收到的交易的签名进行验证;如果交易的签名失败,可以认定交易为不合法的交易,上述节点设备可以直接通过客户端向用户返回交易执行失败的提示消息。
如果交易的签名验证通过,此时上述节点设备,可以进一步基于该目交易中携带的可用Nonce记录,和区块链中维护的与该用户个人的用户账户对应的Nonce列表,针对该交易进行重放攻击检测。
一方面,请继续参见图4,上述节点设备可以将交易中携带的Nonce记录,从区块链上维护的与该用户账户对应的Nonce列表中的Nonce记录逐一进行匹配;如果交易中携带的Nonce记录,与上述Nonce列表中的任一目标Nonce记录匹配,可以确定该交易通过重放攻击检测;在这种情况下,该节点设备可以受理该交易。
另一方面,当该交易被受理后,该节点设备可以基于预设幅度对上述目标Nonce记录中的Nonce值进行单调递增;其中,上述预设幅度可以基于实际需求进行自定义;
例如,上述预设幅度仍然可以是1,上述节点设备可以在该交易被受理后,将在上述Nonce列表中匹配到的上述目标Nonce记录中的Nonce值自增1。
通过这种方式,如果交易在被受理之后,又再次在区块链中进行了重复发布,由于上述Nonce列表中与该交易携带的可用Nonce记录匹配的目标Nonce记录中的Nonce值,已经发生了更新,该重复发布的该交易在重放攻击检测阶段,将无法在上述Nonce列表中匹配到对应的Nonce记录;因此,该重复发布的交易将不会被再次受理,从而可以有效的避免通过在区块链中重复发布该交易进行重放攻击。
在示出的一种实施方式中,当交易被受理后,可以向上述客户端返回上述交易被受理的通知消息;而客户端在将用户通过个人的用户账户发起的交易发布至区块链后,可以确定是否接收到节点设备返回的交易被受理的通知消息。
如果确认收到交易被受理的通知消息:
一方面,可以基于预设幅度,对从客户端本地维护的上述Nonce列表中为发起的交易获取到的上述可用Nonce记录中的Nonce值进行单调递增;比如,将在上述可用Nonce记录中的Nonce值也自增1,以与区块链中维护的上述Nonce列表保持内容同步。
另一方面,由于此前该可用Nonce记录已经被标记为了“不可用”;因此,在基于预设幅度,对该可用Nonce记录中的Nonce值进行单调递增后,可以将该可用Nonce记录的Available字段的取值,置位为“T”。
在本说明中,当客户端发送的由用户发起的交易均被受理后,此时区块链中的节点设备,可以进一步确定客户端发送的已经被受理的交易中,是否存在分组标识相同的多笔交易;
如果已经被受理的交易中,存在分组标识相同的多笔交易,此时区块链中的节点设备,可以并发执行该多笔交易,并在该多笔交易执行完毕后,将该多笔交易以及该多笔交易的执行结果,在区块链的分布式数据库中进行存储。
在以上方案中,通过将为多笔交易添加相同的分组标识,来触发区块链中的节点设备并发执行具有相同分组标识的多笔交易的技术方案,与针对交易的重放攻击检测进行结合,可以在避免针对交易的重放攻击的基础上,来进一步提升客户端上的单账户的交易并发能力。
与上述方法实施例相对应,本说明书还提供了一种基于区块链的交易处理装置的实施例。本说明书的基于区块链的交易处理装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本说明书的基于区块链的交易处理装置所在电子设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图7是本说明书一示例性实施例示出的一种基于区块链的交易处理装置的框图。
请参考图7,所述基于区块链的交易处理装置70可以应用在前述图6所示的电子设备中,包括有:第一确定模块701、添加模块702和发布模块703。
第一确定模块701,确定用户通过用户账户发起的交易中是否存在需要并发执行的多笔交易;
添加模块702,如果用户通过用户账户发起的交易中存在需要并发执行的多笔交易,为所述多笔交易添加相同的分组标识;
发布模块703,将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备在受理所述客户端发布的交易后,并发执行具有相同分组标识的多笔交易。
在本实施例中,所述需要并发执行的多笔交易,包括交易类型相同的多笔交易。
在本实施例中,所述添加模块702进一步:
如果用户通过用户账户发起的交易中存在所包含的多笔交易需要并发执行的多组交易,确定所述多组交易的执行顺序;
为所述多组交易分别添加指示所述多组交易的执行顺序的分组标识。
在本实施例中,所述区块链中维护了与所述用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;
所述添加模块702:
从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录,并将获取到的可用Nonce记录分别添加至所述多笔交易。
在本实施例中,所述添加模块702进一步:
在从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录之前,响应于针对所述客户端的初始化指令,获取所述区块链中维护的所述Nonce列表,并将获取到的所述Nonce列表在所述客户端本地进行维护;
从所述客户端本地维护的所述Nonce列表中,为所述多笔交易分别获取分组标识相同的可用Nonce记录。
在本实施例中,所述客户端本地维护的所述Nonce列表中的Nonce记录默认被标记为可用;
所述添加模块702进一步:
在从所述客户端本地维护的所述Nonce列表中为所述交易获取到了可用Nonce记录之后,在所述Nonce列表中将所述可用Nonce记录标记为不可用。
在本实施例中,所述添加模块702进一步:
确定是否接收到所述节点设备返回的所述交易被受理的通知消息;
如果是,基于预设幅度对所述可用Nonce记录中的Nonce值进行单调递增,并在所述Nonce值单调递增之后,在所述Nonce列表中将所述可用Nonce记录重新标记为可用。
在本实施例中在本实施例中,所述发布模块703进一步:
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备将所述客户端发布的交易中的可用Nonce记录与所述Nonce列表中的Nonce记录进行匹配,并在所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配时,受理所述交易,以及并发执行已受理的交易中具有相同分组标识的多笔交易。
在本实施例中,所述客户端为多线程客户端;所述Nonce列表中的Nonce记录的数量,指示所述用户账户的交易并发能力。
在本实施例中,所述Nonce记录还包括:所述Nonce记录的索引标识。
图8是本说明书一示例性实施例示出的另一种基于区块链的交易处理装置的框图。
请参考图8,所述基于区块链的交易处理装置80也可以应用在前述图6所示的电子设备中,包括有:接收模块801、第二确定模块802和执行模块803。
接收模块801,接收客户端发送的用户通过用户账户发起的交易;其中,所述交易被所述客户端添加了分组标识;
第二确定模块802,确定所述客户端发送的交易中是否存在分组标识相同的多笔交易;其中,所述相同的分组标识由客户端在确定所述多笔交易需要并发执行时添加;
执行模块803,如果是,在所述多笔交易被受理后并发执行所述多笔交易。
在本实施例中,所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易;所述客户端为所述多组交易添加的分组标识指示所述多组交易的执行顺序;
所述执行模块803进一步:
如果所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易,按照所述多组交易的分组标识所指示的执行顺序,顺序执行所述多组交易。
在本实施例中,所述区块链维护了Nonce列表集合;所述Nonce列表集合包括与若干用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;所述客户端发送的交易中添加的分组标识,为所述客户端从与所述用户账户对应的Nonce列表中获取到的可用Nonce记录;
所述执行模块803进一步:
将所述客户端发送的交易中添加的可用Nonce记录,与所述区块链中维护的与所述用户账户对应的Nonce列表中的Nonce记录进行匹配;
如果所述可用Nonce记录,与所述Nonce列表中的任一目标Nonce记录匹配,受理所述交易。
在本实施例中,所述执行模块803进一步:
如果所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配,基于预设幅度对所述目标Nonce记录的Nonce值进行单调递增;以及,
向所述客户端返回所述交易被受理的通知消息。
在本实施例中,所述Nonce记录还包括:所述Nonce记录的索引标识。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
确定用户通过用户账户发起的交易中是否存在需要并发执行的多笔交易;
如果用户通过用户账户发起的交易中存在需要并发执行的多笔交易,为所述多笔交易添加相同的分组标识;
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备在受理所述客户端发布的交易后,并发执行具有相同分组标识的多笔交易。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
如果用户通过用户账户发起的交易中存在所包含的多笔交易需要并发执行的多组交易,确定所述多组交易的执行顺序;
为所述多组交易分别添加指示所述多组交易的执行顺序的分组标识。
在本实施例中,所述区块链中维护了与所述用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录,并将获取到的可用Nonce记录分别添加至所述多笔交易。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
从所述Nonce列表中为所述多笔交易分别获取分组标识相同的可用Nonce记录之前,响应于针对所述客户端的初始化指令,获取所述区块链中维护的所述Nonce列表,并将获取到的所述Nonce列表在所述客户端本地进行维护;
从所述客户端本地维护的所述Nonce列表中,为所述多笔交易分别获取分组标识相同的可用Nonce记录。
在本实施例中,所述客户端本地维护的所述Nonce列表中的Nonce记录默认被标记为可用;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
在从所述客户端本地维护的所述Nonce列表中为所述交易获取到了可用Nonce记录之后,在所述Nonce列表中将所述可用Nonce记录标记为不可用。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
确定是否接收到所述节点设备返回的所述交易被受理的通知消息;
如果是,基于预设幅度对所述可用Nonce记录中的Nonce值进行单调递增,并在所述Nonce值单调递增之后,在所述Nonce列表中将所述可用Nonce记录重新标记为可用。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
将所述多笔交易发布至所述区块链,以由所述区块链中的节点设备将所述客户端发布的交易中的可用Nonce记录与所述Nonce列表中的Nonce记录进行匹配,并在所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配时,受理所述交易,以及并发执行已受理的交易中具有相同分组标识的多笔交易。
与上述方法实施例相对应,本说明书还提供了另一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收客户端发送的用户通过用户账户发起的交易;其中,所述交易被所述客户端添加了分组标识;
确定所述客户端发送的交易中是否存在分组标识相同的多笔交易;其中,所述相同的分组标识由客户端在确定所述多笔交易需要并发执行时添加;
如果是,在所述多笔交易被受理后并发执行所述多笔交易。
在本实施例中,所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易;所述客户端为所述多组交易添加的分组标识指示所述多组交易的执行顺序;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
如果所述客户端发送的交易中存在所包含的多笔交易的分组标识相同的多组交易,按照所述多组交易的分组标识所指示的执行顺序,顺序执行所述多组交易。
在本实施例中,所述区块链维护了Nonce列表集合;所述Nonce列表集合包括与若干用户账户对应的Nonce列表;其中,所述Nonce列表包括多条Nonce记录;所述Nonce记录包括分组标识和Nonce值;所述客户端发送的交易中添加的分组标识,为所述客户端从与所述用户账户对应的Nonce列表中获取到的可用Nonce记录;
通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
将所述客户端发送的交易中添加的可用Nonce记录,与所述区块链中维护的与所述用户账户对应的Nonce列表中的Nonce记录进行匹配;
如果所述可用Nonce记录,与所述Nonce列表中的任一目标Nonce记录匹配,受理所述交易。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的交易处理的控制逻辑对应的机器可执行指令,所述处理器被促使:
如果所述可用Nonce记录与所述Nonce列表中的任一目标Nonce记录匹配,基于预设幅度对所述目标Nonce记录的Nonce值进行单调递增;以及,
向所述客户端返回所述交易被受理的通知消息。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。