CN117201028A - 一种数据处理方法及节点 - Google Patents

一种数据处理方法及节点 Download PDF

Info

Publication number
CN117201028A
CN117201028A CN202311005383.7A CN202311005383A CN117201028A CN 117201028 A CN117201028 A CN 117201028A CN 202311005383 A CN202311005383 A CN 202311005383A CN 117201028 A CN117201028 A CN 117201028A
Authority
CN
China
Prior art keywords
user
identity information
information
algorithm
intelligent contract
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311005383.7A
Other languages
English (en)
Inventor
代文昊
曹阳阳
姚旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Huawei Cloud Computing Technology Co ltd
Original Assignee
Shenzhen Huawei Cloud Computing Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Huawei Cloud Computing Technology Co ltd filed Critical Shenzhen Huawei Cloud Computing Technology Co ltd
Priority to CN202311005383.7A priority Critical patent/CN117201028A/zh
Publication of CN117201028A publication Critical patent/CN117201028A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一种数据处理方法及节点,可应用于区块链技术领域。该方法包括:接收用户节点发送的操作信息,操作信息包括用户操作和零知识证据;零知识证据是用户节点基于发起用户操作的第二用户的身份信息生成的;在基于加密身份信息和零知识证据,确认第二用户和第一用户一致的情况下,调用智能合约,执行用户操作。其中,智能合约是指智能合约钱包。该方法以在不依赖私钥的情况下,实现区块链上的用户身份认证。

Description

一种数据处理方法及节点
技术领域
本申请涉及区块链技术领域,特别涉及一种数据处理方法及节点。
背景技术
目前,以太坊具有两类账户,分别为外部拥有账户(externally owned account,EOA)和智能合约账户(contract account,CA)。其中,外部拥有账户由用户拥有和控制,智能合约账户是部署在区块链网络中的智能合约。其中,对于外部拥有账户而言,用户持有公钥和私钥。对于智能合约账户而言,智能合约账户持有公钥,用户持有私钥。因此,这两类账户均可以接收、持有和发送代币(token),转账等但链上交易只能由用户持有的私钥进行签名并触发。因此,私钥是用户掌控账户的凭证,若私钥丢失,则代表区块链上的资产丢失。
私钥为一长串无规律的字符,用户保存难度较大,容易丢失。虽然,目前有很多用于管理私钥的钱包,但钱包的设置程序以及私钥的安全措施十分复杂,不便用户使用。
发明内容
本申请实施例提出了一种数据处理方法及节点,可以在不依赖私钥的情况下,实现区块链上的用户身份认证。
第一方面,提供了一种数据处理方法,应用于区块链系统中的区块链节点,区块链节点记录有智能合约和加密身份信息,加密身份信息是对智能合约所属第一用户的身份信息进行加密得到的;该方法包括:接收用户节点发送的操作信息,操作信息包括用户操作和零知识证据;零知识证据是用户节点基于发起用户操作的第二用户的身份信息生成的;在基于加密身份信息和零知识证据,确认第二用户和第一用户一致的情况下,调用智能合约,执行用户操作。其中,智能合约是指智能合约钱包。身份信息可以是用户设置的,用于区分不同的用户的信息。示例性的,身份信息可以包括账户和密码。示例性的,零知识证明的验证逻辑可以包含该智能合约中,在区块链节点可以调用智能合约基于加密身份信息和零知识证据,判断第二用户和第一用户是否一致。
在该方法中,将智能合约所属用户的加密身份信息作为零知识证明的验证值和该智能合约关联存储在区块链节点上。在发起用户操作时,可以基于发起用户操作的用户的身份信息生成用于零知识证明的零知识证据,然后,将该零知识证据和用户操作包含在操作信息。区块链节点在接收到该操作信息时,可以基于零知识证据和智能合约所属用户的加密身份信息,判断发起用户操作的用户和智能合约所属用户是否一致,若一致,则表示用户操作通过了身份认证,区块链节点可以调用该智能合约,执行该用户操作。这在不向区块链暴露用户的明文身份信息、不牺牲区块链的去中心化特性的情况下,实现用户身份认证,以及使得用户操作得以执行。该方法操作简单,无需用户保密保存无规律的私钥,使得用户可以按照使用web2的方式,使用区块链,提升了用户使用区块链的用户体验。
在一种可能的实现方式中,零知识证据是用户节点通过证明算法生成的,其中,证明算法的私有输入包括第二用户的身份信息,公共输入包括验证凭据和加密身份信息;操作信息包括验证凭据;基于加密身份信息和零知识证据,确认第二用户和第一用户一致,包括:将零知识证据、验证凭据和加密身份信息输入至验证算法,使得验证算法输出验证结果;基于验证结果,判断第二用户和第一用户是否一致;其中,证明算法和验证算法属于同一零知识证明算法。
在该实现方式中,可以基于第二用户的身份信息、验证凭据和第一用户的加密身份信息,利用零知识证明算法中的证明算法,得到零知识证据。区块链节点可以基于零知识证据、验证凭据、第一用户的加密身份信息,利用该零知识证据算法中的验证算法,判断第一用户和第二用户是否一致,实现了用户身份认证。
在一种可能的实现方式中,验证凭据是对第二用户的身份信息和用户操作的信息进行哈希得到的,其中,用户操作的信息包括:智能合约的本次执行累加数、智能合约的地址、区块链的标识、用户操作的哈希值中的至少一种。
用于生成验证凭据的信息包括智能合约的本次执行累加数,在利用验证凭据进行身份认证时,可以判断是否发生了重放攻击。用于生成验证凭据的信息包括智能合约的地址,在利用验证凭据进行身份认证时,可以判断是否调用了正确的智能合约钱包。用于生成验证凭据的信息包括智能合约所在区块链的标识,在利用验证凭据进行身份认证时,可以判断是否发生了跨链。用于生成验证凭据的信息包括用操作的哈希值,可以将验证凭据和用户操作关联,避免不同用户操作的验证凭据相同的情况出现。
第二方面,提供了一种数据处理方法,应用于区块链系统中的用户节点,区块链系统还包括区块链节点,区块链节点记录有智能合约和加密身份信息,加密身份信息是对智能合约所属第一用户的身份信息进行加密得到的;方法包括:基于第二用户的身份信息,生成零知识证据;向区块链节点发送操作信息,操作信息包括零知识证据和第二用户发起的用户操作;其中,区块链节点用于在基于加密身份信息和零知识证据,确认第二用户和第一用户一致的情况下,调用智能合约,执行用户操作。
在一种可能的实现方式中,基于第二用户的身份信息,生成零知识证据包括:将包括第二用户的身份信息的私有输入、包括验证凭据和加密身份信息的公共输入,输入至证明算法,使得证明算法输出零知识证据;操作信息还包括验证凭据;区块链节点用于将零知识证据、验证凭据和加密身份信息输入至验证算法,使得验证算法输出验证结果;并基于验证结果,判断第二用户和第一用户是否一致;其中,证明算法和验证算法属于同一零知识证明算法。
在一种可能的实现方式中,验证凭据是对第二用户的身份信息和用户操作的信息进行哈希得到的,其中,用户操作的信息包括:智能合约的本次执行累加数、智能合约的地址、区块链的标识、用户操作的哈希值中的至少一种。
第三方面,提供了一种区块链节点,区块链节点记录有智能合约和加密身份信息,加密身份信息是对智能合约所属第一用户的身份信息进行加密得到的;区块链节点包括:接收模块,用于接收用户节点发送的操作信息,操作信息包括用户操作和零知识证据;零知识证据是用户节点基于发起用户操作的第二用户的身份信息生成的;执行模块,用于在基于加密身份信息和零知识证据,确认第二用户和第一用户一致的情况下,调用智能合约,执行用户操作。
在一种可能的实现方式中,零知识证据是用户节点通过证明算法生成的,其中,证明算法的私有输入包括第二用户的身份信息,公共输入包括验证凭据和加密身份信息;操作信息包括验证凭据;执行模块还用于:将零知识证据、验证凭据和加密身份信息输入至验证算法,使得验证算法输出验证结果;基于验证结果,判断第二用户和第一用户是否一致;其中,证明算法和验证算法属于同一零知识证明算法。
在一种可能的实现方式中,验证凭据是对第二用户的身份信息和用户操作的信息进行哈希得到的,其中,用户操作的信息包括:智能合约的本次执行累加数、智能合约的地址、区块链的标识、用户操作的哈希值中的至少一种。
在一种可能的实现方式中,身份信息包括账号和密码。
第四方面,提供了一种用户节点,用户节点所在的区块链系统还包括区块链节点,区块链系统还包括区块链节点,区块链节点记录有智能合约和加密身份信息,加密身份信息是对智能合约所属第一用户的身份信息进行加密得到的;用户节点包括:生成模块,用于基于第二用户的身份信息,生成零知识证据;发送模块,用于向区块链节点发送操作信息,操作信息包括零知识证据和第二用户发起的用户操作;其中,区块链节点用于在基于加密身份信息和零知识证据,确认第二用户和第一用户一致的情况下,调用智能合约,执行用户操作。
在一种可能的实现方式中,生成模块用于:将包括第二用户的身份信息的私有输入、包括验证凭据和加密身份信息的公共输入,输入至证明算法,使得证明算法输出零知识证据;操作信息还包括验证凭据;区块链节点用于将零知识证据、验证凭据和加密身份信息输入至验证算法,使得验证算法输出验证结果;并基于验证结果,判断第二用户和第一用户是否一致;其中,证明算法和验证算法属于同一零知识证明算法。
在一种可能的实现方式中,验证凭据是对第二用户的身份信息和用户操作的信息进行哈希得到的,其中,用户操作的信息包括:智能合约的本次执行累加数、智能合约的地址、区块链的标识、用户操作的哈希值中的至少一种。
第五方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得计算设备集群执行第一方面提供的方法。
第六方面,提供了一种计算机可读存储介质,包括计算机程序指令,当计算机程序指令由计算设备集群执行时,计算设备集群执行第一方面提供的方法。
第七方面,提供了一种包含指令的计算机程序产品,当指令被计算机设备集群运行时,使得计算机设备集群执行第一方面提供的方法。
第二方面至第七方面的有益效果可参考上文对第一方面的有益效果的介绍,在此不再赘述。
附图说明
图1为本申请实施例提供的一种区块链系统的结构示意图;
图2为本申请实施例提供的一种数据处理方案的示意图;
图3为本申请实施例提供的一种数据处理方案的示意图;
图4为本申请实施例提供的一种数据处理方法的流程图;
图5为本申请实施例提供的一种数据处理方法的流程图;
图6为本申请实施例提供的一种区块链节点的结构示意图;
图7为本申请实施例提供的一种用户节点的结构示意图;
图8为本申请实施例提供的一种计算设备的结构示意图;
图9为本申请实施例提供的一种计算设备集群的结构示意图;
图10为本申请实施例提供的一种计算设备集群的结构示意图;
图11为本申请实施例提供的一种计算设备的结构示意图;
图12为本申请实施例提供的一种计算设备集群的结构示意图;
图13为本申请实施例提供的一种计算设备集群的结构示意图。
具体实施方式
下面将结合附图对本申请实施例提供的方案进行描述。其中,在本申请实施例中,“多个”是指两个或多于两个。
首先,介绍本申请实施例可能涉及到的一些技术用语。
区块链(block chain):利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学方式来保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
用户操作(user operation,UP):代表用户发起的链上交易,例如转账等。其中,客户端节点可调用以太坊接口eth_sendUserOperation,向区块链节点提交用户操作。
用户节点:也称客户端节点,是区块链系统中代表用户的实体。客户端节点可以在用户的操作下,和区块链系统中的其他节点进行信息交互,例如发起交易(即用户操作)、在区块链节点中创建智能合约等。
区块链节点:区块链系统中部署智能合约,并调用智能合约执行用户操作的节点。区块链节点可作为账本节点,用于存储构成区块链的区块。
零知识证明(zero-knowledge proofs,ZKPs):证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。零知识证明可应用于身份验证、数字签名、非确定性多项式问题(non-deterministic polynomial problems,NP问题)、水印检测、密钥交换等场景中。
钱包工厂(wallet factory):创建智能合约钱包的合约,当操作信息的initCode字段不为空时使用。
智能合约钱包:为一种智能合约。在本申请实施例中,智能合约钱包在发出用户操作的用户通过认证后,执行该用户操作,例如使用智能合约钱包的地址,为该用户操作签名。在本申请实施例中,智能合约钱包也可被简称为智能合约。
入口点(entry point):一个用于转发用户操作捆绑包的合约。捆绑者将支持的入口点放入白名单
捆绑者(bundler):一个捆绑多个用户操作的节点,该节点会创建一个用于入口点的交易,间接帮用户提交链上交易。
操作信息:也称用户操作结构体、交易结构体,包括智能合约地址、用户操作、签名、initCode等信息。
账户抽象(account abstraction):在以太坊中外部账户由用户拥有和控制,而智能合约账户是部署在网络中的智能合约,两种账户均可以接收、持有和发送代币。账户抽象是一种将用户钱包变成智能合约账户,让每个账户都具有自我验证逻辑的智能合约的技术。
账户抽象旨在将以太坊上的两类账户(即外部拥有账户和智能合约账户)的功能合二为一。账户抽象为解决钱包不便用户使用的问题,将钱包变成智能合约账户,让每个账户都具有自我验证逻辑的智能合约。但账户抽象没有摆脱对私钥的依赖,即仍需要用户保存私钥。虽然,可以通过第三方托管服务,来保存私钥。但第三方托管属于中心化方案,私钥的安全完全依赖托管方的信誉,仍有资产损失的风险。
本申请实施例提供了一种数据处理方案,可以摆脱用户操作对私钥的依赖,可使得用户按照第二代互联网(web2)的操作习惯,完成第三代互联网(web3)的用户身份认证。
其中,在该方案中,智能合约钱包的拥有者,即智能合约钱包的所属用户可以通过用户节点,加密该用户的身份信息,得到该用户的加密身份信息。其中,用户节点可以位于用户本地。用户可以将该加密身份信息存储在智能合约钱包中。该加密身份信息用作零知识算法的验证值h1。当用户发起用户操作时,用户可以在用户节点,使用该用户的身份信息,生成本次用户操作的零知识证据π。零知识证据π和用户操作可以包含在发向区块链节点的操作信息中。区块链节点可以基于零知识证据π以及存储在智能合约钱包的加密身份信息(即验证值h1),利用零知识证明算法,判断发起该用户操作的用户是否为该加密身份信息对应的用户。若是,则确认该用户操作通过用户认证,该智能合约钱包可以执行该用户操作。
该方案在不向区块链公开账号和密码的明文的情况下,实现用户认证,具有较高的信息安全性。并且,该方案通过账号和密码进行用户认证,摆脱了对私钥的依赖,并且,密码可由用户自己设置,方便用户保存密码。以及,该方案与以太坊现有社区协议或标准(ethereum request for comment 4337,ERC4337)完全兼容,可以无缝集成到现有社区标准体系中。
接下来,结合附图,对本申请实施例提供的数据处理方案进行说明。
图1示出了本申请实施例提供的一种区块链系统的架构图。该区块链系统包括服务方节点、至少一个用户节点、至少一个捆绑者、多个区块链节点。其中,服务方节点可以为钱包服务商、用户或开源社区等。
其中,当对服务方节点、用户节点、捆绑者、区块链节点不做特别区分时,它们可被简称为节点。
在一些实施例中,节点可以为物理设备,例如服务器或终端设备。在一些实施例中,节点可以为虚拟设备。其中,虚拟设备可以是虚拟机(virtual machine,VM)、容器(container)等通过软件虚拟出来计算设备。在一些实施例中,节点可以为进程(process)或者线程(thread)。其中,进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。线程是操作系统能够进行运算调度的最小单位。线程被包含在进程之中,是进程中的实际运作单位。
参阅图2,服务方可以生成证明密钥pkproof和验证密钥vkproof。在本申请实施例中,服务方可以设置NP语句,并将NP语句输入到零知识证明算法中,得到证明密码和验证密钥。在一些实施例中,零知识证明算法可以为zkSNARK、zkSTARKs、zkBoo、Sonic和BulletProofs中的任一种。
设置的NP语句包括:a,用户确实知道智能合约的所属用户的身份信息。这可进一步表述为:使用智能合约的所属用户的身份信息作为部分输入参数生成的哈希值h2确实是验证值h1的原文。
可以对智能合约钱包所属用户的身份信息进行加密,得到该用户的加密身份信息。例如,对用户的身份信息进行哈希,得到的哈希值用作用户的加密身份信息。再例如,可以采用对称加密的方式,对用户的身份信息进行加密,得到用户的加密身份信息。
其中,智能合约钱包所属用户的加密身份信息用作智能合约钱包的验证值h1,用于验证发起用户操作的用户的用户身份。当发起用户操作的用户的用户身份和智能合约钱包所属用户的用户身份一致或者说相同时,说明发起用户操作的用户和智能合约钱包所属用户一致,即为同一用户。当发起用户操作的用户和智能合约钱包所属用户一致时,可以调用该智能合约钱包,执行该用户操作,例如,对该用户操作进行签名。
在一些实施例中,用户的身份信息具体可以为账户(account)和密码(password)。其中,密码可以是用户设置的,例如用户可以遵循预设的规则,设置密码。其中,用户的身份信息可以为用户的账号和密码。在NP语句中,用户确实知道智能合约的所属用户的身份信息,可进一步表述为:使用该账户和密码作为前2个输入参数生成的哈希值h2确实是验证值h1的原文。
其中,如式1所示,可以对智能合约钱包所属用户的账户和密码,进行哈希,得到智能合约钱包所属用户的加密身份信息,即验证值h1
h1=Hash(account||password) (1)
其中,Hash为哈希算法,表述字符串的拼接。
在一些实施例中,设置的NP语句还包括:b,智能合约钱包的本次执行累加数等于已有执行累加数加1。其中,可使用nonce2表示本次执行累加数,nonce1表示已有执行累加数。由此,NP语句中的智能合约钱包的本次执行累加数等于已有执行累加数加1可表示为nonce2=nonce1+1。
执行累加数也称执行总次数。智能合约钱包的本次执行累加数是指智能合约钱包执行本次的用户操作后的累加数。已有执行累加数也称当前累加数,是指智能合约钱包执行本次的用户操作前的最大累加数。
NP语句包括智能合约钱包的本次执行累加数等于已有执行累加数加1,可避免重放攻击。
将上文设置的NP语句输入到零知识证明算法,使得零知识证明算法输出证明密钥pkproof和验证密钥vkproof
服务方通过服务方节点,发起上链交易,以将验证密钥vkproof上链,即将验证密钥vkproof部署到区块链节点上。
继续参阅图2,服务方节点还用于编写智能合约模板。智能合约模块也称钱包工厂,为创建智能合约钱包的合约。其中,当区块链节点简称到操作信息的initCode字段不为空时,使用智能合约模板,创建智能合约钱包。一个智能合约钱包为智能合约模板的一个实例。
智能合约模板包括执行用户操作的代码,例如用于为用户操作签名的代码。
智能合约模板还包括用于验证用户身份的代码。在一些实施例中,用于验证用户身份的代码可以包括用于实现validateUserOp函数的代码。validateUserOp函数是指验证发起用户操作的用户的身份的函数。该函数包括如下功能:
1,验证操作信息是否经入口点转发,即验证转发操作信息的地址中是否包括入口点这一合约的地址。
2,从操作信息中的签名字段,获取零知识证据π和验证凭据h2
3,设置零知识证明算法的公共输入x。
4,利用零知识证明算法,验证零知识证据π,以验证发起用户操作的用户身份。
5,在用户身份验证失败时,确认身份认证未通过。
6,在用户身份验证成功时,向入口点支付相应费用。
服务方在编写完成智能合约模板后,可以通过服务方节点,发起上链交易,以将智能合约模板上链,即将智能合约模板部署到区块链节点上。
至此,通过服务方的工作,可以将验证密钥vkproof和智能合约模板部署到区块链节点上。
用户可以通过用户节点在区块链节点上创建该用户的智能合约钱包。如图2所示,用户在创建智能合约钱包时,可以通过用户节点,对该用户的身份信息进行加密,得到加密身份信息。该加密身份信息可作为零知识证明的验证值h1。也就是说,智能合约钱包所属用户的加密身份信息用作验证值h1
在一些实施例中,用户的身份信息可以为账号和密码。在一些实施例中,可以对用户的身份信息进行哈希,得到的哈希值为加密身份信息,即验证值h1。在一个例子中,可以通过上文介绍的式(1),得到验证值h1
用户可以获取智能合约模板的地址。智能合约模板上链后,对用户而言,智能合约模板的地址是公开的。因此,用户可以获取智能合约模板的地址。用户可以发起创建智能合约钱包的用户操作,该用户操作的操作信息中包括:智能合约模板的地址、验证值h1、创建智能合约钱包的用户操作、值不为空的initCode等。用户节点可以向区块链节点发送该操作信息。在一些实施例中,用户节点可以先将该操作信息发送至捆绑者,捆绑者可以将该操作信息捆绑到捆绑包中,然后通过捆绑包的方式,将该操作信息发送至区块链节点。
区块链节点可以从该操作信息中,获取智能合约模板的地址、验证值h1、以及initCode的值。initCode的值不为空,区块链节点执行创建智能合约钱包的用户操作,创建该用户的智能合约钱包。具体而言,可以基于智能合约模板的地址,对该地址所对应的智能合约模板进行拷贝,得到智能合约实例。将该智能合约实例和该用户的加密身份信息(即验证值h1)关联存储,从而创建得到该用户的智能合约钱包。其中,该智能合约实例可作为该用户的智能合约钱包,用于执行该用户发起的用户操作。验证值h1用于验证用户操作是否由该用户发起,即验证发起用户操作的用户身份。
区块链节点可将智能合约钱包和验证值h1记录到的区块,并将区块上链,从而将智能合约钱包和验证值h1记录到区块链中。其中,区块链节点存储区块链,因此,区块链节点记录智能合约钱包和验证值h1
继续参阅2,用户可以在用户节点发起用户操作,并将该用户操作发送至区块链节点。在发起该用户操作的用户身份通过验证后,区块链节点可以调用智能合约钱包,执行该用户操作。接下来,结合图2和图3,对前述过程进行具体说明。
用户可以在用户节点设置用户操作,例如,向对方账号转入N个代币。示例性的,用户设置的用户操作具体为executionCall。
用户可以在用户节点设置验证凭证h2。验证凭证h2用于区块链节点使用零知识证明算法,对发起用户操作的用户身份进行验证。
在一些实施例中,对发起用户操作的用户的身份信息和该用户操作的信息进行哈希,得到验证凭证h2。其中,该用户操作的信息包括智能合约钱包的本次执行累加数nonce2、智能合约钱包的地址addrwl、区块链的标识chainID、该用户操作的哈希值opHash中的至少一种。其中,此处的智能合约钱包是指用户操作的目标智能合约钱包,该用户操作被设计为由该智能合约钱包执行。即发起该用户操作的用户指定该用户操作由该智能合约钱包执行。
智能合约钱包的地址记录在区块链中,是公开的,因此,用户可以无需采用保密的方式,保存智能合约钱包的地址。如此,用户可以采用多种方式,例如第三方保存、区块链保存等方式,保存智能合约钱包的地址。用户在发起用操作时,可以指定智能合约钱包的地址,以指定该智能合约钱包执行该用户操作。其中,钱包的地址并非用户私钥,也并非用户的密码。因此,即使保存在第三方,也不会牺牲区块链的去中心化的特性。
在一些实施例中,用户可以在用户本地生成智能合约钱包的地址。用户本地的用户节点可以通过区块链的相关协议,生成智能合约钱包的地址。
用户在发起用户操作时,可以在区块链节点查询智能合约钱包的当前执行累加数nonce1,然后,将当前执行累加数nonce1加1,得到本次执行累加数nonce2
区块链的标识具体为存储智能合约钱包的区块所在的区块链的标识。
用户操作的哈希值opHash可以通过式2,计算得到。
opHash=Hash(addrwl||nonce2||initCode||callData) (2)
其中,callData代表用户操作。
在一些实施例中,发起用户操作的用户的身份信息为账号account和密码password。在一个例子中,可以通过式3,计算得到验证凭证h2
h2=Hash(account||password||opHash||addrwl||chainID||nonce2) (3)
如此,可以得到验证凭证h2
发起用户操作的用户可以在用户节点,零知识证明算法的私有输入a、公共输入x。然后,利用零知识证明算法对服务方节点生成的证明密钥pkproof、私有输入a以及公共输入x进行计算,得到零知识证据π。具体如下。
其中,发起用户操作的用户的身份信息作为生成零知识证据π的私有输入a。也就是说,零知识证据π是基于发起用户操作的用户身份信息生成的。其中,用户的身份信息可以为账号account和密码password。即,a=(account,password)。
其中,公共输入x包括验证凭证h2和验证值h1。其中,如上所述,验证值h1为智能合约钱包所属用户的加密身份信息。验证值h1存储在区块链中,是公开的,用户可以基于智能合约钱包的地址,查询并获取验证值h1。其中,当用户发起用户操作时,若用户基于智能合约钱包的地址,没有查询到的验证值h1。例如,智能合约钱包的地址是用户在发起用户操作时,用户在用户本地生成的地址。则用户对该用户的身份信息进行加密,得到加密身份信息。该加密身份信息用作验证值h1
在一些实施例中,公共输入x还包括户操作的哈希值opHash、智能合约钱包的地址addrwl、区块链的标识chainID、本次执行累加数nonce2、当前执行累加数nonce1
也就是说,x=(opHash,addrwl,chainID,nonce2,nonce1,h2,h1)。
可以将证明密钥pkproof、私有输入a以及公共输入x输入到零知识证明算法中的证明算法Prove,使得证明算法输出零知识证据π。具体如式(4)所示。
π=Prove(pkproof,a,x) (4)
在得到零知识证据π等信息后,可以设置该用户操作的操作信息。其中,操作信息可以使用表示userOperation。
其中,操作信息可以包括用户操作、零知识证据π、智能合约钱包的地址addrwl、验证凭证h2和验证值h1。其中,验证凭证h2和验证值h1可以作为操作信息的签名。在一些实施例中,操作信息除了包括前述信息外,还可以包括本次执行累加数nonce2和\或initCode。在一个例子中,操作信息可通过下式表示。
userOperation
={sender:addrwl,nonce:nonce2,initCode:null,callData:executionCall,signature:π||h2}
如此,可以得到包含零知识证据的操作信息。
用户节点可以向区块链节点,发送包含零知识证据的操作信息。在一些实施例中,如图2所示,在操作信息被发送至区块链节点之前,该操作信息可以先被发送至捆绑者。捆绑者可以捆绑该操作信息,将该操作信息捆绑至操作信息包中。然后通过操作信息包将该操作信息,发送至区块链节点。
在一些实施例中,如图3所示,来自不同用户节点的操作信息可以构成用户操作池,用户操作池包括多个操作信息。捆绑者可以将多个操作信息捆绑为操作信息包。然后,矿工可以验证操作信息包中的操作信息是否有效。以用户操作为支付方向收款方支付一定数量的代币为例,矿工可以判断支付方的账户中剩余代币的数量是否小于所要支付的代币的数量。若小于,则操作信息无效。若不小于,则操作信息有效。
矿工将有效的操作信息包含到区块中,将无效的操作信息丢弃。
继续参阅图3,区块链节点部署有入口点合约。区块链节点可以调用入口点合约,获取包含操作信息的区块。在区块中的操作信息通过身份验证,且被执行后,区块链节点可以将区块上链。具体如下。
其中,区块上链也称区块落盘,是指将区块串接到区块链上或者说写入账本。
如图3所示,区块链节点可以判断区块中的操作信息的智能合约钱包是否存在。如上所述,操作信息包括智能合约钱包的地址。若该地址指向了一个智能合约钱包,则该操作信息的智能合约钱包存在。在这种情况下,区块链节点可以基于该地址,获取智能合约钱包。
在一些实施例中,若该地址指向为空,则该操作信息的智能合约钱包不存在。在这种情况下,区块链节点可以为该操作信息创建智能合约钱包。具体而言,区块链节点可以获取智能合约模板的地址,并基于智能合约模板的地址,对智能合约模板进行拷贝,得到智能合约实例。另外,区块链节点可以向用户节点发送验证值请求。用户节点可以响应该验证值请求,验证值h1将发送至区块链节点,从而创建得到该操作信息的智能合约钱包。其中,此处的验证值可以是为该操作信息对应的用户的加密身份信息,该智能合约实例可作为该操作信息对应的用户的智能合约钱包,用于执行该用户发起的用户操作。该操作信息对应的用户是指该操作信息中用户操作的发起用户。
如此,区块链节点可获取到操作信息的智能合约钱包。
区块链节点可以验证该操作信息对应的用户的用户身份,即验证该操作信息中用户操作的发起用户的用户身份。在一些实施例中,如上所述,智能合约钱包具有身份验证功能,例如,智能合约钱包包括用于验证用户身份的代码。区块链节点可以调用该代码,实现用户身份验证。
其中,区块链节点可以基于该操作信息包括的零知识证据π和该操作信息的智能合约钱包对应的验证值h1(即智能合约钱包所属用户的加密身份信息),验证该操作信息中用户操作的发起用户的用户身份。其中,可以基于该零知识证据π和该验证值h1,判断该操作信息中用户操作的发起用户的用户和智能合约钱包所属用户是否一致。其中,用户一致可以是指用户相同。其中,如上所述,区块链节点将智能合约钱包和该智能合约钱包对应的验证值h1关联存储,如此,区块链节点在基于智能合约钱包的地址,确定智能合约钱包后,可以获取该智能合约钱包对应的验证值h1
在一些实施例中,如上所述,操作信息还包括验证凭据h2。区块链节点可以基于零知识证据π、验证凭据h2和验证值h1,判断该操作信息中用户操作的发起用户的用户和智能合约钱包所属用户是否一致。具体而言,可以将零知识证据π、验证凭据h2和验证值h1,以及从区块链中获取的验证密钥,输入到零知识证明算法中的验证算法Verify,使得该验证算法Verify输出验证结果。然后,根据该验证结果,判断该操作信息中用户操作的发起用户的用户和智能合约钱包所属用户是否一致。其中,该验证算法Verify和生成该零知识证据π的证明算法Prove相对应,属于同一零知识证明算法。
在一些实施例中,验证算法可以如式5所示。
b=Verify(vkproof,x,π) (5)
其中,b表示验证结果,x表示公共输入,π表示零知识证据,vkproof表示验证密钥,Verify表示验证算法。其中,b在0和1中取值。当b=1时,表示验证通过,即发起操作的用户和智能合约钱包所属用户一致。当b=0时,表示验证未通过,即发起操作的用户和智能合约钱包所属用户不一致。基于所述验证结果,判断所述第二用户和所述第一用户是否一致。
在一个示例中,可以将验证凭据h2和验证值h1,作为验证算法的公共输入x。然后,将公共输入x、零知识证据π和验证密钥vkproof,输入到验证算法Verify,得到验证结果b。
在一个示例中,如上所述,公共输入x还包括户操作的哈希值opHash、智能合约钱包的地址addrwl、区块链的标识chainID、本次执行累加数nonce2、当前执行累加数nonce1。即,x=(opHash,addrwl,chainID,nonce2,nonce1,h2,h1)。
在这种情况下,区块链节点计算用户操作的哈希值opHash。具体而言,区块链节点可以获取智能合约的地址addrwl、智能合约钱包的当前执行累加数nonce1,并根据当前执行累加数nonce1,计算得到本次执行累加数nonce2,以及从操作信息中获取用户操作callData和initCode。然后,按照上文描述的式(2)计算得到用户操作的哈希值opHash。
另外,区块链节点还可以获取智能合约钱包所在区块所属的区块链的标识chainID。
如此,可以得到包括验证凭据h2、验证值h1、用户操作的哈希值opHash、智能合约钱包的地址addrwl、区块链的标识chainID、本次执行累加数nonce2、当前执行累加数nonce1的公共输入x。然后,将该公共输入x、零知识证据π和验证密钥vkproof,输入到验证算法Verify,得到验证结果b。
当验证结果b=0时,说明验证不通过,操作信息中用户操作的发起用户的用户和智能合约钱包所属用户不一致。这种情况下,区块链节点丢弃该操作信息。
当验证结果b=1时,说明验证通过,操作信息中用户操作的发起用户的用户和智能合约钱包所属用户一致。这种情况下,区块链节点调用智能合约钱包,执行该操作信息中的用户操作。其中,执行用户操作具体可以为该用户操作签名。其中,智能合约钱包可以使用智能合约钱包的地址为该用户操作签名。
继续参阅图3,签名后的用户操作所在的区块可以上链,即串接到区块链上,从而完成用户操作上链。
在本申请实施例提供的数据处理方案中,将智能合约钱包所属用户的加密身份信息存储到区块链中,作为验证值。然后,基于发起用户操作的用户的身份信息,生成零知识证据。区块链节点可以基于加密身份信息和零知识证据,判断发起用户操作的用户和智能合约钱包所属用户是否一致,从而在不向区块链暴露用户的明文身份信息、不牺牲区块链的去中心化特性的情况下,实现用户身份认证。该方案操作简单,无需用户保密保存无规律的私钥,使得用户可以按照使用web2的方式,使用区块链,提升了用户使用区块链的用户体验。
基于上文描述的数据处理方案,本申请实施例提供了一种数据处理方法。该方法应用于区块链系统中的区块链节点,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的。其中,此处的智能合约为上文描述的智能合约钱包。如图4所示,该方法包括如下步骤。
步骤401,接收用户节点发送的操作信息,所述操作信息包括用户操作和零知识证据;所述零知识证据是所述用户节点基于发起所述用户操作的第二用户的身份信息生成的。具体可以参考上文对图2或图3中用户节点所执行的操作介绍实现。
步骤402,在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。具体可以参考上文对图2或图3中区块链节点所执行的操作介绍实现。
在一些实施例中,所述零知识证据是所述用户节点通过证明算法生成的,其中,所述证明算法的私有输入包括所述第二用户的身份信息,公共输入包括验证凭据和所述加密身份信息;所述操作信息包括所述验证凭据;所述基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致,包括:将所述零知识证据、所述验证凭据和所述加密身份信息输入至验证算法,使得所述验证算法输出验证结果;基于所述验证结果,判断所述第二用户和所述第一用户是否一致;其中,所述证明算法和所述验证算法属于同一零知识证明算法。
在该实施例的一个示例中,所述验证凭据是对所述第二用户的身份信息和所述用户操作的信息进行哈希得到的,其中,所述用户操作的信息包括:所述智能合约的本次执行累加数、所述智能合约的地址、区块链的标识、所述用户操作的哈希值中的至少一种。
在一些实施例中,所述身份信息包括账号和密码。
本申请实施例提供的方法可在不向区块链暴露用户的明文身份信息、不牺牲区块链的去中心化特性的情况下,实现用户身份认证,以及使得用户操作得以执行。该方法操作简单,无需用户保密保存无规律的私钥,使得用户可以按照使用web2的方式,使用区块链,提升了用户使用区块链的用户体验。
基于上文描述的数据处理方案,本申请实施例提供了一种数据处理方法。该方法应用于区块链系统中的用户节点,所述区块链系统还包括区块链节点,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的。其中,此处的智能合约为上文描述的智能合约钱包。如图5所示,所述方法包括如下步骤。
步骤501,基于第二用户的身份信息,生成零知识证据。
步骤502,向所述区块链节点发送操作信息,所述操作信息包括所述零知识证据和所述第二用户发起的用户操作;
其中,所述区块链节点用于在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
在一些实施例中,所述基于第二用户的身份信息,生成零知识证据包括:将包括所述第二用户的身份信息的私有输入、包括验证凭据和所述加密身份信息的公共输入,输入至证明算法,使得所述证明算法输出所述零知识证据;所述操作信息还包括所述验证凭据;所述区块链节点用于将所述零知识证据、所述验证凭据和所述加密身份信息输入至验证算法,使得所述验证算法输出验证结果;并基于所述验证结果,判断所述第二用户和所述第一用户是否一致;其中,所述证明算法和所述验证算法属于同一零知识证明算法。
在该实施例的一个示例中,所述验证凭据是对所述第二用户的身份信息和所述用户操作的信息进行哈希得到的,其中,所述用户操作的信息包括:所述智能合约的本次执行累加数、所述智能合约的地址、区块链的标识、所述用户操作的哈希值中的至少一种。
本申请实施例提供的方法可在不向区块链暴露用户的明文身份信息、不牺牲区块链的去中心化特性的情况下,实现用户身份认证,以及使得用户操作得以执行。该方法操作简单,无需用户保密保存无规律的私钥,使得用户可以按照使用web2的方式,使用区块链,提升了用户使用区块链的用户体验。
参阅图6,本申请实施例提供了一种区块链节点600。区块链节点600记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的。如图6所示,区块链节点600包括:
接收模块610,用于接收用户节点发送的操作信息,所述操作信息包括用户操作和零知识证据;所述零知识证据是所述用户节点基于发起所述用户操作的第二用户的身份信息生成的;
执行模块620,用于在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
其中,接收模块610和执行模块620均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以接收模块610为例,介绍接收模块610的实现方式。类似的,执行模块620的实现方式可以参考接收模块610的实现方式。
模块作为软件功能单元的一种举例,接收模块610可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,接收模块610可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,接收模块610可以包括至少一个计算设备,如服务器等。或者,接收模块610也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
接收模块610包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。接收模块610包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,接收模块610包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,接收模块610可以用于执行图4所示方法中的任意步骤,执行模块620可以用于执行图4所示方法中的任意步骤。接收模块610和执行模块620负责实现的步骤可根据需要指定,通过接收模块610和执行模块620分别实现图4所示方法中不同的步骤来实现区块链节点600的全部功能。
参阅图7,本申请实施例提供了一种用户节点700。用户节点700所在的区块链系统还包括区块链节点,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的。用户节点700包括:
生成模块710,用于基于第二用户的身份信息,生成零知识证据;
发送模块720,用于向所述区块链节点发送操作信息,所述操作信息包括所述零知识证据和所述第二用户发起的用户操作;
其中,所述区块链节点用于在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
其中,生成模块710和发送模块720均可以通过软件实现,或者可以通过硬件实现。其中,生成模块710和发送模块720的实现方式可以参考接收模块610的实现方式,具体请见上文介绍,在此不再赘述。
需要说明的是,在其他实施例中,生成模块710可以用于执行图5所示方法中的任意步骤,发送模块720可以用于执行图5所示方法中的任意步骤。生成模块710和发送模块720负责实现的步骤可根据需要指定,通过生成模块710和发送模块720分别实现图5所示方法中不同的步骤来实现用户节点700的全部功能。
本申请还提供一种计算设备800。如图8所示,计算设备800包括:总线802、处理器804、存储器806和通信接口808。处理器804、存储器806和通信接口808之间通过总线802通信。计算设备800可以是服务器或终端设备。应理解,本申请不限定计算设备800中的处理器、存储器的个数。
总线802可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线802可包括在计算设备800各个部件(例如,存储器806、处理器804、通信接口808)之间传送信息的通路。
处理器804可以包括中央处理器、图形处理器、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器806可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器806还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器806中存储有可执行的程序代码,处理器804执行该可执行的程序代码以分别实现前述接收模块610、执行模块620的功能,从而实现图4所示方法。也即,存储器806上存有用于执行图4所示方法的指令。
通信接口808使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备800与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图9所示,所述计算设备集群包括至少一个计算设备800。计算设备集群中的一个或多个计算设备800中的存储器806中可以存有相同的用于执行图4所示方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备800的存储器806中也可以分别存有用于执行图4所示方法的部分指令。换言之,一个或多个计算设备800的组合可以共同执行用于执行图4所示方法的指令。
需要说明的是,计算设备集群中的不同的计算设备800中的存储器806可以存储不同的指令,分别用于执行区块链节点600的部分功能。也即,不同的计算设备800中的存储器806存储的指令可以实现接收模块610、执行模块620中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图10示出了一种可能的实现方式。如图10所示,两个计算设备800A和800B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备800A中的存储器806中存有执行接收模块610的功能的指令。同时,计算设备800B中的存储器806中存有执行执行模块620的功能的指令。
应理解,图10中示出的计算设备800A的功能也可以由多个计算设备800完成。同样,计算设备800B的功能也可以由多个计算设备800完成。
本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图9和图10所述计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备800中的存储器806中可以存有相同的用于执行图4所示方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备800的存储器806中也可以分别存有用于执行图4所示方法的部分指令。换言之,一个或多个计算设备800的组合可以共同执行用于执行图4所示方法的指令。
本申请还提供一种计算设备1100。如图11所示,计算设备1100包括:总线1102、处理器1104、存储器1106和通信接口1108。处理器1104、存储器1106和通信接口1108之间通过总线1102通信。计算设备1100可以是服务器或终端设备。应理解,本申请不限定计算设备1100中的处理器、存储器的个数。
其中,总线1102、处理器1104、存储器1106和通信接口1108的实现方式可以分别参考总线802、处理器804、存储器806和通信接口808的实现方式。
存储器1106中存储有可执行的程序代码,处理器1104执行该可执行的程序代码以分别实现前述生成模块710和发送模块720的功能,从而实现图5所示方法。也即,存储器1106上存有用于执行图5所示方法的指令。
通信接口1108使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1100与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图12所示,所述计算设备集群包括至少一个计算设备1100。计算设备集群中的一个或多个计算设备1100中的存储器1106中可以存有相同的用于执行图5所示方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1100的存储器1106中也可以分别存有用于执行图5所示方法的部分指令。换言之,一个或多个计算设备1100的组合可以共同执行用于执行图5所示方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1100中的存储器1106可以存储不同的指令,分别用于执行用户节点700的部分功能。也即,不同的计算设备1100中的存储器1106存储的指令可以实现生成模块710和发送模块720中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图13示出了一种可能的实现方式。如图13所示,两个计算设备1100A和1100B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备1100A中的存储器1106中存有执行生成模块710的功能的指令。同时,计算设备1100B中的存储器1106中存有执行发送模块720的功能的指令。
应理解,图13中示出的计算设备1100A的功能也可以由多个计算设备1100完成。同样,计算设备1100B的功能也可以由多个计算设备1100完成。
本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图12和图13所述计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备1100中的存储器1106中可以存有相同的用于执行图5所示方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1100的存储器1106中也可以分别存有用于执行图5所示方法的部分指令。换言之,一个或多个计算设备1100的组合可以共同执行用于执行图5所示方法的指令。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行图4所示方法。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行图5所示方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行图4所示方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行图5所示方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (17)

1.一种数据处理方法,其特征在于,应用于区块链系统中的区块链节点,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的;所述方法包括:
接收用户节点发送的操作信息,所述操作信息包括用户操作和零知识证据;所述零知识证据是所述用户节点基于发起所述用户操作的第二用户的身份信息生成的;
在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
2.根据权利要求1所述的方法,其特征在于,所述零知识证据是所述用户节点通过证明算法生成的,其中,所述证明算法的私有输入包括所述第二用户的身份信息,公共输入包括验证凭据和所述加密身份信息;所述操作信息包括所述验证凭据;
所述基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致,包括:
将所述零知识证据、所述验证凭据和所述加密身份信息输入至验证算法,使得所述验证算法输出验证结果;
基于所述验证结果,判断所述第二用户和所述第一用户是否一致;
其中,所述证明算法和所述验证算法属于同一零知识证明算法。
3.根据权利要求2所述的方法,其特征在于,所述验证凭据是对所述第二用户的身份信息和所述用户操作的信息进行哈希得到的,其中,所述用户操作的信息包括:所述智能合约的本次执行累加数、所述智能合约的地址、区块链的标识、所述用户操作的哈希值中的至少一种。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述身份信息包括账号和密码。
5.一种数据处理方法,其特征在于,应用于区块链系统中的用户节点,所述区块链系统还包括区块链节点,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的;所述方法包括:
基于第二用户的身份信息,生成零知识证据;
向所述区块链节点发送操作信息,所述操作信息包括所述零知识证据和所述第二用户发起的用户操作;
其中,所述区块链节点用于在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
6.根据权利要求5所述的方法,其特征在于,
所述基于第二用户的身份信息,生成零知识证据包括:将包括所述第二用户的身份信息的私有输入、包括验证凭据和所述加密身份信息的公共输入,输入至证明算法,使得所述证明算法输出所述零知识证据;
所述操作信息还包括所述验证凭据;
所述区块链节点用于将所述零知识证据、所述验证凭据和所述加密身份信息输入至验证算法,使得所述验证算法输出验证结果;并基于所述验证结果,判断所述第二用户和所述第一用户是否一致;
其中,所述证明算法和所述验证算法属于同一零知识证明算法。
7.根据权利要求6所述的方法,其特征在于,所述验证凭据是对所述第二用户的身份信息和所述用户操作的信息进行哈希得到的,其中,所述用户操作的信息包括:所述智能合约的本次执行累加数、所述智能合约的地址、区块链的标识、所述用户操作的哈希值中的至少一种。
8.一种区块链节点,其特征在于,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的;所述区块链节点包括:
接收模块,用于接收用户节点发送的操作信息,所述操作信息包括用户操作和零知识证据;所述零知识证据是所述用户节点基于发起所述用户操作的第二用户的身份信息生成的;
执行模块,用于在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
9.根据权利要求8所述的区块链节点,其特征在于,所述零知识证据是所述用户节点通过证明算法生成的,其中,所述证明算法的私有输入包括所述第二用户的身份信息,公共输入包括验证凭据和所述加密身份信息;所述操作信息包括所述验证凭据;
所述执行模块还用于:
将所述零知识证据、所述验证凭据和所述加密身份信息输入至验证算法,使得所述验证算法输出验证结果;
基于所述验证结果,判断所述第二用户和所述第一用户是否一致;
其中,所述证明算法和所述验证算法属于同一零知识证明算法。
10.根据权利要求9所述的区块链节点,其特征在于,所述验证凭据是对所述第二用户的身份信息和所述用户操作的信息进行哈希得到的,其中,所述用户操作的信息包括:所述智能合约的本次执行累加数、所述智能合约的地址、区块链的标识、所述用户操作的哈希值中的至少一种。
11.根据权利要求8-10中任一项所述的区块链节点,其特征在于,所述身份信息包括账号和密码。
12.一种用户节点,其特征在于,所述用户节点所在的区块链系统还包括区块链节点,所述区块链节点记录有智能合约和加密身份信息,所述加密身份信息是对所述智能合约所属第一用户的身份信息进行加密得到的;所述用户节点包括:
生成模块,用于基于第二用户的身份信息,生成零知识证据;
发送模块,用于向所述区块链节点发送操作信息,所述操作信息包括所述零知识证据和所述第二用户发起的用户操作;
其中,所述区块链节点用于在基于所述加密身份信息和所述零知识证据,确认所述第二用户和所述第一用户一致的情况下,调用所述智能合约,执行所述用户操作。
13.根据权利要求12所述的用户节点,其特征在于,
所述生成模块用于:将包括所述第二用户的身份信息的私有输入、包括验证凭据和所述加密身份信息的公共输入,输入至证明算法,使得所述证明算法输出所述零知识证据;
所述操作信息还包括所述验证凭据;
所述区块链节点用于将所述零知识证据、所述验证凭据和所述加密身份信息输入至验证算法,使得所述验证算法输出验证结果;并基于所述验证结果,判断所述第二用户和所述第一用户是否一致;
其中,所述证明算法和所述验证算法属于同一零知识证明算法。
14.根据权利要求13所述的用户节点,其特征在于,所述验证凭据是对所述第二用户的身份信息和所述用户操作的信息进行哈希得到的,其中,所述用户操作的信息包括:所述智能合约的本次执行累加数、所述智能合约的地址、区块链的标识、所述用户操作的哈希值中的至少一种。
15.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1至4任一项所述的方法或者如权利要求5至7中任一项所述的方法。
16.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1至4任一项所述的方法或者如权利要求5至7中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至4任一项所述的方法或者如权利要求5至7中任一项所述的方法。
CN202311005383.7A 2023-08-09 2023-08-09 一种数据处理方法及节点 Pending CN117201028A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311005383.7A CN117201028A (zh) 2023-08-09 2023-08-09 一种数据处理方法及节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311005383.7A CN117201028A (zh) 2023-08-09 2023-08-09 一种数据处理方法及节点

Publications (1)

Publication Number Publication Date
CN117201028A true CN117201028A (zh) 2023-12-08

Family

ID=88995131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311005383.7A Pending CN117201028A (zh) 2023-08-09 2023-08-09 一种数据处理方法及节点

Country Status (1)

Country Link
CN (1) CN117201028A (zh)

Similar Documents

Publication Publication Date Title
US11477032B2 (en) System and method for decentralized-identifier creation
US11924358B2 (en) Method for issuing digital certificate, digital certificate issuing center, and medium
US11038670B2 (en) System and method for blockchain-based cross-entity authentication
TWI713353B (zh) 區塊鏈節點間通訊方法、數位憑證管理方法、裝置和電子設備
WO2021000419A1 (en) System and method for blockchain-based cross-entity authentication
US11849051B2 (en) System and method for off-chain cryptographic transaction verification
CN106452782B (zh) 为终端设备生成安全通信信道的方法和系统
WO2022095244A1 (zh) 跨链交易方法、系统、装置、设备和存储介质
TWI283979B (en) Method for assembly-signature and secure storage medium thereof, and method for generating identification infrastructure, secure storage medium thereof, and authenticating system using said method
US9064129B2 (en) Managing data
CN111541552B (zh) 区块链一体机及其节点自动加入方法、装置
EP3966997B1 (en) Methods and devices for public key management using a blockchain
JP2023503607A (ja) 自動デジタル証明書検証のための方法およびデバイス
EP1653387A1 (en) Password exposure elimination in Attribute Certificate issuing
US20160335453A1 (en) Managing Data
US11507945B2 (en) Method and system for usage of cryptocurrency, preventing financial crime
Durán et al. An architecture for easy onboarding and key life-cycle management in blockchain applications
WO2022227799A1 (zh) 设备注册方法及装置、计算机设备、存储介质
KR101890587B1 (ko) 머클 트리 구조를 사용하여 m of n 다중 서명에 의한 인증서 서비스를 제공하는 방법 및 이를 이용한 서버
CN117201028A (zh) 一种数据处理方法及节点
US10878412B2 (en) In-line verification of transactions
CN114024702A (zh) 信息安全保护的方法以及计算设备
CN117395655B (zh) 一种5g mec可信证书链扩展方法及系统
CN116167766A (zh) 一种资产通证化方法及相关装置
CN115134144A (zh) 企业级业务系统认证方法、装置和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination