CN111324591A - 区块链分叉的检测方法及相关装置 - Google Patents
区块链分叉的检测方法及相关装置 Download PDFInfo
- Publication number
- CN111324591A CN111324591A CN202010067365.1A CN202010067365A CN111324591A CN 111324591 A CN111324591 A CN 111324591A CN 202010067365 A CN202010067365 A CN 202010067365A CN 111324591 A CN111324591 A CN 111324591A
- Authority
- CN
- China
- Prior art keywords
- block chain
- bifurcation
- nodes
- abnormal
- blocks
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种区块链分叉的检测方法及相关装置,方法包括:根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;从多个共识节点中选取至少一个打包节点,以及根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块;对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。采用本申请实施例有助于提高区块链分叉的检测效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链分叉的检测方法及相关装置。
背景技术
目前,区块链分叉的检测过程为:首先,基于区块链源代码、随机算法和加密算法生成可执行文件;然后,加载可执行文件,先自动生成分叉区块,后自动消除分叉区块;最后,执行区块链分叉消除检测,得到区块链分叉的检测结果。上述操作导致区块链分叉的检测效率较低。
发明内容
本申请实施例提供一种区块链分叉的检测方法及相关装置,用于提高区块链分叉的检测效率。
第一方面,本申请实施例提供一种区块链分叉的检测方法,包括:
根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;
从多个共识节点中选取至少一个打包节点,以及根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块;
对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
第二方面,本申请实施例提供一种区块链分叉的检测装置,包括:
生成单元,用于根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
获得单元,用于对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;
选取单元,用于从多个共识节点中选取至少一个打包节点;
构造单元,用于根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块;
检测单元,用于对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面的方法中的部分或全部步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,上述计算机可读存储介质用于存储计算机程序,上述计算机程序被处理器执行,以实现如本申请实施例第一方面的方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面的方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,相较于加载基于区块链源代码、随机算法和加密算法生成的可执行文件,以及对加载完成的可执行文件执行区块链分叉消除检测操作,在本申请实施例中,首先加载根据区块链源代码和基于AOP技术的注入代码生成的可执行文件,然后基于剩余共识节点和至少一个打包节点构造多个异常分叉区块,最后执行区块链分叉消除检测操作。由于绕开随机算法和加密算法的强保护,通过构造多个异常分叉区块触发区块链分叉消除检测,因此有助于提高区块链分叉的检测效率。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种区块链分叉的检测系统的架构示意图;
图2A是本申请实施例提供的第一种区块链分叉的检测方法的流程示意图;
图2B是本申请实施例提供的一种生成可执行文件的示意图;
图2C是本申请实施例提供的另一种生成可执行文件的示意图;
图2D是本申请实施例提供的两种共识节点对应的异常分叉区块的示意图;
图2E是本申请实施例提供的两种打包节点对应的异常分叉区块的示意图;
图3A是本申请实施例提供的第二种区块链分叉的检测方法的流程示意图;
图3B是本申请实施例提供的第三种区块链分叉的检测方法的流程示意图;
图4是本申请实施例提供的一种区块链分叉的检测装置的功能单元组成框图;
图5是本申请实施例提供的一种电子设备的结构示意图。
具体实现方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,UE),移动台(mobile station,MS),终端设备(terminal device,TD)等等。
下面对本申请实施例进行详细介绍。
请参见图1,图1是本申请实施例提供的一种区块链分叉的检测系统的架构示意图,该区块链分叉的检测系统包括AOP注入器、编译器、AOP控制器,其中:
AOP注入器,用于基于AOP技术注入代码;
编译器,用于根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
AOP控制器,用于从多个共识节点中选取至少一个打包节点,以及根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块;
AOP控制器,还用于对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
请参见图2A,图2A是本申请实施例提供的第一种区块链分叉的检测方法的流程示意图,该区块链分叉的检测方法包括步骤201-204,具体如下:
201、区块链分叉的检测装置根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
AOP(面向切面编程),通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
可执行文件是可以由操作系统进行加载执行的文件。
在一个可能的实施例中,区块链分叉的检测装置根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件,包括:
在编译期,区块链分叉的检测装置对区块链源代码和基于AOP技术的注入代码进行代码融合,得到目标代码;
区块链分叉的检测装置对目标代码进行代码编译,生成目标可执行文件。
AOP技术可以包括AspectJ、ASM、AspectC++等代码增强技术。
编译器集成在区块链分叉的检测装置中,区块链分叉的检测装置可以通过编译器对目标代码进行代码编译。
举例来说,如图2B所示,图2B是本申请实施例提供的一种生成可执行文件的示意图,对区块链源代码和注入代码进行代码融合,得到目标代码,将目标代码输入编译器进行代码编译,输出目标可执行文件。
可见,在本示例中,对区块链源代码和在编译期基于AOP技术静态注入的代码进行代码融合和代码编译,生成可执行文件,并加载可执行文件,进而基于剩余共识节点和至少一个打包节点构造多个分叉区块,以及执行区块链分叉消除检测操作。由于绕开随机算法和加密算法的强保护,通过构造多个分叉区块触发区块链分叉消除检测,因此有助于提高区块链分叉的检测效率。
在一个可能的实施例中,区块链分叉的检测装置根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件,包括:
在运行期,区块链分叉的检测装置对区块链源代码进行代码编译,得到第一可执行文件;
在运行期,区块链分叉的检测装置对基于AOP技术的注入代码进行代码编译,得到第二可执行文件;
区块链分叉的检测装置对第一可执行文件和第二可执行文件进行可执行文件合并,得到目标可执行文件。
AOP技术可以包括Instrumentation+ASM、Hooking等技术。
区块链分叉的检测装置可以通过编译器对区块链源代码和基于AOP技术的注入代码进行代码编译。
举例来说,如图2C所示,图2C是本申请实施例提供的另一种生成可执行文件的示意图,将区块链源代码输入编译器进行代码编译,输出第一可执行文件,将注入代码输入编译器进行代码编译,输出第二课执行文件,对第一可执行文件和第二可执行文件进行可执行文件合并,得到目标可执行文件。
可见,在本示例中,对第一可执行文件和第二可执行文件(在运行期基于AOP技术动态注入的代码进行代码编译得到第二可执行文件)进行可执行文件合并,得到目标可执行文件,并加载目标可执行文件,进而基于剩余共识节点和至少一个打包节点构造多个分叉区块,以及执行区块链分叉消除检测操作。由于绕开随机算法和加密算法的强保护,通过构造多个分叉区块触发区块链分叉消除检测,因此有助于提高区块链分叉的检测效率。
202、区块链分叉的检测装置对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点。
普通节点为无需验证即可写入区块的区块链节点。
验证节点为对区块进行校验,发现该区块有作恶即会重新选举的区块链节点。
共识节点为参与验证区块是否上区块链的投票的区块链节点。
在一个可能的实施例中,区块链分叉的检测装置对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点,包括:
区块链分叉的检测装置对目标可执行文件进行加载,得到目标区块链共识机制;
区块链分叉的检测装置根据预存的区块链共识机制与节点分配比例的映射关系确定目标区块链共识机制对应的目标节点分配比例;
区块链分叉的检测装置根据目标节点分配比例对区块链节点集群进行节点分配,得到多个普通节点、多个验证节点和多个共识节点。
区块链共识机制可以包括工作量证明POW机制、权益证明POS机制、委托权益证明DPOS机制、验证池共识POOL机制等。
区块链共识机制与节点分配比例的映射关系预先存储在区块链分叉的检测装置中,区块链共识机制与节点分配比例的映射关系如下表1所示:
表1
区块链共识机制 | 节点分配比例 |
工作量证明机制 | 第一节点分配比例 |
权益证明机制 | 第二节点分配比例 |
委托权益证明机制 | 第三节点分配比例 |
验证池共识机制 | 第四节点分配比例 |
…… | …… |
区块链共识机制与节点分配比例一一对应;如果区块链共识机制为工作量证明机制,那么节点分配比例为第一节点分配比例。
203、区块链分叉的检测装置从多个共识节点中选取至少一个打包节点,以及根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块。
打包节点是能够进行把上区块链的交易列表中多个交易整合到区块中的操作的区块链节点。
在一个可能的实施例中,区块链分叉的检测装置从多个共识节点中选取至少一个打包节点,包括:
区块链分叉的检测装置获取目标区块链共识机制;
区块链分叉的检测装置根据预存的区块链共识机制与打包节点选取方式的映射关系确定目标区块链共识机制对应的目标打包节点选取方式;
区块链分叉的检测装置通过目标打包接节点选取方式从多个共识节点中选取至少一个打包节点。
区块链共识机制与打包节点选取方式的映射关系预先存储在区块链分叉的检测装置中,区块链共识机制与打包节点选取方式的映射关系如下表2所示:
表2
区块链共识机制 | 打包节点选取方式 |
工作量证明机制 | 第一打包节点选取方式 |
权益证明机制 | 第二打包节点选取方式 |
委托权益证明机制 | 第三打包节点选取方式 |
验证池共识机制 | 第四打包节点选取方式 |
…… | …… |
区块链共识机制与打包节点选取方式;如果区块链共识机制为工作量证明机制,那么打包节点选取方式为第一打包节点选取方式。
打包节点选取方式可以包括按照节点编号依次选取方式、抽签方式等。
在一个可能的实施例中,区块链分叉的检测装置根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块,包括:
区块链分叉的检测装置根据预存的共识节点与异常分叉区块的映射关系确定N个共识节点对应的N个第一异常分叉区块,N个第一异常分叉区块与N个共识节点一一对应,多个共识节点中除至少一个打包节点之外的剩余共识节点的数量为N,N为大于等于1的整数;
区块链分叉的检测装置根据预存的打包节点与异常分叉区块的映射关系确定M个打包节点对应的M个第二异常分叉区块,M个第二异常分叉区块与M个打包节点一一对应,至少一个打包节点的数量为M,M为大于等于1的整数。
共识节点与异常分叉区块的映射关系预先存储在区块链分叉的检测装置中,一个共识节点可以对应多个异常分叉区块。
举例来说,如图2D所示,图2D是本申请实施例提供的两种共识节点对应的异常分叉区块的示意图,第一种共识节点对应的异常分叉区块的处理流程:接收请求→验证区块→共识区块→存储区块→存储分叉区块,第二种共识节点对应的异常分叉区块的处理流程:接收请求→验证区块→共识区块→存储分叉区块。其中,验证区块是验证区块是否合法;共识区块是对区块验证结果进行广播;存储区块是区块达成共识后,把区块持久化。
以上仅为对共识节点对应的异常分叉区块的两种示例性说明,不应理解为对共识节点对应的异常分叉区块的限定。
打包节点与异常分叉区块的映射关系预先存储在区块链分叉的检测装置中,一个打包节点可以对应多个异常分叉区块。
举例来说,如图2E所示,图2E是本申请实施例提供的两种打包节点对应的异常分叉区块的示意图,第一种打包节点对应的异常分叉区块的处理流程:接收请求→打包区块→共识区块→存储分叉区块,第二种打包节点对应的异常分叉区块的处理流程:接收请求→打包区块→共识区块→存储区块→存储分叉区块。其中,打包区块是把交易打包至区块。
以上仅为对打包节点对应的异常分叉区块的两种示例性说明,打包节点对应的异常分叉区块还可以是同一高度选择两个打包节点构造的,不应理解为对打包节点对应的异常分叉区块的限定。
204、区块链分叉的检测装置对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
在一个可能的实施例中,区块链分叉的检测装置对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果,包括:
区块链分叉的检测装置获取预设时长后的区块链;
若预设时长后的区块链不包括N个第一异常分叉区块和M个第二异常分叉区块,则区块链分叉的检测装置确定区块链分叉的检测结果为不存在区块链分叉;
若预设时长后的区块链包括N个第一异常分叉区块和M个第二异常分叉区块中的至少一个,则区块链分叉的检测装置确定区块链分叉的检测结果为存在区块链分叉。
可以看出,相较于加载基于区块链源代码、随机算法和加密算法生成的可执行文件,以及对加载完成的可执行文件执行区块链分叉消除检测操作,在本申请实施例中,首先加载根据区块链源代码和基于AOP技术的注入代码生成的可执行文件,然后基于剩余共识节点和至少一个打包节点构造多个异常分叉区块,最后执行区块链分叉消除检测操作。由于绕开随机算法和加密算法的强保护,通过构造多个异常分叉区块触发区块链分叉消除检测,因此有助于提高区块链分叉的检测效率。
与上述图2A所示的实施例一致的,请参见图3A,图3A是本申请实施例提供的第二种区块链分叉的检测方法的流程示意图,该区块链分叉的检测方法包括步骤301-310,具体如下:
301、在编译期,区块链分叉的检测装置对区块链源代码和基于AOP技术的注入代码进行代码融合,得到目标代码。
302、区块链分叉的检测装置对目标代码进行代码编译,生成目标可执行文件。
303、区块链分叉的检测装置对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点。
304、区块链分叉的检测装置获取目标区块链共识机制。
305、区块链分叉的检测装置根据预存的区块链共识机制与打包节点选取方式的映射关系确定目标区块链共识机制对应的目标打包节点选取方式。
306、区块链分叉的检测装置通过目标打包接节点选取方式从多个共识节点中选取至少一个打包节点。
307、区块链分叉的检测装置根据预存的共识节点与异常分叉区块的映射关系确定N个共识节点对应的N个第一异常分叉区块,N个第一异常分叉区块与N个共识节点一一对应,多个共识节点中除至少一个打包节点之外的剩余共识节点的数量为N,N为大于等于1的整数。
308、区块链分叉的检测装置根据预存的打包节点与异常分叉区块的映射关系确定M个打包节点对应的M个第二异常分叉区块,M个第二异常分叉区块与M个打包节点一一对应,至少一个打包节点的数量为M,M为大于等于1的整数。
309、区块链分叉的检测装置获取预设时长后的区块链。
310、若预设时长后的区块链不包括N个第一异常分叉区块和M个第二异常分叉区块,则区块链分叉的检测装置确定区块链分叉的检测结果为不存在区块链分叉。
与上述图2A和图3A所示的实施例一致的,请参见图3B,图3B是本申请实施例提供的第三种区块链分叉的检测方法的流程示意图,该区块链分叉的检测方法包括步骤311-321,具体如下:
311、在运行期,区块链分叉的检测装置对区块链源代码进行代码编译,得到第一可执行文件。
312、在运行期,区块链分叉的检测装置对基于AOP技术的注入代码进行代码编译,得到第二可执行文件。
313、区块链分叉的检测装置对第一可执行文件和第二可执行文件进行可执行文件合并,得到目标可执行文件。
314、区块链分叉的检测装置对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点。
315、区块链分叉的检测装置获取目标区块链共识机制。
316、区块链分叉的检测装置根据预存的区块链共识机制与打包节点选取方式的映射关系确定目标区块链共识机制对应的目标打包节点选取方式。
317、区块链分叉的检测装置通过目标打包接节点选取方式从多个共识节点中选取至少一个打包节点。
318、区块链分叉的检测装置根据预存的共识节点与异常分叉区块的映射关系确定N个共识节点对应的N个第一异常分叉区块,N个第一异常分叉区块与N个共识节点一一对应,多个共识节点中除至少一个打包节点之外的剩余共识节点的数量为N,N为大于等于1的整数。
319、区块链分叉的检测装置根据预存的打包节点与异常分叉区块的映射关系确定M个打包节点对应的M个第二异常分叉区块,M个第二异常分叉区块与M个打包节点一一对应,至少一个打包节点的数量为M,M为大于等于1的整数。
320、区块链分叉的检测装置获取预设时长后的区块链。
321、若预设时长后的区块链包括N个第一异常分叉区块和M个第二异常分叉区块中的至少一个,则区块链分叉的检测装置确定区块链分叉的检测结果为存在区块链分叉。
需要说明的是,图3A和图3B所示的方法的各个步骤的具体实现过程可参见上述方法的具体实现过程,在此不再叙述。
上述实施例主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,区块链分叉的检测装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对一个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据方法示例对区块链分叉的检测装置进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
下面为本申请装置实施例,本申请装置实施例用于执行本申请方法实施例所实现的方法。请参见图4,图4是本申请实施例提供的一种区块链分叉的检测装置的功能单元组成框图,该区块链分叉的检测装置400包括:
生成单元401,用于根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
获得单元402,用于对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;
选取单元403,用于从多个共识节点中选取至少一个打包节点;
构造单元404,用于根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块;
检测单元405,用于对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
可以看出,相较于加载基于区块链源代码、随机算法和加密算法生成的可执行文件,以及对加载完成的可执行文件执行区块链分叉消除检测操作,在本申请实施中,首先加载根据区块链源代码和基于AOP技术的注入代码生成的可执行文件,然后基于剩余共识节点和至少一个打包节点构造多个异常分叉区块,最后执行区块链分叉消除检测操作。由于绕开随机算法和加密算法的强保护,通过构造多个异常分叉区块触发区块链分叉消除检测,因此有助于提高区块链分叉的检测效率。
在一个可能的实施例中,在根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件方面,上述生成单元401具体用于:
在编译期,对区块链源代码和基于AOP技术的注入代码进行代码融合,得到目标代码;
对目标代码进行代码编译,生成目标可执行文件。
在一个可能的实施例中,在根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件方面,上述生成单元401具体用于:
在运行期,对区块链源代码进行代码编译,得到第一可执行文件;
在运行期,对基于AOP技术的注入代码进行代码编译,得到第二可执行文件;
对第一可执行文件和第二可执行文件进行可执行文件合并,得到目标可执行文件。
在一个可能的实施例中,在从多个共识节点中选取至少一个打包节点方面,上述选取单元403具体用于:
获取目标区块链共识机制;
根据预存的区块链共识机制与打包节点选取方式的映射关系确定目标区块链共识机制对应的目标打包节点选取方式;
通过目标打包接节点选取方式从多个共识节点中选取至少一个打包节点。
在一个可能的实施例中,在根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块方面,上述构造单元404具体用于:
根据预存的共识节点与异常分叉区块的映射关系确定N个共识节点对应的N个第一异常分叉区块,N个第一异常分叉区块与N个共识节点一一对应,多个共识节点中除至少一个打包节点之外的剩余共识节点的数量为N,N为大于等于1的整数;
根据预存的打包节点与异常分叉区块的映射关系确定M个打包节点对应的M个第二异常分叉区块,M个第二异常分叉区块与M个打包节点一一对应,至少一个打包节点的数量为M,M为大于等于1的整数。
在一个可能的实施例中,在对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果方面,上述检测单元405具体用于:
获取预设时长后的区块链;
若预设时长后的区块链不包括N个第一异常分叉区块和M个第二异常分叉区块,则确定区块链分叉的检测结果为不存在区块链分叉;
若预设时长后的区块链包括N个第一异常分叉区块和M个第二异常分叉区块中的至少一个,则确定区块链分叉的检测结果为存在区块链分叉。
与上述图2A、图3A和图3B所示的实施例一致的,请参见图5,图5是本申请实施例提供的一种电子设备的结构示意图,该电子设备500包括处理器、存储器、通信接口以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行以下步骤的指令:
根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
对目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;
从多个共识节点中选取至少一个打包节点,以及根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块;
对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
可以看出,相较于加载基于区块链源代码、随机算法和加密算法生成的可执行文件,以及对加载完成的可执行文件执行区块链分叉消除检测操作,在本申请实施例中,首先加载根据区块链源代码和基于AOP技术的注入代码生成的可执行文件,然后基于剩余共识节点和至少一个打包节点构造多个异常分叉区块,最后执行区块链分叉消除检测操作。由于绕开随机算法和加密算法的强保护,通过构造多个异常分叉区块触发区块链分叉消除检测,因此有助于提高区块链分叉的检测效率。
在一个可能的实施例中,在根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件方面,上述程序包括具体用于执行以下步骤的指令:
在编译期,对区块链源代码和基于AOP技术的注入代码进行代码融合,得到目标代码;
对目标代码进行代码编译,生成目标可执行文件。
在一个可能的实施例中,在根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件方面,上述程序包括具体用于执行以下步骤的指令:
在运行期,对区块链源代码进行代码编译,得到第一可执行文件;
在运行期,对基于AOP技术的注入代码进行代码编译,得到第二可执行文件;
对第一可执行文件和第二可执行文件进行可执行文件合并,得到目标可执行文件。
在一个可能的实施例中,在从多个共识节点中选取至少一个打包节点方面,上述程序包括具体用于执行以下步骤的指令:
获取目标区块链共识机制;
根据预存的区块链共识机制与打包节点选取方式的映射关系确定目标区块链共识机制对应的目标打包节点选取方式;
通过目标打包接节点选取方式从多个共识节点中选取至少一个打包节点。
在一个可能的实施例中,在根据多个共识节点中除至少一个打包节点之外的剩余共识节点和至少一个打包节点构造多个异常分叉区块方面,上述程序包括具体用于执行以下步骤的指令:
根据预存的共识节点与异常分叉区块的映射关系确定N个共识节点对应的N个第一异常分叉区块,N个第一异常分叉区块与N个共识节点一一对应,多个共识节点中除至少一个打包节点之外的剩余共识节点的数量为N,N为大于等于1的整数;
根据预存的打包节点与异常分叉区块的映射关系确定M个打包节点对应的M个第二异常分叉区块,M个第二异常分叉区块与M个打包节点一一对应,至少一个打包节点的数量为M,M为大于等于1的整数。
在一个可能的实施例中,在对多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果方面,上述程序包括具体用于执行以下步骤的指令:
获取预设时长后的区块链;
若预设时长后的区块链不包括N个第一异常分叉区块和M个第二异常分叉区块,则确定区块链分叉的检测结果为不存在区块链分叉;
若预设时长后的区块链包括N个第一异常分叉区块和M个第二异常分叉区块中的至少一个,则确定区块链分叉的检测结果为存在区块链分叉。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,上述计算机程序被处理器执行,以实现如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实现方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种区块链分叉的检测方法,其特征在于,包括:
根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
对所述目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;
从所述多个共识节点中选取至少一个打包节点,以及根据所述多个共识节点中除所述至少一个打包节点之外的剩余共识节点和所述至少一个打包节点构造多个异常分叉区块;
对所述多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
2.根据权利要求1所述的方法,其特征在于,所述根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件,包括:
在编译期,对区块链源代码和基于AOP技术的注入代码进行代码融合,得到目标代码;
对目标代码进行代码编译,生成目标可执行文件。
3.根据权利要求1所述的方法,其特征在于,所述根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件,包括:
在运行期,对区块链源代码进行代码编译,得到第一可执行文件;
在所述运行期,对基于AOP技术的注入代码进行代码编译,得到第二可执行文件;
对所述第一可执行文件和所述第二可执行文件进行可执行文件合并,得到目标可执行文件。
4.根据权利要求2或3所述的方法,其特征在于,所述从所述多个共识节点中选取至少一个打包节点,包括:
获取目标区块链共识机制;
根据预存的区块链共识机制与打包节点选取方式的映射关系确定所述目标区块链共识机制对应的目标打包节点选取方式;
通过所述目标打包接节点选取方式从所述多个共识节点中选取至少一个打包节点。
5.根据权利要求4所述的方法,其特征在于,所述根据所述多个共识节点中除所述至少一个打包节点之外的剩余共识节点和所述至少一个打包节点构造多个异常分叉区块,包括:
根据预存的共识节点与异常分叉区块的映射关系确定N个共识节点对应的N个第一异常分叉区块,所述N个第一异常分叉区块与所述N个共识节点一一对应,所述多个共识节点中除所述至少一个打包节点之外的剩余共识节点的数量为N,所述N为大于等于1的整数;
根据预存的打包节点与异常分叉区块的映射关系确定M个打包节点对应的M个第二异常分叉区块,所述M个第二异常分叉区块与所述M个打包节点一一对应,所述至少一个打包节点的数量为M,所述M为大于等于1的整数。
6.根据权利要求5所述的方法,其特征在于,所述对所述多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果,包括:
获取预设时长后的区块链;
若所述预设时长后的区块链不包括所述N个第一异常分叉区块和所述M个第二异常分叉区块,则确定区块链分叉的检测结果为不存在区块链分叉;
若所述预设时长后的区块链包括所述N个第一异常分叉区块和所述M个第二异常分叉区块中的至少一个,则确定区块链分叉的检测结果为存在区块链分叉。
7.一种区块链分叉的检测装置,其特征在于,包括:
生成单元,用于根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件;
获得单元,用于对所述目标可执行文件进行加载,得到区块链节点集群包括的多个普通节点、多个验证节点和多个共识节点;
选取单元,用于从所述多个共识节点中选取至少一个打包节点;
构造单元,用于根据所述多个共识节点中除所述至少一个打包节点之外的剩余共识节点和所述至少一个打包节点构造多个异常分叉区块;
检测单元,用于对所述多个异常分叉区块执行区块链分叉消除检测操作,得到区块链分叉的检测结果。
8.根据权利要求7所述的装置,其特征在于,在根据区块链源代码和基于AOP技术的注入代码生成目标可执行文件方面,所述生成单元具体用于:
在编译期,对区块链源代码和基于AOP技术的注入代码进行代码融合,得到目标代码;
对目标代码进行代码编译,生成目标可执行文件。
9.一种电子设备,其特征在于,包括处理器、存储器、通信接口以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-6任一项所述的方法中的部分或全部步骤的指令。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行,以实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010067365.1A CN111324591B (zh) | 2020-01-20 | 2020-01-20 | 区块链分叉的检测方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010067365.1A CN111324591B (zh) | 2020-01-20 | 2020-01-20 | 区块链分叉的检测方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324591A true CN111324591A (zh) | 2020-06-23 |
CN111324591B CN111324591B (zh) | 2021-02-12 |
Family
ID=71168672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010067365.1A Active CN111324591B (zh) | 2020-01-20 | 2020-01-20 | 区块链分叉的检测方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324591B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782551A (zh) * | 2020-08-04 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 针对区块链项目的测试方法、装置及计算机设备 |
CN111949531A (zh) * | 2020-08-10 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 区块链网络的测试方法、装置、介质及电子设备 |
CN112532713A (zh) * | 2020-11-25 | 2021-03-19 | 深圳前海微众银行股份有限公司 | 一种区块链的抗分叉检测方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109361740A (zh) * | 2018-09-27 | 2019-02-19 | 百度在线网络技术(北京)有限公司 | 一种区块链的区块生成方法、装置、设备和介质 |
CN110177079A (zh) * | 2019-04-17 | 2019-08-27 | 北京百度网讯科技有限公司 | 智能合约的调用系统及调用方法 |
US20190268138A1 (en) * | 2018-02-26 | 2019-08-29 | Ca, Inc. | Meta block chain |
CN110474822A (zh) * | 2019-08-08 | 2019-11-19 | 腾讯科技(深圳)有限公司 | 一种区块链节点检测方法、装置、设备及介质 |
CN110535872A (zh) * | 2019-09-12 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 在区块链网络中处理数据请求的方法和装置 |
CN110544092A (zh) * | 2019-08-22 | 2019-12-06 | 杭州趣链科技有限公司 | 一种区块链的动态新增多类型数据库数据操作上链方法 |
CN110704464A (zh) * | 2019-09-12 | 2020-01-17 | 广州蚁比特区块链科技有限公司 | 一种分叉问题的处理方法及装置 |
-
2020
- 2020-01-20 CN CN202010067365.1A patent/CN111324591B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190268138A1 (en) * | 2018-02-26 | 2019-08-29 | Ca, Inc. | Meta block chain |
CN109361740A (zh) * | 2018-09-27 | 2019-02-19 | 百度在线网络技术(北京)有限公司 | 一种区块链的区块生成方法、装置、设备和介质 |
CN110177079A (zh) * | 2019-04-17 | 2019-08-27 | 北京百度网讯科技有限公司 | 智能合约的调用系统及调用方法 |
CN110474822A (zh) * | 2019-08-08 | 2019-11-19 | 腾讯科技(深圳)有限公司 | 一种区块链节点检测方法、装置、设备及介质 |
CN110544092A (zh) * | 2019-08-22 | 2019-12-06 | 杭州趣链科技有限公司 | 一种区块链的动态新增多类型数据库数据操作上链方法 |
CN110535872A (zh) * | 2019-09-12 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 在区块链网络中处理数据请求的方法和装置 |
CN110704464A (zh) * | 2019-09-12 | 2020-01-17 | 广州蚁比特区块链科技有限公司 | 一种分叉问题的处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
鲁航: "《基于区块链的选举系统的设计与实现》", 《万方数据》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782551A (zh) * | 2020-08-04 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 针对区块链项目的测试方法、装置及计算机设备 |
CN111782551B (zh) * | 2020-08-04 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 针对区块链项目的测试方法、装置及计算机设备 |
CN111949531A (zh) * | 2020-08-10 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 区块链网络的测试方法、装置、介质及电子设备 |
CN111949531B (zh) * | 2020-08-10 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 区块链网络的测试方法、装置、介质及电子设备 |
CN112532713A (zh) * | 2020-11-25 | 2021-03-19 | 深圳前海微众银行股份有限公司 | 一种区块链的抗分叉检测方法及装置 |
CN112532713B (zh) * | 2020-11-25 | 2023-05-16 | 深圳前海微众银行股份有限公司 | 一种区块链的抗分叉检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111324591B (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324591B (zh) | 区块链分叉的检测方法及相关装置 | |
CN110414261B (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
CN111614655A (zh) | 一种共识校验的方法及装置 | |
CN110995825B (zh) | 一种智能合约的发布方法、智能节点设备及存储介质 | |
CN104270395A (zh) | 一种输入数据校验的方法、装置及系统 | |
CN113079200A (zh) | 一种数据处理的方法、装置及系统 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN112559635B (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
CN109271789A (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN111857860A (zh) | 一种安全加载插件的实现方法及系统 | |
CN111241586B (zh) | 区块链地址匿名处理方法及系统、终端、存储介质 | |
CN112419057A (zh) | 智能合约的日志生成及保存方法、装置、设备和存储介质 | |
CN112667521B (zh) | 一种热修复方法及装置 | |
CN108932407B (zh) | 一种程序安全保护方法及装置 | |
CN111259370A (zh) | 一种fpga程序安全验证方法、系统、终端及存储介质 | |
CN107092517B (zh) | 一种sdk工具包的生成方法及装置 | |
US20200034540A1 (en) | Executing processes in sequence | |
CN110781078B (zh) | 一种代码漏洞处理方法与装置 | |
CN112380541A (zh) | 智能合约的漏洞的检测方法、装置及计算机设备 | |
CN114995799B (zh) | 一种汇编代码生成方法、装置及电子设备 | |
US9684631B2 (en) | Processing sytem with a secure set of executable instructions and/or addressing scheme | |
CN112100249B (zh) | 一种数据挖掘方法及系统 | |
CN111724149A (zh) | 支付方式的接入方法、装置、计算机设备及自动售卖系统 | |
CN115047836A (zh) | 基于dcs系统定期试验的试验用例生成和载入方法及系统 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024813 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |