CN113946602A - 数据查找方法、装置、设备和介质 - Google Patents

数据查找方法、装置、设备和介质 Download PDF

Info

Publication number
CN113946602A
CN113946602A CN202111255114.7A CN202111255114A CN113946602A CN 113946602 A CN113946602 A CN 113946602A CN 202111255114 A CN202111255114 A CN 202111255114A CN 113946602 A CN113946602 A CN 113946602A
Authority
CN
China
Prior art keywords
target
contract
contract metadata
metadata
virtual machine
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
Application number
CN202111255114.7A
Other languages
English (en)
Inventor
林子杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202111255114.7A priority Critical patent/CN113946602A/zh
Publication of CN113946602A publication Critical patent/CN113946602A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据查找方法、装置、设备和介质。应用于虚拟机的数据查找方法包括:接收区块链节点发送的携带合约元数据的目标扩展节;将目标扩展节中的合约元数据存储至对应的合约元数据区;通过预先配置的目标环境接口查找并读取合约元数据区中的合约元数据。本发明实施例通过区块链节点将合约元数据存储至目标扩展节,并将目标扩展节中的合约元数据存储至对应的合约元数据区;在接收到合约执行指令时,通过合约元数据区专用的目标环境接口直接查找并读取合约元数据区中的合约元数据,实现了通过目标环境接口快速访问合约元数据的效果,提高了访问和查找效率。

Description

数据查找方法、装置、设备和介质
技术领域
本发明实施例涉及区块链领域,尤其涉及一种数据查找方法、装置、设备和介质。
背景技术
目前,使用WebAssembly虚拟机作为智能合约执行环境的区块链中,合约部署时相关的合约信息和合约字节码是分开存储的(即合约信息不存在于合约字节码中),当合约执行过程中需要访问相关数据时,首先需要虚拟机实现并提供相关的环境接口,合约调用相关的环境接口从区块链存储中查找相关的数据并返回,但这种查找方式的效率较低。
发明内容
有鉴于此,本发明提供一种数据查找方法、装置、设备和存储介质,提高了数据查找效率。
第一方面,本发明实施例提供了一种数据查找方法,应用于虚拟机,包括:
接收区块链节点发送的携带合约元数据的目标扩展节;
将所述目标扩展节中的合约元数据存储至对应的合约元数据区;
在接收到合约执行指令时,通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
第二方面,本发明实施例还提供了一种数据查找方法,应用于区块链节点,包括:
按照目标格式对合约元数据进行编码得到对应的目标扩展节;
将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
第三方面,本发明实施例还提供了一种数据查找装置,应用于虚拟机,包括:
接收模块,用于接收区块链节点发送的携带合约元数据的目标扩展节;
存储模块,用于将所述目标扩展节中的合约元数据存储至对应的合约元数据区;
查找模块,用于在接收到合约执行指令时,通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
第四方面,本发明实施例还提供了一种数据查找装置,应用于区块链节点,包括:
编码模块,用于按照目标格式对合约元数据进行编码得到对应的目标扩展节;
发送模块,用于将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
第五方面,本发明实施例还提供了一种数据查找设备,该设备包括:存储器,以及一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任一实施例所述的数据查找方法。
第六方面,一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一实施例所述的数据查找方法。
本发明实施例通过区块链节点将合约元数据存储至目标扩展节,并将目标扩展节中的合约元数据存储至对应的合约元数据区;在接收到合约执行指令时,通过合约元数据区专用的目标环境接口直接查找并读取合约元数据区中的合约元数据,实现了通过目标环境接口快速访问合约元数据的效果,提高了访问和查找效率。
附图说明
图1是本发明实施例提供的一种数据查找方法的流程图;
图2是本发明实施例提供的另一种数据查找方法的流程图;
图3是本发明实施例提供的又一种数据查找方法的流程图;
图4是本发明实施例提供的一种合约部署的流程图;
图5是本发明实施例提供的一种区块链节点执行合约的流程图;
图6是本发明实施例提供的一种虚拟机执行合约的流程图;
图7是本发明实施例提供的一种虚拟机运行时的内存结构框图;
图8是本发明实施例提供的一种数据查找装置的结构框图;
图9是本发明实施例提供的另一种数据查找装置的结构框图;
图10是本发明实施例提供的一种数据查找设备的硬件结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
目前,应用于区块链中,并且用于执行智能合约的虚拟机可以包括:以太坊1.0的EVM,可执行EVM字节码;Corda的DJVM,可执行Java的class字节码;Nervos基于RISC-V的虚拟机,可执行内部指令集为RISC-V的ELF可执行文件;Fabric使用的Docker,用于执行chaincode;以太坊2.0的EWasm虚拟机和EOS等基于WebAssembly的虚拟机,可执行wasm字节码。其中WebAssembly是新兴的一种用于基于堆栈虚拟机的二进制指令格式,作为C、Rust等***编程语言的编译目标应用于浏览器中,并且,其高效、安全、指令集标准化、工具链发展快速以及可移植性高等优点被广泛应用于区块链中,作为智能合约的编译目标运行于WebAssembly虚拟机中。
基于WebAssembly虚拟机的智能合约的部署流程包括如下步骤:
合约开发:用户使用某种智能合约编程语言及相应的集成开发环境(IntegratedDevelopment Environment,IDE)编写智能合约。
合约编译:使用相应的工具链将智能合约代码编译链接成底层虚拟机对应的字节码。
合约部署:开发人员用智能合约字节码构造成交易发送到链上,校验字节码合法性并持久化存储。
合约执行:后续用户将合约调用请求封装在交易中心发到链上,触发合约的执行。
上述第4步合约执行时,通过启动WebAssembly虚拟机加载智能合约字节码来执行,虚拟机为了保证安全性和确定性,合约执行过程中如果获取外部数据(比如,合约元数据),则需要通过环境接口实现,所有外部数据和智能合约字节码分开存储(外部数据不存于字节码中),外部数据的存储方式则取决于区块链的实现,即便是一些只读的合约元数据可能也要通过较为复杂的查找才能够获取,从而导致查找效率较低。
有鉴于此,本发明实施例提供的一种数据查找方法,在合约部署时,区块链节点通过将合约元数据(只读数据)按指定的目标格式存储到WebAssembly字节码的ContractInfo节(一种自定义的Custom节)中,当合约(即字节码)被扩展后的虚拟机加载执行时,虚拟机能够解析并将ContractInfo节中的信息存放在内存中。这样做,一方面使得用户在合约执行时可以通过环境接口快速访问已经被虚拟机加载到内存中的相关数据,提高访问效率;另一方面在合约在部署时将合约元数据注入到字节码中,使得存储结构更加紧凑。
在一实施例中,图1是本发明实施例提供的一种数据查找方法的流程图,本实施例可适用于快速查找合约元数据的情况。本实施例可以由数据查找设备执行。其中,数据查找设备可以为虚拟机。如图1所示,本实施例可以包括如下步骤:
S110、接收区块链节点发送的携带合约元数据的目标扩展节。
其中,区块链节点可以称为全节点、共识节点等。可以理解为,在区块链节点为全节点的情况下,区块链节点可以下载每个区块和每个区块链交易,并对照区块链的共识规则进行检查。在实际操作过程中,一个区块链节点可以与其它的区块链节点进行数据交互。当然,区块链节点可以在服务器,也可以在计算机中实现,对此并不进行限定。其中,每个区块链节点可以对应一个或多个物理硬件设备或虚拟设备,并且,物理硬件设备或虚拟设备可以通过通信协议与区块链节点进行藕接。示例性地,虚拟设备可以为虚拟机。
其中,合约元数据指的是在合约部署时就可以确认的合约相关信息。示例性地,合约元数据可以包括:合约的哈希值(Hash值),部署合约的交易,区块号,部署部署者和签名等。可以理解为,合约元数据是只读数据,即在合约部署过程中无法进行更改的数据信息。
在实施例中,目标扩展节指的是在目标字节码的基础上进行扩展得到的内存节。在一实施例中,目标字节码包括:WebAssembly字节码;目标扩展节为一种自定义的Custom节。可以理解为,按照Custom节的标准结构规范,在目标字节码的基础上进行自定义扩展,以得到对应的目标扩展节。示例性地,在虚拟机为WebAssembly的情况下,其对应的目标字节码为WebAssembly字节码。可以理解为,通过区块链节点将合约元数据存储至目标字节码的目标扩展节中,以实现将合约元数据存在于目标字节码中的效果,从而使得存储结构更加紧凑。
S120、将目标扩展节中的合约元数据存储至对应的合约元数据区。
其中,合约元数据区指的是独立的一个内存,用于单独存储合约元数据。在实施例中,在虚拟机对接收到的智能合约进行实例化的过程中,虚拟机根据目标字节码中定义的内存节实例化对应的内存,并在合约执行过程中进行表示。可以理解为,虚拟机根据目标字节码中自定义的目标扩展节实例化成对应的合约元数据区,即在虚拟机运行过程中,新增一个额外的区域,记为合约元数据区,并在实例化合约时,将目标扩展节中的合约元数据存放至该合约元数据区。
S130、通过预先配置的目标环境接口查找并读取合约元数据区中的合约元数据。
其中,目标环境接口用于直接从虚拟机的合约元数据区读取合约元数据的接口。需要说明的是,在虚拟机执行合约的过程中,可以将环境接口链接到虚拟机实例中,即环境接口是虚拟机中合约执行时与区块链进行交互的接口(比如,修改状态,获取数据等操作均可以通过环境接口实现)。在实施例中,在配置常规环境接口的同时,配置一个目标环境接口,以用来直接从虚拟机中读取目标扩展节中的合约元数据。
可以理解为,在合约部署的过程中,区块链节点通过将合约元数据存储至目标字节码的目标扩展节中,在目标字节码被扩展后的虚拟机加载执行时,虚拟机能够解析并将目标扩展节中的合约元数据存放至对应的合约元数据区中,一方面,用户在合约执行时可以通过目标环境接口直接快速地访问合约元数据区中的合约元数据,提高了访问和查找效率,另一方面在合约部署时将合约元数据注入至目标字节码中,使得存储结构更加紧凑。
本发明实施例的技术方案,通过区块链节点将合约元数据存储至目标扩展节,并将目标扩展节中的合约元数据存储至对应的合约元数据区;在接收到合约执行指令时,通过合约元数据区专用的目标环境接口直接查找并读取合约元数据区中的合约元数据,实现了通过目标环境接口快速访问合约元数据的效果,提高了访问和查找效率。
在一实施例中,图2是本发明实施例提供的另一种数据查找方法的流程图。本实施例是在上述实施例的基础上,对数据查找方法作进一步的说明。如图2所示,本实施例中的数据查找方法包括如下步骤:
S210、接收区块链节点发送的携带合约元数据的目标扩展节。
其中,目标扩展节的配置过程,包括:通过区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节。其中,目标格式指的是目标扩展节所要求的结构规范。在实施例中,在目标字节码为WebAssembly字节码的情况下,目标扩展节为一种自定义的Custom节,即按照Custom节的规范对合约元数据进行编码,得到对应的目标扩展节。
在实施例中,通过区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节,包括:通过区块链节点对合约元数据进行拆分,得到合约元数据子集;按照目标格式对所述合约元数据子集进行编码,得到对应的目标扩展节。在实施例中,对合约元数据进行拆分的过程,可以理解为按照数据类型对合约元数据进行分类的过程,即将合约元数据中的每个数据类型的数据作为一个合约元数据子集,并按照目标格式将每个合约元数据子集存储至预先配置的空白扩展节中,以得到对应的目标扩展节。
示例性地,目标扩展节的结构可以包括如下内容:节的代码id、承载内容大小、名称的字节长度、名称和承载内容;其中,承载内容的结构可以包括如下内容:entries个数和entries;其中,entries的类型为info类型,并且,info结构包括如下内容:key的字节长度、key、名称的字节长度和名称。在实施例中,每个内容的类型是不同的,示例性地,节的代码id可以为varuint7;承载内容大小可以为varuint32,等等,对此不进行一一限定,可根据实际情况进行调整配置。
在实施例中,通过区块链节点将所述目标扩展节***至目标字节码的预设位置。其中,预设位置可以为目标字节码的最后。在实施例中,将目标扩展节***至目标字节码的最后,实现了将合约元数据和目标字节码进行合并存储的效果的同时,也保证了未增加目标扩展节的目标字节码所包含数据的完整性。
S220、对目标扩展节配置对应的目标环境接口。
其中,目标环境接口与所述合约元数据区之间建立一一访问关系。在实施例中,在虚拟机执行智能合约的过程中,虚拟机除了配置常规的环境接口之外,还对目标扩展节配置专用的目标环境接口,以直接通过目标环境接口快速访问目标扩展节中的合约元数据。
S230、根据目标扩展节实例化成对应的合约元数据区。
在实施例中,在虚拟机执行智能合约的过程中,虚拟机根据目标字节码中自定义的函数、表、全局变量和内存节,实例化为对应的内存,并在合约执行时将该内存表示出来。可以理解为,将目标字节码中的目标扩展节实例化成对应的合约元数据区。
S240、将合约元数据存储至合约元数据区。
在实施例中,在虚拟机对智能合约进行实例化时,将目标扩展节中的合约元数据存放至该合约元数据区。
S250、通过预先配置的目标环境接口访问所关联的合约元数据区。
S260、查找并读取合约元数据区中的合约元数据。
在实施例中,在虚拟机执行智能合约的过程中,可以通过目标环境接口直接访问对应的合约元数据区,并在合约元数据区查找并读取对应的合约元数据。
本发明实施例的技术方案,通过在目标字节码的基础上进行扩展,得到对应的目标扩展节,并将合约元数据存储至目标扩展节中,从而使得存储结构更加紧凑;并且,虚拟机可以通过目标环境接口直接访问合约元数据区中的合约元数据,提高了数据访问和查找效率。
在一实施例中,图3是本发明实施例提供的又一种数据查找方法的流程图。本实施例可以由区块链节点执行。如图3所示,应用于区块链节点的数据查找方法包括如下步骤:
S310、按照目标格式对合约元数据进行编码得到对应的目标扩展节。
S320、将目标扩展节发送至虚拟机,以使虚拟机查找并读取目标扩展节中的合约元数据。
其中,目标扩展节是在目标字节码的基础上进行扩展得到的内存节。在实施例中,在合约部署过程中,区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节,并在区块链节点接收到合约执行命令时,区块链节点取出要执行的目标字节码,并创建虚拟机实例,以及加载目标字节码,并将携带合约元数据的目标扩展节发送至虚拟机,以使虚拟机按照预先配置的目标环境接口快速地访问合约元数据,从而提升了虚拟机对合约元数据的访问和查找效率。
在一实施例中,应用于区块链节点的数据查找方法,还包括:在所述按照目标格式对合约元数据进行编码得到对应的目标扩展节之后,将所述目标扩展节***至目标字节码的预设位置。其中,预设位置可以为目标字节码的末尾。在实施例中,区块链节点对合约元数据进行编码得到对应的目标扩展节之后,将目标扩展节***至目标字节码的末尾,一方面使得目标字节码的存储结构更加紧凑,另一方面,保证了未增加目标扩展节之前的目标字节码所包含数据的完整性。
在此需要说明的是,应用于区块链节点的数据查找方法中的目标格式、合约元数据、目标扩展节、目标字节码等参数的解释,见上述应用于虚拟机的数据查找方法中的描述,在此不再一一赘述。
在一实施例中,以目标字节码为WebAssembly字节码,目标扩展节为ContractInfo节为例,对合约部署的过程进行说明。图4是本发明实施例提供的一种合约部署的流程图。如图4所示,本实施例中的合约部署过程包括如下步骤:
S410、开发合约。
在实施例中,合约开发者使用某种高级语言(如C、Rust等能够编译成wasm目标的语言)开发合约代码。其中,wasm也可以称为WebAssembly。
S420、编译合约。
在实施例中,合约开发者借助IDE或者直接使用相应的编译器(比如,Emscripten,rustc等)将合约代码编译成wasm字节码。
S430、构建交易。
在实施例中,合约开发者通过客户端,将wasm字节码及必要信息打包成交易。
S440、发送合约部署交易。
在实施例中,合约开发者通过客户端,将构建好的合约部署交易发送到区块链节点。
S450、校验交易。
在实施例中,区块链节点接收到合约部署交易,并对该合约部署交易进行校验。其中,对合约部署交易的校验包括对字节码合法性的校验。
S460、修改WebAssembly字节码。
在实施例中,区块链节点将部署合约的合约元数据按照目标格式编码成ContractInfo节,并***至wasm字节码的最后位置。其中,合约元数据在逻辑上为Key-Value对形式。
在实施例中,表1是本发明实施例提供的一种ContractInfo节结构的示意表,如表1所示,ContractInfo节的二进制表示如下(其中,varuintN表示LEB128无符号整型编码,N表示位数,值的表示范围为[0,2^N-1]):
表1 ContractInfo节结构的示意表
Figure BDA0003323823860000121
表2是本发明实施例提供的一种payload结构的示意表,如表2所示,payload结构所包含的域名、类型和描述如下:
表2一种payload结构的示意表
Figure BDA0003323823860000122
表3是本发明实施例提供的一种info结构的示意表,如表3所示,info结构所包含的域名、类型和描述如下:
表3一种info结构的示意表
Figure BDA0003323823860000131
S470、打包区块,并共识上链。
在实施例中,区块链节点完成合约部署交易的校验,并且合约部署交易校验通过之后,其中的智能合约被执行后的交易被打包成区块,与其他区块链节点完成共识之后,区块被持久化存储。
在一实施例中,以目标字节码为WebAssembly字节码,目标扩展节为ContractInfo节为例,对区块链节点执行合约的过程进行说明。图5是本发明实施例提供的一种区块链节点执行合约的流程图。如图5所示,本实施例中的区块链节点执行合约的过程包括如下步骤:
S510、构建交易。
在实施例中,合约用户通过客户端,使用调用的合约参数及合约地址构建交易。
S520、发送合约调用交易。
在实施例中,合约用户通过客户端,将构建好的合约调用交易发送到区块链节点。
S530、校验合约调用交易。
在实施例中,区块链节点接收到合约调用交易,并对该合约调用交易进行校验。
S540、执行合约。
在实施例中,区块链节点获取到要执行的合约字节码,通过虚拟机加载,并传入参数,执行指定的函数。
S550、打包区块,共识上链。
在实施例中,区块链节点完成合约部署交易的校验,并且合约部署交易校验通过之后,其中的智能合约被执行后的交易被打包成区块,与其他区块链节点完成共识之后,区块被持久化存储。
在一实施例中,以目标字节码为WebAssembly字节码,目标扩展节为ContractInfo节为例,对虚拟机执行合约的过程进行说明。图6是本发明实施例提供的一种虚拟机执行合约的流程图。如图6所示,本实施例中的虚拟机执行合约的过程包括如下步骤:
S610、加载合约字节码。
在实施例中,区块链节点从持久化存储中取出要执行的WebAssembly字节码,创建虚拟机实例,加载字节码。
S620、动态链接环境接口。
在实施例中,虚拟机将环境接口链接到虚拟机实例中,环境接口是虚拟机中合约执行时和链交互的接口(例如修改状态,获取账户余额等操作都是通过环境接口实现)。除了常规环境接口之外,还配置一个新的环境接口,作为目标环境接口,并用于直接从虚拟机中读取ContractInfo节的合约元数据。
S630、实例化合约。
在实施例中,虚拟机根据WebAssembly字节码中定义的函数、表、全局变量、内存节,实例化为相应的内存表示(运行时表示)。在实施例中,虚拟机运行时新增一个额外的区域“合约元数据区”,实例化时将字节码ContractInfo节中的合约元数据存放到该区域中,合约执行时可以通过指定的目标环境接口来读取其中的值。
图7是本发明实施例提供的一种虚拟机运行时的内存结构框图。如图7所示,在虚拟机运行时,虚拟机根据wasm字节码中定义的函数、表、全局变量和内存节,实例化为对应的内存。示例性地,函数实例化为对应的函数实例,表实例化为对应的表实例,内存实例化为对应的内存实例,全局变量实例化为对应的全局变量实例,目标扩展节实例化为对应的合约元数据区。其中,栈实例化为对应的栈所在的区域,局部变量实例化为对应的局部变量表。
S640、执行合约。
在实施例中,区块链节点将合约参数传递给虚拟机,并调用相应的执行函数执行,基于解释执行的虚拟机在执行过程中将产生操作数栈、函数栈、局部变量表等逻辑结构来辅助程序执行,合约执行时可以通过指定的环境接口高效地读取合约元数据区中的值。
本发明实施例,在使用WebAssembly字节码作为智能合约格式的基础上,使用其标准中的Custom节进行扩展,新增ContractInfo节用于存储合约元数据,在虚拟机运行时增加相应的合约元数据区,通过提供相应的目标环境接口,合约在执行过程中能够非常高效地访问其中的数据。同时,将合约相关信息存于字节码中,也使得存储结构更为紧凑。
在一实施例中,图8是本发明实施例提供的一种数据查找装置的结构框图,该装置适用于快速对合约元数据进行查找的情况,该装置可以由硬件/软件实现。本实施例应用于虚拟机。如图8所示,该装置包括:接收模块810、存储模块820和查找模块830。
其中,接收模块810,用于接收区块链节点发送的携带合约元数据的目标扩展节;
存储模块820,用于将所述目标扩展节中的合约元数据存储至对应的合约元数据区;
查找模块830,用于通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
本实施例的技术方案,通过区块链节点将合约元数据存储至目标扩展节,并将目标扩展节中的合约元数据存储至对应的合约元数据区;在接收到合约执行指令时,通过合约元数据区专用的目标环境接口直接查找并读取合约元数据区中的合约元数据,实现了通过目标环境接口快速访问合约元数据的效果,提高了访问和查找效率。
在上述实施例的基础上,应用于虚拟机的数据查找装置,还包括:
配置模块,用于在所述将所述目标扩展节中的合约元数据存储至对应的合约元数据区之前,对所述目标扩展节配置对应的目标环境接口。
在上述实施例的基础上,目标扩展节的配置过程,包括:
通过区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节。
在上述实施例的基础上,所述通过区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节,包括:
通过区块链节点对合约元数据进行拆分,得到合约元数据子集;
按照目标格式对所述合约元数据子集进行编码,得到对应的目标扩展节。
在上述实施例的基础上,通过区块链节点将所述目标扩展节***至目标字节码的预设位置。
在上述实施例的基础上,存储模块,包括:
实例化单元,用于根据所述目标扩展节实例化成对应的合约元数据区;
存储单元,用于将所述合约元数据存储至所述合约元数据区。
在上述实施例的基础上,所述目标环境接口与所述合约元数据区之间建立一一访问关系。
在上述实施例的基础上,查找模块,包括:
访问单元,用于通过预先配置的目标环境接口访问所关联的合约元数据区;
查找单元,用于查找并读取所述合约元数据区中的合约元数据。
在上述实施例的基础上,所述目标字节码包括:WebAssembly字节码;所述目标扩展节为一种自定义的Custom节。
上述数据查找装置可执行本发明任意实施例所提供的应用于虚拟机的数据查找方法,具备执行数据查找方法相应的功能模块和有益效果。
在一实施例中,图9是本发明实施例提供的另一种数据查找装置的结构框图,该装置适用于快速对合约元数据进行查找的情况,该装置可以由硬件/软件实现。本实施例应用于区块链节点。如图9所示,该装置包括:编码模块910和发送模块920。
其中,编码模块910,用于按照目标格式对合约元数据进行编码得到对应的目标扩展节;
发送模块920,用于将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
在上述实施例的基础上,应用于区块链节点的数据查找装置,还包括:
***模块,用于在所述按照目标格式对合约元数据进行编码得到对应的目标扩展节之后,将所述目标扩展节***至目标字节码的预设位置。
上述数据查找装置可执行本发明任意实施例所提供的应用于区块链节点的数据查找方法,具备执行数据查找方法相应的功能模块和有益效果。
图10是本发明实施例提供的一种数据查找设备的硬件结构示意图。本发明实施例中的设备以虚拟机为例进行说明。如图10所示,本发明实施例提供的数据查找设备,包括:处理器1010、存储器1020、输入装置1030和输出装置1040。该云端服务器中的处理器1010可以是一个或多个,图10中以一个处理器1010为例,云端服务器中的处理器1010、存储器1020、输入装置1030和输出装置1040可以通过总线或其他方式连接,图10中以通过总线连接为例。
该数据查找设备中的存储器1020作为一种计算机可读存储介质,可用于存储一个或多个程序,程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例或所提供数据查找方法对应的程序指令/模块(例如,图8所示的数据查找装置中的模块,包括:接收模块810、存储模块820和查找模块830)。处理器1010通过运行存储在存储器1020中的软件程序、指令以及模块,从而执行云端服务器的各种功能应用以及数据处理,即实现上述方法实施例中数据查找方法。
存储器1020可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器1020可进一步包括相对于处理器1010远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置1030可用于接收用户输入的数字或字符信息,以产生与终端设备的用户设置以及功能控制有关的键信号输入。输出装置1040可包括显示屏等显示设备。
并且,当上述数据查找设备所包括一个或者多个程序被一个或者多个处理器1010执行时,程序进行如下操作:接收区块链节点发送的携带合约元数据的目标扩展节;将所述目标扩展节中的合约元数据存储至对应的合约元数据区;通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
在数据查找设备为区块链节点时,当上述数据查找设备所包括一个或者多个程序被一个或者多个处理器1010执行时,程序进行如下操作:按照目标格式对合约元数据进行编码得到对应的目标扩展节;将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的应用于虚拟机的数据查找方法,该方法包括:接收区块链节点发送的携带合约元数据的目标扩展节;将所述目标扩展节中的合约元数据存储至对应的合约元数据区;通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的应用于区块链节点的数据查找方法,该方法包括:按照目标格式对合约元数据进行编码得到对应的目标扩展节;将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(ErasableProgrammable ROM,EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(Compact DiscRead-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (15)

1.一种数据查找方法,其特征在于,应用于虚拟机,包括:
接收区块链节点发送的携带合约元数据的目标扩展节;
将所述目标扩展节中的合约元数据存储至对应的合约元数据区;
通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
2.根据权利要求1所述的方法,其特征在于,在所述将所述目标扩展节中的合约元数据存储至对应的合约元数据区之前,还包括:
对所述目标扩展节配置对应的目标环境接口。
3.根据权利要求1或2所述的方法,其特征在于,所述目标扩展节的配置过程,包括:
通过区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节。
4.根据权利要求3所述的方法,其特征在于,所述通过区块链节点按照目标格式对合约元数据进行编码得到对应的目标扩展节,包括:
通过区块链节点对合约元数据进行拆分,得到合约元数据子集;
按照目标格式对所述合约元数据子集进行编码,得到对应的目标扩展节。
5.根据权利要求3所述的方法,其特征在于,通过区块链节点将所述目标扩展节***至目标字节码的预设位置。
6.根据权利要求1或2所述的方法,其特征在于,所述将所述目标扩展节中的合约元数据存储至对应的合约元数据区,包括:
根据所述目标扩展节实例化成对应的合约元数据区;
将所述合约元数据存储至所述合约元数据区。
7.根据权利要求6所述的方法,其特征在于,所述目标环境接口与所述合约元数据区之间建立一一访问关系。
8.根据权利要求1所述的方法,其特征在于,所述通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据,包括:
通过预先配置的目标环境接口访问所关联的合约元数据区;
查找并读取所述合约元数据区中的合约元数据。
9.根据权利要求5所述的方法,其特征在于,所述目标字节码包括:WebAssembly字节码;所述目标扩展节为一种自定义的Custom节。
10.一种数据查找方法,其特征在于,应用于区块链节点,包括:
按照目标格式对合约元数据进行编码得到对应的目标扩展节;
将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
11.根据权利要求10所述的方法,其特征在于,在所述按照目标格式对合约元数据进行编码得到对应的目标扩展节之后,还包括:
将所述目标扩展节***至目标字节码的预设位置。
12.一种数据查找装置,其特征在于,应用于虚拟机,包括:
接收模块,用于接收区块链节点发送的携带合约元数据的目标扩展节;
存储模块,用于将所述目标扩展节中的合约元数据存储至对应的合约元数据区;
查找模块,用于在接收到合约执行指令时,通过预先配置的目标环境接口查找并读取所述合约元数据区中的合约元数据。
13.一种数据查找装置,其特征在于,应用于区块链节点,包括:
编码模块,用于按照目标格式对合约元数据进行编码得到对应的目标扩展节;
发送模块,用于将所述目标扩展节发送至虚拟机,以使所述虚拟机查找并读取所述目标扩展节中的合约元数据。
14.一种数据查找设备,其特征在于,所述设备包括:存储器,以及一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9或10-11中任一所述的数据查找方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9或10-11中任一所述的数据查找方法。
CN202111255114.7A 2021-10-27 2021-10-27 数据查找方法、装置、设备和介质 Pending CN113946602A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111255114.7A CN113946602A (zh) 2021-10-27 2021-10-27 数据查找方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111255114.7A CN113946602A (zh) 2021-10-27 2021-10-27 数据查找方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN113946602A true CN113946602A (zh) 2022-01-18

Family

ID=79332749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111255114.7A Pending CN113946602A (zh) 2021-10-27 2021-10-27 数据查找方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113946602A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541132A (zh) * 2023-06-30 2023-08-04 紫光同芯微电子有限公司 一种间接访问变量栈的管理方法和装置
CN116680015A (zh) * 2023-08-03 2023-09-01 北京中电华大电子设计有限责任公司 函数调用方法、装置、电子设备及可读存储介质
CN116755845A (zh) * 2023-08-22 2023-09-15 北京中电华大电子设计有限责任公司 数据处理方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541132A (zh) * 2023-06-30 2023-08-04 紫光同芯微电子有限公司 一种间接访问变量栈的管理方法和装置
CN116541132B (zh) * 2023-06-30 2023-10-13 紫光同芯微电子有限公司 一种间接访问变量栈的管理方法和装置
CN116680015A (zh) * 2023-08-03 2023-09-01 北京中电华大电子设计有限责任公司 函数调用方法、装置、电子设备及可读存储介质
CN116680015B (zh) * 2023-08-03 2023-09-26 北京中电华大电子设计有限责任公司 函数调用方法、装置、电子设备及可读存储介质
CN116755845A (zh) * 2023-08-22 2023-09-15 北京中电华大电子设计有限责任公司 数据处理方法和装置
CN116755845B (zh) * 2023-08-22 2023-11-14 北京中电华大电子设计有限责任公司 数据处理方法和装置

Similar Documents

Publication Publication Date Title
US11409949B2 (en) Mobile device resource provisioning system and method
CN113946602A (zh) 数据查找方法、装置、设备和介质
CN107861713B (zh) 数据调用方法、装置及计算机可读存储介质
CN110874236B (zh) 一种跨平台应用装置、终端及存储介质
US8701104B2 (en) System and method for user agent code patch management
CN106406961A (zh) 一种基于浏览器加载、提供应用程序的方法、装置
CN108494762A (zh) 网页访问方法、装置及计算机可读存储介质、终端
CN111651169B (zh) 基于web容器的区块链智能合约运行方法及***
CN112861346A (zh) 数据处理***、方法及电子设备
CN110333872B (zh) 一种应用的处理方法、装置、设备和介质
KR101117165B1 (ko) 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛
CN116166907B (zh) 一种使用WebAssembly和服务页面编译技术开发Web应用的方法及装置
CN113031957A (zh) 应用程序的安装方法、客户端、终端、服务器及存储介质
CN115760391A (zh) 区块链中智能合约更改方法、装置、电子设备及存储介质
CN114253441A (zh) 目标功能的启用方法及装置、存储介质、电子装置
CN104965909A (zh) 一种动态web内容的请求处理方法
CN117421056B (zh) ***加载方法及装置、存储介质、计算机程序产品和芯片
KR102336698B1 (ko) 펌웨어의 유효성을 검증하는 펌웨어 관리 장치 및 방법, 그리고 펌웨어를 업데이트하는 사물인터넷 장치 및 이를 포함하는 시스템
CN112965721B (zh) 基于Android的项目编译方法、装置、计算机设备及存储介质
KR101249449B1 (ko) 웹 플랫폼 검증 도구 생성 장치 및 그 제어방법
CN113742668A (zh) 信息获取方法、装置、计算机设备和计算可读存储介质
CN116126336A (zh) 源代码编译方法及装置
CN114338655A (zh) 一种远程服务器文件传输引擎、传输方法及装置
CN115510444A (zh) 一种恶意行为检测方法、装置、电子设备及存储介质
CN114329352A (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