区块链中智能合约的执行方法、节点和区块链系统技术方案

技术编号:32430036 阅读:12 留言:0更新日期:2022-02-24 18:39
本公开涉及一种区块链中智能合约的执行方法、节点和区块链系统,涉及计算机技术领域。本公开的方法包括:多个控制节点中的每一个,接收服务节点发送的合约调用交易请求,合约调用交易请求包括:合约执行的预期结果;将合约调用交易请求发送至各个非控制节点,其中,非控制节点的数量小于最大容许作恶节点数;接收各个非控制节点返回的合约调用交易的结果,并验证各个非控制节点返回的合约调用交易的结果与合约执行的预期结果是否匹配;在各个非控制节点返回的合约调用交易的结果与合约执行的预期结果匹配的情况下,将合约调用交易请求广播至其他节点执行合约调用交易。广播至其他节点执行合约调用交易。广播至其他节点执行合约调用交易。

【技术实现步骤摘要】
区块链中智能合约的执行方法、节点和区块链系统


[0001]本公开涉及计算机
,特别涉及一种区块链中智能合约的执行方法、节点和区块链系统。

技术介绍

[0002]区块链上的数据具有公开透明和不可篡改等特性,提高了数据存储的安全性。智能合约是存储在区块链上并能够自动执行的程序。
[0003]目前,大部分区块链网络执行一笔智能合约交易,区块链网络所有节点或大部分都需同时对智能合约进行执行。

技术实现思路

[0004]专利技术人发现:如果智能合约代码有问题,或存在恶意代码,那么执行智能合约的节点将都会受到影响。可能出现过多节点同时处于阻塞状态或不可控状态,这会导致区块链网络瘫痪,还可能会导致交易结果错误,降低交易过程的安全性。
[0005]本公开所要解决的一个技术问题是:如何提高智能合约执行的安全性和区块链系统的容错性。
[0006]根据本公开的一些实施例,提供的一种区块链中智能合约的执行方法,包括:多个控制节点中的每一个,接收服务节点发送的合约调用交易请求,合约调用交易请求包括:合约执行的预期结果;将合约调用交易请求发送至各个非控制节点,其中,非控制节点的数量小于最大容许作恶节点数;接收各个非控制节点返回的合约调用交易的结果,并验证各个非控制节点返回的合约调用交易的结果与合约执行的预期结果是否匹配;在各个非控制节点返回的合约调用交易的结果与合约执行的预期结果匹配的情况下,将合约调用交易请求广播至其他节点执行合约调用交易。
[0007]在一些实施例中,将合约调用交易请求发送至各个非控制节点包括:将合约调用交易请求和非控制节点指示标识发送至各个非控制节点,其中,非控制节点指示标识用于指示各个非控制节点执行合约调用交易。
[0008]在一些实施例中,接收各个非控制节点返回的合约调用交易的结果包括:在预设时间内接收各个非控制节点返回的合约调用交易的结果。
[0009]在一些实施例中,接收服务节点发送的合约调用交易请求包括:接收服务节点发送的合约调用交易请求、控制节点指示标识和各个控制节点的标识;根据各个控制节点的标识确定非控制节点的标识;将合约调用交易请求发送至各个非控制节点包括:根据控制节点指示标识和非控制节点的标识将合约调用交易请求发送至各个非控制节点。
[0010]在一些实施例中,该方法还包括:在各个非控制节点返回的合约调用交易的结果与合约执行的预期结果的不匹配的情况下,将合约调用交易请求丢弃。
[0011]在一些实施例中,该方法还包括:服务节点接收用户发起的交易请求;服务节点在接收到的交易请求中包括合约调用交易请求的情况下,将本节点作为一个控制节点,并随
机选取预设数量的节点作为控制节点,其中,预设数量大于或等于最大容许作恶节点数;服务节点将合约调用交易请求发送至各个控制节点。
[0012]在一些实施例中,该方法还包括:多个非控制节点中的每一个,接收控制节点发送的合约调用交易请求;根据合约调用交易请求执行合约调用交易,得到合约调用交易的结果并返回至控制节点;将合约调用交易的结果进行存储。
[0013]在一些实施例中,该方法还包括:多个非控制节点中的每一个,响应于再次接收到合约调用交易请求,查询是否存储合约调用交易请求对应的合约调用交易的结果;在已存储合约调用交易请求对应的合约调用交易的结果的情况下,将合约调用交易的结果进行同步广播。
[0014]在一些实施例中,该方法还包括:具有出块权的节点接收各个节点广播的合约调用交易的结果,对各个节点广播的合约调用交易的结果完成共识验证之后,生成区块,并将区块同步至其他节点,由其他节点验证区块后写入本地账本。
[0015]根据本公开的另一些实施例,提供的一种区块链中的节点,其中,在节点被选作控制节点的情况下,包括:接收模块,用于接收服务节点发送的合约调用交易请求,合约调用交易请求包括:合约执行的预期结果;发送模块,用于将合约调用交易请求发送至各个非控制节点,其中,非控制节点的数量小于最大容许作恶节点数;验证模块,用于接收各个非控制节点返回的合约调用交易的结果,并验证各个非控制节点返回的合约调用交易的结果与合约执行的预期结果是否匹配;广播模块,用于在各个非控制节点返回的合约调用交易的结果与合约执行的预期结果匹配的情况下,将合约调用交易请求广播至其他节点执行合约调用交易。
[0016]在一些实施例中,发送模块用于将合约调用交易请求和非控制节点指示标识发送至各个非控制节点,其中,非控制节点指示标识用于指示各个非控制节点执行合约调用交易;或者,验证模块用于在预设时间内接收各个非控制节点返回的合约调用交易的结果;或者,接收模块用于接收服务节点发送的合约调用交易请求、控制节点指示标识和各个控制节点的标识;根据各个控制节点的标识确定非控制节点的标识;发送模块用于根据控制节点指示标识和非控制节点的标识将合约调用交易请求发送至各个非控制节点;或者,广播模块还用于在各个非控制节点返回的合约调用交易的结果与合约执行的预期结果的不匹配的情况下,将合约调用交易请求丢弃。
[0017]在一些实施例中,在节点作为服务节点的情况下,还包括:服务模块,用于接收用户发起的交易请求;在接收到的交易请求中包括合约调用交易请求的情况下,将本节点作为一个控制节点,并随机选取预设数量的节点作为控制节点,其中,预设数量大于或等于最大容许作恶节点数;将合约调用交易请求发送至各个控制节点。
[0018]根据本公开的又一些实施例,提供的一种区块链系统,包括:前述任意实施例的节点,作为控制节点;以及多个非控制节点;非控制节点用于接收控制节点发送的合约调用交易请求;根据合约调用交易请求执行合约调用交易,得到合约调用交易的结果并返回至控制节点;将合约调用交易的结果进行存储。
[0019]在一些实施例中,非控制节点用于响应于再次接收到合约调用交易请求,查询是否存储合约调用交易请求对应的合约调用交易的结果;在已存储合约调用交易请求对应的合约调用交易的结果的情况下,将合约调用交易的结果进行同步广播。
[0020]在一些实施例中,在任意节点作为具有出块权的节点的情况下,用于接收各个节点广播的合约调用交易的结果,对各个节点广播的合约调用交易的结果完成共识验证之后,生成区块,并将区块同步至其他节点,由其他节点验证区块后写入本地账本。
[0021]根据本公开的再一些实施例,提供的一种电子设备,包括:处理器;以及耦接至处理器的存储器,用于存储指令,指令被处理器执行时,使处理器执行如前述任意实施例的区块链中智能合约的执行方法。
[0022]根据本公开的又一些实施例,提供的一种非瞬时性计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的区块链中智能合约的执行方法的步骤。
[0023]本公开中区块链系统中的节点被分为控制节点和非控制节点,非控制节点的数量小于最大容许作恶节点数。控制节点将合约调用交易请求发送至各个非控制节点,由非控制节点先执行合约调用交易,控制节点对非控制节点返回本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链中智能合约的执行方法,包括:多个控制节点中的每一个,接收服务节点发送的合约调用交易请求,所述合约调用交易请求包括:合约执行的预期结果;将所述合约调用交易请求发送至各个非控制节点,其中,所述非控制节点的数量小于最大容许作恶节点数;接收各个非控制节点返回的合约调用交易的结果,并验证各个非控制节点返回的合约调用交易的结果与所述合约执行的预期结果是否匹配;在各个非控制节点返回的合约调用交易的结果与所述合约执行的预期结果匹配的情况下,将所述合约调用交易请求广播至其他节点执行合约调用交易。2.根据权利要求1中所述的执行方法,其中,所述将所述合约调用交易请求发送至各个非控制节点包括:将所述合约调用交易请求和非控制节点指示标识发送至各个非控制节点,其中,所述非控制节点指示标识用于指示各个非控制节点执行合约调用交易。3.根据权利要求1中所述的执行方法,其中,所述接收各个非控制节点返回的合约调用交易的结果包括:在预设时间内接收各个非控制节点返回的合约调用交易的结果。4.根据权利要求1中所述的执行方法,其中,所述接收服务节点发送的合约调用交易请求包括:接收服务节点发送的合约调用交易请求、控制节点指示标识和各个控制节点的标识;根据各个控制节点的标识确定非控制节点的标识;所述将所述合约调用交易请求发送至各个非控制节点包括:根据所述控制节点指示标识和非控制节点的标识将所述合约调用交易请求发送至各个非控制节点。5.根据权利要求1中所述的执行方法,还包括:在各个非控制节点返回的合约调用交易的结果与所述合约执行的预期结果的不匹配的情况下,将所述合约调用交易请求丢弃。6.根据权利要求1中所述的执行方法,还包括:服务节点接收用户发起的交易请求;所述服务节点在接收到的交易请求中包括合约调用交易请求的情况下,将本节点作为一个控制节点,并随机选取预设数量的节点作为控制节点,其中,所述预设数量大于或等于最大容许作恶节点数;所述服务节点将所述合约调用交易请求发送至各个控制节点。7.根据权利要求1中所述的执行方法,还包括:多个所述非控制节点中的每一个,接收所述控制节点发送的所述合约调用交易请求;根据所述合约调用交易请求执行合约调用交易,得到合约调用交易的结果并返回至所述控制节点;将所述合约调用交易的结果进行存储。8.根据权利要求7所述的执行方法,还包括:多个所述非控制节点中的每一个,响应于再次接收到所述合约调用交易请求,查询是否存储所述合约调用交易请求对应
的合约调用交易的结果;在已存储所述合约调用交易请求对应的合约调用交易的结果的情况下,将所述合约调用交易的结果进行同步广播。9.根据权利要求8所述的执行方法,还包括:具有出块权的节点接收各个节点广播的所述合约调用交易的结果,对各个节点广播的所述合约调用交易的结果完成共识验证之后,生成区块,并将所述区块同步至其他节点,由其他节点验证区块后写入本地账本。10.一种区块链中的节点,其中,在所述节点被选作控制节点的情况下,包括:接收模块,用于接收服务节点发送的合约调用交易请求,所述合...

【专利技术属性】
技术研发人员:刘岩梁伟赵君梁燕
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1