CN109446211B - 一种一致性校验方法及装置 - Google Patents

一种一致性校验方法及装置 Download PDF

Info

Publication number
CN109446211B
CN109446211B CN201811166767.6A CN201811166767A CN109446211B CN 109446211 B CN109446211 B CN 109446211B CN 201811166767 A CN201811166767 A CN 201811166767A CN 109446211 B CN109446211 B CN 109446211B
Authority
CN
China
Prior art keywords
transaction
node
state data
block
information
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.)
Active
Application number
CN201811166767.6A
Other languages
English (en)
Other versions
CN109446211A (zh
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.)
Union Mobile Pay Co Ltd
Original Assignee
Union Mobile Pay 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 Union Mobile Pay Co Ltd filed Critical Union Mobile Pay Co Ltd
Priority to CN201811166767.6A priority Critical patent/CN109446211B/zh
Publication of CN109446211A publication Critical patent/CN109446211A/zh
Application granted granted Critical
Publication of CN109446211B publication Critical patent/CN109446211B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种一致性校验方法及装置,所述方法包括:区块链的第一节点接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个API执行所述交易;根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据;校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。由于在本发明实施例中,区块链的节点通过交易对应的目标智能合约对应的至少一个API接口执行交易时每个API的调用信息,确定所述交易的第一状态数据,不涉及节点内部数据库执行交易产生的变更日志,避免了区块链的各节点间因采用的数据库的类型不同导致无法进行一致性校验的问题。

Description

一种一致性校验方法及装置
技术领域
本发明涉及区块链技术领域,尤其涉及一种一致性校验方法及装置。
背景技术
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转,在区块链环境里,智能合约表现为可执行代码。区块链的状态数据是指区块链的智能合约产生的数据,这些状态数据需要进行持久化存储,如运用资产转移智能合约的资产转移模型中各账户的余额信息、在运用存证合约的存证模型中的存证信息等,在数据链中不同智能合约的状态数据通常不相同。目前区块链的状态数据大多采用键值(Key-Value,KV)数据库存储,但是KV数据库是按照键值对的形式进行组织、索引和存储的,只能存储简单的数据结构,当智能合约有复杂的业务关系时,现有的KV数据库难以适应有复杂业务的智能合约,会增加智能合约的开发难度、并导致智能合约的漏洞增加。
为了降低智能合约的开发难度,减少智能合约的漏洞,现有区块链的节点采用结构化查询语言(Structured Query Language、SQL)数据库,SQL数据库支持复杂的数据结构,用户也可以根据自身的需求定义或修改SQL数据库的数据结构,此外,SQL数据库不仅支持键值索引,还支持其他索引方式,能够与智能合约更好的契合,并节约查询时间。然而为了保证对区块链的各节点执行的交易是否正确进行校验,区块链的任一节点,在接收到交易请求,通常是根据该交易对应的智能合约执行该交易时,该节点的SQL数据库产生的变更日志作为状态数据用于校验,具体的,可以将根据变更日志生成的哈希(hash)值与根据区块链的其它节点的变更日志生成的hash值进行一致性校验,以保证区块链的各节点执行的交易的正确性与一致性。
然而区块链的各节点的技术水平不同,区块链的各节点采用的SQL数据库的具体类型也存在不同,有的节点采用SQLite数据库,有的节点采用Oracle数据库等,而不同类型的数据库执行相同的交易时,产生的变更日志也存在差异,导致如果区块链的各节点对应的SQL数据库的具体类型不同时,无法对交易的状态数据进行一致性校验,进而无法对区块链的各节点执行的交易的正确性进行验证。
发明内容
本发明提供一种一致性校验方法及装置,用以解决现有技术中区块链的各节点因采用的数据库的类型不同导致无法进行一致性校验的问题。
第一方面,本发明公开了一种一致性校验方法,应用于区块链的第一节点,所述方法包括:
接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口API执行所述交易;
根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;
校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
可选的,如果所述第一状态数据与所述区块链的第二节点的所述交易的第二状态数据不一致,所述方法还包括:
发出故障告警信息。
可选的,所述调用信息还包括以下至少一种:
接口调用顺序的信息、接口编号的信息。
可选的,所述校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致包括:
校验所述第一状态数据对应的第一哈希hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
可选的,所述确定所述交易的第一状态数据之后,所述方法还包括:
将所述交易的第一状态数据写入区块中;
判断所述区块是否被写满;
如果是,根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;
校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;
如果否,发出故障告警信息。
第二方面,本发明公开了一种一致性校验装置,所述装置包括:
接收执行模块,用于接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口API执行所述交易;
确定模块,用于根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;
校验模块,用于校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
可选的,所述装置还包括:
告警模块,用于如果校验模块的校验结果为否,发出告警信息。
可选的,所述调用信息还包括以下至少一种:接口调用顺序的信息、接口编号的信息。
可选的,所述校验模块,具体用于校验所述第一状态数据对应的第一哈希hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
可选的,所述装置还包括:
写入判断模块,用于将所述交易的第一状态数据写入区块中;判断所述区块是否被写满;如果判断结果为是,触发校验告警模块;
校验告警模块,具体用于根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;如果校验结果为否,发出故障告警信息。
第三方面,本发明公开了一种区块链的第一节点,包括:存储器和处理器;
所述存储器中存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述任一项所述方法的步骤。
第四方面,本发明公开了一种计算机可读存储介质,其存储有可由节点执行的计算机程序,当所述程序在所述节点上运行时,使得所述节点执行上述任一项所述方法的步骤。
本发明公开了一种一致性校验方法及装置,所述方法包括:区块链的第一节点接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个API执行所述交易;根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。由于在本发明实施例中,区块链的节点通过交易对应的目标智能合约对应的至少一个API接口执行交易,并根据执行交易时每个API的调用信息,确定交易的第一状态数据,不涉及节点内部数据库执行交易产生的变更日志,仅通过API接口获取节点内部数据库执行交易时的输入参数值和输出参数值,用于确定交易的第一状态数据,避免了区块链的各节点间因采用的数据库的类型不同导致无法进行一致性校验的问题,保证了各节点执行的交易的正确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种一致性校验过程示意图;
图2为本发明实施例提供的一种API接口示例图;
图3为本发明实施例提供的一种数据同步示意图;
图4为本发明实施例提供的一种一致性校验装置结构示意图;
图5为本发明实施例提供的一种节点示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下,对本申请实施例的部分用于进行解释说明,以便于本领域技术人员理解。
合约是现实社会中经济活动的基础,它是两方面或几方面在共同协作时,为了确定各自的权利和义务而订立的共同遵守的条文。合约规定了交易的标的、内容、时间和执行约定等,并具有法律保障,双方或多方在信任或者不信任的状态下履行合约承诺,有法可依、有据可寻。合约通过规范承诺与执行合约过程,保证交易活动的有序进行。
智能合约就是一段经过协商的代码,它的执行是分布式的、可观察和可验证的,代码被部署在分享的、复制的账本上,它可以维持自己的状态、控制自己的资产,其中状态、资产与代码一样,被存储在账本上,还能够对接收到的外界信息进行回应。把智能合约放在区块链上执行就是利用区块链本身自带的一致性算法来保证合约执行结果的一致性。
另外,需要理解的是,本发明中所涉及的多个,是指两个或两个以上,在本发明的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
实施例1:
图1为本发明实施例提供的一种一致性校验过程示意图,所述过程包括:
S101:接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口(Application Programming Interface,API)执行所述交易。
本发明实施例提供的一致性校验方法应用于区块链的第一节点,其中所述第一节点可以是区块链的任一节点,所述第一节点可以为具有运算和存储功能的PC机、服务器、服务器集群等电子设备。
在本发明实施例中,预先定义了可被智能合约调用的多个API接口,并指明了每个API接口的输入参数和输出参数,较佳的,还可以为预先定了的每个API接口进行编号。在对交易对应的智能合约开发和注册时,用户也是基于预先定义好的API接口实现的。较佳的,在本发明实施例中所述API接口为结构化查询语言(Structured Query Language,SQL)接口,可以调用区块链的节点中的SQL数据库,用于实现SQL接口对应的交易的数据操作。在本发明实施例中,通过SQL接口调用SQL数据库实现SQL接口对应的交易的数据操作是现有技术,不再进行赘述。
图2为本发明实施例提供的一种API接口示例图,如图2所示,预先定义有N个API,接口编号分别为Num1、Num2…NumN,输入参数和输出参数分别为argA,argB和retC、argD和retE…。
具体的,第一节点接收到交易的执行请求后,根据所述交易对应的目标合约执行所述交易的业务逻辑,即所述目标合约执行所述交易的代码,依次调用实现所述业务逻辑的至少一个API。
S102:根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息。
具体的,第一节点获取执行所述交易时,每个API的调用信息,并对执行所述交易时每个API的调用信息进行汇总,生成所述交易的第一状态数据。
例如:针对交易1,在执行交易1时,调用了3次API,按照调用顺序分别为:
1、InsertTable(arg1,arg2)(ret1)
输出参数值:arg1,arg2
输出参数值(返回值):ret1
调用顺序号:1
接口编号:Num1
2、InsertTable(arg3,arg4)(ret2)
输出参数值:arg3,arg4
输出参数值(返回值):ret2
调用顺序号:2
接口编号:Num1
3、DelTable(arg5)(ret3)
输出参数值:arg5
输出参数值(返回值):ret3
调用顺序号:3
接口编号:Num2
以每个API对应的接口状态数据的生成规则为:输入参数值#输出参数值为例,确定顺序号为1的API对应的接口状态数据1(State1)=arg1#arg2#ret1;顺序号为2的API对应的接口状态数据2(State2)=arg3#arg4#ret2;顺序号为3的API对应的接口状态数据3(State3)=arg5#ret3,以交易的第一状态数据的生成规则为:接口状态数据1#接口状态数据2…接口数据状态N为例,确定所述交易的第一状态数据(State1)=State1#State2#State3=arg1#arg2#ret1#arg3#arg4#ret2#arg5#ret3,在本发明实施例中“#”为连接符号,其中连接符号不限于“#”,还可以为“*”、“&”等。
S103:校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
如果所述第一状态数据与所述区块链的第二节点的所述交易的第二状态数据不一致,所述方法还包括:
发出故障告警信息。
在本发明实施例中区块链的第二节点,为区块链的所有节点中与所述第一节点不同的其它节点。例如:区块链的节点包括:节点1、节点2、节点3、节点4,将节点1作为第一节点,则节点2、节点3、节点4为第二节点,同理,如果将节点3作为第一节点,则节点1、节点2、节点4为第二节点。
具体的,第一节点确定交易的第一状态数据后,获取区块链的第二节点的所述交易的第二状态数据,校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致,如果一致,则说明第一节点的所述交易执行结果正确,如果不一致,则说明第一节点发生故障,第一节点属于拜占庭节点,发出告警信息。
其中,如果第一节点获取的区块链的第二节点的所述交易的第二状态数据不完全一致时,将区块链的第二节点中所占比例最大的所述交易的第二状态数据作为与第一节点的所述交易的第一状态数据进行校验的第二状态数据。
另外,为了提高校验效率,所述校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致包括:
校验所述第一状态数据对应的第一hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
具体的,第一节点确定交易的第一状态数据后,确定所述第一状态数据对应的第一hash值,根据所述第一状态数据对应的第一hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致,对所述交易的第一状态数据,与区块链的第二节点的所述交易的第二状态数据的一致性进行校验。例如:针对交易1的第一状态数据State1=arg1#arg2#ret1#arg3#arg4#ret2#arg5#ret3,对State1运行哈希算法,生成第一hash值。
由于在本发明实施例中,区块链的节点通过交易对应的目标智能合约对应的至少一个API接口执行交易,并根据执行交易时每个API的调用信息,确定交易的第一状态数据,不涉及节点内部数据库执行交易产生的变更日志,仅通过API接口获取节点内部数据库执行交易时的输入参数值和输出参数值,用于确定交易的第一状态数据,避免了区块链的各节点间因采用的数据库的类型不同导致无法进行一致性校验的问题,保证了各节点执行的交易的正确性。
实施例2:
为了提高一致性校验的准确性,在上述实施例的基础上,在本发明实施例中,所述调用信息还包括以下至少一种:
接口调用顺序的信息、接口编号的信息。
仍以上述执行交易1时,调用了3次API为例,示例性的,每个API对应的接口状态数据的生成规则为:调用顺序号#接口编号#输入参数值#输出参数值,确定顺序号为1的API对应的接口状态数据1(State1)=1#Num1#arg1#arg2#ret1;顺序号为2的API对应的接口状态数据2(State2)=2#Num1#arg3#arg4#ret2;顺序号为3的API对应的接口状态数据3(State3)=3#Num2#arg5#ret3,确定所述交易的第一状态数据(State1)=State1#State2#State3=1#Num1#arg1#arg2#ret1#2#Num1#arg3#arg4#ret2#3#Num2#arg5#ret3。
实施例3:
在上述各实施例的基础上,在本发明实施例中,所述确定所述交易的第一状态数据之后,所述方法还包括:
将所述交易的第一状态数据写入区块中;
判断所述区块是否被写满;
如果是,根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;
校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;
如果否,发出故障告警信息。
在本发明实施例中,区块被写满指区块被禁止写入功能,即区块链已生成所述区块的下一区块,具体判断区块是否被写满,可以通过判断区块链是否已生成所述区块的下一区块实现,如果区块链已生成所述区块的下一区块,则确定所述区块已被写满,如果区块链未生成所述区块的下一区块,则确定所述区块未被写满。
较佳的,在本发明实施例中,可以根据区块中记录的每笔交易的第一状态数据对应的第一hash值,确定区块的第一区块状态数据,例如:区块中记录有4笔交易数据对应的第一hash值分别为hash1、hash2、hash3、hash4。确定区块的第一区块状态数据(HB)=hash1#hash2#hash3#hash4。
此外,为了提高校验效率,第一节点确定区块的第一区块状态数据后,确定所述第一区块状态对应的第一区块hash值,根据所述第一区块hash值,是否与所述区块链的第二节点的所述区块的第二区块状态对应的第二区块hash值一致,对所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致进行校验,较佳的,第一节点,还可以将所述区块的第一区块hash值,存储至所述区块的区块头,便于校验。
如图3所述,在区块链的某一节点需要进行交易数据同步时,区块链的第一节点可以将第一节点中保存的每个交易的第一状态数据发送给需要进行交易数据同步的节点,需要进行交易数据同步的节点解析每个交易的第一状态数据,通过数据访问层,访问第一节点的数据库,实现对交易数据的同步,其中第一节点的数据库为SQL数据库,具体可以为MySQL、SQLite、Oracle中的任意一种。
实施例4:
图4为本发明实施例提供的一种一致性校验装置结构示意图,应用于区块链的第一节点,所述装置包括:
接收执行模块41,用于接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口API执行所述交易;
确定模块42,用于根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;
校验模块43,用于校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
所述装置还包括:
告警模块44,用于如果校验模块的校验结果为否,发出告警信息。
较佳的,所述调用信息还包括以下至少一种:接口调用顺序的信息、接口编号的信息。
所述校验模块43,具体用于校验所述第一状态数据对应的第一哈希hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
所述装置还包括:
写入判断模块45,用于将所述交易的第一状态数据写入区块中;判断所述区块是否被写满;如果判断结果为是,触发校验告警模块;
校验告警模块46,具体用于根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;如果校验结果为否,发出故障告警信息。
实施例5:
基于同一发明构思,本发明实施例中还提供了一种区块链的第一节点,由于上述区块链的第一节点解决问题的原理与一致性校验方法相似,因此上述区块链的第一节点的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,其为本发明实施例提供的区块链的第一节点的结构示意图,其中在图5中,总线架构可以包括任意数量的互联的总线和桥,具体有处理器51代表的一个或多个处理器51和存储器52代表的存储器52的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器51负责管理总线架构和通常的处理,存储器52可以存储处理器51在执行操作时所使用的数据。
在本发明实施例提供的区块链的第一节点中:
所述处理器51,用于读取存储器52中的程序,执行下列过程:接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口API执行所述交易;根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
优选地,所述处理器51,还用于如果所述第一状态数据与所述区块链的第二节点的所述交易的第二状态数据不一致,发出故障告警信息。
优选地,所述调用信息还包括以下至少一种:
接口调用顺序的信息、接口编号的信息。
优选地,所述处理器51,具体用于校验所述第一状态数据对应的第一哈希hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
优选地,所述处理器51,还用于将所述交易的第一状态数据写入区块中;判断所述区块是否被写满;如果是,根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;如果否,发出故障告警信息。
实施例6:
在上述各实施例的基础上,本发明实施例还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由节点执行的计算机程序,当所述程序在所述节点上运行时,使得所述节点实现上述方法实现的步骤。
对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种一致性校验方法,其特征在于,应用于区块链的第一节点,所述方法包括:
接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口API执行所述交易;
根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;
校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
2.如权利要求1所述的方法,其特征在于,如果所述第一状态数据与所述区块链的第二节点的所述交易的第二状态数据不一致,所述方法还包括:
发出故障告警信息。
3.如权利要求1所述的方法,其特征在于,所述调用信息还包括以下至少一种:
接口调用顺序的信息、接口编号的信息。
4.如权利要求1所述的方法,其特征在于,所述校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致包括:
校验所述第一状态数据对应的第一哈希hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
5.如权利要求1所述的方法,其特征在于,所述确定所述交易的第一状态数据之后,所述方法还包括:
将所述交易的第一状态数据写入区块中;
判断所述区块是否被写满;
如果是,根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;
校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;
如果否,发出故障告警信息。
6.一种一致性校验装置,其特征在于,应用于区块链的第一节点,所述装置包括:
接收执行模块,用于接收交易的执行请求,根据所述交易对应的目标智能合约,调用所述目标智能合约对应的至少一个应用程序编程接口API执行所述交易;
确定模块,用于根据获取到的执行所述交易时每个API的调用信息,确定所述交易的第一状态数据,其中所述调用信息包括输入参数值的信息和输出参数值的信息;
校验模块,用于校验所述第一状态数据,是否与所述区块链的第二节点的所述交易的第二状态数据一致。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
告警模块,用于如果校验模块的校验结果为否,发出告警信息。
8.如权利要求6所述的装置,其特征在于,所述调用信息还包括以下至少一种:接口调用顺序的信息、接口编号的信息。
9.如权利要求6所述的装置,其特征在于,所述校验模块,具体用于校验所述第一状态数据对应的第一哈希hash值,是否与所述区块链的第二节点的所述交易的第二状态数据对应的第二hash值一致。
10.如权利要求6所述的装置,其特征在于,所述装置还包括:
写入判断模块,用于将所述交易的第一状态数据写入区块中;判断所述区块是否被写满;如果判断结果为是,触发校验告警模块;
校验告警模块,具体用于根据所述区块中记录的每笔交易的第一状态数据,确定所述区块对应的第一区块状态数据;校验所述第一区块状态数据,是否与所述区块链的第二节点的所述区块的第二区块状态数据一致;如果校验结果为否,发出故障告警信息。
11.一种区块链的第一节点,其特征在于,包括:存储器和处理器;
所述存储器中存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行权利要求1-5任一项所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,其存储有由节点执行的计算机程序,当所述程序在所述节点上运行时,使得所述节点执行权利要求1-5任一项所述方法的步骤。
CN201811166767.6A 2018-10-08 2018-10-08 一种一致性校验方法及装置 Active CN109446211B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811166767.6A CN109446211B (zh) 2018-10-08 2018-10-08 一种一致性校验方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811166767.6A CN109446211B (zh) 2018-10-08 2018-10-08 一种一致性校验方法及装置

Publications (2)

Publication Number Publication Date
CN109446211A CN109446211A (zh) 2019-03-08
CN109446211B true CN109446211B (zh) 2020-08-14

Family

ID=65544814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811166767.6A Active CN109446211B (zh) 2018-10-08 2018-10-08 一种一致性校验方法及装置

Country Status (1)

Country Link
CN (1) CN109446211B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109951546B (zh) * 2019-03-15 2021-12-14 百度在线网络技术(北京)有限公司 基于智能合约的事务请求处理方法、装置、设备和介质
CN110046523B (zh) * 2019-03-15 2021-03-05 创新先进技术有限公司 智能合约校验方法及装置和电子设备
CN110597913B (zh) * 2019-09-17 2023-11-24 腾讯科技(深圳)有限公司 交易信息跟踪方法、装置、系统、存储介质和计算机设备
CN111045892A (zh) * 2019-12-11 2020-04-21 北京菲林方德科技有限公司 一种智能合约执行的过程状态检测方法及装置
CN112712433B (zh) * 2021-01-08 2023-06-20 支付宝实验室(新加坡)有限公司 一种基于区块链的数据状态管理和查询方法及区块链装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874440A (zh) * 2017-02-07 2017-06-20 杭州秘猿科技有限公司 一种基于sql数据库的区块链状态存储方法
CN107247749A (zh) * 2017-05-25 2017-10-13 阿里巴巴集团控股有限公司 一种数据库状态确定方法、一致性验证方法及装置
CN107799163A (zh) * 2017-01-22 2018-03-13 平安医疗健康管理股份有限公司 基于区块链的处方流转方法、装置和系统
CN108573016A (zh) * 2017-12-25 2018-09-25 北京金山云网络技术有限公司 一种数据一致性检查方法、装置、设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10075298B2 (en) * 2015-06-02 2018-09-11 ALTR Solutions, Inc. Generation of hash values within a blockchain

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107799163A (zh) * 2017-01-22 2018-03-13 平安医疗健康管理股份有限公司 基于区块链的处方流转方法、装置和系统
CN106874440A (zh) * 2017-02-07 2017-06-20 杭州秘猿科技有限公司 一种基于sql数据库的区块链状态存储方法
CN107247749A (zh) * 2017-05-25 2017-10-13 阿里巴巴集团控股有限公司 一种数据库状态确定方法、一致性验证方法及装置
CN108573016A (zh) * 2017-12-25 2018-09-25 北京金山云网络技术有限公司 一种数据一致性检查方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN109446211A (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
CN109446211B (zh) 一种一致性校验方法及装置
EP3785160B1 (en) Cryptlet proofing services
US11538105B2 (en) Cryptographic-asset collateral management
CN110121727B (zh) 一种为智能合同提供经证实、可审计和不可变输入的方法和系统
US20190305957A1 (en) Execution smart contracts configured to establish trustworthiness of code before execution
CN110597925B (zh) 一种基于区块链的跨链数据处理方法及装置
US20190303541A1 (en) Auditing smart contracts configured to manage and document software audits
US20190303623A1 (en) Promotion smart contracts for software development processes
US20190306173A1 (en) Alert smart contracts configured to manage and respond to alerts related to code
US20190305959A1 (en) Announcement smart contracts to announce software release
US20210166326A1 (en) Claim settlement method and apparatus employing blockchain technology
US20190303579A1 (en) Decentralized, immutable, tamper-evident, directed acyclic graphs documenting software supply-chains with cryptographically signed records of software-development life cycle state and cryptographic digests of executable code
CN111104392B (zh) 一种数据库迁移方法、装置、电子设备及存储介质
US20210049715A1 (en) Blockchain-based data procesing method, apparatus, and electronic device
JP2023126499A (ja) ブロックチェーン技術をデジタルツインと結合するための、コンピュータにより実施されるシステム及び方法
TWI726573B (zh) 基於區塊鏈的資料壓縮、查詢方法及裝置和電子設備
CN111898360A (zh) 基于区块链的文本相似性检测方法及装置、电子设备
CN112650978B (zh) 基于区块链的侵权检测方法及装置、电子设备
CN114154987B (zh) 一种基于nfr和互链网的元宇宙安全系统及运行方法
US20210319456A1 (en) Methods, apparatuses, devices, and systems for generating customs clearance confirmation information
CN111723102A (zh) 一种智能合约的更新方法和装置
WO2021017432A1 (zh) 一种基于区块链的报销费用分割方法、装置及电子设备
CN110033367A (zh) 基于区块链的合同记录方法及装置、电子设备
CN108710658B (zh) 一种数据记录的存储方法及装置
US20230325156A1 (en) Cross-validating files to facilitate code generation

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
GR01 Patent grant
GR01 Patent grant