一种基于区块链智能合约引擎的工业应用构建机制

文档序号:36971232发布日期:2024-02-07 13:20阅读:18来源:国知局
一种基于区块链智能合约引擎的工业应用构建机制

本发明涉及区块链,尤其是涉及一种基于区块链智能合约引擎的工业应用构建机制。


背景技术:

1、区块链技术的出现和发展为智能合约的使用带来了许多独特的优势,包括去中心化、不可篡改、透明性和可追溯性等。然而,由于分布式系统中的节点存在网络延迟和时钟差异等问题,智能合约的执行顺序和结果可能会有多种变化,这可能导致合约的不一致性和操作的不确定性。

2、在工业区块链中,很多智能合约都是有状态合约,例如设备维护合约、工厂生产合约、物料管理合约等,这些合约产生的交易结果都会影响下一次交易,如果每个节点的交易执行顺序不对,会导致数据不一致、系统出错等的问题,因此需要考虑交易定序这个问题,通过对交易的严格定序,可以提供交易执行的可追溯性,使得任何参与者都可以验证和确认交易的合法性。同时,定序机制可以确保区块链上的所有节点在执行相同交易时具有相同的结果,增强了交易的一致性和安全性。

3、智能合约的并发执行能力在工业场景中是实现高吞吐量和低延迟的重要因素,通过合理的定序机制,可以实现交易的并行执行,提高整个区块链系统的处理能力和效率。随着区块链应用的增加,传统应用构建的定序算法无法百分百保证每个节点的合约执行顺序一致。

4、因此,有必要提供一种基于区块链智能合约引擎的工业应用构建机制来解决上述问题。


技术实现思路

1、本发明的目的是提供一种基于区块链智能合约引擎的工业应用构建机制,解决传统应用构建方法中存在的安全性与稳定性不足、数据不一致、合约执行异常、合约执行效率慢问题。

2、为实现上述目的,本发明提供了一种基于区块链智能合约引擎的工业应用构建机制,包括工业智能合约标记方法、交易池、有状态交易定序算法、无状态交易验证算法和区块打包算法,具体包括以下步骤:

3、s1:用户编写完智能合约编译,通过工业智能合约标记方法将工业区块链中的智能合约分为有状态合约和无状态合约,系统将对应合约标记添加在编译生成的合约字节码中;

4、s2:合约标记完成后,系统通过合约部署交易将合约字节码发送给网络中的所有节点,各节点收到消息后将合约字节码存储到本地,并返回合约地址,合约部署成功;

5、s3:用户发起交易,系统根据合约标记判定本次交易对应的算法进行交易共识,有状态合约使用有状态定序算法,无状态合约使用无状态交易验证算法;

6、s4:交易经过验证与共识后存入到各节点的交易池中,交易池中的交易数量达到预设值时触发区块打包机制;

7、s5:区块打包,系统使用区块打包算法进行区块的打包和共识,共识成功后上链;

8、s6:区块上链后,主节点将交易池里的所有交易存储到本地数据库中,清空交易池里所有交易,向网络中除主节点外所有节点发送清空交易的指令,收到指令的节点将交易池里的交易存储到本地数据库中,并清空交易池中的交易。

9、优选的,在步骤s3中,使用有状态合约发起的交易为有状态交易,使用无状态合约发起的交易为无状态交易,用户发起交易后,客户端验证交易是有状态交易还是无状态交易;

10、有状态合约是指合约执行过程与之前的交易或状态有关或者执行后会改变区块链中的数据,执行结果会根据输入参数、交易执行顺序不同而改变,无状态合约是指合约的执行过程不依赖于之前的交易或状态,不修改任何区块链中的数据,执行结果只和本次输入参数有关,和交易执行顺序无关,不同的执行顺序会产生相同的结果。

11、优选的,交易池在区块打包前存储所有共识成功的交易,包括有状态交易区、无状态交易区、交易缓存区、交易总哈希值和交易量预设值;

12、有状态交易区存储有状态交易,无状态交易区存储无状态交易,交易缓存区存储有状态定序算法中定序未完成的交易,交易总哈希值是交易池里存储的每个交易的哈希值再次经过哈希算法得到的哈希值,交易量预设值是一个区块中包含的交易数量,交易池里的交易数量达到交易量预设值后,使用区块打包算法进行区块的验证和打包,区块链网络中的每个节点都有交易池;

13、有状态交易定序算法用于有状态交易的定序、验证和共识,包含request、prepare、verify、commit和reply阶段;无状态交易验证算法用于无状态交易的验证和共识,包含request、prepare和verify阶段。

14、优选的,有状态交易定序算法的具体步骤如下:

15、步骤一:用户发起有状态交易后,客户端随机选取一个节点作为主节点,并向主节点发送交易定序请求,发送消息的格式为<request,n,i,g,m,o,t>;

16、步骤二:主节点收到请求后向区块链网络中除主节点外所有节点发送prepare消息,消息格式为<prepare,n,i1,g,m,o,t>;

17、步骤三:从节点接收到消息后,验证交易,将验证结果向全网广播,消息格式为<verify,n,c,i1,i2,o,t>;

18、节点接收到交易验证成功消息大于2f,向全网广播commit消息,表示已经接收到足够的verify消息,消息格式为<commit,n,i1,i2,o,t>,节点未收到2f+1个验证成功消息,返回客户端验证失败消息;

19、节点接收到2f+1个commit消息后,将本次交易存入到交易池中的交易缓存区,将消息返回给客户端,消息格式为<reply,n,i1,i2,o,t>,节点未收到2f+1个消息,返回客户端定序失败的消息;

20、步骤四:客户端收到来自f+1个节点的reply消息后,将本次交易的定序状态设为成功,客户端未收到f+1个节点的reply消息,本次交易的定序状态设定为失败。

21、优选的,无状态交易验证算法的步骤如下:

22、步骤一:用户发起无状态交易后,客户端随机选取一个节点作为主节点,并向主节点发送交易验证请求,发送消息的格式为<request,n,i,m,o,t>;

23、步骤二:主节点收到请求后向区块链网络中除主节点外所有节点发送prepare消息,消息格式为<prepare,n,i1,m,o,t>;

24、步骤三:从节点接收到消息后,验证交易,将验证结果向全网广播,消息格式为<verify,n,c,i1,i2,o,t>,节点接收到交易验证成功消息大于2f,将交易存入到交易池中的无状态交易区;节点未收到2f+1个验证成功的消息,返回客户端验证失败消息。

25、优选的,有状态交易定序算法和无状态交易验证算法各阶段发送的消息格式中,n为本次交易id,i为客户端标识,g为上轮定序成功的交易信息,交易信息包含交易哈希、定序状态、客户端签名,m为本次交易的信息,包含输入参数、发送方地址、接收方地址、合约地址、交易哈希、交易签名,o为交易是否为有状态交易,true为有状态,false为无状态,t为时间戳,i1为主节点id,i2为从节点id,c为交易验证结果,true为验证成功,false为验证失败。

26、优选的,客户端使用私钥将上轮定序成功的交易id、交易哈希和定序状态加密后放入到request消息中,有状态交易定序算法完成后,将本次交易存入到交易池中的交易缓存区,下一次request和prepare阶段,主节点和从节点使用客户端私钥验证g中的客户端签名,验证成功后,将交易缓存区里与g中交易哈希一致的交易存储到有状态交易区中。

27、优选的,在步骤s5中,区块打包时,所有节点将本地总交易哈希值以及节点id发送给客户端,客户端收到大于2f+1个相同哈希值后在发送该哈希值的节点中随机选取一个节点作为主节点,将交易池里的所有交易进行打包,并将打包后的区块向全网广播,收到消息的节点会将区块里每个交易的哈希值进行哈希计算,得到总哈希值,判断得到的哈希值是否与本地所述总交易哈希值相同,相同则将消息返回给客户端,不同则不返回,当客户端收到2f+1个验证成功的消息后,表示区块共识成功,区块上链;

28、区块共识失败,在发送2f+1个相同哈希值的节点中重新选取一个节点作为主节点,再进行区块共识,直至区块共识成功。

29、因此,本发明采用上述一种基于区块链智能合约引擎的工业应用构建机制,通过完整的面向工业场景的区块链应用构建机制,保证区块链网络中各节点交易执行顺序一致,从而保证系统数据统一,避免合约执行异常,增强区块链系统的安全性与稳定性,其中工业智能合约标记方法将工业场景中所有交易分为有状态交易和无状态交易,并分别通过有状态交易定序算法和无状态交易验证算法进行交易共识和验证,实现交易的并行执行,提高整个区块链系统的处理能力和效率。

30、下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1