基于区块链的智能合约调用方法、装置及设备转让专利
申请号 : CN202111478999.7
文献号 : CN113888173B
文献日 : 2022-04-26
发明人 : 郭锐 , 李辉忠 , 范瑞彬 , 张开翔
申请人 : 深圳前海微众银行股份有限公司
摘要 :
权利要求 :
1.一种基于区块链的智能合约调用方法,其特征在于,所述方法应用于所述区块链的任一节点,所述节点中设置有用于对交易信息进行调度分配的调度器、用于执行智能合约的执行器和用于存储智能合约的存储单元,所述方法包括:接收客户端发送的交易信息,其中所述交易信息中包含所述交易信息对应的待执行的智能合约的路径信息,其中所述路径信息对应唯一的智能合约存储路径;
将接收到的各交易信息放入调度器以使所述调度器将所述各交易信息分发至不同的执行器;
通过各执行器基于各交易信息对应的待执行的智能合约的路径信息,查询存储单元以获取各交易信息对应的智能合约,其中所述存储单元中包含了按照树形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的;
通过各执行器对所述交易信息执行所述智能合约,得到执行结果;
其中所述存储单元中包含了按照树形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的,具体为:存储单元中包含以存储表形式存储的目录资源和智能合约资源;其中每个目录资源下包含多个子资源,相同类型的智能合约资源属于同一个目录资源下最末端的子资源,智能合约资源中包含智能合约的代码段信息和状态信息。
2.根据权利要求1所述的方法,其特征在于,所述通过各执行器基于各交易信息对应的待执行的智能合约的路径信息,查询存储单元中以获取各交易信息对应的智能合约,包括:对任一交易信息对应的待执行的智能合约的路径信息进行拆分,得到所述路径信息对应的各存储表名称;
根据所述各存储表名称依次访问存储单元中对应的各存储表,以获取所述路径信息对应的智能合约资源。
3.根据权利要求2所述的方法,其特征在于,所述根据所述各存储表名称依次访问存储单元中对应的各存储表,以获取所述路径信息对应的智能合约资源,包括:访问缓存,从所述缓存中依次读取名称为所述各存储表名称的各存储表;若能够从所述缓存中读取到各存储表,则从所述缓存中按照所述各存储表名称依次查询各存储表直至确定智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取所述路径信息对应的智能合约资源;
若无法从所述缓存中读取各存储表,则从区块链的存储单元中按照所述各存储表名称依次查询各存储表直至确定智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取所述路径信息对应的智能合约资源。
4.根据权利要求3所述的方法,其特征在于,所述按照所述各存储表名称依次查询各存储表直至确定智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取所述路径信息对应的智能合约资源,包括:按照各存储表名称在所述路径信息中的级别,逐个依次查询各存储表名称对应的存储表以获取智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取所述路径信息对应的智能合约资源。
5.根据权利要求1至4任一项所述的方法,其特征在于,还包括按照树形文件目录结构存储各智能合约的步骤,如下:
通过创建或查询,确定任一目录资源;
在所述目录资源中写入待创建的智能合约。
6.根据权利要求5所述的方法,其特征在于,所述通过创建或查询,确定任一目录资源,包括:
根据用户的输入生成任一目录资源的存储表名称;
判断所述目录资源的存储表名称是否已存在;
若不存在,则创建所述目录资源,其中所述目录资源包括目录的元信息;
若存在,则判断所述存储表名称是否为智能合约资源的表名,若不是,则返回所述目录资源已存在的提示。
7.根据权利要求5所述的方法,其特征在于,所述在所述目录资源中写入待创建的智能合约,包括:
根据用户的输入生成任一智能合约的存储表名称;
判断所述智能合约的存储表名称是否已存在;
若不存在,则获取所述目录资源,并启动虚拟机执行所述智能合约,若执行成功,则在所述目录资源中写入所述智能合约的代码段信息和状态信息。
8.一种基于区块链的智能合约调用装置,其特征在于,所述装置应用于所述区块链的任一节点,所述节点中设置有用于对交易信息进行调度分配的调度器、用于执行智能合约的执行器和用于存储智能合约的存储单元,所述装置包括:接收模块,用于接收客户端发送的交易信息,其中所述交易信息中包含所述交易信息对应的待执行的智能合约的路径信息,其中所述路径信息对应唯一的智能合约存储路径;
调度模块,用于将接收到的各交易信息放入调度器以使所述调度器将所述各交易信息分发至不同的执行器;
调度模块,用于通过各执行器基于各交易信息对应的待执行的智能合约的路径信息,查询存储单元以获取各交易信息对应的智能合约,其中所述存储单元中包含了按照树形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的;
执行模块,用于通过各执行器对所述交易信息执行所述智能合约,得到执行结果;
其中所述存储单元中包含了按照树形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的,具体为:存储单元中包含以存储表形式存储的目录资源和智能合约资源;其中每个目录资源下包含多个子资源,相同类型的智能合约资源属于同一个目录资源下最末端的子资源,智能合约资源中包含智能合约的代码段信息和状态信息。
9.一种服务设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求
1至7任一项所述的基于区块链的智能合约调用方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的基于区块链的智能合约调用方法。
说明书 :
基于区块链的智能合约调用方法、装置及设备
技术领域
背景技术
全性、实时性要求,也对智能合约技术提出了更高的要求。
Service,合约命名服务)表,该CNS表格中存储了智能合约名称与智能合约地址的映射关
系,当执行器需要对得到的某个交易执行智能合约时,会访先问该CNS表格以查询对应的智
能合约地址,并从智能合约地址获取对应的智能合约,执行交易。
智能合约地址的映射关系),当用户对某个执行器中的CNS表中的智能合约相关信息进行了
修改时,就必须将修改的CNS表的数据同步至其他的所有执行器,否则其他执行器会执行错
误的智能合约,因此导致执行器之间需要频繁的进行CNS表数据的同步,影响区块链并行执
行多个智能合约的处理效率。
发明内容
约的处理效率的问题。
用于执行智能合约的执行器和用于存储智能合约的存储单元,所述方法包括:
存储的各智能合约、且各个智能合约的存储路径是唯一的;
存储的目录资源和智能合约资源;其中每个目录资源下包含多个子资源,相同类型的智能
合约资源属于同一个目录资源下最末端的子资源,智能合约资源中包含智能合约的代码段
信息和状态信息。
应的待执行的智能合约的路径信息进行拆分,得到所述路径信息对应的各存储表名称;根
据所述各存储表名称依次访问存储单元中对应的各存储表,以获取所述路径信息对应的智
能合约资源。
取名称为所述各存储表名称的各存储表;若能够从所述缓存中读取到各存储表,则从所述
缓存中按照所述各存储表名称依次查询各存储表直至确定智能合约资源对应的存储表,以
从智能合约资源对应的存储表中获取所述路径信息对应的智能合约资源;若无法从所述缓
存中读取各存储表,则从区块链的存储单元中按照所述各存储表名称依次查询各存储表直
至确定智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取所述路径信息
对应的智能合约资源。
能合约资源,包括:按照各存储表名称在所述路径信息中的级别,逐个依次查询各存储表名
称对应的存储表以获取智能合约资源对应的存储表,以从智能合约资源对应的存储表中获
取所述路径信息对应的智能合约资源。
存在,则判断所述存储表名称是否为智能合约资源的表名,若不是,则返回所述目录资源已
存在的提示。
在;若不存在,则获取所述目录资源,并启动虚拟机执行所述智能合约,若执行成功,则在所
述目录资源中写入所述智能合约的代码段信息和状态信息。
用于执行智能合约的执行器和用于存储智能合约的存储单元,所述装置包括:
径;
形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的;
及第一方面各种可能的设计所述的基于区块链的智能合约调用方法。
径信息对应唯一的智能合约存储路径;区块链各节点的存储单元中存储了包含了按照树形
文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的,区块链节点的各
执行器根据路径信息访问存储单元按照唯一的智能合约存储路径获取对应的智能合约,并
根据智能合约执行交易信息,得到执行结果。由于存储单元中按照树形文件目录结构存储
的各智能合约在被不同的执行器调度时,是唯一的且是相互隔离的,因此不需要各执行器
在并行执行交易时进行智能合约相关的CNS表数据的同步,提升了区块链在对交易信息并
行执行智能合约的效率。
附图说明
开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以
根据这些附图获得其他的附图。
具体实施方式
本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员
在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
上一块的哈希值,通过这种方式组成链式的数据结构。一个区块由块头和块体组成,其中块
头定义包括该区块高度、上一个区块的哈希值等重要字段,而块体主要存储交易数据。区块
链利用密码学的方式保证数据传输和访问的安全,并利用链式结构保证链上数据不可被篡
改。
会被自动执行,且结果不能被否认。在区块链应用中,当部署智能合约的交易在大多数节点
中达成共识,就可以认为智能合约已嵌入区块链系统中。
拟机作为智能合约代码的执行器执行智能合约的代码,修改当前区块链上的数据(状态)。
被修改的数据,会被共识,确保一致性。
软件开发工具包),用于发起交易,并产生交易信息。其中客户端101,可以是个人电脑、移动
终端或其他服务器等设备。
制。区块链节点102,用于接收客户端发送的交易信息,并获取交易信息对应的智能合约,基
于智能合约利用以太坊虚拟机(执行器)执行交易信息,得到执行结果,对执行结果过在区
块链中进行共识,共识完成后进行区块链上链存储。
个交易执行智能合约时,会访先问该CNS表格以查询对应的智能合约地址,并从智能合约地
址获取对应的智能合约,执行交易。但是,若区块链需要对交易并行执行处理时,则需要区
块链的多个执行器并行执行智能合约,当用户对某个执行器中的CNS表中的智能合约相关
信息进行了修改时,就必须将修改的CNS表的数据同步至其他的所有执行器,否则其他执行
器会执行错误的智能合约,因此导致执行器之间需要频繁的进行CNS表数据的同步,影响区
块链并行执行多个智能合约的处理效率。
块链各节点的存储单元中存储了包含了按照树形文件目录结构存储的各智能合约、且各个
智能合约的存储路径是唯一的,区块链节点的各执行器根据路径信息访问存储单元按照唯
一的智能合约存储路径获取对应的智能合约,并根据智能合约执行交易信息,得到执行结
果。由于存储单元中按照树形文件目录结构存储的各智能合约在被不同的执行器调度时,
是唯一的且是相互隔离的,因此不需要各执行器在并行执行交易时进行CNS表数据的同步,
使得区块链在对交易信息并行执行智能合约时效率得到大大提升。
调度分配的调度器、用于执行智能合约的执行器和用于存储智能合约的存储单元,上述方
法详述如下:
客户端完成交易,客户端将购买商品的交易信息发送至区块链的任一节点。在本实施例中,
区块链的任一节点为区块链中的共识节点中的任一节点。领导节点由区块链的共识节点中
选举产生。任一共识节点既可以是领导节点,也可以是副本节点。
信息。其中,路径信息对应唯一的智能合约存储路径,根据该路径信息通过唯一的智能合约
存储路径获取对应的智能合约。
行器。
构存储的各智能合约、且各个智能合约的存储路径是唯一的。
录资源和智能合约资源;其中每个目录资源下包含多个子资源,相同类型的智能合约资源
属于同一个目录资源下最末端的子资源,智能合约资源中包含智能合约的代码段信息和状
态信息。
“apps”、“tables”均为目录资源,分别为系统类目录资源、用户类目录资源、应用类目录资
源、表类目录资源。其中,每个目录资源中包括多个子资源,该子资源可以是当前目录资源
的下一级的目录资源,也可以直接是智能合约资源。如图3中所示的“sys”中包含的“sys1”
和“sys2”的子资源为目录资源的下一级的目录资源,“sys1”和“sys2”中各包含两个系统智
能合约资源,其中,“sys1”中包含“系统智能合约资源1”、“系统智能合约资源2”;“sys2”中
包含“系统智能合约资源3”、“系统智能合约资源4”。其他的“usr”、“apps”、“tables”均为目
录资源,其对应的子资源直接为智能合约资源;其中,“usr”中包含“用户智能合约资源1”、
“用户智能合约资源2”;“apps”中包含“应用智能合约资源1”、“应用智能合约资源2”;
“tables”中包含“表智能合约资源1”、“表智能合约资源2”。在本实施例中,上述各“资源”可
以是以文件或表格的形式存储,对此本公开不作任何限制。
tables”的存储表为目录资源,其包含的智能合约资源的存储表名称分别为“/tables/
table1”和“/tables/table2”。其中,存储表名称为“/tables”的存储表描述了智能合约资
源的元信息,存储表名称为“/tables/table1”的存储表和“/tables/table2”的存储表中分
别包含了表智能合约“table1”和“table2”的数据。
信息对应的智能合约资源。
apps”为目录资源的存储表名称,/apps/Hello1”为智能合约资源的存储表名称。
表;若能够从缓存中读取到各存储表,则从缓存中按照各存储表名称依次查询各存储表直
至确定智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取路径信息对应
的智能合约资源;若无法从缓存中读取各存储表,则从区块链的存储单元中按照各存储表
名称依次查询各存储表直至确定智能合约资源对应的存储表,以从智能合约资源对应的存
储表中获取路径信息对应的智能合约资源。
储表名称在路径信息中的级别,逐个依次查询各存储表名称对应的存储表以获取智能合约
资源对应的存储表,以从智能合约资源对应的存储表中获取路径信息对应的智能合约资
源。
就会缓存智能合约对应的数据,智能合约对应的数据包括智能合约所存储路径对应的各存
储表。
apps/Hello1”的存储表和“/tables/table1”的存储表,其中“/apps/Hello1”的存储表和“/
tables/table1”的存储表中分别包含了“Hello1”智能合约和“table1”智能合约的智能合
约资源。
相较于直接从缓冲读取耗时较长。
的,使得执行器加载的智能合约具有唯一性。此外,执行器从存储单元中加载智能合约时,
不同路径的智能合约可以被不同的执行器执行,使得不同的智能合约是相互隔离的。
行器加载的目录资源是不同的,从而达到目录资源级别的智能合约的隔离性。
息的执行结果的共识后,将该交易信息的执行结果在区块链中进行上链存储。
包含了按照树形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的,
区块链节点的各执行器根据路径信息访问存储单元按照唯一的智能合约存储路径获取对
应的智能合约,并根据智能合约执行交易信息,得到执行结果。由于存储单元中按照树形文
件目录结构存储的各智能合约在被不同的执行器调度时,是唯一的且是相互隔离的,因此
不需要各执行器在并行执行交易时进行智能合约相关的CNS表数据的同步,提升了区块链
在对交易信息并行执行智能合约的效率。
回目录创建成功的提示;
示;若该存储表类型为智能合约资源,则返回智能合约资源已存在的提示。
并将虚拟机执行后的合约代码段、ABI、状态数据等写入合约表,最后在父目录的数据表中
记录新部署的合约的元信息。
部署成功的提示;若执行失败,则返回执行失败的提示;
源的存储表,查看该路径下的目标资源是智能合约资源还是目录资源。如果是智能合约资
源,则返回智能合约的元信息;如果是目录资源类型,则返回目录资源的元信息,并返回该
路径下所有子资源(其中包含了所有的智能合约的元信息)。
述节点中设置有用于对交易信息进行调度分配的调度器、用于执行智能合约的执行器和用
于存储智能合约的存储单元,所述装置包括:接收模块601、调度模块602、处理模块603和执
行模块604。
约存储路径;
照树形文件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的;
件目录结构存储的各智能合约、且各个智能合约的存储路径是唯一的,区块链节点的各执
行器根据路径信息访问存储单元按照唯一的智能合约存储路径获取对应的智能合约,并根
据智能合约执行交易信息,得到执行结果。由于存储单元中按照树形文件目录结构存储的
各智能合约在被不同的执行器调度时,是唯一的且是相互隔离的,因此不需要各执行器在
并行执行交易时进行智能合约相关的CNS表数据的同步,提升了区块链在对交易信息并行
执行智能合约的效率。
表形式存储的目录资源和智能合约资源;其中每个目录资源下包含多个子资源,相同类型
的智能合约资源属于同一个目录资源下最末端的子资源,智能合约资源中包含智能合约的
代码段信息和状态信息。
根据所述各存储表名称依次访问存储单元中对应的各存储表,以获取所述路径信息对应的
智能合约资源。
的过程,包括:访问缓存,从所述缓存中依次读取名称为所述各存储表名称的各存储表;若
能够从所述缓存中读取到各存储表,则从所述缓存中按照所述各存储表名称依次查询各存
储表直至确定智能合约资源对应的存储表,以从智能合约资源对应的存储表中获取所述路
径信息对应的智能合约资源;若无法从所述缓存中读取各存储表,则从区块链的存储单元
中按照所述各存储表名称依次查询各存储表直至确定智能合约资源对应的存储表,以从智
能合约资源对应的存储表中获取所述路径信息对应的智能合约资源。
的存储表中获取所述路径信息对应的智能合约资源的过程,包括:按照各存储表名称在所
述路径信息中的级别,逐个依次查询各存储表名称对应的存储表以获取智能合约资源对应
的存储表,以从智能合约资源对应的存储表中获取所述路径信息对应的智能合约资源。
在,则创建所述目录资源,其中所述目录资源包括目录的元信息;若存在,则判断所述存储
表名称是否为智能合约资源的表名,若不是,则返回所述目录资源已存在的提示。
在,则获取所述目录资源,并启动虚拟机执行所述智能合约,若执行成功,则在所述目录资
源中写入所述智能合约的代码段信息和状态信息。
智能合约调用方法。
仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者
可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之
间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连
接,可以是电性,机械或其它的形式。
网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案。
单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本公开各个实施例所述
方法的部分步骤。
集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是
微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以
直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
体系结构(Extended Industry Standard Architecture,简称EISA)总线等。总线可以分为
地址总线、数据总线、控制总线等。为便于表示,本公开附图中的总线并不限定仅有一根总
线或一种类型的总线。
只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,
磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)
中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或
者光盘等各种可以存储程序代码的介质。
然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进
行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术
方案的范围。