一种基于区块链智能合约的交易认证方法及系统
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种基于区块链智能合约的交易认证方法及系统。
背景技术
在基于区块链网络的业务模式下,用户一般通过向区块链网络提交业务交易的方式触发区块链网络中的各节点通过智能合约执行业务。在有些业务场景下,仅由发起业务交易的用户对业务交易进行签名认证,并无法满足预设的认证通过条件,进而,该业务交易会被智能合约拒绝执行。
在这些业务场景下,发起业务交易的用户在向区块链网络提交业务交易前,往往不仅需要使用自己的密钥对业务交易进行签名,还需要使用其他用户的密钥对业务交易进行签名。但是,通过这种方式进行交易认证不够便利,也不够安全。
发明内容
为了现有的交易认证方法不够便利且不够安全的问题,本说明书实施例提供一种基于区块链智能合约的交易认证方法及系统,技术方案如下:
根据本说明书实施例的第1方面,提供一种基于区块链智能合约的交易认证方法,包括:
发起客户端构建业务交易;所述发起客户端是登录有发起用户账户的区块链客户端,所述发起用户账户是具有业务发起权限的用户账户;
所述发起客户端通过登录的发起用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至区块链网络;
所述区块链网络中的各节点当需要执行所述业务交易时,调用部署的智能合约中的交易认证逻辑,并根据所述交易认证逻辑触发交易认证事件;
针对每个认证客户端,该认证客户端在监听到所述交易认证事件之后,若选择对所述业务交易进行认证,则从所述区块链网络获取所述业务交易;认证客户端是登录有任一认证用户账户的区块链客户端,认证用户账户是具有交易认证权限的用户账户;
该认证客户端通过登录的认证用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至所述区块链网络。
根据本说明书实施例的第2方面,提供一种区块链系统,包括发起客户端、至少一个认证客户端、区块链网络;
所述发起客户端是登录有发起用户账户的区块链客户端,所述发起用户账户是具有业务发起权限的用户账户;认证客户端是登录有任一认证用户账户的区块链客户端,认证用户账户是具有交易认证权限的用户账户;
所述发起客户端,构建业务交易;通过登录的发起用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至区块链网络;
所述区块链网络中的各节点,当需要执行所述业务交易时,调用部署的智能合约中的交易认证逻辑,并根据所述交易认证逻辑触发交易认证事件;
每个认证客户端,在监听到所述交易认证事件之后,若选择对所述业务交易进行认证,则从所述区块链网络获取所述业务交易;通过登录的认证用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至所述区块链网络。
本说明书实施例所提供的技术方案,发起业务交易的用户账户在对发起的业务交易进行签名并提交给区块链网络之后,会触发区块链网络中部署的智能合约的调用,智能合约会首先触发一个交易认证事件,该交易认证事件会被其他用户账户监听到。针对任一具有交易认证权限的用户账户,该用户账户如果要认证所述业务交易,就可以从区块链网络获取所述业务交易进行签名,并将签名后的所述业务交易提交至区块链网络。如此,区块链网络可以通过智能合约的事件触发机制,收集到除发起业务交易的用户账户之外的其他用户账户的签名,以完成业务交易的认证。通过本说明书实施例,可以实现如下技术效果:
1、发起业务交易的用户不必为了获取其他用户的签名密钥而与其他用户进行预先协商。这给发起业务交易的用户省去了不必要的麻烦。
2、有权认证业务交易的用户不必将自己的密钥提供给发起业务交易的用户,保证了的签名密钥私密性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种基于区块链智能合约的交易认证方法的流程示意图;
图2是本说明书实施例提供的多签名认证示意图;
图3是本说明书实施例提供的一种区块链系统的架构示意图;
图4是本说明书实施例提供的一种基于区块链智能合约的交易认证装置的结构示意图;
图5是本说明书实施例提供的另一种基于区块链智能合约的交易认证装置的结构示意图;
图6是用于配置本说明书实施例装置的一种计算机设备的结构示意图。
具体实施方式
现有的交易执行方法是,假设一笔业务交易需要用户A、用户B、用户C的授权才能执行,那么,提交业务交易的用户A在取得用户B与用户C的同意后,使用自己的密钥、用户B提供的密钥以及用户C提供的密钥对该业务交易进行签名后提交给区块链网络。区块链网络中部署的智能合约在确定用户A、用户B和用户C都已经对该业务交易签名后,才会执行该业务交易。
然而,这种方式一方面要求用户A与用户B、用户C进行协商,对用户A而言不够方便,另一方面,用户B和用户C可能出于密钥安全性的考虑,不想将自己的密钥提供给用户A使用。
为此,本发明的核心思想是,将签名收集环节嵌入到业务交易的发起-执行流程中,在用于执行业务交易的智能合约中添加交易认证逻辑。所述交易认证逻辑可以用于触发交易认证事件。如此,在上例中,用户B和用户C监听到交易认证事件后,如果同意进行签名授权,就可以自行从区块链网络获取所述业务交易进行签名并提交至区块链网络。用户B和用户C可以在不将自己的密钥泄露出去前提下,对用户A发起的业务交易进行签名授权。
此外,在现有的交易执行方法中,用户A在获得用户B和用户C的密钥后,存在滥用密钥的可能性。而在本发明中,用户B和用户C对业务交易的签名认证是仅是一次有效的,用户A下一次发起的业务交易需要用户B和用户C重新进行签名认证。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的一种基于区块链智能合约的交易认证方法的流程示意图,包括如下步骤:
S100:发起客户端构建业务交易。
在本说明书实施例中,为了描述的方便,将当前发起业务交易的用户账户(即区块链账户)称为发起用户账户,将登录有所述发起用户账户的区块链客户端称为发起客户端。实践中,有时并不是每个用户账户都具有业务发起权限。
同样为了描述的方便,将有权对业务交易进行认证(即具有交易认证权限)的用户账户称为认证用户账户,认证用户账户可以不止一个。相应地,将登录有任一认证用户账户的区块链客户端称为认证客户端。
需要说明的是,在一个交易认证流程(记为交易认证流程A)中,发起用户账户与认证用户账户只表征在该交易流程中不同的用户账户的作用。事实上,在另一个交易认证流程(记为交易认证流程B)中,交易认证流程A中的发起用户账户可以是交易认证流程B中的认证用户账户,交易认证流程A中的某个交易认证用户可以是交易流程B中的发起用户账户。
举例来说,在修改区块链网络配置的业务场景下,假设区块链网络有5个管理员账户,任一管理员可以发起配置修改交易,以触发区块链网络中的各节点根据配置修改交易对自身存储的配置信息进行修改。为了防止少数管理员账户擅自对区块链网络配置进行修改,任一管理员账户发起的配置修改交易被认证的前提是,不仅需要取得该管理员账户自身的签名,还需要取得至少两个其他管理员账户的签名。
在上例中,每个管理员账户同时具有发起配置修改交易的权限与对配置修改交易进行认证的权限。也即,针对任一管理员账户,当该管理员账户是发起配置修改交易的用户账户时,该管理员账户既是发起用户账户,又是认证用户账户,参与对自身发起的配置修改交易的认证;当该管理员账户不是发起配置修改交易的用户账户时,该管理员账户仅是认证用户账户,负责对其他管理员账户发起的配置修改交易进行认证。
S102:发起客户端通过登录的发起用户账户对所述业务交易进行签名。
在本说明书实施例中,如果所述发起用户账户不具有交易认证权限,那么,发起用户账户对所述业务交易进行签名的作用仅是表明发起业务的用户的身份。如果所述发起用户账户还具有交易认证权限,那么,发起用户账户对所述业务交易进行签名的作用还包括对所述业务交易进行认证。此时,所述发起用户账户同时也是一个认证用户账户。
S104:发起客户端将签名后的所述业务交易提交至区块链网络。
S106:所述区块链网络中的各节点当需要执行所述业务交易时,调用部署的智能合约中的交易认证逻辑,并根据所述交易认证逻辑触发交易认证事件。
众所周知,区块链智能合约支持事件触发机制,可以将智能合约执行过程产生的某个执行结果作为事件触发。
在本说明书实施例中,各节点当需要执行所述业务交易时,需要调用用于执行所述业务交易的智能合约,并首先开始执行智能合约中的交易认证逻辑,以触发交易认证事件。
进一步地,各节点可以在确定所述发起用户账户生成的签名已经通过真实性验证之后,再根据所述智能合约中的交易认证逻辑触发交易认证事件。
在本文中,对签名的真实性验证是指,验证该签名是否确实是提供该签名的用户账户生成的。
S108:针对每个认证客户端,该认证客户端在监听到所述交易认证事件之后,若选择对所述业务交易进行认证,则从所述区块链网络获取所述业务交易。
S110:该认证客户端通过登录的认证用户账户对所述业务交易进行签名。
一般而言,每个区块链客户端都可以监听到基于智能合约触发的交易认证事件。对于各区块链客户端中的认证客户端而言,其需要对监听到的交易认证事件作为响应。
具体地,针对每个认证客户端,该认证客户端可以在监听所述交易认证事件之后,通知所述认证客户端登录的认证用户账户。该认证用户账户的控制人可以选择认证或不认证所述业务交易。如果选择认证,那么该认证客户端会从区块链网络中获取所述业务交易,并通过登录的该认证用户账户进行签名。
S112:该认证客户端将签名后的所述业务交易提交至所述区块链网络。
针对每个认证客户端,该认证客户端如果选择对所述业务交易进行签名认证,则在签名后,还需要将所述业务交易提交至所述区块链网络。如此,各节点通过所述智能合约,可以收集到同意对所述业务交易进行认证的认证用户账户的签名。
进一步地,本说明书实施例中,各节点还可以根据所述智能合约中的交易认证逻辑,当确定接收到的对所述业务交易的签名满足认证通过条件时,调用所述智能合约中的交易执行逻辑,以执行所述业务交易。
其中,可以根据实际需要指定所述认证通过条件。例如,假设区块链网络上共有N个用户账户,所述认证通过条件可以是,所述业务交易上至少有N/2个通过真实性验证的认证用户账户的签名。
又如,可以为所述发起用户账户以及每个认证用户账户分配权重。如此,判断接收到的对所述业务交易的签名是否满足认证通过条件,具体可以是:
针对接收到的对所述业务交易的每个签名,判断该签名是否通过真实性验证;若该签名通过真实性验证,则获取生成该签名的发起用户账户或认证用户账户所对应的权重,作为该签名对应的权重;对通过真实性验证的各签名分别对应的权重求和;若得到的权重和大于预设权重,则确定接收到的对所述业务交易的签名满足认证通过条件;若得到的权重和不大于预设权重,则确定接收到的对所述业务交易的签名不满足认证通过条件。
需要说明的是,在修改区块链网络配置的业务场景下,所述发起用户账户以每个认证用户账户事实上都是管理员账户。因此,为所述发起用户账户以及每个认证用户账户分配权重,事实上是预先为每个管理员账户分配了权重。
图2是本说明书实施例提供的多签名认证示意图。如图2所示,如果业务交易需要多个用户账户的签名认证,则可以基于智能合约的事件触发机制,收集多个用户账户提供的部分签名,完成业务交易的认证。
此外,在修改区块链网络配置的业务场景下,所述业务交易可以包含修改操作信息,用于对区块链网络的配置信息进行修改。如此,所述各节点在执行所述业务交易时,可以根据所述业务交易中包含的修改操作信息,修改自身存储的区块链网络的配置信息。
以下介绍一种修改区块链网络配置的方法。
随着区块链技术的普及,基于区块链网络(尤其是联盟链网络)的业务模式愈发常见。通常,区块链网络的运维人员会不时对区块链网络的配置进行修改,以满足不时变化的业务需求。其中,区块链网络的配置信息可以包括区块链网络的网络运行参数、节点信息、智能合约信息、用户账户信息等。
具体地,运维人员往往会逐一针对区块链网络中的每个节点,对该节点存储的配置信息进行修改。对每个节点存储的配置信息都进行相同的修改后,也就完成了对整个区块链网络的配置修改。
然而,这种修改区块链网络配置的方法效率较低。
为此,可以由具有配置修改权限的管理员账户发起包含修改操作信息的配置修改交易,进而由区块链网络中的各节点通过执行所述配置修改交易的方式,自动对自身存储的区块链网络的配置信息进行修改。需要说明的是,前文中所述的业务交易具体可以是此处所述的配置修改交易。
也就是说,将对区块链网络中每个节点存储的配置信息的修改工作交由每个节点自己执行,这样既可以提升工作效率,又可以保证每个节点的配置修改操作一致。具体地,将用于修改配置信息的修改操作信息封装进配置修改交易,并利用区块链网络既有的交易执行机制,将封装有修改操作信息的配置修改交易提交给区块链网络,区块链网络中的各节点执行该配置修改交易的过程,即是对自身存储的配置信息进行修改的过程。
如此,可以实现如下技术效果:
1、无需运维人员逐个对每个节点上存储的配置信息进行修改,而是由各节点自动对存储的配置信息进行修改,提升工作效率。
2、可以避免出现运维人员对各节点上存储的配置信息修改不一致的情况。由于在本说明书实施例中,节点在接收到配置修改交易后,会根据相同的修改操作信息自动对配置进行修改,因此,不会出现各节点的配置修改不一致的情况。
图3是本说明书实施例提供的一种区块链系统的架构示意图。该区块链系统包括发起客户端、至少一个认证客户端、区块链网络;
所述发起客户端是登录有发起用户账户的区块链客户端,所述发起用户账户是具有业务发起权限的用户账户;认证客户端是登录有任一认证用户账户的区块链客户端,认证用户账户是具有交易认证权限的用户账户;
所述发起客户端,构建业务交易;通过登录的发起用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至区块链网络;
所述区块链网络中的各节点,当需要执行所述业务交易时,调用部署的智能合约中的交易认证逻辑,并根据所述交易认证逻辑触发交易认证事件;
每个认证客户端,在监听到所述交易认证事件之后,若选择对所述业务交易进行认证,则从所述区块链网络获取所述业务交易;通过登录的认证用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至所述区块链网络。
图4是本说明书实施例提供的一种基于区块链智能合约的交易认证装置的结构示意图,所述装置是登录有发起用户账户的区块链客户端,所述发起用户账户是具有业务发起权限的用户账户,所述装置包括:
构建模块,构建业务交易;
提交模块,通过登录的发起用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至区块链网络,以使所述区块链网络中的各节点当需要执行所述业务交易时,调用部署的智能合约中的交易认证逻辑,并根据所述交易认证逻辑触发交易认证事件,进而使每个认证客户端在监听到所述交易认证事件之后,若选择对所述业务交易进行认证,则从所述区块链网络获取所述业务交易,最终使每个客户端通过登录的认证用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至所述区块链网络;
其中,认证客户端是登录有任一认证用户账户的区块链客户端,认证用户账户是具有交易认证权限的用户账户。
图5是本说明书实施例提供的另一种基于区块链智能合约的交易认证装置的结构示意图,区块链网络由多个所述装置组成,所述装置包括:
智能合约调用模块,当需要执行业务交易时,调用部署的智能合约中的交易认证逻辑,并根据所述交易认证逻辑触发交易认证事件,以使每个认证客户端在监听到所述交易认证事件之后,若选择对所述业务交易进行认证,则从所述区块链网络获取所述业务交易,进而使每个客户端通过登录的认证用户账户对所述业务交易进行签名,并将签名后的所述业务交易提交至所述区块链网络;
其中,所述业务交易是发起客户端构建并提交至所述区块链网络的,所述发起客户端是登录有发起用户账户的区块链客户端,所述发起用户账户是具有业务发起权限的用户账户;所述发起客户端通过登录的发起用户账户对所述业务交易进行过签名;认证客户端是登录有任一认证用户账户的区块链客户端,认证用户账户是具有交易认证权限的用户账户。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1所示方法的功能。
图6示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1410、存储器1420、输入/输出接口1430、通信接口1440和总线1450。其中处理器1410、存储器1420、输入/输出接口1430和通信接口1440通过总线1450实现彼此之间在设备内部的通信连接。
处理器1410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1420中,并由处理器1410来调用执行。
输入/输出接口1430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1450包括一通路,在设备的各个组件(例如处理器1410、存储器1420、输入/输出接口1430和通信接口1440)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1410、存储器1420、输入/输出接口1430、通信接口1440以及总线1450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所示方法的功能。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。