System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及规则引擎,特别涉及一种去中心化的规则引擎的同步方法、设备及存储介质。
技术介绍
1、规则引擎是一种基于专家系统改进而来的实现自动决策过程的软件系统,其多用于业务流程管理领域。规则引擎的核心是“规则”,其定义为在特定情况下应当执行的操作,通常以"条件-行为"的格式来表达。标准的规则引擎由三部分组成,分别是存储规则的规则集、存储状态的事实库、实现规则引擎功能的规则引擎核心部分。
2、区块链技术的发展最早可追溯至中本聪于2008年发布的白皮书《比特币:一种点对点的电子现金系统》,因其完全去中心化和账本防篡改的特性受到人们的青睐。区块链是一类具有防篡改容错能力的分布式存储技术,通过链式结构、哈希算法、非对称加密等技术保证数据的安全性。
3、目前普遍是基于hyperledger fabric实现的规则引擎,具体来说是借助fabric的链码支持高级编程语言的特性,以实现链上的规则引擎。然而,由于fabric是面向联盟链设计的区块链,所以在去中心化方面有所缺失,从而导致在区块链上实现的规则引擎也在去中心化方面存在缺失。
4、因而现有技术还有待改进和提高。
技术实现思路
1、本申请要解决的技术问题在于,针对现有技术的不足,提供一种去中心化的规则引擎的同步方法、设备及存储介质。
2、为了解决上述技术问题,本申请第一方面提供了一种去中心化的规则引擎的同步方法,所述去中心化的规则引擎通过将规则引擎与公链区块链相结合来实现,其中,所述规则引擎的规则
3、当用于运行所述规则引擎的公链区块链出现分叉时,确定分叉包括的主链和支链;
4、在所述支链中选取待同步区块,并读取各待同步区块中存储的状态操作集合,所述状态操作集合包括用于改变规则引擎的运行状态的添加元组操作和/或删除元组操作;
5、控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作,以将所述规则引擎的运行状态还原至分叉区块;
6、重新同步主链的链上数据。
7、所述的去中心化的规则引擎的同步方法,其中,所述区块链节点中的每个区块均存有中间状态集,所述中间状态集用于存储规则引擎的运行状态,以使得在控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作时,通过所述中间状态集确定规则引擎的运行状态。
8、所述的去中心化的规则引擎的同步方法,其中,所述在所述支链中选取待同步区块具体包括:
9、读取分叉区块的分叉节点高度;
10、在支链中选取节点高度大于所述分叉节点高度的支链区块;
11、将选取到的所有支链区块作为待同步区块。
12、所述的去中心化的规则引擎的同步方法,其中,所述控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作,以将所述规则引擎的运行状态还原至分叉区块具体包括:
13、将读取到的所有状态操作集合合并为一候选状态操作集合;
14、对于所述候选状态操作集合中的每个添加元组操作,在所述候选状态操作集合中查找所述添加元组操作对应的删除元组操作,其中,所述添加元组操作所对应的元组和其对应的删除元组操作所对应的元组相同;
15、当查找到删除元组操作时,将所述添加元组操作和所述添加元组操作对应的删除元组操作从所述候选状态操作集合中删除,以得到目标状态操作集合;
16、依次执行所述目标状态操作集合中的各操作的逆操作,以将所述规则引擎的运行状态还原至分叉区块。
17、所述的去中心化的规则引擎的同步方法,其中,所述区块链中的每个区块的状态操作集合中均不同时包括对应于相同元组的添加元组操作和删除元组操作。
18、所述的去中心化的规则引擎的同步方法,其中,所述规则引擎包括链上数据的逻辑接口,所述逻辑接口用于实现规则引擎核心与通过链上数据实行的规则集和数据域间的交互。
19、所述的去中心化的规则引擎的同步方法,其中,所述逻辑接口包括数据域读写接口、规则集读写接口、规则引擎控制接口和权限控制接口。
20、所述的去中心化的规则引擎的同步方法,其中,所述规则引擎配置有rete算法。
21、本申请第二方面提供了一种规则引擎系统,其中,所述规则引擎系统包括节点和以太坊虚拟机,所述以太坊虚拟机部署有规则引擎;
22、所述节点,用于通过智能合约访问以太坊虚拟机;
23、所述以太坊虚拟机,用于响应用户端通过智能合约输入的启动指令,并接收通过智能合约传输的规则集;根据所述规则集生成业务规则,并将所述业务规则注册于规则引擎内,接收通过智能合约输入的元组并将元组传输给规则引擎,以通过规则引擎基于所述业务规则进行业务处理,其中,所述元组携带有业务信息。
24、有益效果:与现有技术相比,本申请提供了一种去中心化的规则引擎的同步方法、设备及存储介质,所述去中心化的规则引擎通过将规则引擎与公链区块链相结合来实现,方法包括当用于运行所述规则引擎的公链区块链出现分叉时,确定分叉包括的主链和支链;在所述支链中选取待同步区块,并读取各待同步区块中存储的状态操作集合,所述状态操作集合包括用于改变规则引擎的运行状态的添加元组操作和/或删除元组操作;控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作,以将所述规则引擎的运行状态还原至分叉区块。本申请通过在公链区块链上实现规则引擎,保证了规则引擎的去中心化程度。同时,又在公链区块链上出现分叉时,通过读取待同步区块中存储的状态操作集合,再根据状态操作集合控制规则引擎进行逆操作来将规则引擎的运行状态还原至分叉区块,这样可以消除公链区块链上的分叉问题对规则引擎运行的影响。
本文档来自技高网...【技术保护点】
1.一种去中心化的规则引擎的同步方法,其特征在于,所述去中心化的规则引擎通过将规则引擎与公链区块链相结合来实现,其中,所述规则引擎的规则集和数据域通过公链区块链的链上数据实现,所述规则引擎的规则引擎核心通过公链区块链的虚拟机实现;所述去中心化的规则引擎的同步方法具体包括:
2.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述区块链节点中的每个区块均存有中间状态集,所述中间状态集用于存储规则引擎的运行状态,以使得在控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作时,通过所述中间状态集确定规则引擎的运行状态。
3.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述在所述支链中选取待同步区块具体包括:
4.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作,以将所述规则引擎的运行状态还原至分叉区块具体包括:
5.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述区块链中的每个区块的状态操作集合中
6.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述去中心化的规则引擎包括链上数据的逻辑接口,所述逻辑接口用于实现规则引擎核心与通过链上数据实行的规则集和数据域间的交互。
7.根据权利要求6所述的去中心化的规则引擎的同步方法,其特征在于,所述逻辑接口包括数据域读写接口、规则集读写接口、规则引擎控制接口和权限控制接口。
8.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述规则引擎配置有Rete算法。
9.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8中任一所述的去中心化的规则引擎的同步方法。
10.一种计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行如权利要求1-8中任一所述的去中心化的规则引擎的同步方法。
...【技术特征摘要】
1.一种去中心化的规则引擎的同步方法,其特征在于,所述去中心化的规则引擎通过将规则引擎与公链区块链相结合来实现,其中,所述规则引擎的规则集和数据域通过公链区块链的链上数据实现,所述规则引擎的规则引擎核心通过公链区块链的虚拟机实现;所述去中心化的规则引擎的同步方法具体包括:
2.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述区块链节点中的每个区块均存有中间状态集,所述中间状态集用于存储规则引擎的运行状态,以使得在控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作时,通过所述中间状态集确定规则引擎的运行状态。
3.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述在所述支链中选取待同步区块具体包括:
4.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述控制所述规则引擎执行读取到的所有状态操作集合中各状态操作的逆操作,以将所述规则引擎的运行状态还原至分叉区块具体包括:
5.根据权利要求1所述的去中心化的规则引擎的同步方法,其特征在于,所述区块链中的每个区块的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。