CN113360252B - 基于容器的加速智能合约执行方法、装置及存储介质 - Google Patents
基于容器的加速智能合约执行方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113360252B CN113360252B CN202110916556.5A CN202110916556A CN113360252B CN 113360252 B CN113360252 B CN 113360252B CN 202110916556 A CN202110916556 A CN 202110916556A CN 113360252 B CN113360252 B CN 113360252B
- Authority
- CN
- China
- Prior art keywords
- contract
- running
- container
- sandbox
- management module
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 244000035744 Hura crepitans Species 0.000 claims abstract description 113
- 230000008569 process Effects 0.000 claims abstract description 55
- 230000004044 response Effects 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 53
- 238000004891 communication Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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
- 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/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请关于一种基于容器的加速智能合约执行方法、装置及存储介质。其中方法包括:创建一个容器,启动容器管理模块进行容器相关设置以及创建二级缓存;所述容器管理模块接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,并为每个合约运行沙盒创建一级缓存;所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端。本申请只需启动一个容器,在容器中为每个合约创建彼此隔离的合约运行沙盒,实现一个容器并行批量运行多个合约,以降低多容器启动的成本。更进一步的,在合约运行沙盒以及容器管理模块分别加入缓存,有效的提高了合约运行速度。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及基于容器的加速智能合约执行方法、装置及存储介质。
背景技术
Fabric是由IBM贡献的超级账本框架。它是一个利用现有成熟的技术来组合而成的一个区块链技术的实现。它具有强大的容器技术,来承载各种主流语言来编写的智能合约。
Fabric在执行智能合约时,动态地为每个合约创建一个新的docker容器,合约在容器中运行完毕后,删除这个容器。针对Fabric运行合约的方案,启动成本高,同时合约所需数据都必须从节点端获取,时间成本高。
发明内容
本申请提供一种基于容器的加速智能合约执行方法、装置及存储介质,以至少解决相关技术中容器启动成本高,且合约执行慢的问题。本申请的技术方案如下:
根据本申请实施例的第一方面,提供一种基于容器的加速智能合约执行方法,包括:
创建一个容器,启动容器管理模块进行容器相关设置以及创建二级缓存;其中,所述二级缓存用于记录当前区块内所有交易的读写集或者容器周期内所有交易的读写集;
所述容器管理模块接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,并为每个合约运行沙盒创建一级缓存,通知合约运行沙盒运行对应的合约;其中,所述一级缓存用于记录一笔合约在运行期间的读写集;
所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,同时处理合约运行沙盒。
在本申请的一些实施例中,所述二级缓存跟区块相关联,从节点端发出的一批合约属于一个区块,在一批合约执行过程中,二级缓存不断更新,待全部合约执行结束后,二级缓存重置;或者,所述二级缓存跟容器周期相关,在容器存在期间,二级缓存一直存在。
在本申请的一些实施例中,所述合约运行沙盒执行合约进程时,按照如下顺序获取所需数据:
判断所述合约运行沙盒对应的一级缓存中是否存在所需数据;
响应于所述合约运行沙盒对应的一级缓存中存在所需数据,获取所需数据并返回给合约运行进程;
响应于所述合约运行沙盒对应的一级缓存中不存在所需数据,判断所述容器管理模块的二级缓存中是否存在所需数据;
响应于所述容器管理模块的二级缓存中存在所需数据,获取所需数据并返回合约运行进程;
响应于所述容器管理模块的二级缓存中不存在所需数据,通过所述容器管理模块向节点端发送请求,获取到所需数据后依次返回到二级缓存、一级缓存、合约运行进程;
响应于所述合约运行沙盒执行合约进程需要进行更新增加数据时,直接写入所述合约运行沙盒对应的一级缓存。
在本申请的一些实施例中,所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端;包括:
响应于一笔合约运行结束时,所述合约运行沙盒返回合约运行结果和一级缓存中的读写集到所述容器管理模块;所述容器管理模块合并该笔合约的读写集到二级缓存,并进行判断:
响应于合并时与二级缓存的读写集不发生冲突,直接合并,并更新合约运行状态;
响应于合并时与二级缓存的读写集发生冲突,重新运行这笔合约,不合并读写集。
在本申请的一些实施例中,所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,包括:当所有合约运行结束后,所述容器管理模块将所有合约运行结果以及二级缓存中的读写集返回给节点端,并根据预设条件重置或者不重置二级缓存。
在本申请的一些实施例中,所述合约运行请求包括合约数据,所述合约数据包括合约可执行文件和合约运行参数,或者包括源码;当所述合约管理模块为每个合约运行请求分配一个合约运行沙盒之后,将合约数据和合约运行沙盒绑定。
在本申请的一些实施例中,所述处理合约运行沙盒,包括:
响应于所述合约运行沙盒为所述容器管理模块在进行容器相关设置时创建,所述容器管理模块在将合约运行结果返回节点端时,重置合约运行沙盒的内部数据;或者,
响应于所述合约运行沙盒为所述容器管理模块在接收到合约运行请求时创建,所述容器管理模块在将合约运行结果返回节点时,直接清除合约运行沙盒。
根据本申请实施例的第二方面,提供一种基于容器的智能合约执行装置,包括:
创建模块,创建一个容器,启动容器管理模块进行容器相关设置以及创建二级缓存;其中,所述二级缓存用于记录当前区块内所有交易的读写集或者容器周期内所有交易的读写集;
所述容器管理模块,用于在接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,并为每个合约运行沙盒创建一级缓存,通知合约运行沙盒运行对应的合约;其中,所述一级缓存用于记录一笔合约在运行期间的读写集;
所述容器管理模块,还用于处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,同时处理合约运行沙盒。
根据本申请实施例的第三方面,提供另一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第一方面所述的基于容器的加速智能合约执行方法。
根据本申请实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由基于容器的智能合约执行装置的处理器执行时,使得所述基于容器的智能合约执行装置能够执行上述第一方面所述的基于容器的加速智能合约执行方法。
本申请的实施例提供的技术方案至少带来以下有益效果:
只需创建一个镜像文件,只需启动一个容器。在容器中,为每个合约创建彼此隔离的合约运行沙盒,实现一个容器可以并行,批量运行多个合约,以此降低多容器启动的成本。同时,将合约运行限制在同一容器的进程范围,以此来降低通信成本。更进一步的,在合约运行沙盒以及容器管理模块分别加入缓存,有效的提高了合约运行速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是根据一示例性实施例示出的一种基于容器的加速智能合约执行方法的流程图。
图2是根据一示例性实施例示出的容器内部结构框图。
图3是根据一示例性实施例示出的合约运行时获取数据的流程图。
图4是根据一示例性实施例示出的一种基于容器的智能合约执行装置框图。
图5是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是本申请的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的基于容器的加速智能合约执行方法的流程图,如图1所示,所述方法包括以下步骤。
S101,创建一个容器,启动容器管理模块进行容器相关设置以及创建二级缓存;
其中,所述二级缓存用于记录当前区块内所有交易的读写集或者容器周期内所有交易的读写集;
读写集:在区块链中,数据一般以key-value的形式存储。每一笔交易运行时,大多都会用到已经存在的数据,并且会储存、更新一些新的数据到区块链上。在交易运行时,记录交易读取和更改的数据,即为读写集。
在一个实施例中,在节点端需要运行智能合约的时候,会创建一个容器,启动容器管理模块进行容器相关设置,至少包括:
创建控制组件来限制合约运行能力,包括但不限于通过创建CGroup来控制进程CPU, 内存等表现。
其中,Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。
启动网络服务,监听节点端发送的合约运行请求,其中,所述合约运行请求包括合约数据,所述合约数据主要包括合约可执行文件和合约运行参数,或者包括源码(源码会在沙盒中进行编译)。
其中,二级缓存可以有以下两种分类:
二级缓存跟区块相关:从节点端发过来的一批交易,这些交易属于一个区块。在一批交易执行过程中,二级缓存不断更新。待全部交易结束后,二级缓存重置。或者,
二级缓存跟容器周期相关:在容器存在期间,二级缓存一直存在。可以用自己设置的缓存,相关缓存插件,或者是状态数据库来实现。
可以根据具体的情况选择二级缓存的种类,从而决定二级缓存周期。
在一个实施例中,可选择在设置时创建合约运行沙盒,形成沙盒池,等待合约运行请求的合约数据;或者,在一个实施例中,也可以先不创建合约运行沙盒,在合约运行请求到来时,再创建合约运行沙盒。合约运行沙盒的创建时间选择可以根据具体的情况做适当的调整。
所述合约运行沙盒之间彼此隔离,每个所述合约运行沙盒以进程为单位,通过进程资源管理技术,使合约运行沙盒拥有以下特点:
1.有限的读写范围:可以但不限于,通过为进程设置不同的UID(UserIdentification用户身份证明),GID(Group Identification群体身份),其中UID等于GID;为每个进程创建独立的文件目录,设置其用户权限为700(类似于Andriod系统为每个应用程序分配一个UID)。同时对于公共文件系统增加权限:例如,将/tmp文件权限改为755等。
2.没有网络能力:可以但不限于:
1)为进程创建新的Network Namespace网络命名空间,默认情况下,新的进程没有任何网络能力;
2)采用防火墙策略,封锁该进程的网络能力;
3)采用防火墙 + UID/GID,封锁该进程的网络能力。
3.沙盒之间不可通信:可以但不限于:
智能合约执行系统为进程创建新的IPC Namespace,结合用户权限,禁止沙盒之间的通信。
其中,Ipc namespace的作用是使划分到不同ipc namespace的进程组通信上隔离,无法通过消息队列、共享内存、信号量方式通信,但没有对所述所有IPC通信方式隔离。
其中,合约管理模块拥有读写其他合约运行沙盒的数据的能力,比如,以Root身份运行。
S102,所述容器管理模块接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,并为每个合约运行沙盒创建一级缓存,通知合约运行沙盒运行对应的合约;图2所示为容器内部结构框图。
其中,所述一级缓存用于记录一笔合约在运行期间的读写集。
合约管理模块为每个合约运行请求分配一个合约运行沙盒,将合约数据和合约运行沙盒绑定,例如,将合约数据放在合约运行沙盒对应的文件目录下。
在一个实施例中,当容器管理模块给合约运行沙盒分配了一笔交易后,同时给每个沙盒创建一级缓存,用以记录这笔交易在运行期间的读写集,图3所示为合约运行时获取数据的流程图,即合约运行沙盒执行合约进程时按照如下顺序获取所需数据:
判断所述合约运行沙盒对应的一级缓存中是否存在所需数据;
响应于所述合约运行沙盒对应的一级缓存中存在所需数据,获取所需数据并返回给合约运行进程;
响应于所述合约运行沙盒对应的一级缓存中不存在所需数据,判断所述容器管理模块的二级缓存中是否存在所需数据;
响应于所述容器管理模块的二级缓存中存在所需数据,获取所需数据并返回合约运行进程;
响应于所述容器管理模块的二级缓存中不存在所需数据,通过所述容器管理模块向节点端发送请求,获取到所需数据后依次返回到二级缓存、一级缓存、合约运行进程;
响应于所述合约运行沙盒执行合约进程增加数据时,直接写入所述合约运行沙盒对应的一级缓存。
其中,在合约运行期间,利用进程间通信实现容器管理模块和合约执行进程的通信。例如,可以通过UNIX DOMAIN SOCKET,共享内存等方式进行进程间通信。
其中,UNIX DOMAIN SOCKET 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信。合约运行时如果需要相关数据,则向容器管理模块发出请求,容器管理模块向节点端发出请求。待节点端在链上获取到相关数据后,返回给容器管理模块,容器管理模块返回给正在运行的合约执行进程。
S103,所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,同时处理合约运行沙盒。
在一个实施例中,所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端;包括:
响应于一笔合约运行结束时,所述合约运行沙盒返回合约运行结果和一级缓存中的读写集到所述容器管理模块;所述容器管理模块合并该笔合约的读写集到二级缓存,并进行判断:
响应于合并时与二级缓存的读写集不发生冲突,直接合并,并更新合约运行状态;
响应于合并时与二级缓存的读写集发生冲突,重新运行这笔合约,不合并读写集。
在一个实施例中,根据合约运行沙盒的创建时间不同,将合约运行结果返回节点端的同时对合约运行沙盒的处理也不同,具体为:
响应于所述合约运行沙盒为容器管理模块在容器相关设置时创建,容器管理模块在将合约运行结果返回节点端时,将重置合约运行沙盒的内部数据;或者,
响应于所述合约运行沙盒为容器管理模块在接收到合约运行请求时创建,容器管理模块在将合约运行结果返回节点时,将直接清除合约运行沙盒。
本发明基于进程资源管理技术,在一个容器中,以进程为单位,创建多个相互隔离的合约运行沙盒,从而实现合约并行,批量运算。
图4是根据一示例性实施例示出的一种基于容器的智能合约执行装置框图。参照图4,该装置包括创建模块310和容器管理模块320。
具体地,创建模块310,创建一个容器,启动容器管理模块320进行容器相关设置以及创建二级缓存;其中,所述二级缓存用于记录当前区块内所有交易的读写集或者容器周期内所有交易的读写集;
所述容器管理模块320,用于在接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,且所述容器管理模块为每个合约运行沙盒创建一级缓存,并通知合约运行沙盒运行对应的合约;其中,所述一级缓存用于记录一笔合约在运行期间的读写集;
所述容器管理模块320,还用于处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,同时处理合约运行沙盒。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备400可以是服务器,计算机等。
参照图5,电子设备400可以包括以下一个或多个组件:处理器410,存储器420,I/O接口430,以及通信接口440。
处理器410通常控制电子设备400的整体操作,诸如与显示,数据通信以及记录操作相关联的操作。处理器410执行指令以完成上述的方法的全部或部分步骤。
存储器420被配置为存储各种类型的数据以支持在电子设备400的操作。这些数据的示例包括用于在电子设备400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器420可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
I/O接口430为处理器410和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
通信接口440被配置为便于电子设备400和其他设备之间有线或无线方式的通信。电子设备400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信接口440经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信接口440还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述智能合约执行方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器420,上述指令可由电子设备400的处理器410执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备400的处理器执行时,使得电子设备400能够执行上述实施例所述的基于容器的加速智能合约执行方法。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
Claims (10)
1.一种基于容器的加速智能合约执行方法,其特征在于,包括:
创建一个容器,启动容器管理模块进行容器相关设置以及创建二级缓存;其中,所述二级缓存用于记录当前区块内所有交易的读写集或者容器周期内所有交易的读写集;
所述容器管理模块接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,并为每个合约运行沙盒创建一级缓存,通知合约运行沙盒运行对应的合约;其中,所述一级缓存用于记录一笔合约在运行期间的读写集, 其中,所述合约运行沙盒是通过进程资源管理技术实现的,所述合约运行沙盒之间彼此隔离,每个所述合约运行沙盒以进程为单位;所述合约运行请求包括合约数据,所述合约数据包括合约可执行文件和合约运行参数,或者包括源码;当所述合约管理模块为每个合约运行请求分配一个合约运行沙盒之后,将合约数据和合约运行沙盒绑定;
所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,同时处理合约运行沙盒。
2.如权利要求1所述的方法,其特征在于,所述二级缓存跟区块相关联,从节点端发出的一批合约属于一个区块,在一批合约执行过程中,二级缓存不断更新,待全部合约执行结束后,二级缓存重置;或者,所述二级缓存跟容器周期相关,在容器存在期间,二级缓存一直存在。
3.如权利要求1所述的方法,其特征在于,所述合约运行沙盒执行合约进程时,按照如下顺序获取所需数据:
判断所述合约运行沙盒对应的一级缓存中是否存在所需数据;
响应于所述合约运行沙盒对应的一级缓存中存在所需数据,获取所需数据并返回给合约运行进程;
响应于所述合约运行沙盒对应的一级缓存中不存在所需数据,判断所述容器管理模块的二级缓存中是否存在所需数据;
响应于所述容器管理模块的二级缓存中存在所需数据,获取所需数据并返回合约运行进程;
响应于所述容器管理模块的二级缓存中不存在所需数据,通过所述容器管理模块向节点端发送请求,获取到所需数据后依次返回到二级缓存、一级缓存、合约运行进程;
响应于所述合约运行沙盒执行合约进程增加数据时,直接写入所述合约运行沙盒对应的一级缓存。
4.如权利要求1所述的方法,其特征在于,所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端;包括:
响应于一笔合约运行结束时,所述合约运行沙盒返回合约运行结果和一级缓存中的读写集到所述容器管理模块;所述容器管理模块合并该笔合约的读写集到二级缓存,并进行判断:
响应于合并时与二级缓存的读写集不发生冲突,直接合并,并更新合约运行状态;
响应于合并时与二级缓存的读写集发生冲突,重新运行这笔合约,不合并读写集。
5.如权利要求1所述的方法,其特征在于,所述容器管理模块处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,包括:
响应于所有合约运行结束后,所述容器管理模块将所有合约运行结果以及二级缓存中的读写集返回给节点端,并根据预设条件重置或者不重置二级缓存。
6.如权利要求1所述的方法,其特征在于,所述合约运行请求包括合约数据,所述合约数据包括合约可执行文件和合约运行参数,或者包括源码;当所述合约管理模块为每个合约运行请求分配一个合约运行沙盒之后,将合约数据和合约运行沙盒绑定。
7.如权利要求1所述的方法,其特征在于,所述处理合约运行沙盒,包括:
响应于所述合约运行沙盒为所述容器管理模块在进行容器相关设置时创建,所述容器管理模块在将合约运行结果返回节点端时,重置合约运行沙盒的内部数据;或者,
响应于所述合约运行沙盒为所述容器管理模块在接收到合约运行请求时创建,所述容器管理模块在将合约运行结果返回节点时,将直接清除合约运行沙盒。
8.一种基于容器的加速智能合约执行装置,其特征在于,包括:
创建模块,创建一个容器,启动容器管理模块进行容器相关设置以及创建二级缓存;其中,所述二级缓存用于记录当前区块内所有交易的读写集或者容器周期内所有交易的读写集;
所述容器管理模块,用于在接收到节点端发送的合约运行请求后,为每个合约运行请求分配一个合约运行沙盒,并为每个合约运行沙盒创建一级缓存,通知合约运行沙盒运行对应的合约;其中,所述一级缓存用于记录一笔合约在运行期间的读写集, 其中,所述合约运行沙盒是通过进程资源管理技术实现的,所述合约运行沙盒之间彼此隔离,每个所述合约运行沙盒以进程为单位,所述合约运行请求包括合约数据,所述合约数据包括合约可执行文件和合约运行参数,或者包括源码;当所述合约管理模块为每个合约运行请求分配一个合约运行沙盒之后,将合约数据和合约运行沙盒绑定;
所述容器管理模块,还用于处理合约运行沙盒返回的合约运行结果,并将合约运行结果返回节点端,同时处理合约运行沙盒。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-7中任一项所述的基于容器的加速智能合约执行方法。
10.一种存储介质,当所述存储介质中的指令由处理器执行时,以实现如权利要求1-7中任一项所述的基于容器的加速智能合约执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110916556.5A CN113360252B (zh) | 2021-08-11 | 2021-08-11 | 基于容器的加速智能合约执行方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110916556.5A CN113360252B (zh) | 2021-08-11 | 2021-08-11 | 基于容器的加速智能合约执行方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360252A CN113360252A (zh) | 2021-09-07 |
CN113360252B true CN113360252B (zh) | 2021-11-23 |
Family
ID=77523026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110916556.5A Active CN113360252B (zh) | 2021-08-11 | 2021-08-11 | 基于容器的加速智能合约执行方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360252B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399184A (zh) * | 2019-07-31 | 2019-11-01 | 中国工商银行股份有限公司 | 区块链中智能合约的执行方法及装置 |
CN111340470A (zh) * | 2020-02-24 | 2020-06-26 | 中国工商银行股份有限公司 | 区块链交易处理方法、节点及合约容器 |
CN111459573A (zh) * | 2020-04-01 | 2020-07-28 | 济南浪潮高新科技投资发展有限公司 | 一种智能合约执行环境的启动方法以及装置 |
CN111782305A (zh) * | 2020-07-21 | 2020-10-16 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
US11042400B1 (en) * | 2021-02-16 | 2021-06-22 | block.one | Language agnostic smart contract execution on a blockchain |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160260095A1 (en) * | 2015-03-02 | 2016-09-08 | Dell Products, Lp | Containerized Computational Task Execution Management Using a Secure Distributed Transaction Ledger |
CN109829296B (zh) * | 2019-01-29 | 2021-04-02 | 中化能源科技有限公司 | 基于联盟链的智能合约的沙箱实现方法 |
CN112579291A (zh) * | 2020-12-22 | 2021-03-30 | 北京航空航天大学 | 一种基于StateDB的智能合约并行运行系统及并行运行方法 |
-
2021
- 2021-08-11 CN CN202110916556.5A patent/CN113360252B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399184A (zh) * | 2019-07-31 | 2019-11-01 | 中国工商银行股份有限公司 | 区块链中智能合约的执行方法及装置 |
CN111340470A (zh) * | 2020-02-24 | 2020-06-26 | 中国工商银行股份有限公司 | 区块链交易处理方法、节点及合约容器 |
CN111459573A (zh) * | 2020-04-01 | 2020-07-28 | 济南浪潮高新科技投资发展有限公司 | 一种智能合约执行环境的启动方法以及装置 |
CN111782305A (zh) * | 2020-07-21 | 2020-10-16 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
US11042400B1 (en) * | 2021-02-16 | 2021-06-22 | block.one | Language agnostic smart contract execution on a blockchain |
Also Published As
Publication number | Publication date |
---|---|
CN113360252A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10225140B2 (en) | Portable instance provisioning framework for cloud services | |
US20180316552A1 (en) | Provisioning framework for binding related cloud services | |
US8533701B2 (en) | Virtual machine image update service | |
US10712915B2 (en) | Information presentation using a client on a terminal | |
US20210173665A1 (en) | Bootstrapping Profile-Guided Compilation and Verification | |
US10445186B1 (en) | Associating a guest application within a virtual machine to create dependencies in backup/restore policy | |
WO2018072436A1 (zh) | 权限管理方法、装置及终端 | |
US10310900B2 (en) | Operating programs on a computer cluster | |
CN113360893B (zh) | 基于容器的智能合约执行方法、装置及存储介质 | |
CN107368353B (zh) | 一种实现虚拟机内存热添加的方法和装置 | |
CN110909373A (zh) | 一种访问控制方法、设备、系统及存储介质 | |
KR20220083838A (ko) | 미러 이미지 파일을 생성하는 방법 및 장치, 그리고 컴퓨터로 판독 가능한 저장 매체 | |
CN112000439A (zh) | 一种实现云原生应用管理虚拟机的方法 | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN113360251B (zh) | 智能合约执行与跨合约调用方法、装置及存储介质 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN112529711B (zh) | 基于区块链虚拟机复用的交易处理方法及装置 | |
US20240028377A1 (en) | Generation, actuation, and enforcement of policies for resources within a distributed computing system | |
CN113360252B (zh) | 基于容器的加速智能合约执行方法、装置及存储介质 | |
US10872001B1 (en) | Big data propagation agent framework | |
CN116257466A (zh) | 内存访问方法、计算节点及相关单元与存储介质 | |
US20210256600A1 (en) | Connector leasing for long-running software operations | |
CN110543351A (zh) | 数据处理方法以及计算机设备 | |
CN113010115A (zh) | 区块链节点中的数据处理方法及相关设备 | |
CN117827365A (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 |