CN114298840A - 一种基于零知识证明的区块链交易背书方法及系统 - Google Patents
一种基于零知识证明的区块链交易背书方法及系统 Download PDFInfo
- Publication number
- CN114298840A CN114298840A CN202111648414.1A CN202111648414A CN114298840A CN 114298840 A CN114298840 A CN 114298840A CN 202111648414 A CN202111648414 A CN 202111648414A CN 114298840 A CN114298840 A CN 114298840A
- Authority
- CN
- China
- Prior art keywords
- endorsement
- read
- node
- transaction
- output result
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种基于零知识证明的区块链交易背书方法及系统,所述方法应用于基于背书体系类型的区块链;包括:第一背书节点基于目标智能合约的调用交易中的输入参数模拟完成业务计算或操作,得到输出结果,并调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明;构造包含所述输出结果、以及所述零知识证明的第一读写集并发送到第二背书节点;第二背书节点调用所述目标智能合约的校验逻辑,根据所述零知识证明校验所述输入参数与输出结果的因果关系命题的真实性;若校验通过,则针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
Description
技术领域
本说明书涉及区块链技术领域,尤其涉及一种基于零知识证明的区块链交易背书方法及系统。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的技术,智能合约则通常指在区块链上通过代码的形式定义、可以被交易触发执行的合约。
在基于背书体系类型的区块链中,对链上智能合约的调用通常是通过交易背书完成的。具体而言,用户可以将智能合约调用的交易发送到链上的多个背书节点请求背书,背书节点收到交易后,根据当前链的状态模拟执行交易,将交易的执行结果(读取和写入的状态,读写集)签名后返回给用户,这步称为背书。通常,只有用户收集到足够多满足链上要求、执行结果相同的交易背书后,才被允许将这些背书(包含执行结果)聚合起来,交由共识节点进行排序、打包成块,再交给执行节点验证交易背书并检查执行结果的读写状态,将合法的交易的写入应用到区块链的状态上。
上述过程虽然实现了将交易的执行和账本的更新的分离,能够提高交易的吞吐量,但由于仍然需要多个背书节点重复模拟运行交易,因此区块链的运行效率依然受限。
发明内容
有鉴于此,本说明书公开了一种基于零知识证明的区块链交易背书方法和装置。
根据本说明书实施例的第一方面,公开了一种基于零知识证明的区块链交易背书方法,应用于基于背书体系类型的区块链;包括:
第一背书节点响应于目标智能合约的调用交易,基于所述调用交易中的输入参数调用所述目标智能合约中的业务逻辑模拟完成业务计算或操作,得到输出结果;
所述第一背书节点调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明;
所述第一背书节点构造包含所述输出结果、以及所述零知识证明的第一读写集,并向第二背书节点发送所述输入参数、以及所述第一读写集;
第二背书节点响应于所述输入参数、以及所述第一读写集,调用所述目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性;
在所述校验通过的情况下,所述第二背书节点针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
可选的,在所述校验通过的情况下,所述方法还包括:
所述第二背书节点模拟执行与所述输入参数与输出结果相对应的读写操作,得到第二读写集;
所述针对所述输入参数与输出结果进行背书签名,包括:
针对所述第二读写集进行背书签名。
可选的,所述方法还包括:
在收集到的背书签名的结果的数量超过预设阈值的情况下,发起所述调用交易的客户端将所述调用交易、所述背书签名的结果、以及所述第二读写集发送给共识节点进行排序;
共识节点完成所述排序后,将所述调用交易、所述背书签名的结果、以及所述第二读写集打包成块,发送至执行节点;
执行节点对所述背书签名的结果、以及所述第二读写集进行合法性校验,若所述合法性校验通过,则根据所述第二读写集更新所述区块链的状态数据。
可选的,所述第一背书节点的计算性能高于第二背书节点。
可选的,所述零知识证明基于zk-SNARK、或zk-STARK实现。
根据本说明书实施例的第二方面,公开了一种基于零知识证明的区块链交易背书系统,搭载于基于背书体系类型的区块链中;包括:
第一背书节点,用于响应于目标智能合约的调用交易,基于所述调用交易中的输入参数调用所述目标智能合约中的业务逻辑模拟完成业务计算或操作,得到输出结果;以及,调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明;以及,构造包含所述输出结果、以及所述零知识证明的第一读写集,并向第二背书节点发送所述输入参数、以及所述第一读写集;
第二背书节点,用于响应于所述输入参数、以及所述第一读写集,调用所述目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性;以及,在所述校验通过的情况下,所述第二背书节点针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
可选的,所述第二背书节点还用于,在所述校验通过的情况下,模拟执行与所述输入参数与输出结果相对应的读写操作,得到第二读写集;
所述针对所述输入参数与输出结果进行背书签名,包括:
针对所述第二读写集进行背书签名。
可选的,所述系统还包括:
发起所述调用交易的客户端,用于在收集到的背书签名的结果的数量超过预设阈值的情况下,将所述调用交易、所述背书签名的结果、以及所述第二读写集发送给共识节点进行排序;
共识节点,用于在完成所述排序后,将所述调用交易、所述背书签名的结果、以及所述第二读写集打包成块,发送至执行节点;
执行节点,用于对所述背书签名的结果、以及所述第二读写集进行合法性校验,若所述合法性校验通过,则根据所述第二读写集更新所述区块链的状态数据。
可选的,所述第一背书节点的计算性能高于第二背书节点。
可选的,所述零知识证明基于zk-SNARK、或zk-STARK实现。
根据本说明书实施例的第三方面,公开了一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现上述任一方面实施例所述的方法。
根据本说明书实施例的第四方面,公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方面实施例所述的方法。
以上技术方案中,一方面,由于上述第一背书节点调用智能合约中证明逻辑,生成了用于证明上述输入参数与输出结果的因果关系命题的真实性的零知识证明,并通过读写集传递给了第二背书节点,因此第二背书节点可以通过读写集中的零知识证明来校验上述输入参数与输出结果的因果关系命题的真实性,进而确定是否给出对应的背书;对于第二背书节点而言,上述过程不仅同样能保障背书的可信度,而且所消耗的时间通常短于模拟执行交易所消耗的时间,因此可以在不降低背书可信度的前提下,提高交易背书的效率。
另一方面,由于上述交易背书方案是通过智能合约的证明逻辑和校验逻辑实现的,并没有对基于背书体系类型的区块链的架构进行改动,因此上述方案应用到现有的、基于背书体系类型的区块链中时无需对现有体系进行改动,维护难度较低。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书文本一同用于解释原理。
图1是本说明书示出的一种基于背书体系类型的区块链执行交易的情景示例图;
图2是本说明书示出的一种基于零知识证明的区块链交易背书方法的流程示例图;
图3是本说明书示出的一种基于零知识证明的区块链交易背书装置的结构示例图;
图4是本说明书示出的一种用于基于零知识证明的区块链交易背书的计算机设备的结构示例图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与本说明书的一些方面相一致的系统和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的技术,智能合约则通常指在区块链上通过代码的形式定义、可以被交易触发执行的合约。
在基于背书体系类型的区块链中,对链上智能合约的调用通常是通过交易背书完成的,相较于先共识后执行的普通区块链而言,基于背书体系类型的区块链通常先模拟执行、后共识。请参见图1,图1是本说明书示出的一种基于背书体系类型的区块链执行交易的情景示例图;在该示例中,用户可以将智能合约调用的交易发送到链上的多个背书节点请求背书,背书节点收到交易后,根据当前链的状态模拟执行交易,将交易的执行结果(读取和写入的状态,读写集)签名后返回给用户,这步称为背书。通常,只有用户收集到足够多满足链上要求、执行结果相同的交易背书后,才被允许将这些背书(包含执行结果)聚合起来,交由共识节点进行排序、打包成块,再交给执行节点验证交易背书并检查执行结果的读写状态,将合法的交易的写入应用到区块链的状态上。
上述过程虽然实现了将交易的执行和账本的更新的分离,能够提高交易的吞吐量,但由于仍然需要多个背书节点重复模拟运行交易,因此区块链的运行效率依然受限。
基于此,本说明书提出一种在基于背书体系类型的区块链中,通过构造和校验零知识证明的方式来使部分背书节点无需模拟执行交易、从而节约交易背书过程中模拟执行交易所消耗的时间的技术方案。
在实现时,背书节点可以包括接收客户端发起的交易的第一背书节点,以及从第一背书节点获取上述零知识证明的第二背书节点;其中,第一背书节点依然可以模拟运行上述客户端发起的交易,但可以构造用于证明模拟运行的输入参与输出结果的因果关系命题的真实性的零知识证明,并通过读写集传递至上述第二背书节点。
以上技术方案中,一方面,由于上述第一背书节点调用智能合约中证明逻辑,生成了用于证明上述输入参数与输出结果的因果关系命题的真实性的零知识证明,并通过读写集传递给了第二背书节点,因此第二背书节点可以通过读写集中的零知识证明来校验上述输入参数与输出结果的因果关系命题的真实性,进而确定是否给出对应的背书;对于第二背书节点而言,上述过程不仅同样能保障背书的可信度,而且所消耗的时间通常短于模拟执行交易所消耗的时间,因此可以在不降低背书可信度的前提下,提高交易背书的效率。
另一方面,由于上述交易背书方案是通过智能合约的证明逻辑和校验逻辑实现的,并没有对基于背书体系类型的区块链的架构进行改动,因此上述方案应用到现有的、基于背书体系类型的区块链中时无需对现有体系进行改动,可用性较佳。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参考图2,图2是本说明书一实施例提供的一种基于零知识证明的区块链交易背书方法的流程示例图,该方法可以应用于基于背书体系类型的区块链,该方法可以执行以下步骤S201至S205:
S201,第一背书节点响应于目标智能合约的调用交易,基于所述调用交易中的输入参数调用所述目标智能合约中的业务逻辑模拟完成业务计算或操作,得到输出结果。
在本说明书中,目标智能合约可以是一个包含了业务逻辑、证明逻辑、以及校验逻辑的智能合约,其中,业务逻辑用于进行具体的业务计算或者操作,证明逻辑用于生成零知识证明,校验逻辑则用于校验零知识证明。具体而言,在第一背书节点上主要利用上述业务逻辑以及证明逻辑。对于一个针对目标智能合约的调用交易而言,通常其可以携带若干输入参数,用于指导业务逻辑完成业务计算或者操作,并得到输出结果;以上过程为生成交易背书之前、第一背书节点内部针对上述调用交易的模拟执行过程,因此并未实际写入区块链账本。
S202,所述第一背书节点调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明。
在本说明书中,上述第一背书节点可以在完成上述模拟业务计算或者操作、得到输出结果之后,调用上述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明。
在本领域中,通常认为零知识证明系统是一种具有以下性质的证明系统:
- 如果命题为真,证明者一定能生成一个使得验证者相信的证明(完备性);
- 如果命题为假,证明者一定不能生成一个使得验证者相信的证明(可靠性);
- 生成的证明不会泄露任何除了命题为真以外的信息(保密性);
在示出的一种实施方式中,本说明书中需生成和验证的零知识证明可以基于zk-SNARK、zk-STARK等零知识证明系统实现。通常可以认为,zk-SNARK、zk-STARK等零知识证明系统可以为任意的命题生成任何人都能以非交互的形式快速验证的零知识证明。那么,上述输入参数与输出结果的因果关系命题也就可以表述为如下形式:
如果输入参数为x,则输出结果为y。
那么生成的零知识证明就可以用于验证命题“如果输入参数为x,则输出结果为y”的真实性;换言之,如果通过上述零知识证明验证上述命题“如果输入参数为x,则输出结果为y”为真命题,则意味着在输入参数为x的情况下,输出结果确实为y;而如果通过上述零知识证明验证上述命题“如果输入参数为x,则输出结果为y”为假命题,则意味着在输入参数为x的情况下,输出结果就有可能不为y。可以理解的是,本领域技术人员可以参考相关技术资料,自行根据具体的业务需求,自行选择零知识证明的系统,并自行确定具体生成方式;本说明书所述的方案更加注重于提出一种在交易背书情景下的零知识证明的具体使用逻辑,因此无需严格限定零知识证明系统的选用细节。
S203,所述第一背书节点构造包含所述输出结果、以及所述零知识证明的第一读写集,并向第二背书节点发送所述输入参数、以及所述第一读写集;
在本说明书中,第一背书节点可以通过读写集,将上述零知识证明发送至第二背书节点;具体而言,在现有的区块链环境下,除了输入参数和读写集以外,通常不允许第一背书节点与第二背书节点产生其他与该交易相关的沟通;因此,为了保障本说明书所述方案在应用到现有的区块链环境时的便捷性,上述第一读写集可以作为载体,将上述零知识证明携带到第二背书节点。由于读写集本质上是模拟运行过程中对于区块链的模拟读取和写入的记录,因此上述第一背书节点只需模拟写入相关信息,相关信息就可以被记录在读写集中。
当然可以理解的是,上述输入参数也同样可以被携带在上述第一读写集中; 也就是说,上述输入参数既可以作为第一读写集的一部分,也可以与上述第一读写集呈现并列的关系。本领域技术人员可以根据具体的业务需求自行设计,本说明书无需对相关细节进行进一步披露。
S204,第二背书节点响应于所述输入参数、以及所述第一读写集,调用所述目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性。
如前所述,在本领域中,零知识证明可以用于验证一个命题的真实性;而在本说明书中,上述第一读写集中携带的零知识证明是用于证明上述输入参数与输出结果的因果关系命题的真实性的零知识证明,如果调用目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性通过,则意味着第二背书节点可以确认“基于上述输入参数调用上述目标智能合约中的业务逻辑,其运行结果就是上述输出结果”这个因果命题的真实性;而如果校验不通过,那么第二背书节点就不能够确定“基于上述输入参数调用上述目标智能合约中的业务逻辑,其运行结果就是上述输出结果”这个因果命题的真实性。
S205,在所述校验通过的情况下,所述第二背书节点针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
如前所述,在本说明书中,如果上述校验通过,则意味着“基于上述输入参数调用上述目标智能合约中的业务逻辑,其运行结果就是上述输出结果”这个因果命题真实成立,因此该第二背书节点就能够确定读写集中所携带的信息就是上述调用交易正确执行时的结果,也就不再需要再次模拟执行上述调用交易,可以直接针对上述输入参数与输出结果给出背书签名。
同样,为了保障本说明书所述的方案与现有的基于背书体系类型的区块链的兼容性,上述第二背书节点可以将背书签名的结果发送至发起上述调用交易的客户端,如果第二背书节点的数量足够多,那么就能使发起上述调用交易的客户端收到足够多的交易背书,也就可以视为交易背书环节已经完成,后续环节可以按背书体系类型的区块链的原有流程执行。
其中,可以理解的是,其中,上述第一背书节点以及第二背书节点的数量均不作限制。例如,第一背书节点的数量增加,可以客观上增加网络的可信度和可用程度,避免其中一个第一背书节点宕机可能导致的业务受阻;第二背书节点的数量增加,可以客观上加快客户端收到足够多交易背书的速度。因此,上述第一背书节点和第二背书节点的数量可以根据具体业务需求自行确定。
在示出的一种实施方式中,上述第一背书节点的性能可以高于上述第二背书节点;通常认为,零知识证明的生成消耗算力较多,但零知识证明的校验过程消耗算力较少,因此,可以将性能较高的背书节点作为第一背书节点,将性能较低的背书节点作为第二背书节点,这样,可以充分利用各种性能不同的节点在零知识证明体系下的工作性质,进一步节约计算资源。
在示出的一种实施方式中,在上述校验通过的情况下,上述方法还可以包括:上述第二背书节点模拟执行与上述输入参数与输出结果相对应的读写操作,得到第二读写集;上述针对上述输入参数与输出结果进行背书签名的过程,可以包括:针对上述第二读写集进行背书签名。如前所述,第一读写集中包含了零知识证明,但只要交易背书完成,该零知识证明就不再需要了,无需写入区块链账本;因此,第二背书节点可以重新生成一个不包含上述零知识证明、但包含上述输入参数和输出结果的读写集并对其进行背书签名,用于后续环节中实际对区块链分布式账本进行读写。
在示出的一种实施方式中,若上述第二背书节点生成了上述第二读写集,那么在收集到的背书签名的结果的数量超过预设阈值的情况下,发起上述调用交易的客户端将上述调用交易、上述背书签名的结果、以及上述第二读写集发送给共识节点进行排序;而共识节点完成上述排序后,则可以将上述调用交易、上述背书签名的结果、以及上述第二读写集打包成块,发送至执行节点;上述执行节点则可以对上述背书签名的结果、以及上述第二读写集进行合法性校验,若上述合法性校验通过,则根据上述第二读写集更新上述区块链的状态数据。
下面通过一个实例进一步描述上述基于零知识证明的方案逻辑;假设现有合约R,其包含有变量value和方法add,且该value初始值为0;方法add可以接收一个参数d,读取出value,再将value + d存入value。若希望使用zk-SNARK零知识证明系统使得上述合约R支持上述方案,就可以将其转换为一个零知识证明系统zk-R,它可以提供以下两个接口:
- Prove证明逻辑,接收value和d两个参数,计算出结果res,并生成命题“如果value和d是输入的值,那么合约R的结果是res”的零知识证明proof。
- Verify校验逻辑,接收输入参数value、d、res以及proof,根据这个零知识proof验证命题“如果value和d是输入的值,那么合约R的结果是res”。
再按照上述方案对zk-R做一个包装,成为zk-R',依然包括上述证明和校验两个逻辑:
- Prove证明逻辑,接收参数d,读取合约变量value。将value和d作为参数调用zk-R的Prove,得到结果res写入value,得到证明proof写入PROOF。
- Verify校验逻辑,接收参数d和读写集 { "读取": ["value"], "写入": [{"value": res}, {"PROOF": proof}] }。将从链上状态读取的value、参数d、写入状态res以及proof作为参数,调用zk-R的Verify,如果验证合法,复现读写集:读取value,向value写入res。这样,该zk-R'作为最终部署的合约。
假设在一个背书场景下,共有A、B、C、D四个背书节点,背书策略要求至少三个节点背书方能执行后续操作,再假设用户Alice要调用合约R的add方法,让初始值为0的value的值加5。那么使用上述交易背书方案的流程则可以如下所述:
1)Alice向背书节点A发送背书请求,以5作为参数调用zk-R'的Prove。
2)背书节点A返回读写集 {"读取": ["value"], "写入": [{"value": 5}, {"PROOF": proof}] }。
3)Alice将这个读写集以及参数5作为调用zk-R'的Verify的参数发送给B、C、D三个背书节点进行背书。
4)以节点B为例,节点B收到请求后,执行zk-R'的Verify,验证通过,产生读写集{"读取": ["value"], "写入": [{"value": 5}] },对读写集进行签名,返回给Alice。
5)Alice收到来自B、C、D的背书结果,满足背书要求。之后,可以将该背书结果和交易发往共识节点排序,最终执行节点验证没有发生读写冲突后,将value = 5写入链上状态。
上述内容即为本说明书针对所述基于零知识证明的区块链交易背书方法的全部实施例。基于以上实施例可知,应用上述方案,一方面可以在不降低背书可信度的前提下,提高交易背书的效率,另一方面,上述方案应用到现有的、基于背书体系类型的区块链中时无需对现有体系进行改动,维护难度较低。
本说明书还提供了对应的基于零知识证明的区块链交易背书系统的实施例如下:
请参见图3,图3是本说明书提出一种基于零知识证明的区块链交易背书系统的结构示例图,该系统可以搭载于基于背书体系类型的区块链中;包括:
第一背书节点301,用于响应于目标智能合约的调用交易,基于所述调用交易中的输入参数调用所述目标智能合约中的业务逻辑模拟完成业务计算或操作,得到输出结果;以及,调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明;以及,构造包含所述输出结果、以及所述零知识证明的第一读写集,并向第二背书节点发送所述输入参数、以及所述第一读写集;
第二背书节点302,用于响应于所述输入参数、以及所述第一读写集,调用所述目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性;以及,在所述校验通过的情况下,所述第二背书节点针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
在一种具体实施方式中,上述第二背书节点还可以用于,在上述校验通过的情况下,模拟执行与上述输入参数与输出结果相对应的读写操作,得到第二读写集;上述针对上述输入参数与输出结果进行背书签名,可以包括:针对上述第二读写集进行背书签名。
在一种具体实施方式中,上述系统还可以包括:发起上述调用交易的客户端、共识节点、以及执行节点;其中,发起上述调用交易的客户端可以用于在收集到的背书签名的结果的数量超过预设阈值的情况下,将上述调用交易、上述背书签名的结果、以及上述第二读写集发送给共识节点进行排序;上述共识节点,可以用于在完成上述排序后,将上述调用交易、上述背书签名的结果、以及上述第二读写集打包成块,发送至执行节点;上述执行节点,可以用于对上述背书签名的结果、以及上述第二读写集进行合法性校验,若上述合法性校验通过,则根据上述第二读写集更新上述区块链的状态数据。
在一种具体实施方式中,上述第一背书节点的计算性能高于第二背书节点。
在一种具体实施方式中,上述零知识证明基于zk-SNARK、或zk-STARK实现。
根据本说明书实施例的第三方面,公开了一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行上述程序时实现上述任一方面实施例上述的方法。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的基于零知识证明的区块链交易背书方法。
图4示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的基于零知识证明的区块链交易背书方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (12)
1.一种基于零知识证明的区块链交易背书方法,应用于基于背书体系类型的区块链;包括:
第一背书节点响应于目标智能合约的调用交易,基于所述调用交易中的输入参数调用所述目标智能合约中的业务逻辑模拟完成业务计算或操作,得到输出结果;
所述第一背书节点调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明;
所述第一背书节点构造包含所述输出结果、以及所述零知识证明的第一读写集,并向第二背书节点发送所述输入参数、以及所述第一读写集;
第二背书节点响应于所述输入参数、以及所述第一读写集,调用所述目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性;
在所述校验通过的情况下,所述第二背书节点针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
2.根据权利要求1所述的方法,在所述校验通过的情况下,所述方法还包括:
所述第二背书节点模拟执行与所述输入参数与输出结果相对应的读写操作,得到第二读写集;
所述针对所述输入参数与输出结果进行背书签名,包括:
针对所述第二读写集进行背书签名。
3.根据权利要求2所述的方法,所述方法还包括:
在收集到的背书签名的结果的数量超过预设阈值的情况下,发起所述调用交易的客户端将所述调用交易、所述背书签名的结果、以及所述第二读写集发送给共识节点进行排序;
共识节点完成所述排序后,将所述调用交易、所述背书签名的结果、以及所述第二读写集打包成块,发送至执行节点;
执行节点对所述背书签名的结果、以及所述第二读写集进行合法性校验,若所述合法性校验通过,则根据所述第二读写集更新所述区块链的状态数据。
4.根据权利要求1所述的方法,所述第一背书节点的计算性能高于第二背书节点。
5.根据权利要求1所述的方法,所述零知识证明基于zk-SNARK、或zk-STARK实现。
6.一种基于零知识证明的区块链交易背书系统系统,搭载于基于背书体系类型的区块链中;包括:
第一背书节点,用于响应于目标智能合约的调用交易,基于所述调用交易中的输入参数调用所述目标智能合约中的业务逻辑模拟完成业务计算或操作,得到输出结果;以及,调用所述目标智能合约中的证明逻辑,生成用于证明所述输入参数与输出结果的因果关系命题的真实性的零知识证明;以及,构造包含所述输出结果、以及所述零知识证明的第一读写集,并向第二背书节点发送所述输入参数、以及所述第一读写集;
第二背书节点,用于响应于所述输入参数、以及所述第一读写集,调用所述目标智能合约中的校验逻辑,根据所述零知识证明,校验所述输入参数与输出结果的因果关系命题的真实性;以及,在所述校验通过的情况下,所述第二背书节点针对所述输入参数与输出结果进行背书签名,并将所述背书签名的结果发送至发起所述调用交易的客户端。
7.根据权利要求6所述的系统,所述第二背书节点还用于,在所述校验通过的情况下,模拟执行与所述输入参数与输出结果相对应的读写操作,得到第二读写集;
所述针对所述输入参数与输出结果进行背书签名,包括:
针对所述第二读写集进行背书签名。
8.根据权利要求7所述的系统,所述系统还包括:
发起所述调用交易的客户端,用于在收集到的背书签名的结果的数量超过预设阈值的情况下,将所述调用交易、所述背书签名的结果、以及所述第二读写集发送给共识节点进行排序;
共识节点,用于在完成所述排序后,将所述调用交易、所述背书签名的结果、以及所述第二读写集打包成块,发送至执行节点;
执行节点,用于对所述背书签名的结果、以及所述第二读写集进行合法性校验,若所述合法性校验通过,则根据所述第二读写集更新所述区块链的状态数据。
9.根据权利要求6所述的系统,所述第一背书节点的计算性能高于第二背书节点。
10.根据权利要求6所述的系统,所述零知识证明基于zk-SNARK、或zk-STARK实现。
11.一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现权利要求1~5任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1~5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111648414.1A CN114298840A (zh) | 2021-12-30 | 2021-12-30 | 一种基于零知识证明的区块链交易背书方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111648414.1A CN114298840A (zh) | 2021-12-30 | 2021-12-30 | 一种基于零知识证明的区块链交易背书方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114298840A true CN114298840A (zh) | 2022-04-08 |
Family
ID=80974386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111648414.1A Pending CN114298840A (zh) | 2021-12-30 | 2021-12-30 | 一种基于零知识证明的区块链交易背书方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114298840A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056084A (zh) * | 2023-10-09 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 基于分层区块链网络的数据处理方法、装置、设备及介质 |
-
2021
- 2021-12-30 CN CN202111648414.1A patent/CN114298840A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056084A (zh) * | 2023-10-09 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 基于分层区块链网络的数据处理方法、装置、设备及介质 |
CN117056084B (zh) * | 2023-10-09 | 2023-12-08 | 腾讯科技(深圳)有限公司 | 基于分层区块链网络的数据处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108876380B (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
CN109242453B (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
CN110046023B (zh) | 一种基于区块链智能合约的数据处理方法及系统 | |
CN109377216B (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
CN111382168B (zh) | 在联盟链网络中创建节点组、基于节点组的交易方法 | |
CN109933404B (zh) | 一种基于区块链智能合约的编解码方法及系统 | |
CN110048846B (zh) | 一种基于区块链智能合约的签名验证方法及系统 | |
CN108933713B (zh) | 基于影子链路实现沙箱调试的方法、装置及业务服务器 | |
CN113726751B (zh) | 一种块链式账本中的权重管理方法、装置及设备 | |
CN109359118B (zh) | 一种数据写入方法及装置 | |
CN110060155B (zh) | 区块链的智能合约执行方法及装置和电子设备 | |
CN110046994B (zh) | 一种受理区块链存证交易的方法及系统 | |
CN110020846B (zh) | 一种转账业务处理方法及系统 | |
CN110046991B (zh) | 一种基于区块链智能合约的数据处理方法及系统 | |
CN110334542B (zh) | 一种网络证据保全、网络证据存证校验方法及装置 | |
CN110147685A (zh) | 数据验证方法、系统、装置及设备 | |
CN110046523A (zh) | 智能合约校验方法及装置和电子设备 | |
CN113220640B (zh) | 一种基于区块链的仲裁方法及装置 | |
CN111506580A (zh) | 一种基于中心化块链式账本的交易存储方法 | |
CN110347645A (zh) | 一种电子文件存证方法及装置 | |
CN114298840A (zh) | 一种基于零知识证明的区块链交易背书方法及系统 | |
CN111464319B (zh) | 一种基于中心化块链式账本的交易存储、签名校验方法 | |
CN108710658A (zh) | 一种数据记录的存储方法及装置 | |
CN115018621A (zh) | 一种合约变更方法、装置、设备及介质 | |
CN114358936A (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 | ||
CB02 | Change of applicant information |
Address after: Room 2339, 2nd Floor, No. 92, Huancheng North Road, Gongshu District, Hangzhou City, Zhejiang Province 310005 Applicant after: Hangzhou Xita Technology Co.,Ltd. Address before: 310007 room 2001 and 2010, 20 / F, tower a, Huaxing Times Square, No. 478, Wensan Road, Xihu District, Hangzhou, Zhejiang Applicant before: Hangzhou Xita Technology Co.,Ltd. |
|
CB02 | Change of applicant information |