CN111464589A - 智能合约处理方法、计算机设备及存储介质 - Google Patents
智能合约处理方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111464589A CN111464589A CN202010139948.0A CN202010139948A CN111464589A CN 111464589 A CN111464589 A CN 111464589A CN 202010139948 A CN202010139948 A CN 202010139948A CN 111464589 A CN111464589 A CN 111464589A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- contract
- node
- target
- target intelligent
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明提供一种智能合约处理方法,应用于集群管理器中,包括:获取当前账本节点组的节点资源信息;当接收到合约发布请求时,分配最优的账本节点进行目标智能合约的部署;当目标智能合约部署完成后,发送注册服务请求至智能合约管理器;启动目标智能合约并调用主节点进程实时监听目标智能合约的运行进程状态;识别目标智能合约的运行是否存在异常;当识别结果为目标智能合约的运行存在异常时,重启目标智能合约,并将运行异常信息发送至智能合约管理器。本发明还提供一种计算机设备及存储介质。通过本发明,能够调用没有运行异常的智能合约进行业务处理,提高交易处理效率。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种智能合约处理方法、计算机设备及存储介质。
背景技术
随着计算机技术的发展,区块链的应用也越来越广泛。广义来讲,区块链技术是利用区块链数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构和计算方式。
目前Fabric区块链结构中的智能合约与节点都部署在同一台机器上,受限于节点的资源,部署的智能合约的资源也是有限的,当部署的智能合约较少时,也会存在资源浪费的情况。且目前Fabric区块链结构中的智能合约都是单例部署,只有一个智能合约实例能够处理请求,当智能合约出现故障时,导致业务不能正常执行。
因而,亟需提供一种智能合约处理方法,以提升智能合约的处理性能。
发明内容
鉴于以上内容,有必要提出一种智能合约处理方法、计算机设备以及计算机可读存储介质,能够调用没有运行异常的智能合约进行业务处理,提高交易处理效率。
本发明实施例第一方面提供一种智能合约处理方法,应用于集群管理器中,所述智能合约处理方法包括:
调用主节点进程获取区块链网络中当前账本节点组的节点资源信息;
当接收到智能合约管理器发送的合约发布请求时,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署;
当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器;
当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约并调用所述主节点进程实时监听所述目标智能合约的运行进程状态;
根据所述运行进程状态识别所述目标智能合约的运行是否存在异常;
当识别结果为所述目标智能合约的运行存在异常时,重启所述目标智能合约,并将运行异常信息发送至所述智能合约管理器。
进一步地,在本发明实施例提供的上述智能合约处理方法中,所述调用主节点进程获取区块链网络中当前账本节点组的节点资源信息的步骤包括:
调用所述主节点进程检测所述区块链网络中当前账本节点组中是否部署有智能合约;
当检测结果为所述当前账本节点组中部署有智能合约时,确定部署在所述当前账本节点组上的所述智能合约的数量以及部署有所述智能合约的账本节点的节点资源信息;
根据所述节点资源信息确定所述当前账本节点组的剩余节点资源信息。
进一步地,在本发明实施例提供的上述智能合约处理方法中,所述根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署的步骤包括:
解析出所述合约发布请求中携带的预设合约信息;
根据所述预设合约信息判断所述目标智能合约是否为首次部署;
当判断结果为所述目标智能合约为非首次部署时,根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息;
选取所述当前账本节点组中节点资源信息大于所述历史资源消耗信息的目标账本节点组;
利用预设时长计算模型分别计算所述目标智能合约部署在所述目标账本节点组中不同的节点上所需的时长;
选择所需的时长最少的目标账本节点部署所述目标智能合约。
进一步地,在本发明实施例提供的上述智能合约处理方法中,所述根据所述预设合约信息判断所述目标智能合约是否为首次部署的步骤包括:
获取所述预设合约信息中的合约编码;
根据所述合约编码遍历历史合约部署列表,判断所述历史合约部署列表中是否存在与所述合约编码相同的智能合约;
当判断结果为所述历史合约部署列表中不存在与所述合约编码相同的智能合约时,确定所述目标智能合约为首次部署;
当判断结果为所述历史合约部署列表中存在与所述合约编码相同的智能合约时,确定所述目标智能合约为非首次部署。
进一步地,在本发明实施例提供的上述智能合约处理方法中,当确定所述目标智能合约为首次部署时,所述方法还包括:
随机选取所述当前账本节点组中的节点部署所述目标智能合约;
记录下部署所述目标智能合约所消耗的节点资源信息;
根据所消耗的节点资源信息更新至所述历史合约部署列表。
进一步地,在本发明实施例提供的上述智能合约处理方法中,所述根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息的步骤包括:
根据所述智能合约的合约编码获取所述目标智能合约对应的历史资源消耗信息集合;
根据所述历史资源消耗信息集合计算所述目标智能合约对应的历史平均资源消耗信息;
根据所述历史资源消耗信息集合与所述历史平均资源消耗信息,得到所述目标智能合约对应的历史资源消耗方差值;
根据所述历史资源消耗方差值得到所述目标智能合约对应的历史资源消耗信息。
进一步地,在本发明实施例提供的上述智能合约处理方法中,所述根据所述运行进程状态识别所述目标智能合约的运行是否存在异常的步骤包括:
获取所述目标智能合约占用的节点资源信息;检测所占用的节点资源信息是否超出预设资源阈值;当检测结果为所占用的节点资源信息超出所述预设资源阈值时,确定所述目标智能合约的运行存在异常;或者
获取所述目标智能合约的活跃度;检测所述活跃度阈值是否低于预设活跃度阈值;当检测结果为所述活跃度低于所述预设活跃度阈值时,确定所述目标智能合约的运行存在异常。
本发明实施例第二方面还提供一种智能合约处理方法,应用于智能合约管理器中,所述智能合约处理方法包括:
接收所述集群管理器发送的目标智能合约对应的注册服务请求;
响应所述注册服务请求记录所述目标智能合约的实例服务地址,并将注册服务成功信息返回至所述集群管理器;
当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表;
根据所述集群管理器输出的运行异常信息删除所述智能合约列表中运行存在异常的智能合约,得到目标智能合约列表;
根据预设调用规则从所述目标智能合约列表对应的实例服务地址列表中选择任一地址进行调用。
本发明实施例第三方面还提供一种计算机设备,所述计算机设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述任意一项所述智能合约处理方法。
本发明实施例第四方面还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述智能合约处理方法。
本发明实施例提供一种智能合约处理方法、计算机设备及计算机可读存储介质,应用于集群管理器中,调用主节点进程获取区块链网络中当前账本节点组的节点资源信息;当接收到智能合约管理器发送的合约发布请求时,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署;当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器;当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约并调用所述主节点进程实时监听所述目标智能合约的运行进程状态;根据所述运行进程状态识别所述目标智能合约的运行是否存在异常;当识别结果为所述目标智能合约的运行存在异常时,重启所述目标智能合约,并将运行异常信息发送至所述智能合约管理器。通过本发明实施例,根据节点资源信息分配最优的账本节点进行目标智能合约的部署,能够节约智能合约的部署时间,提高智能合约的部署效率;通过实时监听智能合约的运行状态,并在运行存在异常时及时处理,能够避免在调用智能合约进行交易处理时,由于智能合约运行异常而导致的交易无法进行的情况,提高了交易处理效率;且本发明通过集群管理器使得区块链网络中的节点可以公用一个资源,达到资源的有效利用。
附图说明
图1是本发明第一实施方式提供的智能合约处理方法的流程图。
图2是本发明第二实施方式提供的智能合约处理方法的流程图。
图3是本发明一实施方式的计算机设备的结构示意图。
图4是图3所示的计算机设备的示例性的功能模块图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
图1是本发明第一实施方式提供的智能合约处理方法的流程图,所述智能合约处理方法应用在基于Fabric的区块链业务平台的应用场景下。其中,所述基于Fabric的区块链业务平台的应用场景包括客户端及区块链网络。所述客户端用于获取用户的不同操作请求,并将该操作请求发送至所述区块链网络;所述区块链网络用于对用户的操作请求进行响应,并将用户请求的响应结果返回给所述客户端。
在本发明的至少一实施例中,所述区块链网络包括集群管理器(ClusterManager)及智能合约管理器(Chaincode Manager)。其中,所述集群管理器用于管理一组计算机资源,所述集群管理器还可用于接收部署请求,并根据部署请求实施部署。所述智能合约管理器用于管理智能合约,映射智能合约的名称和智能合约的请求地址之间的关系。
如图1所示,本发明实施例提供一种智能合约处理方法,应用于集群管理器中,所述智能合约处理方法包括以下步骤:
S11、调用主节点进程获取区块链网络中当前账本节点组的节点资源信息。
在本发明的至少一实施例中,所述账本节点组中的节点资源应用于开发者根据业务需求而部署的区块链网络中,节点资源的类型可以包括各种机器,例如物理主机、服务器/集群等物理机,或者包括公有云/私有云等虚拟机,又或者包括以上两种。所述账本节点组为包含多个节点资源的组合,所述账本节点组中的节点资源数量为用户预先设置的,例如,可以为三台分别为192.168.0.1-192.168.0.3计算机,在此不做限定。
在本发明的至少一实施例中,启动所述集群管理器,通过所述集群管理器调用主节点(cluster master)进程获取所述区块链网络中当前账本节点组的节点资源信息,其中,所述节点资源信息包括部署在节点上的智能合约所占用的节点资源信息以及所述账本节点组的剩余节点资源信息。
具体地,所述调用主节点进程获取区块链网络中当前账本节点组的节点资源信息的步骤包括:调用所述主节点进程检测所述区块链网络中当前账本节点组中是否部署有智能合约;当检测结果为所述当前账本节点组中部署有智能合约时,确定部署在所述当前账本节点组上的所述智能合约的数量以及部署有所述智能合约的账本节点的节点资源信息;根据所述节点资源信息确定所述当前账本节点组的剩余节点资源信息。
在本发明的至少一实施例中,所述账本节点组可以通过节点列表的形式进行存储,在所述节点列表中,对部署有智能合约的账本节点添加标识信息,所述标识信息中携带有部署所述智能合约所占用的节点资源信息以及当前节点的剩余节点资源信息。当所述节点资源信息改变时,更新所述节点列表中的标识信息即可。
在所述调用主节点进程获取区块链网络中当前账本节点组的节点资源信息的步骤之前,所述方法还包括:启动账本节点,并将所述账本节点与主节点之间建立通讯连接。可以理解的是,通过将所述账本节点与主节点之间建立通讯连接,使得所述账本节点与主节点能够进行信息传递。
S12、当接收到智能合约管理器发送的合约发布请求时,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署。
在本发明的至少一实施例中,当用户通过所述客户端向账本节点发送合约发布请求时,所述账本节点将所述合约发布请求发送至智能合约管理器。所述智能合约管理器在接收到所述合约发布请求时,将所述合约发布请求输出至所述集群管理器中。当所述集群管理器接收到所述智能合约管理器发送的合约发布请求时,根据当前账本节点组的节点资源信息分配最优的账本节点进行目标智能合约的部署。其中,所述合约发布请求为用户发布的,用于请求部署目标智能合约的指令。所述合约发布请求对应请求发布的合约的数量可以为1个,也可以为多个,在此不作限制。
具体地,所述根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署的步骤包括:解析出所述合约发布请求中携带的预设合约信息;根据所述预设合约信息判断所述目标智能合约是否为首次部署;当判断结果为所述目标智能合约为非首次部署时,根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息;选取所述当前账本节点组中节点资源信息大于所述历史资源消耗信息的目标账本节点组;利用预设时长计算模型分别计算所述目标智能合约部署在所述目标账本节点组中不同的节点上所需的时长;选取所需的时长最少的目标账本节点部署所述目标智能合约。其中,所述预设合约信息包括:合约编码(也称为合约ID)、合约的程序类型(智能合约为部署在区块链网络中的根据条件而触发执行的程序,例如,所述合约的程序类型可以为Java)、合约的程序字节码以及合约部署的实例个数(也即能够处理交易的程序个数)。其中,所述合约部署的实例个数为根据业务需求而确定的,所述合约部署的实例个数可以为1个,也可以为多个,优选地,所述合约部署的实例个数为多个。
在一实施例中,所述根据所述预设合约信息判断所述目标智能合约是否为首次部署的步骤包括:获取所述预设合约信息中的合约编码;根据所述合约编码遍历历史合约部署列表,判断所述历史合约部署列表中是否存在与所述合约编码相同的智能合约;当判断结果为所述历史合约部署列表中不存在对应所述合约编码的智能合约时,确定所述目标智能合约为首次部署;当判断结果为所述历史合约部署列表中存在与所述合约编码相同的智能合约时,确定所述目标智能合约为非首次部署。其中,所述历史合约部署列表中存储有历史部署过的智能合约信息,所述智能合约信息具体包括:合约编码、合约对应的历史资源消耗信息等信息。
当确定所述目标智能合约为首次部署时,所述方法还包括:随机选取所述当前账本节点组中的节点部署所述目标智能合约;记录下部署所述目标智能合约所消耗的节点资源信息;根据所消耗的节点资源信息更新所述历史合约部署列表。当确定所述目标智能合约为非首次部署时,根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息,具体地,所述根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息的步骤包括:根据所述智能合约的合约编码获取所述目标智能合约对应的历史资源消耗信息集合;根据所述历史资源消耗信息集合计算所述目标智能合约对应的历史平均资源消耗信息;根据所述历史资源消耗信息集合与所述历史平均资源消耗信息得到所述目标智能合约对应的历史资源消耗方差值;根据所述历史资源消耗方差值得到所述目标智能合约对应的历史资源消耗信息。
在一实施例中,确定账本节点组的剩余节点资源信息,选取账本节点组中节点资源信息大于所述历史资源消耗信息的目标节点组,所述目标节点组中的目标节点数量可以为一个,也可以为多个。所述目标节点组的节点上可能存在正在进行部署的智能合约,也可能并未部署过智能合约。其中,对于所述节点上存在正在进行部署的智能合约的情况,所述目标智能合约需要排队等待部署,所述目标智能合约部署所需的时长较长,因而,需要所述预设时长计算模型计算所述目标智能合约部署在不同节点上所需的时长。所述预设时长计算模型为用户预先设置的,用于计算合约在不同节点上部署所需的时长。
可以理解的是,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署,能够节约智能合约部署的时间,提高了智能合约部署的效率。
S13、当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器。
在本发明的至少一实施例中,当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器,通过所述智能合约管理器响应于所述注册服务请求,并记录所述目标智能合约的实例服务地址。可以理解的是,当所述智能合约管理器对智能合约的实例服务地址进行记录之后,即可以调用相应的智能合约处理用户输出的交易请求。
S14、当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约并调用所述主节点进程实时监听目标智能合约的运行进程状态。
在本发明的至少一实施例中,当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约,并调用所述主节点进程实时监听目标智能合约的运行进程状态。所述运行进程状态可以包括合约所占的节点资源情况、合约的活跃度等信息。其中,所述合约所占的节点资源情况可以包括:存储器使用状况、CPU使用状况、网卡带宽使用状态以及数字存储设备的使用状况等。所述合约的活跃度可以通过多种形式表征,例如,一定时间内合约的使用频率等。
S15、根据所述运行进程状态识别所述目标智能合约的运行是否存在异常,当识别结果为所述目标智能合约的运行存在异常时,执行步骤S16。
在本发明的至少一实施例中,根据所述运行进程状态识别所述目标智能合约的运行是否存在异常,通过实时监听所述目标智能合约运行是否存在异常,并在所述目标智能合约运行存在异常时进行及时处理,能够避免在调用智能合约进行交易处理时,由于智能合约运行异常而导致的交易无法进行的情况,提高了交易处理效率。
具体地,所述根据所述运行进程状态识别所述目标智能合约的运行是否存在异常的步骤包括:获取所述目标智能合约占用的节点资源信息;检测所占用的节点资源信息是否超出预设资源阈值;当检测结果为所占用的节点资源信息超出所述预设资源阈值时,确定所述目标智能合约的运行存在异常;或者,获取所述目标智能合约的活跃度;检测所述活跃度是否低于预设活跃度阈值;当检测结果为所述活跃度低于所述预设活跃度阈值时,确定所述目标智能合约的运行存在异常。其中,所述预设资源阈值与所述预设活跃度阈值均为用户预先设置的,在此不作限制。
S16、重启所述目标智能合约,并将运行异常信息发送至所述智能合约管理器。
在本发明的至少一实施例中,当识别结果为所述目标智能合约运行进程状态存在异常时,重启所述目标智能合约,保证所述目标智能合约一直处于活动状态,同时将运行异常信息发送至所述智能合约管理器中。所述运行异常信息可以包括:运行异常的目标智能合约的合约编码、运行异常的原因、运行异常的修复方案等信息。
可以理解的是,由于所述智能合约与节点之间并不是单例部署关系,当所述智能合约管理器调用所述智能合约时,能够主动调用没有运行异常的智能合约进行业务处理,节约了交易处理时间,提高了交易的处理效率。
本发明实施例提供一种智能合约处理方法,应用于集群管理器中,根据节点资源信息分配最优的账本节点进行目标智能合约的部署,能够节约智能合约的部署时间,提高智能合约的部署效率;通过实时监听智能合约的运行状态,并在运行存在异常时及时处理,能够避免在调用智能合约进行交易处理时,由于智能合约运行异常而导致的交易无法进行的情况,提高了交易处理效率;且本发明通过集群管理器使得区块链网络中的节点可以公用一个资源,达到资源的有效利用。
如图2所示,本发明实施例提供一种智能合约处理方法,应用于智能合约管理器中,所述智能合约处理方法包括以下步骤:
S21、当接收到客户端输出的合约发布请求时,将所述合约发布请求发送至集群管理器。
在本发明的至少一实施例中,当用户通过所述客户端向账本节点发送合约发布请求时,所述账本节点将所述合约发布请求发送至智能合约管理器。所述智能合约管理器在接收到所述合约发布请求时,将所述合约发布请求输出至所述集群管理器中。
S22、接收所述集群管理器发送的目标智能合约对应的注册服务请求。
在本发明的至少一实施例中,当所述目标智能合约部署完成后,所述集群管理器会向所述智能合约管理器发送所述目标智能合约对应的注册服务请求。
S23、响应所述注册服务请求记录所述目标智能合约的实例服务地址,并将注册服务成功信息返回至所述集群管理器。
在本发明的至少一实施例中,响应所述注册服务请求记录所述目标智能合约的实例服务地址,当所述实例服务地址记录完成后,向所述集群管理器发送注册服务成功信息。
S24、当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表。
本发明实施例提及的交易请求,包括对智能合约的调用,以实现对账本中的目标账户的相关数据的操作,包括增、查、改的操作修改账户中的键值对形式的数据,或者在账本中增加新的账户。
在本发明的至少一实施例中,当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表。其中,所述合约信息中包含合约编码,根据所述合约编码提取出对应的智能合约列表。可以理解的是,对应于一合约编码,在所述账本节点组中可能包含多个智能合约,将多个智能合约通过智能合约列表的形式呈现。
S25、根据所述集群管理器输出的运行异常信息删除所述智能合约列表中运行存在异常的智能合约,得到目标智能合约列表。
对于运行状态存在异常的智能合约,所述集群管理器会调用主节点进程重启该智能合约以进行修复,保证该智能合约一直处于活动状态。并且,所述主节点进程会将运行异常信息发送至所述智能合约管理器。其中,所述运行异常信息可以包括:运行异常的目标智能合约的合约编码、运行异常的原因、运行异常的修复方案等信息。所述智能合约管理器根据所述运行异常信息在所述智能合约列表中添加标识,用于标识该智能合约运行存在异常。在本发明的至少一实施例中,在所述智能合约列表中删除标识为异常的智能合约,能够得到目标智能合约列表。
S26、根据预设调用规则从所述目标智能合约列表对应的实例服务地址列表中选择任一地址进行调用。
在本发明的至少一实施例中,获取所述目标智能合约列表对应的实例服务地址列表,并根据预设调用规则从所述实例服务地址列表中选择任一地址进行合约调用。其中,所述预设调用规则为用户预先设置的,具体地,所述预设调用规则可以包括顺序调用规则、Hash取余规则等,在此不做限制。
本发明实施例提供一种智能合约处理方法,应用于智能合约管理器中,当接收到客户端输出的合约发布请求时,将所述合约发布请求发送至集群管理器;接收所述集群管理器发送的目标智能合约对应的注册服务请求;响应所述注册服务请求记录所述目标智能合约的实例服务地址,并将注册服务成功信息返回至所述集群管理器;当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表;根据所述集群管理器输出的运行异常信息删除所述智能合约列表中运行存在异常的智能合约,得到目标智能合约列表;根据预设调用规则从所述目标智能合约列表对应的实例服务地址列表中选择任一地址进行调用利用本发明实施例,智能合约与节点之间不是单例部署关系,智能合约管理器能够主动调用没有运行异常的智能合约进行业务处理,节约了交易时间,提高了交易处理效率。
以上是对本发明实施例所提供的方法进行的详细描述。根据不同的需求,所示流程图中方块的执行顺序可以改变,某些方块可以省略。下面对本发明实施例所提供的计算机设备1进行描述。
图3是本发明一实施方式的计算机设备的结构示意图,如图3所示,计算机设备1包括存储器10,存储器10中存储有所述智能合约处理装置100。所述计算机设备1可以是计算机、平板电脑、个人数字助理等具有数据处理、分析、程序执行及显示等功能的电子设备。当所述智能合约处理装置100应用于集群管理器中,所述智能合约处理装置100可以调用主节点进程获取区块链网络中当前账本节点组的节点资源信息;当接收到智能合约管理器发送的合约发布请求时,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署;当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器;当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约并调用所述主节点进程实时监听所述目标智能合约的运行进程状态;根据所述运行进程状态识别所述目标智能合约的运行是否存在异常;当识别结果为所述目标智能合约的运行存在异常时,重启所述目标智能合约,并将运行异常信息发送至所述智能合约管理器。
所述智能合约处理装置100还应用于智能合约管理器中,所述智能合约处理装置100可以当接收到客户端输出的合约发布请求时,将所述合约发布请求发送至集群管理器;接收所述集群管理器发送的目标智能合约对应的注册服务请求;响应所述注册服务请求记录所述目标智能合约的实例服务地址,并将注册服务成功信息返回至所述集群管理器;当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表;根据所述集群管理器输出的运行异常信息删除所述智能合约列表中运行存在异常的智能合约,得到目标智能合约列表;根据预设调用规则从所述目标智能合约列表对应的实例服务地址列表中选择任一地址进行调用通过本发明实施例,根据节点资源信息分配最优的账本节点进行目标智能合约的部署,能够节约智能合约的部署时间,提高智能合约的部署效率;通过实时监听智能合约的运行状态,并在运行存在异常时及时处理,能够避免在调用智能合约进行交易处理时,由于智能合约运行异常而导致的交易无法进行的情况,提高了交易处理效率;智能合约与节点之间不是单例部署关系,智能合约管理器能够主动调用没有运行异常的智能合约进行业务处理,节约了交易时间,提高了交易处理效率;通过集群管理器使得区块链网络中的节点可以公用一个资源,达到资源的有效利用。
本实施方式中,计算机设备1还可以包括显示屏20及处理器30。存储器10、显示屏20可以分别与处理器30电连接。
所述的存储器10可以是不同类型存储设备,用于存储各类数据。例如,可以是计算机设备1的存储器、内存,还可以是可外接于该计算机设备1的存储卡,如闪存、SM卡(SmartMedia Card,智能媒体卡)、SD卡(Secure Digital Card,安全数字卡)等。此外,存储器10可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。存储器10用于存储各类数据,例如,所述计算机设备1中安装的各类应用程序(Applications)、应用上述智能合约处理方法而设置、获取的数据等信息。
显示屏20安装于计算机设备1,用于显示信息。
处理器30用于执行所述智能合约处理方法以及所述计算机设备1内安装的各类软件,例如操作系统及应用显示软件等。处理器30包含但不限于处理器(Central ProcessingUnit,CPU)、微控制单元(Micro Controller Unit,MCU)等用于解释计算机指令以及处理计算机软件中的数据的装置。
所述的智能合约处理装置100可以包括一个或多个的模块,所述一个或多个模块被存储在计算机设备1的存储器10中并被配置成由一个或多个处理器(本实施方式为一个处理器30)执行,以完成本发明实施例。当所述智能合约处理装置100应用于集群管理器时,例如,参阅图4所示,所述智能合约处理装置100可以包括资源获取模块101、节点分配模块102、请求发送模块103、进程监听模块104、异常检测模块105以及合约重启模块106。本发明实施例所称的模块可以是完成一特定功能的程序段,比程序更适合于描述软件在处理器30中的执行过程。
可以理解的是,对应上述智能合约处理方法中的各实施方式,智能合约处理装置100可以包括图4中所示的各功能模块中的一部分或全部,各模块的功能将在以下具体介绍。需要说明的是,以上智能合约处理方法的各实施方式中相同的名词相关名词及其具体的解释说明也可以适用于以下对各模块的功能介绍。为节省篇幅及避免重复起见,在此就不再赘述。
资源获取模块101可以用于调用主节点进程获取区块链网络中当前账本节点组的节点资源信息。
节点分配模块102可以用于当接收到智能合约管理器发送的合约发布请求时,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署。
请求发送模块103可以用于当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器。
进程监听模块104可以用于当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约并调用所述主节点进程实时监听所述目标智能合约的运行进程状态。
异常检测模块105可以用于根据所述运行进程状态识别所述目标智能合约的运行是否存在异常。
合约重启模块106可以用于当识别结果为所述目标智能合约的运行存在异常时,重启所述目标智能合约,并将运行异常信息发送至所述智能合约管理器。
当所述智能合约处理装置100应用于智能合约管理器时,例如图4所示,所述智能合约装置100还包括:合约发送模块107、请求接收模块108、地址记录模块109、列表提取模块110、列表确认模块111以及地址调用模块112。
合约发送模块107可以用于当接收到客户端输出的合约发布请求时,将所述合约发布请求发送至集群管理器。
请求接收模块108可以用于接收所述集群管理器发送的目标智能合约对应的注册服务请求。
地址记录模块109可以用于响应所述注册服务请求记录所述目标智能合约的实例服务地址,并将注册服务成功信息返回至所述集群管理器。
列表提取模块110可以用于当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表。
列表确认模块111可以用于根据所述集群管理器输出的运行异常信息删除所述智能合约列表中运行存在异常的智能合约,得到目标智能合约列表。
地址调用模块112可以用于根据预设调用规则从所述目标智能合约列表对应的实例服务地址列表中选择任一地址进行调用。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器30执行时实现上述任一实施方式中的智能合约处理方法的步骤。
所述智能合约处理装置100/计算机设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施方式方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器30执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器30是所述智能合约处理装置100的控制中心,利用各种接口和线路连接整个智能合约处理装置100的各个部分。
所述存储器10用于存储所述计算机程序和/或模块,所述处理器30通过运行或执行存储在所述存储器10内的计算机程序和/或模块,以及调用存储在存储器10内的数据,实现所述智能合约处理装置100的各种功能。所述存储器10可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备1的使用所创建的数据等。
在本发明所提供的几个具体实施方式中,应该理解到,所揭露的计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的系统实施方式仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
对于本领域技术人员而言,显然本发明实施例不限于上述示范性实施例的细节,而且在不背离本发明实施例的精神或基本特征的情况下,能够以其他的具体形式实现本发明实施例。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明实施例的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明实施例内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。系统、装置或计算机设备权利要求中陈述的多个单元、模块或装置也可以由同一个单元、模块或装置通过软件或者硬件来实现。
以上实施方式仅用以说明本发明实施例的技术方案而非限制,尽管参照以上较佳实施方式对本发明实施例进行了详细说明,本领域的普通技术人员应当理解,可以对本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。
Claims (10)
1.一种智能合约处理方法,应用于集群管理器中,其特征在于,所述智能合约处理方法包括:
调用主节点进程获取区块链网络中当前账本节点组的节点资源信息;
当接收到智能合约管理器发送的合约发布请求时,根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署;
当所述目标智能合约部署完成后,发送所述目标智能合约对应的注册服务请求至所述智能合约管理器;
当接收到所述智能合约管理器返回的注册服务成功信息时,启动所述目标智能合约并调用所述主节点进程实时监听所述目标智能合约的运行进程状态;
根据所述运行进程状态识别所述目标智能合约的运行是否存在异常;
当识别结果为所述目标智能合约的运行存在异常时,重启所述目标智能合约,并将运行异常信息发送至所述智能合约管理器。
2.根据权利要求1所述的智能合约处理方法,其特征在于,所述调用主节点进程获取区块链网络中当前账本节点组的节点资源信息的步骤包括:
调用所述主节点进程检测所述区块链网络中当前账本节点组中是否部署有智能合约;
当检测结果为所述当前账本节点组中部署有智能合约时,确定部署在所述当前账本节点组上的所述智能合约的数量以及部署有所述智能合约的账本节点的节点资源信息;
根据所述节点资源信息确定所述当前账本节点组的剩余节点资源信息。
3.根据权利要求1所述的智能合约处理方法,其特征在于,所述根据所述节点资源信息分配最优的账本节点进行目标智能合约的部署的步骤包括:
解析出所述合约发布请求中携带的预设合约信息;
根据所述预设合约信息判断所述目标智能合约是否为首次部署;
当判断结果为所述目标智能合约为非首次部署时,根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息;
选取所述当前账本节点组中节点资源信息大于所述历史资源消耗信息的目标账本节点组;
利用预设时长计算模型分别计算所述目标智能合约部署在所述目标账本节点组中不同的节点上所需的时长;
选择所需的时长最少的目标账本节点部署所述目标智能合约。
4.根据权利要求3所述的智能合约处理方法,其特征在于,所述根据所述预设合约信息判断所述目标智能合约是否为首次部署的步骤包括:
获取所述预设合约信息中的合约编码;
根据所述合约编码遍历历史合约部署列表,判断所述历史合约部署列表中是否存在与所述合约编码相同的智能合约;
当判断结果为所述历史合约部署列表中不存在与所述合约编码相同的智能合约时,确定所述目标智能合约为首次部署;
当判断结果为所述历史合约部署列表中存在与所述合约编码相同的智能合约时,确定所述目标智能合约为非首次部署。
5.根据权利要求4所述的智能合约处理方法,其特征在于,当确定所述目标智能合约为首次部署时,所述方法还包括:
随机选取所述当前账本节点组中的节点部署所述目标智能合约;
记录下部署所述目标智能合约所消耗的节点资源信息;
根据所消耗的节点资源信息更新所述历史合约部署列表。
6.根据权利要求3所述的智能合约处理方法,其特征在于,所述根据所述预设合约信息调用所述目标智能合约对应的历史资源消耗信息的步骤包括:
根据所述智能合约的合约编码获取所述目标智能合约对应的历史资源消耗信息集合;
根据所述历史资源消耗信息集合计算所述目标智能合约对应的历史平均资源消耗信息;
根据所述历史资源消耗信息集合与所述历史平均资源消耗信息得到所述目标智能合约对应的历史资源消耗方差值;
根据所述历史资源消耗方差值得到所述目标智能合约对应的历史资源消耗信息。
7.根据权利要求1所述的智能合约处理方法,其特征在于,所述根据所述运行进程状态识别所述目标智能合约的运行是否存在异常的步骤包括:
获取所述目标智能合约占用的节点资源信息;检测所占用的节点资源信息是否超出预设资源阈值;当检测结果为所占用的节点资源信息超出所述预设资源阈值时,确定所述目标智能合约的运行存在异常;或者
获取所述目标智能合约的活跃度;检测所述活跃度阈值是否低于预设活跃度阈值;当检测结果为所述活跃度低于所述预设活跃度阈值时,确定所述目标智能合约的运行存在异常。
8.一种智能合约处理方法,应用于智能合约管理器中,其特征在于,所述智能合约处理方法包括:
当接收到客户端输出的合约发布请求时,将所述合约发布请求发送至集群管理器;
接收所述集群管理器发送的目标智能合约对应的注册服务请求;
响应所述注册服务请求记录所述目标智能合约的实例服务地址,并将注册服务成功信息返回至所述集群管理器;
当接收到客户端输出的交易请求时,获取所述交易请求携带的合约信息,并根据所述合约信息提取出对应的智能合约列表;
根据所述集群管理器输出的运行异常信息删除所述智能合约列表中运行存在异常的智能合约,得到目标智能合约列表;
根据预设调用规则从所述目标智能合约列表对应的实例服务地址列表中选择任一地址进行调用。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至7中任意一项所述智能合约处理方法,或者实现如权利要求8中所述智能合约处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述智能合约处理方法,或者实现如权利要求8中所述智能合约处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010139948.0A CN111464589A (zh) | 2020-03-03 | 2020-03-03 | 智能合约处理方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010139948.0A CN111464589A (zh) | 2020-03-03 | 2020-03-03 | 智能合约处理方法、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111464589A true CN111464589A (zh) | 2020-07-28 |
Family
ID=71680199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010139948.0A Pending CN111464589A (zh) | 2020-03-03 | 2020-03-03 | 智能合约处理方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111464589A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632573A (zh) * | 2020-12-15 | 2021-04-09 | 东软集团股份有限公司 | 智能合约执行方法、装置、系统、存储介质及电子设备 |
CN113360883A (zh) * | 2021-06-10 | 2021-09-07 | 网易(杭州)网络有限公司 | 一种智能合约的处理方法、装置、计算机设备及存储介质 |
CN115174129A (zh) * | 2022-02-22 | 2022-10-11 | 中国工商银行股份有限公司 | 异常节点检测方法、装置、计算机设备和存储介质 |
CN117033146A (zh) * | 2023-10-10 | 2023-11-10 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
-
2020
- 2020-03-03 CN CN202010139948.0A patent/CN111464589A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632573A (zh) * | 2020-12-15 | 2021-04-09 | 东软集团股份有限公司 | 智能合约执行方法、装置、系统、存储介质及电子设备 |
CN113360883A (zh) * | 2021-06-10 | 2021-09-07 | 网易(杭州)网络有限公司 | 一种智能合约的处理方法、装置、计算机设备及存储介质 |
CN115174129A (zh) * | 2022-02-22 | 2022-10-11 | 中国工商银行股份有限公司 | 异常节点检测方法、装置、计算机设备和存储介质 |
CN117033146A (zh) * | 2023-10-10 | 2023-11-10 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
CN117033146B (zh) * | 2023-10-10 | 2023-12-08 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111464589A (zh) | 智能合约处理方法、计算机设备及存储介质 | |
WO2020177533A1 (zh) | 电子票据标识分配方法、电子票据生成方法、装置及系统 | |
CN106708622B (zh) | 集群资源处理方法和系统、资源处理集群 | |
CN110941481A (zh) | 资源调度方法、装置及系统 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
CN113064744A (zh) | 任务处理方法、装置、计算机可读介质及电子设备 | |
WO2020224100A1 (zh) | 区块链配置文件的处理装置、系统、方法及存储介质 | |
CN111694658A (zh) | Cpu资源分配方法、装置、电子设备和存储介质 | |
US20200272526A1 (en) | Methods and systems for automated scaling of computing clusters | |
CN112491980A (zh) | 一种云主机服务管理方法、系统、终端及存储介质 | |
CN112269628A (zh) | 资源调度系统及方法 | |
US10884818B2 (en) | Increasing processing capacity of virtual machines | |
EP4006725A1 (en) | Virtual machine migration processing and strategy generation method, apparatus and device, and storage medium | |
CN114338684A (zh) | 一种能源管理系统及方法 | |
CN113946491A (zh) | 微服务数据处理方法、装置、计算机设备及存储介质 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN111277626A (zh) | 服务器升级方法、装置、电子设备及介质 | |
CN111198756A (zh) | 一种kubernetes集群的应用调度方法及装置 | |
CN106375372B (zh) | 一种大数据资源分配方法和装置 | |
CN112005221A (zh) | 经由跨多个网络与对等设备的通信的自动修复 | |
CN114726909A (zh) | 云服务迁移信息处理方法、装置、设备、介质及产品 | |
CN114189439A (zh) | 一种自动扩容的方法及装置 | |
CN115686813A (zh) | 一种资源调度方法、装置、电子设备和存储介质 | |
CN113760447A (zh) | 服务管理方法、装置、设备、存储介质及程序产品 | |
CN111488248A (zh) | 一种托管私有云系统的控制方法、装置、设备及存储介质 |
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 |