交易处理方法、系统及区块链节点
文献发布时间:2024-04-18 19:57:50
技术领域
本公开涉及区块链技术领域,尤其是一种交易处理方法、系统及区块链节点。
背景技术
外部拥有账户(Externally Owned Accounts,EOA)是以太坊中的用户账户,它是以太坊生态系统的主要组成部分,用户通过EOA可以在区块链上进行数字货币的交易。
然而,若采用EOA进行交易,则用户需要采用复杂度较高的私钥对所发起的交易进行签名并记忆所设置的私钥,由于EOA可以由任何拥有该EOA的私钥的人控制,一旦私钥丢失,用户的EOA内的资金将无法找回,从而导致较高的资产安全风险。由此,合约账户(Contract Accounts,CA)应运而生。
发明内容
发明人注意到,相关技术中,通过合约账户进行交易的安全性较低。
经分析,发明人发现,合约账户没有对应的私钥,而是在被触发(即接收到交易)后按照预先编写的智能合约中的代码执行所接收的交易。然而,由于在采用合约账户进行交易的情况下,交易没有被签名,可能导致交易中的信息泄露,从而导致交易的安全性较低。
为了解决上述问题,本公开实施例提出了如下解决方案。
根据本公开实施例的一方面,提供一种交易处理方法,包括:第一区块链节点接收来自用户的第一交易,所述第一交易包括所述用户的合约账户的地址;所述第一区块链节点采用预设外部拥有账户EOA的私钥对所述第一交易进行签名,以得到第二交易;所述第一区块链节点将所述第二交易发送至所述地址对应的第二区块链节点,以便所述第二区块链节点采用所述预设EOA的公钥对所述第二交易进行验证,并在所述验证通过后执行所述第二交易。
在一些实施例中,所述第一交易包括多个交易,所述第一区块链节点采用预设EOA的私钥对所述第一交易进行签名包括:所述第一区块链节点通过一次签名操作完成对所述多个交易的所述签名。
在一些实施例中,所述第一区块链节点接收到的所述第一交易为由所述用户采用不同于所述私钥的密钥进行签名后的交易,所述密钥对应的加密算法的复杂度低于所述私钥对应的加密算法的复杂度。
根据本公开实施例的另一方面,提供一种交易处理方法,包括:第二区块链节点接收来自第一区块链节点的第二交易,所述第二交易由所述第一区块链节点采用预设EOA的私钥对来自所述用户的第一交易进行加密得到,所述第二区块链节点与所述用户的合约账户的地址对应;所述第二区块链节点采用所述预设EOA的公钥对所述第二交易进行验证,并在所述验证通过后执行所述第二交易。
在一些实施例中,所述第一交易包括多个交易,所述第二区块链节点采用所述预设EOA的公钥对所述第二交易进行验证包括:所述第二区块链节点通过一次验证操作完成对所述多个交易的所述验证。
在一些实施例中,所述第一区块链节点接收到的所述第一交易为由所述用户采用不同于所述私钥的密钥进行签名后的交易,所述密钥对应的加密算法的复杂度低于所述私钥对应的加密算法的复杂度。
在一些实施例中,所述方法还包括:所述第二区块链节点响应于来自所述用户针对所述合约账户的找回请求,调用所述合约账户对应的智能合约以执行操作,所述操作包括:向所述用户发送用于验证所述用户为所述合约账户的所有者的验证信息,所述智能合约中预设有至少一个第一账户验证者的信息;在预设时间内接收到来自至少一个第二账户验证者的所述验证信息的情况下,基于所述至少一个第一账户验证者的信息对所述至少一个第二账户验证者进行身份验证;在通过所述身份验证的第二账户验证者的数量大于或等于预设数量的情况下,向所述用户发送所述合约账户的重置密码。
在一些实施例中,所述至少一个第一账户验证者的信息包括所述至少一个第一账户验证者的合约账户地址,基于所述至少一个第一账户验证者的信息对所述至少一个第二账户验证者进行身份验证包括:针对接收到的每个第二账户验证者的所述验证信息,判断该第二账户验证者的所述验证信息是否来自于所述合约账户地址;在所述判断为是的情况下,确定该第二账户验证者通过所述身份验证;在所述判断为否的情况下,确定该第二账户验证者未通过所述身份验证。
在一些实施例中,所述第一区块链节点为轻节点。
根据本公开实施例的又一方面,提供一种区块链节点,包括:被配置为执行上述任意一个实施例所述的方法的模块。
根据本公开实施例的再一方面,提供一种区块链节点,包括:被配置为执行上述任意一个实施例所述的方法的模块。
根据本公开实施例的还一方面,提供一种区块链节点,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行上述任意一个实施例所述的方法。
根据本公开实施例的还一方面,提供一种交易处理系统,包括:第一区块链节点,为上述任意一个实施例所述的区块链节点;以及第二区块链节点,为述任意一个实施例所述的区块链节点。
根据本公开实施例的再一方面,提供一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述任意一个实施例所述的方法。
根据本公开实施例的还一方面,提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述任意一个实施例所述的方法。
上述实施例中,第一区块链节点采用预设EOA的私钥对来自用户的交易进行签名,并将签名后的交易发送至与用户的合约账户的地址对应的第二区块链节点,以便第二区块链节点采用EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。如此,在用户采用合约账户进行交易的情况下,用户所发起的交易可以被区块链节点采用预设在该区块链节点中的EOA的私钥进行签名后再发送至与合约账户的地址对应的区块链节点,减少了交易中的信息被泄露的可能性,从而提高了交易的安全性。
此外,用户所发起的交易是由一个区块链节点采用预设EOA的私钥进行签名的,而不是由用户自己采用EOA的私钥进行签名,不仅减少了用户丢失私钥所导致的资产安全风险,而且用户无需自己记忆EOA的私钥,降低了用户在区块链上进行数字货币交易的操作门槛,从而有助于区块链数字钱包的推广和普及。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开一些实施例的交易处理方法的流程示意图。
图2是根据本公开另一些实施例的交易处理方法的流程示意图。
图3是根据本公开又一些实施例的交易处理方法的流程示意图。
图4是根据本公开一些实施例的区块链节点的结构示意图。
图5是根据本公开另一些实施例的区块链节点的结构示意图。
图6是根据本公开又一些实施例的区块链节点的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是根据本公开一些实施例的交易处理方法的流程示意图。
在步骤102,第一区块链节点接收来自用户的第一交易。
这里,第一交易包括用户的合约账户的地址。
在一些实施例中,第一区块链节点接收到的第一交易可以为由用户已自行进行签名后的交易。后文将对此进行进一步说明。
在步骤104,第一区块链节点采用预设EOA的私钥对第一交易进行签名,以得到第二交易。
在一些实施例中,第一区块链节点可以采用预设EOA的私钥并基于椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)对第一交易进行签名。
在一些实施例中,第一区块链节点中预设的EOA的私钥可以包括一个或多个。例如,第一区块链节点可以对来自任何用户的第一交易采用同一个预设EOA的私钥进行签名。又例如,第一区块链节点可以对来自不同用户的第一交易采用不同的预设EOA的私钥进行签名。
在一些实施例中,第一区块链节点接收到的第一交易可以包括多个交易,这多个交易按照用户发送这多个交易的先后顺序排列于队列中,第一区块链节点可以对队列中的多个交易执行签名操作,并在签名完成后从队列中删除这多个交易。例如,在对每个交易进行签名后从队列中删除该交易;又例如,在对这多个交易全部进行签名后通过一次删除操作从队列中删除这多个交易。
在步骤106,第一区块链节点将第二交易发送至用户的合约账户的地址对应的第二区块链节点,以便第二区块链节点采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。
在一些实施例中,预设EOA的公钥可以预先设置在第二区块链节点中,或者第一区块链节点可以将该预设EOA的公钥发送至第二区块链节点。
在一些实施例中,第二区块链节点可以调用用户的合约账户对应的智能合约以采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。可以理解的是,如果验证不通过,则第二区块链节点不会执行第二交易。
上述实施例中,第一区块链节点采用预设EOA的私钥对来自用户的交易进行签名,并将签名后的交易发送至与用户的合约账户的地址对应的第二区块链节点,以便第二区块链节点采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。如此,在用户采用合约账户进行交易的情况下,用户所发起的交易可以被区块链节点采用预设在该区块链节点中的EOA的私钥进行签名后再发送至与合约账户的地址对应的区块链节点,减少了交易中的信息被泄露的可能性,从而提高了交易的安全性。
此外,用户所发起的交易是由一个区块链节点采用预设EOA的私钥进行签名的,而不是由用户自己采用EOA的私钥进行签名,不仅减少了用户丢失私钥所导致的资产安全风险,而且用户无需自己记忆EOA的私钥,降低了用户在区块链上进行数字货币交易的操作门槛,从而有助于区块链数字钱包的推广和普及。
在一些实施例中,第一区块链节点接收到的第一交易为由用户采用不同于私钥的密钥进行签名的交易,其中,用户所采用的密钥对应的加密算法的复杂度低于该私钥对应的加密算法的复杂度。例如,用户可以采用密钥并通过secp256k1算法对交易进行签名后以得到第一交易,secp256k1算法(即用户所采用的密钥对应的加密算法)的复杂度比ECDSA(即预设EOA的私钥对应的加密算法)的复杂度更低。如此,用户所发起的交易在发送至区块链节点之前便被签名,在降低了用户在区块链上进行数字货币交易的操作门槛的基础上,进一步减少了交易中信息被泄露的可能性,从而进一步提高了交易的安全性。
在一些实施例中,在第一交易包括多个交易的情况下,第一区块链节点可以通过一次签名操作完成对这多个交易的签名。例如,第一区块链节点可以在接收到来自用户的多个交易(即第一交易)后,通过一次签名操作完成对这多个交易的签名,并将签名后的这多个交易(即第二交易)发送至第二区块链节点。如此,在保障交易处理的安全性的前提下,提高了区块链节点对交易的处理效率。
在一些实施例中,第二区块链节点在接收到来自第一区块链节点的签名后的多个交易后,可以通过一次验证操作完成对这个多个交易的验证。如此,进一步提高了区块链节点对交易的处理效率。
在一些实施例中,第一区块链节点可以为轻节点。例如,第一区块链节点可以是专门用于对来自用户的交易进行签名处理的轻节点,而不参与共识过程。如此,在提高交易安全性的情况下,有效地节省了网络资源,从而提高了对网络资源的利用率。
图2是根据本公开另一些实施例的交易处理方法的流程示意图。
在步骤202,第二区块链节点接收来自第一区块链节点的第二交易。
这里,第二交易由第一区块链节点采用预设EOA的私钥对来自用户的第一交易进行签名得到。第二区块链节点与用户的合约账户的地址对应。
在一些实施例中,在第一交易包括多个交易的情况下,第二区块链节点接收到的第二交易可以是签名后的这多个交易。
在步骤204,第二区块链节点采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。
在一些实施例中,预设EOA的公钥可以预先设置在第二区块链节点中,或者第一区块链节点可以将该预设EOA的公钥发送至第二区块链节点。
在一些实施例中,第二区块链节点可以调用用户的合约账户对应的智能合约以采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。
上述实施例中,用户的合约账户的地址对应的区块链节点所接收到的交易是由另一个区块链节点采用预设EOA的私钥对来自用户的交易签名得到的,用户的合约账户的地址对应的区块链节点进而采用该预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。如此,减少了交易中的信息被泄露的可能性,从而提高了交易的安全性。
在一些实施例中,在第一交易包括多个交易的情况下,第二区块链节点通过一次验证操作可以完成对这多个交易的验证。如此,提高了区块链节点对交易的处理效率。
在一些实施例中,第一区块链节点接收到的第一交易为由用户采用不同于私钥的密钥进行签名的交易,其中,密钥对应的加密算法的复杂度低于私钥对应的加密算法的复杂度。如此,用户所发起的交易在发送至区块链节点之前便被签名,在降低了用户在区块链上进行数字货币交易的操作门槛的基础上,进一步减少了交易中信息被泄露的可能性,从而进一步提高了交易的安全性。
图3是根据本公开又一些实施例的交易处理方法的流程示意图。
如图3所示,用户采用复杂度比私钥对应的加密算法的复杂度更低的加密算法所生成的密钥对所发起的交易进行签名后得到第一交易,并发送该第一交易;第一区块链节点在接收到第一交易后采用预设EOA的私钥对第一交易进行签名,以得到第二交易,并发送该第二交易;第二区块链节点在接收到第二交易后,可以调用用户的合约账户对应的智能合约以采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行该第二交易。例如,用户的合约账户对应的智能合约可以包括入口合约和钱包合约,入口合约可以用于采用预设EOA的公钥对第二交易进行验证,并在验证通过后将第二交易转发至钱包合约,钱包合约可以用于执行第二交易。
在一些实施例中,图2所示的交易处理方法还可以包括如下步骤:
第二区块链节点响应于来自用户针对合约账户的找回请求,调用合约账户对应的智能合约以执行操作。这里,该操作包括如下步骤S1至步骤S3。
S1:向用户发送用于验证用户为合约账户的所有者的验证信息。
这里,智能合约中预设有至少一个第一账户验证者的信息。
在一些实施例中,向用户发送的用于验证用户为合约账户的所有者的验证信息可以为在预设时间内有效的验证码。
在一些实施例中,用户可以在智能合约中预设至少一个(即一个或多个)第一账户验证者的信息,第一账户验证者例如可以包括用户所信任的朋友。
S2:在预设时间内接收到来自至少一个第二账户验证者的验证信息的情况下,基于至少一个第一账户验证者的信息对至少一个第二账户验证者进行身份验证。
作为一些实现方式,智能合约中预设的至少一个第一账户验证者的信息可以包括至少一个第一账户验证者的合约账户地址。
表1示出了智能合约中各个字段的结构示意图。
表1
如表1所示,“address[]Guardian”中可以设置有预设的至少一个第一账户验证者的信息(例如至少一个第一账户验证者合约账户地址),“thresholdValue”中可以设置有通过验证的账户验证者所需达到的预设数量。“function setGuardian()”、“functionaddGuardian()”以及“function delGuardian()”分别可以设置有设置、添加和删除第一账户验证者的信息的代码逻辑。“function verify()”可以设置有账户验证者的验证方法的代码逻辑。
在这种实现方式下,步骤S2可以按照如下步骤实现身份验证。
首先,针对接收到的每个第二账户验证者的验证信息,判断该第二账户验证者的验证信息是否来自于至少一个第一账户验证者的合约账户地址。
然后,在判断为是的情况下,确定该第二账户验证者通过身份验证;在判断为否的情况下,确定该第二账户验证者未通过身份验证。
例如,区块链节点在接收到每个第二账户验证者的验证码的情况下,可以判断该第二账户验证者的合约账户地址与至少一个第一账户验证者中某个第一账户验证者的合约账户地址是否相同,若相同,则判断该验证码来自至少一个第一账户验证者的合约账户地址(即判断为是);若不相同,则判断该验证码并非来自至少一个第一账户验证者的合约账户地址(即判断为否)。
S3:在通过身份验证的第二账户验证者的数量大于或等于预设数量的情况下,向用户发送合约账户的重置密码。
应理解,预设数量小于或等于智能合约中预设的至少一个第一账户验证者的数量。
例如,预设数量为3,在预设时间内接收到来自5个第二账户验证者的验证信息的情况下,若其中3个或3个以上的第二验证者通过了身份验证,则可以确认用户为合约账户的所有者,进而可以向用户发送合约账户的重置密码。
上述实施例中,在合约账户对应的智能合约中可以预设至少一个第一账户验证者的信息,第二区块链节点响应于来自用户针对合约账户的找回请求,向用户发送用于验证用户为合约账户的所有者的验证信息,在预设时间内接收到来自至少一个第二账户验证者的验证信息的情况下,基于预设的至少一个第一账户验证者的信息对至少一个第二账户验证者进行身份验证,若通过身份验证的第二账户验证者的数量大于或等于预设数量,则向用户发送合约账户的重置密码。如此,在用户的合约账户丢失的情况下,可以通过向第二区块链节点发送相应的找回请求,以找回合约账户,从而提高了区块链钱包的安全性。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于节点实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开实施例还提供了一种区块链节点,包括被配置为执行上述任意一个实施例的方法的模块。
图4是根据本公开一些实施例的区块链节点的结构示意图。
如图4所示,区块链节点400包括接收模块401、签名模块402和发送模块403。
接收模块401可以被配置为接收来自用户的第一交易。这里,第一交易包括用户的合约账户的地址。
签名模块402可以被配置为采用预设EOA的私钥对第一交易进行签名,以得到第二交易。
发送模块403可以被配置为将第二交易发送至地址对应的第二区块链节点,以便第二区块链节点采用预设EOA的公钥对第二交易进行验证,并在验证通过后执行第二交易。
在一些实施例中,区块链节点400还可以包括执行上述任意一个实施例的其他操作的其他模块。
本公开实施例还提供了另一种区块链节点,包括被配置为执行上述任意一个实施例的方法的模块。
图5是根据本公开另一些实施例的区块链节点的结构示意图。
如图5所示,区块链节点500包括接收模块501和验证模块502。
接收模块501可以被配置为接收来自第一区块链节点的第二交易。这里,所述第二交易由所述第一区块链节点采用预设EOA的私钥对来自所述用户的第一交易进行签名得到,所述第二区块链节点与所述用户的合约账户的地址对应。
验证模块502可以被配置为采用预设EOA的公钥对所述第二交易进行验证,并在所述验证通过后执行所述第二交易。
在一些实施例中,区块链节点500还可以包括执行上述任意一个实施例的其他操作的其他模块。
图6是根据本公开又一些实施例的区块链节点的结构示意图。第一区块链节点和第二区块链节点均可以采用图6所示的区块链节点600的结构。
如图6所示,区块链节点600包括存储器601以及耦接至该存储器601的处理器602,处理器602被配置为基于存储在存储器601中的指令,执行前述任意一个实施例的方法。在执行图1所示的方法时区块链节点600可以是第一区块链节点;在执行图2所示的方法时区块链节点600可以是第二区块链节点。
存储器601例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如可以存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
区块链节点600还可以包括输入输出接口603、网络接口604、存储接口605等。这些接口603、604、605之间、以及存储器601与处理器602之间例如可以通过总线606连接。输入输出接口603为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口604为各种联网设备提供连接接口。存储接口605为SD卡、U盘等外置存储设备提供连接接口。
本公开实施例还提供了一种交易处理系统,包括上述任意一个实施例的第一区块链节点(例如区块链节点400)和上述任意一个实施例的第二区块链节点(例如区块链节点500)。
本公开实施例还提供了一种计算机可读存储介质,包括计算机程序指令,该计算机程序指令被处理器执行时实现上述任意一个实施例的方法。
本公开实施例还提供了一种计算机程序产品,包括计算机程序,其中,该计算机程序被处理器执行时实现上述任意一个实施例的方法。
至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解,可由计算机程序指令实现流程图中一个流程或多个流程和/或方框图中一个方框或多个方框中指定的功能。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
- 数据处理方法、区块链节点、系统和计算机可读存储介质
- 区块链轻量化处理方法、区块链节点及存储介质
- 区块链轻量化处理方法、区块链节点及存储介质
- 区块链的拆分处理方法、装置、区块链节点及存储介质
- 一种交易共识方法、节点及区块链系统
- 区块链交易处理方法、交易节点以及区块链系统
- 区块链交易处理方法、区块链节点和区块链系统