CN110392052A - 一种区块链智能合约处理系统及方法 - Google Patents
一种区块链智能合约处理系统及方法 Download PDFInfo
- Publication number
- CN110392052A CN110392052A CN201910659374.7A CN201910659374A CN110392052A CN 110392052 A CN110392052 A CN 110392052A CN 201910659374 A CN201910659374 A CN 201910659374A CN 110392052 A CN110392052 A CN 110392052A
- Authority
- CN
- China
- Prior art keywords
- contract
- container
- block chain
- node
- computing resource
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
-
- 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/104—Peer-to-peer [P2P] networks
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- General Health & Medical Sciences (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Cardiology (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种区块链智能合约处理系统及方法,包括:区块链网络中的至少一个区块链节点及与区块链节点连接的至少一容器节点;容器节点包括多个容器,每一容器中设置有用于执行对应的智能合约的虚拟机;区块链节点将接收到的交易请求报文发送给区块链网络中的其他区块链节点进行共识,并根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点;容器节点用于根据合约报文对应的业务智能合约类型确定内部对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。本申请综合了以虚拟机执行智能合约和以容器执行智能合约两者的优点,提供了安全的执行环境。
Description
技术领域
本申请属于区块链技术处理领域,具体地讲,涉及一种基于云计算的区块链智能合约处理系统和方法。
背景技术
区块链是一种分布式账本技术,结合了共识算法、密码学、分布式存储等不同领域的计算机技术,具有去中心化、不可篡改、可溯源等特性。其中智能合约技术的使用,使区块链具备图灵完备的特性,以执行各种复杂的业务逻辑。目前,主要有两种使用方式执行智能合约:虚拟机方式和容器方式。
图1为现有技术中一种以虚拟机处理合约的区块链系统的架构图,著名的公有链以太坊(Ethereum)是典型的以虚拟机的方式执行智能合约的区块链。以太坊使用EVM(Ethereum Virtual Machine,以太坊虚拟机)作为智能合约的执行环境,EVM中使用Gas消耗品机制对合约的执行进行一定程度的限制,即智能合约的执行需要消耗一定量的Gas,当用户的Gas消耗完时,合约会停止执行并回滚事务,这样可以有效防止恶意合约进行死循环等DOS(拒绝服务)攻击。然而,EVM的执行是基于单个以太坊节点进程的基础上进行的,随着在区块链上部署的智能合约程序增多,为该节点的性能带来了压力,限制了智能合约的横向拓展能力。
图2为现有技术中一种以容器处理合约的区块链系统的架构图,著名的联盟链Hyperledger Fabric是典型的以容器方式执行智能合约的区块链,使用docker容器技术,作为智能合约的执行环境。智能合约程序在docker内是完全自由的,可以执行任何图灵完备的操作,包括死循环,增加了底层区块链平台遭受恶意合约攻击的风险。但是,基于docker执行的智约合约,是独立于Hyperledger Fabric节点主进程之外的,与底层节点通过网络接口进行联动,这种设计非常方便部署新的合约程序,具有较强的横向拓展能力。
综上所述,以虚拟机执行智能合约和以容器执行智能合约,有各自的优点。现在需要一种更好的智能合约执行方式,可以同时达到两者的优势,在保证智能合约横向拓展能力的前提下,为智能合约的执行提供安全的执行环境。
发明内容
本申请提供了一种区块链智能合约处理系统及方法,以至少解决现有技术中智能合约的横向拓展能力差和易遭受恶意合约攻击的问题。
根据本申请的一个方面,提供了一种区块链智能合约处理系统,包括:区块链网络中的至少一个区块链节点及与区块链节点连接的至少一容器节点;容器节点包括多个容器,每一容器中设置有用于执行对应的智能合约的虚拟机;
区块链节点用于将接收到的交易请求报文发送给区块链网络中的其他区块链节点进行共识,并根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点;其中,业务智能合约类型包括:创建合约及执行合约;
容器节点用于根据合约报文对应的业务智能合约类型确定内部对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
在一实施例中,容器节点还包括:
一心跳检测模块,用根据时间间隔检测所在容器节点所属的区块链节点是否存活。
基于上述取款连智能合约处理系统,本申请提供了一种可以应用于该系统的智能合约处理方法,包括:
区块链节点将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识;
区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,该智能合约处理方法还包括:
区块链节点从交易请求报文中读取交易发送者账户标识和所需计算资源,并根据交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果计算资源上限大于当前账户剩余计算资源,则拒绝执行该交易。
在一实施例中,该智能合约处理方法还包括:
区块链节点接收从容器节点发送来的执行结果,执行结果包含合约执行标志、合约执行返回值和消耗的计算资源;
区块链节点判断执行结果,如果执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
在一实施例中,该智能合约处理方法还包括:
区块链节点响应容器节点每隔一定的时间间隔发起的心跳检测请求。
根据本申请的另一个方面,提供了一种对应上述方法的智能合约处理装置,包括:
共识单元,用于将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识;
合约报文发送单元,用于根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,该装置还包括:
剩余资源计算单元,用于从交易请求报文中读取交易发送者账户标识和所需计算资源,并根据交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果计算资源上限大于当前账户剩余计算资源,则拒绝执行该交易。
在一实施例中,该装置还包括:
执行结果接收单元,用于接收从容器节点发送来的执行结果,执行结果包含合约执行标志、合约执行返回值和消耗的计算资源;
执行结果判断单元,用于判断执行结果,如果执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
在一实施例中,该装置还包括:
心跳响应单元,用于响应容器节点每隔一定的时间间隔发起的心跳检测请求。
根据本申请的另一个方面,还提供了另一种智能合约处理方法,包括:
容器节点根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;合约报文是由容器节点所属的区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成得到;
容器节点将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,容器节点根据合约报文对应的业务智能合约类型确定对应的容器,包括:
如果业务智能合约类型为创建合约,容器节点创建一个目标容器,获得该目标容器唯一标识,并建立容器唯一标识与目标合约唯一标识的对应关系;
如果业务智能合约类型为执行合约,容器节点根据目标合约唯一标识确定目标容器。
在一实施例中,容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理,还包括:
容器节点根据合约字节码数组执行具体的合约业务逻辑并配置消耗的计算资源;如果消耗的计算资源超过计算资源上限则停止执行,将合约执行标志设置为失败,否则,执行智能合约并将合约执行标志设置为成功。
在一实施例中,该智能合约处理方法还包括:
容器节点将合约执行标志、合约执行返回值和消耗的计算资源封装成执行结果发送给区块链节点,以使区块链节点判断执行结果。
在一实施例中,该智能合约处理方法还包括:
容器节点每隔一定的时间间隔对区块链节点发起心跳检测请求。
根据本申请的另一个方面,提出了对应该方法的另一种智能合约处理装置,包括:
容器确定单元,用于根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;合约报文是由容器节点所属的区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成得到;
智能合约处理单元,用于将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,容器确定单元,包括:
容器创建模块,用于当业务智能合约类型为创建合约时,创建一个目标容器,获得该目标容器唯一标识,并建立容器唯一标识与目标合约唯一标识的对应关系;
容器关联模块,用于当业务智能合约类型为执行合约时,根据目标合约唯一标识确定目标容器。
在一实施例中,智能合约处理单元,还包括:
计算资源配置模块,用于根据合约字节码数组执行具体的合约业务逻辑并配置消耗的计算资源;如果消耗的计算资源超过计算资源上限则停止执行,将合约执行标志设置为失败,否则,执行智能合约并将合约执行标志设置为成功。
在一实施例中,该装置还包括:
执行结果发送单元,用于将合约执行标志、合约执行返回值和消耗的计算资源封装成执行结果发送给区块链节点,以使区块链节点判断执行结果。
在一实施例中,该装置还包括:
心跳请求单元,用于每隔一定的时间间隔对区块链节点发起心跳检测请求。
本申请提供了一种基于云计算的区块链智能合约处理系统和方法,一方面通过虚拟机技术,统计合约执行时使用的计算资源,并进行一定程度的资源限制,保证合约逻辑在陷入非法死循环时可以安全退出,不会过分占用系统资源,为智能合约的执行提供了安全的执行环境。另一方面,通过容器拓展技术,把各个智能合约的执行逻辑,分散到区块链节点主进程之外执行,分担了区块链节点的运行压力,还通过对容器节点的运行压力情况进行监测,在当前容器节点运行压力达到上限时,可以动态增加容器节点,增强了区块链节点对智能合约执行的横向拓展能力。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种以虚拟机处理合约的区块链系统的架构图。
图2为现有技术中一种以容器处理合约的区块链系统的架构图。
图3为本申请中一种区块链智能合约处理整体系统的架构图。
图4为本申请中一种区块链智能合约处理整体系统的网络结构框图。
图5为本申请中一种容器节点的结构框图。
图6为本申请中一种区块链节点的结构框图。
图7为本申请中一种虚拟机执行模块的结构框图。
图8为本申请中容器执行模块的结构框图。
图9为本申请中虚拟机管理模块23的结构框图。
图10为本申请中容器管理模块24的结构框图。
图11为本申请中第一种智能合约处理方法的流程图。
图12为本申请中第一种智能合约处理装置的结构框图。
图13A为本申请中第二种智能合约处理方法的流程图。
图13B为本申请中容器节点根据合约报文对应的业务智能合约类型确定对应的容器的方法流程图。
图14A为本申请中第二种智能合约处理装置的流程图。
图14B为本申请中容器确定单元的结构框图。
图15为本申请中一种区块链智能合约计算资源限制方法的流程图。
图16为本申请中一种执行智能合约中的存取数据方法的流程图。
图17为本申请中一种监听容器节点运行压力情况的方法的流程图。
图18为本申请中一种注册容器节点的方法的流程图。
图19为本申请中一种自动注销容器节点的方法的流程图。
图20为本申请中一种恢复区块链节点和容器节点的方法的流程图。
图21为本申请中一种区块链智能合约处理系统结构框图。
图22为本申请中区块链智能合约处理方法的一种电子设备的具体实施方式。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有技术中,主要有两种使用方式执行智能合约:虚拟机方式和容器方式。虚拟机方式是基于单个以太坊节点进程的基础上进行的,如图1所示,为现有技术中一种以虚拟机处理合约的区块链系统的架构图,著名的公有链以太坊(Ethereum)是典型的以虚拟机的方式执行智能合约的区块链,随着在区块链上部署的智能合约程序增多,为该节点的性能带来了压力,限制了智能合约的横向拓展能力。容器方式如图2所示,为现有技术中一种以容器处理合约的区块链系统的架构图,著名的联盟链Hyperledger Fabric是典型的以容器方式执行智能合约的区块链,使用docker容器技术,作为智能合约的执行环境,增加了底层区块链平台遭受恶意合约攻击的风险,两种现有技术各有弊端。
基于上述,本申请提供了一种智能合约处理系统,如图3所示,为该系统的架构图,该系统在基于容器技术的基础上,在容器内不直接执行合约,转而直接执行虚拟机,智能合约程序通过调用虚拟机的接口进行业务逻辑的操作。使用计算资源限制机制,防止恶意合约的执行。并且,智能合约与底层区块链平台以网络接口进行交互,在当前容器节点运行压力达到上限时,可以动态增加容器节点,具有较强的横向拓展能力。
如图4所示,为该智能合约处理系统的网络结构图,整个区块链网络由若干个区块链节点2相互之间通过P2P(Peer to Peer,点对点)通讯连接组成网络,而每个区块链节点2还会拥有若干个容器节点1并与之建立起RPC(Remote Procedure Call,远程过程调用)连接。
如图4所示,容器节点1是指用于执行具体智能合约逻辑的节点,内部以启动容器的方式运行,容器内直接执行的是虚拟机的逻辑代码,虚拟机再执行具体的智能合约逻辑指令,来执行业务的逻辑处理。
区块链节点2是指对区块链交易进行接收、广播、共识、执行和存储的网络节点,一般是各区块链成员的可信服务器、工作站等,用于把用户的请求封装成交易再广播到其他区块链节点,或者根据区块链共识算法的规则对其他区块链节点广播的交易进行共识,对于共识通过的交易会交由容器节点进行智能合约的执行处理,最后根据处理的结果生成区块并进行持久化保存。
如图5所示,为本申请中容器节点的结构图,容器节1中包含一个容器执行模块12,用于在容器节点1内部启动和管理若干个容器11,每个容器11内部有虚拟机执行模块111。
容器节点1还有一个心跳检测模块13,用于每隔一定的时间间隔,检测本容器节点1所属的区块链节点2是否存活。
在一具体实施例中,时间间隔可以为5秒,如果心跳检测模块13连续检测失败3次,则注销本容器节点1的进程。
容器11是执行智能合约业务逻辑的载体,内部以虚拟机的方式执行智能合约,每个容器11只能运行一个智能合约,每个容器11包含虚拟机执行模块111。
虚拟机执行模块111根据合约字节码数组执行具体的合约业务逻辑。在执行过程中根据配置计算本次执行一共消耗的计算资源,当消耗的计算资源超过本次执行的计算资源上限时,停止执行并报错退出,合约执行成功失败标志置为失败。在智能合约的执行过程中,如果需要读取持久化数据或者要对数据进行持久化存储时,则调用容器执行模块12的接口,向区块链节点2发送对持久化数据的存取请求,得到结果后继续后续的处理。当合约业务逻辑执行完成后,合约执行成功失败标志置为成功,把包含合约执行成功失败标志、合约执行返回值和消耗计算资源总和的执行结果交由容器执行模块12进行后续处理。
合约字节码数组为一连串的字节码,其中的每一个字节码称为“合约字节码”,取值范围为0至255,代表一个计算指令。虚拟机执行模块111根据不同的计算指令执行不同的操作,虚拟机执行模块111按顺序一个一个执行合约字节码数组中的每一个合约字节码对应的计算指令。
在一具体实施例中,特定计算指令的组合,可以实现特定的业务逻辑。对于创建智能合约的交易,如果成功执行后,数据存储模块25还会持久化目标合约唯一标识和合约字节码数组,以备区块链节点2进行节点恢复时使用。
容器执行模块12用于解析从区块链节点2发送过来的创建合约报文或者执行合约报文,如果是创建合约报文则创建一个用于运行虚拟机执行模块111的容器11,得到容器唯一标识,在内存中建立容器唯一标识与目标合约唯一标识的对应关系,把报文中的计算资源上限和合约字节码数组交由虚拟机执行模块111进行具体的智能合约处理;如果是执行合约报文,根据目标合约唯一标识在容器唯一标识与目标合约唯一标识的对应关系中确定目标容器11,把报文中的计算资源上限和合约字节码数组交由目标容器11中的虚拟机执行模块111进行具体的智能合约处理。在智能合约处理过程中,接收虚拟机执行模块111对持久化数据的存取请求,把该请求封装成查询请求报文或者存储请求报文,发送给区块链节点2并等待处理结果,再把结果返回给虚拟机执行模块111。本模块还用于监听本节点机器的运行压力情况,如CPU使用率、内存使用率等,并对区块链节点2进行汇报。
容器唯一标识与目标合约唯一标识的对应关系不需要进行持久化,会一直驻留在容器执行模块12的内存中,直到进程消亡,作用是当容器执行模块12收到执行合约报文时,根据报文中的目标合约唯一标识,从该对应关系中找到容器唯一标识,确定目标容器11,把报文中的计算资源上限和合约字节码数组交由目标容器11中的虚拟机执行模块111进行具体的智能合约处理。
心跳检测模块13,用于每隔一定的时间间隔(例如5秒),检测本容器节点1所属的区块链节点2是否存活,如果连续检测失败3次,则注销本容器节点1的进程。
如图6所示,为一种区块链节点的结构框图,区块链节点2包括:交易收发模块21、共识模块22、虚拟机管理模块23、容器管理模块24、数据存储模块25、心跳应答模块26。
交易收发模块21接收接入区块链的应用系统发送给本区块链节点2的交易请求报文。交易请求报文的内容包括:交易发送者账户标识、目标合约唯一标识、合约字节码数组和所需计算资源,其中目标合约唯一标识如果为空,代表本次交易是新增智能合约,如果不为空,代表本次交易是执行某个已存在的智能合约。交易收发模块21会根据报文内容进行信息摘要操作得到交易唯一标识,把交易唯一标识马上返回给用户,然后把交易发送者账户标识、交易唯一标识、目标合约唯一标识、合约字节码数组和所需计算资源组装成交易报文,并广播到区块链内其他区块链节点2,同时接收其他区块链节点2广播的交易报文,最后把交易报文交由共识模块22进行共识处理。
所需计算资源包含在接入区块链的应用系统发送给区块链节点2的交易请求报文中,由接入区块链的应用系统自行决定一笔交易的所需计算资源大小。如果设置过大,在智能合约有可能因为程序漏洞而陷入死循环时会过量消耗该交易发送者账户的计算资源。
共识模块22是交易共识处理的逻辑装置,根据业务规则对交易的合法性进行判断,在合法性验证通过后,与其他区块链节点2根据约定好的共识算法对交易进行共识处理,这里的共识算法可以是POW、POS、DPOS、PBFT等,最后根据共识的结果确定交易的执行顺序,并把交易交由虚拟机管理模块23进行后续处理。
虚拟机管理模块23中配置有每个区块为账户增加的计算资源。本模块会从交易报文中读取交易发送者账户标识和所需计算资源,根据交易发送者账户标识从数据存储模块25中读取交易发送者账户的上一次记录的账户剩余计算资源和记录区块号,如果所需计算资源大于交易发送者账户的当前账户剩余计算资源,则拒绝执行该交易。
区块链节点2的虚拟机管理模块23会继续读取交易报文中的目标合约唯一标识,如果目标合约唯一标识为空,则表明本次交易是新增业务智能合约,根据合约字节码数组进行信息摘要操作得到目标合约唯一标识;如果目标合约唯一标识不为空,则表明本次交易是执行已存在的业务智能合约。最后把合约创建或者执行标志、目标合约唯一标识、合约字节码数组和所需计算资源交由容器管理模块24进行后续处理。
容器管理模块24用于监听和维护属于本区块链节点2的所有容器节点1的运行压力情况,对属于本区块链节点2的所有容器节点1进行容器负载均衡管理,可选地,负载均衡管理的方法可以为对当前属于本区块链节点2的所有容器节点1中的负载压力较少的容器节点1进行启动容器操作。当本模块收到一笔交易的合约创建或者执行标志、目标合约唯一标识、合约字节码数组和所需计算资源时,判断合约创建或者执行标志,如果是创建合约,则按照负载均衡管理的方法选定某个容器节点1作为目标容器节点1,在内存中建立该目标合约唯一标识与容器节点1的网络地址的对应关系,把所需计算资源作为本次交易的计算资源上限,然后把目标合约唯一标识、合约字节码数组、计算资源上限一起封装成创建合约报文,把报文发送给容器节点1进行后续处理;如果是执行合约,则根据目标合约唯一标识,在目标合约唯一标识与容器节点1的网络地址的对应关系中找到目标容器节点1,把所需计算资源作为本次交易的计算资源上限,然后把目标合约唯一标识、合约字节码数组和计算资源上限一起封装成执行合约报文,把报文发送给容器节点1进行后续处理。本模块还承担与属于本区块链节点2的所有容器节点1进行通讯的功能。在智能合约的执行过程中,本模块用于接收容器节点1对持久化数据的存取请求,转发给数据存储模块25进行持久化数据的存取操作,并把结果返回给容器节点1。
目标合约唯一标识与容器节点1的网络地址的对应关系不需要进行持久化,会一直驻留在容器管理模块24的内存中,直到进程消亡,作用是当容器管理模块24收到一笔交易的合约创建或者执行标志、目标合约唯一标识、合约字节码数组和所需计算资源,而合约创建或者执行标志为执行合约时,根据目标合约唯一标识,在目标合约唯一标识与容器节点1的网络地址的对应关系中找到目标容器节点1,把所需计算资源作为本次交易的计算资源上限,然后把目标合约唯一标识、合约字节码数组和计算资源上限一起封装成执行合约报文,把报文发送给容器节点1进行后续处理。
数据存储模块25是带有事务机制的持久化交易执行结果的数据存储模块,存储两种类型的数据,一种是区块链账本数据,存储每次交易的执行结果——无论成功还是失败,组装成区块,记录到区块链账本上;另一种是世界状态数据,存储区块链中的账户业务数据,在每次交易执行后,会判断合约执行成功失败标志,如果是失败,则回滚相关事务,放弃本次交易中的账户业务数据的变更,如果是成功提交事务,持久化本次交易中的账户业务数据的变更。对于创建智能合约的交易,如果成功执行后,数据存储模块25还会持久化目标合约唯一标识和合约字节码数组,以备区块链节点2进行节点恢复时使用。本模块还记录着区块链中每个账户的剩余计算资源,和最后一次记录该账户的剩余计算资源的区块号,在每笔交易中的智能合约执行后,无论合约执行成功还是失败,都会对交易发送者账户的剩余计算资源进行扣减,得到最新的当前账户剩余计算资源,并重新持久化记录到本模块中。
心跳应答模块26,用于对容器节点1的心跳检测报文作出应答,以向容器节点1表明本区块链节点2仍然存活。
如图7所示,为本申请中一种虚拟机执行模块的结构框图,虚拟机执行模块111包括:合约执行模块1111、计算资源累加模块1112、指令配置模块1113。
合约执行模块1111根据合约字节码数组执行具体的合约业务逻辑,具体的合约业务逻辑其实就是计算指令,包括加法、减法、乘法、判断、跳转等。
计算资源累加模块1112在合约执行的过程中,根据指令配置模块1113中配置的指令参数,累计每个执行指令所消耗的计算资源总和,并判断当前累计的所消耗的计算资源总和是否已经达到本次合约执行的计算资源上限,如果已经达到则拒绝继续执行合约指令,报错退出。
指令配置模块1113记录每个合约字节码对应的计算指令和该计算指令的消耗计算资源和操作步骤,以下给出一个在指令配置模块1113中指令配置表的示例。
在指令配置模块1113中,记录每个合约字节码对应的计算指令,和需要消耗的计算资源,以及记录该计算指令的详细操作步骤。
如图8所示,为本申请中容器执行模块的结构框图,容器执行模块12包括:节点运行监听模块121、通讯模块122及容器启动执行模块123。
节点运行监听模块121用于持续监听本容器节点1的运行压力情况,如CPU使用率、内存使用率等,并每隔一段时间(例如1分钟)通过通讯模块122向区块链节点2进行汇报。
通讯模块122用于与区块链节点2建立RPC连接,一方面向区块链节点2汇报本节点的运行压力情况,另一方面向区块链节点2发送存取数据的请求。
容器启动执行模块123用于解析从区块链节点2发送过来的创建合约报文或者执行合约报文,如果是创建合约报文则创建一个用于运行虚拟机执行模块111的容器11,得到容器唯一标识,在内存中建立容器唯一标识与目标合约唯一标识的对应关系,把报文中的计算资源上限和合约字节码数组交由虚拟机执行模块111进行具体的智能合约处理;如果是执行合约报文,根据目标合约唯一标识在容器唯一标识与目标合约唯一标识的对应关系中确定目标容器11,把报文中的计算资源上限和合约字节码数组交由目标容器11中的虚拟机执行模块111进行具体的智能合约处理。
如图9所示,为本申请中虚拟机管理模块23的结构框图,包括:交易报文解释模块231、计算资源校验模块232。
交易报文解释模块231用于从交易报文中读取目标合约唯一标识,如果目标合约唯一标识为空,则表明本次交易是新增业务智能合约,根据合约字节码数组进行信息摘要操作得到目标合约唯一标识;如果目标合约唯一标识不为空,则表明本次交易是执行已存在的业务智能合约。
计算资源校验模块232中配置有每个区块为账户增加的计算资源,可以从交易报文中读取交易发送者账户标识和所需计算资源,根据交易发送者账户标识从数据存储模块25中读取交易发送者账户的上一次记录的账户剩余计算资源和记录区块号,如果所需计算资源大于交易发送者账户的当前账户剩余计算资源,则拒绝执行该交易。
如图10所示,为本申请中容器管理模块24的结构框图,包括:容器运行管理模块241、容器通讯管理模块242。
容器运行管理模块241用于监听和维护属于本区块链节点2的所有容器节点1的运行压力情况,对属于本区块链节点2的所有容器节点1进行容器负载均衡管理,可选地,负载均衡管理的方法可以为对当前属于本区块链节点2的所有容器节点1中的负载压力较少的容器节点1进行启动容器操作。
容器通讯管理模块242用于收到一次交易的合约创建或者执行标志、目标合约唯一标识、合约字节码数组和所需计算资源时,判断合约创建或者执行标志,如果是创建合约,则按照负载均衡管理的方法选定某个容器节点1作为目标容器节点1,在内存中建立该目标合约唯一标识与容器节点1的网络地址的对应关系,把所需计算资源作为本次交易的计算资源上限,然后把目标合约唯一标识、合约字节码数组、计算资源上限一起封装成创建合约报文,把报文发送给容器节点1进行后续处理;如果是执行合约,则根据目标合约唯一标识,在目标合约唯一标识与容器节点1的网络地址的对应关系中找到目标容器节点1的网络地址,把所需计算资源作为本次交易的计算资源上限,然后把目标合约唯一标识、合约字节码数组和计算资源上限一起封装成执行合约报文,把报文发送给容器节点1进行后续处理。本模块还承担与属于本区块链节点2的所有容器节点1进行通讯的功能。在智能合约的执行过程中,本模块负责接收容器节点1对持久化数据的存取请求,转发给数据存储模块25进行持久化数据的存取操作,并把结果返回给容器节点1。
本申请还提供了一种区块链智能合约处理方法,如图11所示,为该方法的流程图,包括如下步骤:
S1101:区块链节点将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识。
具体地,区块链节点接收到交易请求报文后对该报文进行接收、广播、共识、执行和存储的网络节点,一般是各区块链成员的可信服务器、工作站等,负责把用户的请求封装成交易再广播到其他区块链节点,或者根据区块链共识算法的规则对其他区块链节点广播的交易进行共识,对于共识通过的交易会交由容器节点进行智能合约的执行处理,最后根据处理的结果生成区块并进行持久化保存。
S1102:区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
具体地,区块链节点中的容器执行模块12解析从区块链节点发送过来的创建合约报文或者执行合约报文,如果是创建合约报文则创建一个用于运行虚拟机执行模块111的容器11,得到容器唯一标识,在内存中建立容器唯一标识与目标合约唯一标识的对应关系,把报文中的计算资源上限和合约字节码数组交由虚拟机执行模块111进行具体的智能合约处理;如果是执行合约报文,根据目标合约唯一标识在容器唯一标识与目标合约唯一标识的对应关系中确定目标容器11,把报文中的计算资源上限和合约字节码数组交由目标容器11中的虚拟机执行模块111进行具体的智能合约处理。
在一实施例中,该智能合约处理方法还包括:
S1103:区块链节点从交易请求报文中读取交易发送者账户标识和所需计算资源,并根据交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果计算资源上限大于当前账户剩余计算资源,则拒绝执行该交易。
具体地,交易发送者账户的当前账户剩余计算资源的计算方法如下:
当前账户剩余计算资源=上一次记录的账户剩余计算资源+每个区块为账户增加的计算资源×(当前区块号-上一次记录的记录区块号)
在一实施例中,该智能合约处理方法还包括:
S1104:区块链节点接收从容器节点发送来的执行结果,执行结果包含合约执行标志、合约执行返回值和消耗的计算资源。
具体地,当容器节点将合约业务逻辑执行完成后,合约执行成功失败标志置为成功,把包含合约执行成功失败标志、合约执行返回值和消耗计算资源总和的执行结果交由区块链节点中的容器执行模块12进行后续处理。
S1105:区块链节点判断执行结果,如果执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
具体地,区块链节点中的数据存储模块25在每次交易执行后,会判断合约执行成功失败标志,如果是失败,则回滚相关事务,放弃本次交易中的账户业务数据的变更,如果是成功提交事务,持久化本次交易中的账户业务数据的变更。对于创建智能合约的交易,如果成功执行后,数据存储模块25还会持久化目标合约唯一标识和合约字节码数组,以备区块链节点2进行节点恢复时使用。
在一实施例中,该智能合约处理方法还包括:
S1106:区块链节点响应容器节点每隔一定的时间间隔发起的心跳检测请求。
具体地,容器节点的心跳检测模块13,每隔一定的时间间隔(例如5秒),对所属的区块链节点2发起心跳检测请求区块链节点的心跳应答模块26,对容器节点1的心跳检测报文作出应答。
基于同一发明构思,本申请实施例还提供了一种智能合约处理装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该智能合约处理装置解决问题的原理与智能合约处理方法相似,因此智能合约处理装置的实施可以参见智能合约处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图12所示,该处理装置包括:共识单元1201,用于将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识;
合约报文发送单元1202,用于根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,该装置还包括:
剩余资源计算单元1203,用于从交易请求报文中读取交易发送者账户标识和所需计算资源,并根据交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果计算资源上限大于当前账户剩余计算资源,则拒绝执行该交易。
在一实施例中,该装置还包括:
执行结果接收单元1204,用于接收从容器节点发送来的执行结果,执行结果包含合约执行标志、合约执行返回值和消耗的计算资源;
执行结果判断单元1205,用于判断执行结果,如果执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
在一实施例中,该装置还包括:
心跳响应单元1206,用于响应容器节点每隔一定的时间间隔发起的心跳检测请求。
本申请提出的另一种智能合约处理方法,如图13A所示,包括:
S1301:容器节点根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;合约报文是由容器节点所属的区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成得到。
具体地,计算资源上限即为所需计算资源。
S1302:容器节点将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,S1301中容器节点根据合约报文对应的业务智能合约类型确定对应的容器,如图13B所示,包括:
S1301-1如果业务智能合约类型为创建合约,容器节点创建一个目标容器,获得该目标容器唯一标识,并建立容器唯一标识与目标合约唯一标识的对应关系。
具体地,如果业务智能合约类型为创建合约报文,容器执行模块12则创建一个用于运行虚拟机执行模块111的容器11,得到容器唯一标识,在内存中建立容器唯一标识与目标合约唯一标识的对应关系,把报文中的计算资源上限和合约字节码数组交由虚拟机执行模块111进行具体的智能合约处理。
S1301-2如果业务智能合约类型为执行合约,容器节点根据目标合约唯一标识确定目标容器。
具体地,如果是执行合约报文,容器执行模块12则根据目标合约唯一标识在容器唯一标识与目标合约唯一标识的对应关系中确定目标容器11,把报文中的计算资源上限和合约字节码数组交由目标容器11中的虚拟机执行模块111进行具体的智能合约处理。在智能合约处理过程中,接收虚拟机执行模块111对持久化数据的存取请求,把该请求封装成查询请求报文或者存储请求报文,发送给区块链节点2并等待处理结果,再把结果返回给虚拟机执行模块111。本模块还负责监听本节点机器的运行压力情况,如CPU使用率、内存使用率等,并对区块链节点2进行汇报。
在一实施例中,S1302中容器节点将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理,具体包括:
容器节点根据合约字节码数组执行具体的合约业务逻辑并配置消耗的计算资源;如果消耗的计算资源超过计算资源上限则停止执行,将合约执行标志设置为失败,否则,执行智能合约并将合约执行标志设置为成功。
具体地,虚拟机执行模块111根据合约字节码数组执行具体的合约业务逻辑。在执行过程中根据配置计算本次执行一共消耗的计算资源,当消耗的计算资源超过本次执行的计算资源上限时,停止执行并报错退出,合约执行标志设置为失败。当合约业务逻辑执行完成后,合约执行标志设置为成功。
在一实施例中,该智能合约处理方法还包括:
S1303:容器节点将合约执行标志、合约执行返回值和消耗的计算资源封装成执行结果发送给区块链节点,以使区块链节点判断执行结果。
在一实施例中,该智能合约处理方法还包括:
S1304:容器节点每隔一定的时间间隔对区块链节点发起心跳检测请求。
具体地,容器节点的心跳检测模块13,负责每隔一定的时间间隔(例如5秒),对所属的区块链节点2发起心跳检测请求。
基于同一发明构思,本申请实施例还提供了一种智能合约处理装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该智能合约处理装置解决问题的原理与智能合约处理方法相似,因此智能合约处理装置的实施可以参见智能合约处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图14A所示,该处理装置包括:
容器确定单元1401,用于根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;合约报文是由容器节点所属的区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成得到;
智能合约处理单元1402,用于将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
在一实施例中,容器确定单元1401,如图14B所示,包括:
容器创建模块1401-1,用于当业务智能合约类型为创建合约时,创建一个目标容器,获得该目标容器唯一标识,并建立容器唯一标识与目标合约唯一标识的对应关系;
容器关联模块1401-2,用于当业务智能合约类型为执行合约时,根据目标合约唯一标识确定目标容器。
在一实施例中,智能合约处理单元1402具体包括:
计算资源配置模块,用于根据合约字节码数组执行具体的合约业务逻辑并配置消耗的计算资源;如果消耗的计算资源超过计算资源上限则停止执行,将合约执行标志设置为失败,否则,执行智能合约并将合约执行标志设置为成功。
在一实施例中,该装置还包括:
执行结果发送单元1403,用于将合约执行标志、合约执行返回值和消耗的计算资源封装成执行结果发送给区块链节点,以使区块链节点判断执行结果。
在一实施例中,该装置还包括:
心跳请求单元1404,用于每隔一定的时间间隔对区块链节点发起心跳检测请求。
如图15所示,为本申请中合约计算资源限制方法的流程图,具体步骤如下:
S10701:合约执行模块1111,从容器执行模块12接收到合约字节码数组和计算资源上限后,初始化当前虚拟机的参数,把消耗计算资源总和置为0。
S10702:合约执行模块1111,读取合约字节码数组的下一个合约字节码。
S10703:指令配置模块1113,根据该合约字节码检索指令配置表,查找出对应的消耗计算资源和操作步骤。
S10704:计算资源累加模块1112,把消耗计算资源总和累加上消耗计算资源。
S10705:计算资源累加模块1112,判断当前消耗计算资源总和是否已经超过计算资源上限。
S10706A:如果已经超过,则报错退出。
S10706B:如果未超过,则合约执行模块1111执行具体的操作步骤。
S10707:合约执行模块1111,判断该操作步骤是否指示执行完毕,如果否,继续执行步骤S10702。
S10708:如果是,成功返回,返回包含合约执行成功失败标志、合约执行返回值和消耗计算资源总和的执行结果。
如图16所示,为本申请中执行智能合约中的存取数据方法的流程图,具体步骤如下:
S10706B01:容器节点1的合约执行模块1111,当前执行的操作步骤需要对数据进行存取操作。
S10706B02:向本容器节点1的通讯模块122,发送数据存取请求。
S10706B03:容器节点1的通讯模块122,转发数据存取请求到本容器节点1所属的区块链节点2。
S10706B04:区块链节点2的容器通讯管理模块242,接收到数据存取请求后,转发到本区块链节点2的数据存储模块25。
S10706B05:区块链节点2的数据存储模块25,对世界状态数据进行存取操作,更新账户业务数据。
S10706B06:区块链节点2的数据存储模块25,把执行结果返回给本区块链节点2的容器通讯管理模块242。
S10706B07:区块链节点2的容器通讯管理模块242,返回数据存取结果给容器节点1。
S10706B08:容器节点1的通讯模块122,转发数据存取结果到合约执行模块1111。
S10706B09:容器节点1的合约执行模块1111,得到数据存取结果后,继续执行后续的操作。
如图17所示,为本申请中一种监听容器节点运行压力情况的方法流程图,步骤包括:
S201:容器节点1的节点运行监听模块121,持续监听本容器节点1的运行压力情况,如CPU使用率、内存使用率等,并每隔一段时间(例如1分钟)通过通讯模块122向区块链节点2进行汇报。
S202:容器节点1的通讯模块122,接收到本容器节点1的节点运行监听模块121的汇报请求后,向区块链节点2汇报本容器节点1的运行压力情况。
S203:区块链节点2的容器通讯管理模块242,转发汇报请求到本区块链节点2的容器运行管理模块241。
S204:区块链节点2的容器运行管理模块241,更新属于本区块链节点2的所有容器节点1的运行压力情况。
如图18所示,为本申请一种注册容器节点的方法流程图,步骤包括:
S301:容器节点1启动后,容器节点1的节点运行监听模块121,即时检测本容器节点1的运行压力情况,如CPU使用率、内存使用率等,马上通过通讯模块122发送注册容器节点的请求。同时开启线程持续监听本容器节点1的运行压力情况,如CPU使用率、内存使用率等,并每隔一段时间(例如1分钟)通过通讯模块122向区块链节点2进行汇报。
S302:容器节点1的通讯模块122,接收到本容器节点1的节点运行监听模块121的注册容器节点的请求后,向区块链节点2发送注册容器节点的请求,并汇报本容器节点1的运行压力情况。
S303:区块链节点2的容器通讯管理模块242,转发注册容器节点的请求到本区块链节点2的容器运行管理模块241。
S304:区块链节点2的容器运行管理模块241,更新属于本区块链节点2的所有容器节点1的运行压力情况。
通过以上方法,把一个区块链节点2中的运行智能合约的压力分散到若干个容器节点1,而当区块链节点2当前拥有的所有容器节点1的运行压力达到上限时,可以随时启动一个新的容器节点1,并注册到区块链节点2,增强了区块链节点2的性能,提高了区块链智能合约执行环境的横向拓展能力。
对于区块链节点2可能出现宕机的情况,本申请还提供了一种自动注销容器节点的方法和一种恢复区块链节点的方法,下面结合附图,对本申请的方法流程,进行详细说明。
如图19所示,为本申请中一种自动注销容器节点的方法流程图,步骤包括:
S401:容器节点1的心跳检测模块13,负责每隔一定的时间间隔(例如5秒),对所属的区块链节点2发起心跳检测请求。
S402:区块链节点2的心跳应答模块26,对容器节点1的心跳检测报文作出应答。
S403:容器节点1的心跳检测模块13,判断是否在一定时间(例如3秒)内收到区块链节点2的应答。
S404A:如果容器节点1的心跳检测模块13在一定时间(例如3秒)内收到区块链节点2的应答,则把心跳检测失败次数重置为0。
S404B:如果容器节点1的心跳检测模块13在一定时间(例如3秒)内没有收到区块链节点2的应答,把心跳检测失败次数加1。
S405:容器节点1的心跳检测模块13,判断心跳检测失败次数是否小于3。
S406A:如果心跳检测失败次数小于3,不进行操作。
S406B:如果心跳检测失败次数不小于3,注销本容器节点1的进程。
如图20所示,为本申请一种恢复区块链节点和容器节点的方法流程图,包括如下步骤:
S501:区块链节点2启动后,与区块链网络中的其它区块链节点2建立网络连接,对本节点的持久化数据进行同步和共识处理,该功能由共识模块22进行处理。然后进行如下处理。
S502:区块链节点2的容器管理模块24,从数据存储模块25中读取所有目标合约唯一标识、合约字节码数组,对于每个目标合约唯一标识和对应的合约字节码数组,进行如下处理。
S503:区块链节点2的容器管理模块24,按照负载均衡管理的方法选定某个容器节点1作为目标容器节点1,在内存中建立该目标合约唯一标识与容器节点1的网络地址的对应关系,然后把目标合约唯一标识、合约字节码数组一起封装成恢复合约报文,把报文发送给容器节点1进行后续处理。
S504:容器节点1的容器执行模块12,解析从区块链节点2发送过来的恢复合约报文,创建一个用于运行虚拟机执行模块111的容器11,得到容器唯一标识,在内存中建立容器唯一标识与目标合约唯一标识的对应关系,把报文中的合约字节码数组放到虚拟机执行模块111的内存中,等待后续执行合约的交易对该合约字节码数组的调用。
通过以上方法,给定固定的计算资源上限,然后在智能合约的执行过程中,每一个步骤均需要消耗一定的计算资源,当消耗计算资源总和超过计算资源上限时,通过报错退出机制,防止了存在逻辑漏洞的智能合约以无限循环逻辑等方式进行DOS攻击造成区块链节点算力浪费甚至崩溃,有效保护了区块链智能合约执行环境的安全。
如图21所示,为本申请中区块链智能合约处理系统,包括:区块链网络中的至少一个区块链节点及与区块链节点连接的至少一容器节点;容器节点包括多个容器,每一容器中设置有用于执行对应的智能合约的虚拟机;
区块链节点用于将接收到的交易请求报文发送给区块链网络中的其他区块链节点进行共识,并根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点;其中,业务智能合约类型包括:创建合约及执行合约;
容器节点用于根据合约报文对应的业务智能合约类型确定内部对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
在一实施例中,容器节点还包括:
一心跳检测模块,用根据时间间隔检测所在容器节点所属的区块链节点是否存活。
本申请提供了一种基于云计算的区块链智能合约处理系统和方法,综合了虚拟机和容器的技术优势,在保证智能合约横向拓展能力的前提下,为智能合约的执行提供了安全的执行环境。
对三种智能合约的执行方式,进行比较如下:
由表中可以看出,本申请综合了虚拟机和容器两种方案的优势,是一种比较好的智能合约执行方式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图22,所述电子设备具体包括如下内容:
处理器(processor)2201、内存2202、通信接口(Communications Interface)2203、总线2204和非易失性存储器2205;
其中,所述处理器2201、内存2202、通信接口2203和非易失性存储器2205通过所述总线2204完成相互间的通信;
所述处理器2201用于调用所述内存2202和非易失性存储器2205中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S1101区块链节点将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识。
S1102区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
S1103:区块链节点从交易请求报文中读取交易发送者账户标识和所需计算资源,并根据交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果计算资源上限大于当前账户剩余计算资源,则拒绝执行该交易。
S1104:区块链节点接收从容器节点发送来的执行结果,执行结果包含合约执行标志、合约执行返回值和消耗的计算资源。
S1105:区块链节点判断执行结果,如果执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
S1301:容器节点根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;合约报文是由容器节点所属的区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成得到。
S1302:容器节点将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
S1303:容器节点将合约执行标志、合约执行返回值和消耗的计算资源封装成执行结果发送给区块链节点,以使区块链节点判断执行结果。
S1304:容器节点每隔一定的时间间隔对区块链节点发起心跳检测请求。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S1101区块链节点将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识。
S1102区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
其中,业务智能合约类型由交易请求报文中的目标合约唯一标识确定,业务智能合约类型包括:创建合约及执行合约。
S1103:区块链节点从交易请求报文中读取交易发送者账户标识和所需计算资源,并根据交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果计算资源上限大于当前账户剩余计算资源,则拒绝执行该交易。
S1104:区块链节点接收从容器节点发送来的执行结果,执行结果包含合约执行标志、合约执行返回值和消耗的计算资源。
S1105:区块链节点判断执行结果,如果执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
S1301:容器节点根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;合约报文是由容器节点所属的区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成得到。
S1302:容器节点将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
S1303:容器节点将合约执行标志、合约执行返回值和消耗的计算资源封装成执行结果发送给区块链节点,以使区块链节点判断执行结果。
S1304:容器节点每隔一定的时间间隔对区块链节点发起心跳检测请求。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (22)
1.一种区块链智能合约处理系统,其特征在于,包括:区块链网络中的至少一个区块链节点及与所述区块链节点连接的至少一容器节点;容器节点包括多个容器,每一容器中设置有用于执行对应的智能合约的虚拟机;
所述区块链节点用于将接收到的交易请求报文发送给所述区块链网络中的其他区块链节点进行共识,并根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点;其中,所述业务智能合约类型包括:创建合约及执行合约;
所述容器节点用于根据合约报文对应的业务智能合约类型确定内部对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理。
2.根据权利要求1所述的区块链智能合约处理系统,其特征在于,所述容器节点还包括:
一心跳检测模块,用根据时间间隔检测所在容器节点所属的区块链节点是否存活。
3.一种区块链智能合约处理方法,其特征在于,包括:
区块链节点将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识;
所述区块链节点根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使所述容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,所述业务智能合约类型由所述交易请求报文中的目标合约唯一标识确定,所述业务智能合约类型包括:创建合约及执行合约。
4.根据权利要求3所述的智能合约处理方法,其特征在于,还包括:
所述区块链节点从所述交易请求报文中读取交易发送者账户标识和所需计算资源,并根据所述交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果所述计算资源上限大于所述当前账户剩余计算资源,则拒绝执行该交易。
5.根据权利要求3所述的智能合约处理方法,其特征在于,还包括:
所述区块链节点接收从所述容器节点发送来的执行结果,所述执行结果包含合约执行标志、合约执行返回值和消耗的计算资源;
所述区块链节点判断所述执行结果,如果所述执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
6.根据权利要求3所述的智能合约处理方法,其特征在于,还包括:
所述区块链节点响应所述容器节点每隔一定的时间间隔发起的心跳检测请求。
7.一种区块链智能合约处理装置,其特征在于,包括:
共识单元,用于将接收到的交易请求报文发送给所在区块链网络中的其他区块链节点进行共识;
合约报文发送单元,用于根据业务智能合约类型将目标合约唯一标识、合约字节码数组及计算资源上限封装成对应的合约报文发送给对应容器节点,以使所述容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,所述业务智能合约类型由所述交易请求报文中的目标合约唯一标识确定,所述业务智能合约类型包括:创建合约及执行合约。
8.根据权利要求7所述的智能合约处理装置,其特征在于,还包括:
剩余资源计算单元,用于从所述交易请求报文中读取交易发送者账户标识和所需计算资源,并根据所述交易发送者账户标识读取该账户的剩余计算资源用以计算当前账户剩余计算资源;如果所述计算资源上限大于所述当前账户剩余计算资源,则拒绝执行该交易。
9.根据权利要求7所述的智能合约处理装置,其特征在于,还包括:
执行结果接收单元,用于接收从所述容器节点发送来的执行结果,所述执行结果包含合约执行标志、合约执行返回值和消耗的计算资源;
执行结果判断单元,用于判断所述执行结果,如果所述执行结果为失败,回滚相关事务并放弃账户业务数据的变更。
10.根据权利要求7所述的智能合约处理装置,其特征在于,还包括:
心跳响应单元,用于响应所述容器节点每隔一定的时间间隔发起的心跳检测请求。
11.一种区块链智能合约处理方法,其特征在于,包括:
容器节点根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;所述合约报文是由所述容器节点所属的区块链节点根据业务智能合约类型将所述目标合约唯一标识、合约字节码数组及计算资源上限封装成得到;
所述容器节点将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,所述业务智能合约类型由交易请求报文中的目标合约唯一标识确定,所述业务智能合约类型包括:创建合约及执行合约。
12.根据权利要求11所述的智能合约处理方法,其特征在于,所述容器节点根据合约报文对应的业务智能合约类型确定对应的容器,包括:
如果所述业务智能合约类型为创建合约,所述容器节点创建一个目标容器,获得该目标容器唯一标识,并建立所述容器唯一标识与所述目标合约唯一标识的对应关系;
如果所述业务智能合约类型为执行合约,所述容器节点根据所述目标合约唯一标识确定目标容器。
13.根据权利要求11所述的智能合约处理方法,其特征在于,所述容器节点根据合约报文对应的业务智能合约类型确定对应的容器,并将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理,包括:
所述容器节点根据所述合约字节码数组执行具体的合约业务逻辑并配置消耗的计算资源;如果所述消耗的计算资源超过所述计算资源上限则停止执行,将合约执行标志设置为失败,否则,执行智能合约并将合约执行标志设置为成功。
14.根据权利要求13所述的智能合约处理方法,其特征在于,还包括:
所述容器节点将所述合约执行标志、合约执行返回值和所述消耗的计算资源封装成执行结果发送给所述区块链节点,以使所述区块链节点判断所述执行结果。
15.根据权利要求11所述的智能合约处理方法,其特征在于,还包括:
所述容器节点每隔一定的时间间隔对所述区块链节点发起心跳检测请求。
16.一种区块链智能合约处理装置,其特征在于,包括:
容器确定单元,用于根据其所属的区块链节点基于目标合约唯一标识发送的合约报文对应的业务智能合约类型确定对应的容器;所述合约报文是由所述容器节点所属的区块链节点根据业务智能合约类型将所述目标合约唯一标识、合约字节码数组及计算资源上限封装成得到;
智能合约处理单元,用于将合约字节码数组及计算资源上限交由确定的容器的虚拟机执行智能合约处理;
其中,所述业务智能合约类型由交易请求报文中的目标合约唯一标识确定,所述业务智能合约类型包括:创建合约及执行合约。
17.根据权利要求16所述的智能合约处理装置,其特征在于,所述容器确定单元,包括:
容器创建模块,用于当所述业务智能合约类型为创建合约时,创建一个目标容器,获得该目标容器唯一标识,并建立所述容器唯一标识与所述目标合约唯一标识的对应关系;
容器关联模块,用于当所述业务智能合约类型为执行合约时,根据所述目标合约唯一标识确定目标容器。
18.根据权利要求16所述的智能合约处理装置,其特征在于,所述智能合约处理单元具体用于:
计算资源配置模块,用于根据所述合约字节码数组执行具体的合约业务逻辑并配置消耗的计算资源;如果所述消耗的计算资源超过所述计算资源上限则停止执行,将合约执行标志设置为失败,否则,执行智能合约并将合约执行标志设置为成功。
19.根据权利要求18所述的智能合约处理装置,其特征在于,还包括:
执行结果发送单元,用于将所述合约执行标志、合约执行返回值和所述消耗的计算资源封装成执行结果发送给所述区块链节点,以使所述区块链节点判断所述执行结果。
20.根据权利要求16所述的智能合约处理装置,其特征在于,还包括:
心跳请求单元,用于每隔一定的时间间隔对所述区块链节点发起心跳检测请求。
21.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求3至6和11至15中任一项所述智能合约处理方法。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求3至6和11至15中任一项所述智能合约处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910659374.7A CN110392052B (zh) | 2019-07-22 | 2019-07-22 | 一种区块链智能合约处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910659374.7A CN110392052B (zh) | 2019-07-22 | 2019-07-22 | 一种区块链智能合约处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110392052A true CN110392052A (zh) | 2019-10-29 |
CN110392052B CN110392052B (zh) | 2021-05-25 |
Family
ID=68286941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910659374.7A Active CN110392052B (zh) | 2019-07-22 | 2019-07-22 | 一种区块链智能合约处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110392052B (zh) |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110798535A (zh) * | 2019-11-12 | 2020-02-14 | 金蝶软件(中国)有限公司 | 区块链中实现p2p通信方法、区块链应用系统及相关设备 |
CN111046102A (zh) * | 2019-11-27 | 2020-04-21 | 复旦大学 | 基于以太坊的高性能区块链服务系统 |
CN111124617A (zh) * | 2019-12-24 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 区块链系统的创建方法和装置、存储介质及电子装置 |
CN111258714A (zh) * | 2020-01-13 | 2020-06-09 | 电子科技大学 | 一种区块链智能合约执行方法 |
CN111339201A (zh) * | 2020-02-28 | 2020-06-26 | 中国工商银行股份有限公司 | 基于区块链的测评方法及系统 |
CN111355718A (zh) * | 2020-02-25 | 2020-06-30 | 中国工商银行股份有限公司 | 区块链智能合约云化部署系统及方法 |
CN111459573A (zh) * | 2020-04-01 | 2020-07-28 | 济南浪潮高新科技投资发展有限公司 | 一种智能合约执行环境的启动方法以及装置 |
CN111782305A (zh) * | 2020-07-21 | 2020-10-16 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
CN111797168A (zh) * | 2020-07-09 | 2020-10-20 | 杭州复杂美科技有限公司 | 区块并行处理方法、设备和存储介质 |
CN111901384A (zh) * | 2020-06-29 | 2020-11-06 | 成都质数斯达克科技有限公司 | 处理报文的系统、方法、电子设备以及可读存储介质 |
CN111967994A (zh) * | 2020-10-20 | 2020-11-20 | 支付宝(杭州)信息技术有限公司 | 一种智能合约的创建方法和装置 |
CN112270601A (zh) * | 2020-10-29 | 2021-01-26 | 成都质数斯达克科技有限公司 | 信息传递方法、装置、电子设备及可读存储介质 |
CN112445543A (zh) * | 2020-11-26 | 2021-03-05 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN112529711A (zh) * | 2021-02-07 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 基于区块链虚拟机复用的交易处理方法及装置 |
CN112017052B (zh) * | 2020-10-28 | 2021-05-18 | 支付宝(杭州)信息技术有限公司 | 在区块链中部署和调用合约的方法和装置 |
CN112910950A (zh) * | 2021-01-13 | 2021-06-04 | 杭州趣链科技有限公司 | 一种待上链数据的上链方法、装置以及区块链节点设备 |
CN113098983A (zh) * | 2021-06-02 | 2021-07-09 | 支付宝(杭州)信息技术有限公司 | 基于智能合约的任务执行方法及装置 |
CN113259465A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 基于链外的计算服务的业务执行方法 |
CN113595732A (zh) * | 2021-06-11 | 2021-11-02 | 上海淇玥信息技术有限公司 | 一种智能合约交互方法、装置和电子设备 |
US11170366B2 (en) | 2018-05-18 | 2021-11-09 | Inveniam Capital Partners, Inc. | Private blockchain services |
CN113626154A (zh) * | 2021-08-27 | 2021-11-09 | 鼎链数字科技(深圳)有限公司 | 区块链智能合约运行方法及系统 |
CN113852698A (zh) * | 2021-12-01 | 2021-12-28 | 湖南宸瀚信息科技有限责任公司 | 一种群组协同的区块链数据同步系统 |
CN113886135A (zh) * | 2020-10-20 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种区块链数据的恢复方法和装置 |
US11276056B2 (en) * | 2018-08-06 | 2022-03-15 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11296889B2 (en) | 2017-02-17 | 2022-04-05 | Inveniam Capital Partners, Inc. | Secret sharing via blockchains |
US11328290B2 (en) | 2018-08-06 | 2022-05-10 | Inveniam Capital Partners, Inc. | Stable cryptocurrency coinage |
CN114462094A (zh) * | 2021-09-08 | 2022-05-10 | 北京天德科技有限公司 | 一种基于容器的多方竞合智能合约数字系统及其执行方法 |
US11343075B2 (en) | 2020-01-17 | 2022-05-24 | Inveniam Capital Partners, Inc. | RAM hashing in blockchain environments |
US11477271B2 (en) | 2018-05-18 | 2022-10-18 | Inveniam Capital Partners, Inc. | Load balancing in blockchain environments |
US11580534B2 (en) | 2017-03-22 | 2023-02-14 | Inveniam Capital Partners, Inc. | Auditing of electronic documents |
CN116804949A (zh) * | 2023-07-29 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN116975158A (zh) * | 2023-09-25 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 请求处理方法、装置、计算机设备和存储介质 |
US11863686B2 (en) | 2017-01-30 | 2024-01-02 | Inveniam Capital Partners, Inc. | Validating authenticity of electronic documents shared via computer networks |
US11989208B2 (en) | 2018-08-06 | 2024-05-21 | Inveniam Capital Partners, Inc. | Transactional sharding of blockchain transactions |
US12008526B2 (en) | 2021-03-26 | 2024-06-11 | Inveniam Capital Partners, Inc. | Computer system and method for programmatic collateralization services |
US12007972B2 (en) | 2021-06-19 | 2024-06-11 | Inveniam Capital Partners, Inc. | Systems and methods for processing blockchain transactions |
US12008015B2 (en) | 2018-05-18 | 2024-06-11 | Inveniam Capital Partners, Inc. | Import and export in blockchain environments |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647361A (zh) * | 2018-05-21 | 2018-10-12 | 中国工商银行股份有限公司 | 一种基于区块链的数据存储方法、装置及系统 |
CN108765158A (zh) * | 2018-05-31 | 2018-11-06 | 杭州秘猿科技有限公司 | 一种基于区块链的智能合约引擎系统及其合约执行方法 |
CN108769751A (zh) * | 2018-05-02 | 2018-11-06 | 中广热点云科技有限公司 | 一种基于智能合约的网络视听管理支撑系统 |
WO2019072310A2 (en) * | 2018-12-29 | 2019-04-18 | Alibaba Group Holding Limited | SYSTEM AND METHOD FOR IMPLEMENTING NATIVE CONTRACT ON BLOCK CHAIN |
CN109710384A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种安全的Java智能合约解释执行引擎及方法 |
CN109766722A (zh) * | 2019-01-22 | 2019-05-17 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法及其系统 |
-
2019
- 2019-07-22 CN CN201910659374.7A patent/CN110392052B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108769751A (zh) * | 2018-05-02 | 2018-11-06 | 中广热点云科技有限公司 | 一种基于智能合约的网络视听管理支撑系统 |
CN108647361A (zh) * | 2018-05-21 | 2018-10-12 | 中国工商银行股份有限公司 | 一种基于区块链的数据存储方法、装置及系统 |
CN108765158A (zh) * | 2018-05-31 | 2018-11-06 | 杭州秘猿科技有限公司 | 一种基于区块链的智能合约引擎系统及其合约执行方法 |
WO2019072310A2 (en) * | 2018-12-29 | 2019-04-18 | Alibaba Group Holding Limited | SYSTEM AND METHOD FOR IMPLEMENTING NATIVE CONTRACT ON BLOCK CHAIN |
CN109710384A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种安全的Java智能合约解释执行引擎及方法 |
CN109766722A (zh) * | 2019-01-22 | 2019-05-17 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法及其系统 |
Non-Patent Citations (1)
Title |
---|
马春光等: "区块链中的智能合约", 《信息网络安全》 * |
Cited By (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11863686B2 (en) | 2017-01-30 | 2024-01-02 | Inveniam Capital Partners, Inc. | Validating authenticity of electronic documents shared via computer networks |
US11296889B2 (en) | 2017-02-17 | 2022-04-05 | Inveniam Capital Partners, Inc. | Secret sharing via blockchains |
US11580534B2 (en) | 2017-03-22 | 2023-02-14 | Inveniam Capital Partners, Inc. | Auditing of electronic documents |
US11170366B2 (en) | 2018-05-18 | 2021-11-09 | Inveniam Capital Partners, Inc. | Private blockchain services |
US12008015B2 (en) | 2018-05-18 | 2024-06-11 | Inveniam Capital Partners, Inc. | Import and export in blockchain environments |
US11930072B2 (en) | 2018-05-18 | 2024-03-12 | Inveniam Capital Partners, Inc. | Load balancing in blockchain environments |
US11587074B2 (en) | 2018-05-18 | 2023-02-21 | Inveniam Capital Partners, Inc. | Recordation of device usage to blockchains |
US11580535B2 (en) | 2018-05-18 | 2023-02-14 | Inveniam Capital Partners, Inc. | Recordation of device usage to public/private blockchains |
US11477271B2 (en) | 2018-05-18 | 2022-10-18 | Inveniam Capital Partners, Inc. | Load balancing in blockchain environments |
US11687916B2 (en) | 2018-08-06 | 2023-06-27 | Inveniam Capital Partners, Inc. | Decisional architectures in blockchain environments |
US11276056B2 (en) * | 2018-08-06 | 2022-03-15 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11334874B2 (en) | 2018-08-06 | 2022-05-17 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11989208B2 (en) | 2018-08-06 | 2024-05-21 | Inveniam Capital Partners, Inc. | Transactional sharding of blockchain transactions |
US11348097B2 (en) | 2018-08-06 | 2022-05-31 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11328290B2 (en) | 2018-08-06 | 2022-05-10 | Inveniam Capital Partners, Inc. | Stable cryptocurrency coinage |
US11295296B2 (en) * | 2018-08-06 | 2022-04-05 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11531981B2 (en) | 2018-08-06 | 2022-12-20 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11587069B2 (en) | 2018-08-06 | 2023-02-21 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11615398B2 (en) | 2018-08-06 | 2023-03-28 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11620642B2 (en) * | 2018-08-06 | 2023-04-04 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11676132B2 (en) | 2018-08-06 | 2023-06-13 | Inveniam Capital Partners, Inc. | Smart contracts in blockchain environments |
CN110798535A (zh) * | 2019-11-12 | 2020-02-14 | 金蝶软件(中国)有限公司 | 区块链中实现p2p通信方法、区块链应用系统及相关设备 |
CN111046102B (zh) * | 2019-11-27 | 2023-10-31 | 复旦大学 | 高性能区块链服务系统 |
CN111046102A (zh) * | 2019-11-27 | 2020-04-21 | 复旦大学 | 基于以太坊的高性能区块链服务系统 |
CN111124617A (zh) * | 2019-12-24 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 区块链系统的创建方法和装置、存储介质及电子装置 |
CN111124617B (zh) * | 2019-12-24 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 区块链系统的创建方法和装置、存储介质及电子装置 |
CN111258714B (zh) * | 2020-01-13 | 2023-03-10 | 电子科技大学 | 一种区块链智能合约执行方法 |
CN111258714A (zh) * | 2020-01-13 | 2020-06-09 | 电子科技大学 | 一种区块链智能合约执行方法 |
US11343075B2 (en) | 2020-01-17 | 2022-05-24 | Inveniam Capital Partners, Inc. | RAM hashing in blockchain environments |
US11863305B2 (en) | 2020-01-17 | 2024-01-02 | Inveniam Capital Partners, Inc. | RAM hashing in blockchain environments |
US11444749B2 (en) | 2020-01-17 | 2022-09-13 | Inveniam Capital Partners, Inc. | Separating hashing from proof-of-work in blockchain environments |
US11943334B2 (en) | 2020-01-17 | 2024-03-26 | Inveniam Capital Partners, Inc. | Separating hashing from proof-of-work in blockchain environments |
CN111355718A (zh) * | 2020-02-25 | 2020-06-30 | 中国工商银行股份有限公司 | 区块链智能合约云化部署系统及方法 |
CN111355718B (zh) * | 2020-02-25 | 2022-04-15 | 中国工商银行股份有限公司 | 区块链智能合约云化部署系统及方法 |
CN111339201A (zh) * | 2020-02-28 | 2020-06-26 | 中国工商银行股份有限公司 | 基于区块链的测评方法及系统 |
CN111339201B (zh) * | 2020-02-28 | 2023-04-25 | 中国工商银行股份有限公司 | 基于区块链的测评方法及系统 |
CN111459573B (zh) * | 2020-04-01 | 2023-09-15 | 山东浪潮科学研究院有限公司 | 一种智能合约执行环境的启动方法以及装置 |
CN111459573A (zh) * | 2020-04-01 | 2020-07-28 | 济南浪潮高新科技投资发展有限公司 | 一种智能合约执行环境的启动方法以及装置 |
CN111901384A (zh) * | 2020-06-29 | 2020-11-06 | 成都质数斯达克科技有限公司 | 处理报文的系统、方法、电子设备以及可读存储介质 |
CN111901384B (zh) * | 2020-06-29 | 2023-10-24 | 成都质数斯达克科技有限公司 | 处理报文的系统、方法、电子设备以及可读存储介质 |
CN111797168A (zh) * | 2020-07-09 | 2020-10-20 | 杭州复杂美科技有限公司 | 区块并行处理方法、设备和存储介质 |
CN111782305B (zh) * | 2020-07-21 | 2021-01-19 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
CN111782305A (zh) * | 2020-07-21 | 2020-10-16 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
CN111967994A (zh) * | 2020-10-20 | 2020-11-20 | 支付宝(杭州)信息技术有限公司 | 一种智能合约的创建方法和装置 |
CN111967994B (zh) * | 2020-10-20 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种智能合约的创建方法和装置 |
CN113886135A (zh) * | 2020-10-20 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种区块链数据的恢复方法和装置 |
CN112017052B (zh) * | 2020-10-28 | 2021-05-18 | 支付宝(杭州)信息技术有限公司 | 在区块链中部署和调用合约的方法和装置 |
CN112270601B (zh) * | 2020-10-29 | 2023-08-01 | 成都质数斯达克科技有限公司 | 信息传递方法、装置、电子设备及可读存储介质 |
CN112270601A (zh) * | 2020-10-29 | 2021-01-26 | 成都质数斯达克科技有限公司 | 信息传递方法、装置、电子设备及可读存储介质 |
CN112445543B (zh) * | 2020-11-26 | 2023-03-10 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN112445543A (zh) * | 2020-11-26 | 2021-03-05 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN112910950A (zh) * | 2021-01-13 | 2021-06-04 | 杭州趣链科技有限公司 | 一种待上链数据的上链方法、装置以及区块链节点设备 |
CN112529711A (zh) * | 2021-02-07 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 基于区块链虚拟机复用的交易处理方法及装置 |
CN112529711B (zh) * | 2021-02-07 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 基于区块链虚拟机复用的交易处理方法及装置 |
US12008526B2 (en) | 2021-03-26 | 2024-06-11 | Inveniam Capital Partners, Inc. | Computer system and method for programmatic collateralization services |
CN113259465B (zh) * | 2021-06-02 | 2021-10-15 | 支付宝(杭州)信息技术有限公司 | 基于链外的计算服务的业务执行方法 |
CN113259465A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 基于链外的计算服务的业务执行方法 |
CN113098983A (zh) * | 2021-06-02 | 2021-07-09 | 支付宝(杭州)信息技术有限公司 | 基于智能合约的任务执行方法及装置 |
CN113098983B (zh) * | 2021-06-02 | 2021-10-15 | 支付宝(杭州)信息技术有限公司 | 基于智能合约的任务执行方法及装置 |
CN113595732B (zh) * | 2021-06-11 | 2024-03-19 | 上海淇玥信息技术有限公司 | 一种智能合约交互方法、装置和电子设备 |
CN113595732A (zh) * | 2021-06-11 | 2021-11-02 | 上海淇玥信息技术有限公司 | 一种智能合约交互方法、装置和电子设备 |
US12007972B2 (en) | 2021-06-19 | 2024-06-11 | Inveniam Capital Partners, Inc. | Systems and methods for processing blockchain transactions |
CN113626154A (zh) * | 2021-08-27 | 2021-11-09 | 鼎链数字科技(深圳)有限公司 | 区块链智能合约运行方法及系统 |
CN114462094A (zh) * | 2021-09-08 | 2022-05-10 | 北京天德科技有限公司 | 一种基于容器的多方竞合智能合约数字系统及其执行方法 |
CN113852698A (zh) * | 2021-12-01 | 2021-12-28 | 湖南宸瀚信息科技有限责任公司 | 一种群组协同的区块链数据同步系统 |
CN116804949B (zh) * | 2023-07-29 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN116804949A (zh) * | 2023-07-29 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN116975158A (zh) * | 2023-09-25 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 请求处理方法、装置、计算机设备和存储介质 |
CN116975158B (zh) * | 2023-09-25 | 2024-01-26 | 腾讯科技(深圳)有限公司 | 请求处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110392052B (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110392052A (zh) | 一种区块链智能合约处理系统及方法 | |
Soualah et al. | Energy efficient algorithm for VNF placement and chaining | |
CN107295594B (zh) | 网络切换方法、装置及移动终端 | |
CN108540536B (zh) | 基于区块链的网络海量业务处理方法、设备及存储介质 | |
US11356282B2 (en) | Sending cross-chain authenticatable messages | |
CN105376083B (zh) | 节能控制方法、管理服务器和网络设备 | |
CN110417558A (zh) | 签名的验证方法和装置、存储介质及电子装置 | |
CN108830632A (zh) | 一种积分管理方法、区块链节点设备及客户端 | |
CN108989372A (zh) | 服务发现的方法、注册中心和设备 | |
CN105721318B (zh) | 一种软件定义网络sdn中发现网络拓扑的方法和装置 | |
CN108449410A (zh) | 一种云平台中消息管理方法、系统及相关装置 | |
CN107770269B (zh) | 一种服务响应方法及其终端 | |
US20200021537A1 (en) | Resource allocation and provisioning in a multi-tier edge-cloud virtualization environment | |
CN105429811B (zh) | 网络管理系统及方法 | |
CN109617878A (zh) | 一种蜜网的组建方法及系统、计算机可读存储介质 | |
CN109962855A (zh) | 一种web服务器的限流方法、限流装置及终端设备 | |
CN108540568A (zh) | 计算能力共享方法及智能设备 | |
CN109189509A (zh) | 接口的调用方法、接口调用的响应方法及服务器 | |
CN109819023A (zh) | 分布式事务处理方法及相关产品 | |
CN109995787A (zh) | 一种数据处理方法及相关设备 | |
CN109885612A (zh) | 区块链智能合约的同步生效方法及装置 | |
CN110417888A (zh) | 流量控制方法、流量控制装置和电子设备 | |
CN109348434A (zh) | 一种场景信息的发送方法、发送装置及终端设备 | |
CN109308217A (zh) | 一种时效任务的数据存储方法及装置 | |
CN105933270B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |