用于翻译智能合约语言的方法和装置、电子设备制造方法及图纸

技术编号:37641385 阅读:21 留言:0更新日期:2023-05-25 10:08
本申请提出一种用于翻译智能合约语言的方法和装置、电子设备、计算机可读存储介质,所述方法包括响应于加载的所述智能合约语言编写的源代码,生成规范化的抽象语法树;根据所述智能合约语言的类型定义,对所述抽象语法树中的复合数据类型表达式节点进行翻译;根据所述智能合约语言的函数定义,对所述抽象语法树中的函数节点进行翻译;根据可信编译工具的源语言规范,对所述抽象语法树中的其他节点进行翻译,其中,所述其他节点包括所述抽象语法树中除去复合数据类型表达式节点和函数节点外的节点。根据本申请的实施例,实现了对支持复合数据类型和多返回值函数的智能合约语言所编写的程序的翻译,以及对复合数据类型和函数翻译过程的形式化验证。翻译过程的形式化验证。翻译过程的形式化验证。

【技术实现步骤摘要】
用于翻译智能合约语言的方法和装置、电子设备


[0001]本申请涉及区块链
,具体而言,涉及一种用于翻译智能合约语言的方法和装置、电子设备、计算机可读存储介质。

技术介绍

[0002]智能合约是运行在区块链系统之上的程序代码,由于区块链不可篡改的特性,智能合约上链以后修改代价大,一旦合约存在安全漏洞,就可能导致严重的经济损失。因此,保证智能合约的安全至关重要。
[0003]专利技术人发现,现有的技术方案通常使用已有的形式化验证工具,证明合约是否满足预期的安全属性,包括是否存在溢出问题、可重入漏洞等,但缺乏对智能合约代码的编译过程经过形式化验证,因此存在误编译的可能性,无法完全保证目标程序的正确性。使用定理证明工具证明翻译过程的正确性,并对接可信编译工具,能够解决这一问题。
[0004]而为了在区块链网络中有效应用智能合约,除了基本数据类型和函数调用功能以外,一些常用的语法特性使得用户可以更方便地编写合约程序,例如复合数据类型及其内置函数、函数支持多返回值。除此以外,智能合约语言的编程也需要状态变量,以持久性地记录当前合约的状态。
[0005]所以,需要对支持这些语法特性的智能合约语言所编写的源代码中的复合数据类型表达式节点、函数节点及其他节点进行翻译和证明,以生成符合可信编译工具的源语言规范的程序,实现智能合约语言的可信编译链,有效保障智能合约的安全性。

技术实现思路

[0006]本申请旨在提出一种用于翻译智能合约语言的方法和装置、电子设备、计算机可读存储介质,对支持复合数据类型和多返回值函数的智能合约语言所编写的程序进行翻译,以及对所述翻译过程进行形式化验证。
[0007]根据本申请的一方面,提出一种用于翻译智能合约语言的方法,包括:响应于加载的所述智能合约语言编写的源代码,生成规范化的抽象语法树;根据所述智能合约语言的类型定义,对所述抽象语法树中的复合数据类型表达式节点进行翻译;根据所述智能合约语言的函数定义,对所述抽象语法树中的函数节点进行翻译;根据可信编译工具的源语言规范,对所述抽象语法树中的其他节点进行翻译,其中,所述其他节点包括所述抽象语法树中除去复合数据类型表达式节点和函数节点外的节点。
[0008]根据一些实施例,根据所述智能合约语言的类型定义,对所述抽象语法树中的复合数据类型表达式节点进行翻译,包括:遍历所述抽象语法树,以得到所述复合数据类型表达式节点的复合数据类型;生成所述复合数据类型的内置函数;将所述复合数据类型的内置方法语句,翻译为调用所述内置函数的函数调用语句;将所述复合数据类型翻译为符合可信编译工具的源语言规范的数据类型。
[0009]根据一些实施例,根据所述智能合约语言的函数定义,对所述抽象语法树中的函
数节点进行翻译,包括:将所述函数中的函数调用语句中的输出参数表达式合并到输入参数表达式中;将所述函数的结构定义中的输出参数合并到输入参数中。
[0010]根据一些实施例,所述方法还包括:对所述智能合约语言编写的源代码的翻译过程进行形式化验证。
[0011]根据一些实施例,对所述智能合约语言编写的源代码的翻译过程进行形式化验证,包括:对得到所述复合数据类型进行形式化验证;对生成所述复合数据类型的内置函数进行形式化验证;对将所述复合数据类型的内置方法语句,翻译为调用所述内置函数的函数调用语句进行形式化验证;对将所述复合数据类型翻译为符合所述可信编译工具的源语言规范的数据类型进行形式化验证;对将所述函数中的函数调用语句中的输出参数表达式合并到输入参数表达式中进行形式化验证;对将所述函数的结构定义中的输出参数合并到输入参数中进行形式化验证;和/或对翻译所述抽象语法树中的其他节点进行形式化验证,其中,所述其他节点包括所述抽象语法树中除去函数节点和表达式节点外的节点。
[0012]根据一些实施例,响应于加载的所述智能合约语言编写的源代码,生成规范化的抽象语法树包括:根据所述智能合约语言的构词规则,对所述源代码进行词法分析,以生成词法单元序列;根据所述智能合约语言的文法规则,对所述词法单元序列组合成语法短语,从而生成所述抽象语法树;规范化所述抽象语法树,从而生成所述规范化的抽象语法树。
[0013]根据一些实施例,规范化所述抽象语法树,从而生成所述规范化的抽象语法树包括:预处理所述抽象语法树;对所述抽象语法树中的节点进行静态类型检查;规范化所述抽象语法树的复合数据类型表达式节点、函数节点以及其他节点,以生成所述规范化的抽象语法树。
[0014]根据本申请的一方面,提出一种用于翻译智能合约语言的装置,其特征在于,包括:抽象语法树生成单元,响应于加载的所述智能合约语言编写的源代码,生成规范化的抽象语法树;复合数据类型表达式翻译单元,根据所述智能合约语言的类型定义,对所述抽象语法树中的复合数据类型表达式节点进行翻译;函数翻译单元,根据所述智能合约语言的函数定义,对所述抽象语法树中的函数节点进行翻译;抽象语法树节点规范单元,用于根据可信编译工具的源语言规范,对所述抽象语法树中的其他节点进行翻译,其中,所述其他节点包括所述抽象语法树中除去复合数据类型表达式节点和函数节点外的节点。
[0015]根据一些实施例,所述装置还包括:形式化验证单元,用于对所述复合数据类型表达式翻译单元、所述函数翻译单元和/或所述抽象语法树节点规范单元中的翻译过程进行形式化验证。
[0016]根据本申请的一方面,提出一种电子设备,其特征在于,包括:存储器、处理器;其中,所述存储器存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如前任一所述的方法。
[0017]根据本申请的一方面,提出一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被执行时,实现如前任一项所述的方法。
[0018]根据本申请的一些实施例,通过从智能合约代码中找到复合数据类型,并生成复合数据类型的内置函数,并将复合数据类型的内置方法语句翻译为调用内置函数的函数调用语句,以及通过将函数调用语句中的输出参数表达式合并到输入参数表达式中以及将函数的结构定义中的输出参数合并到输入参数中,实现了对支持复合数据类型和多返回值函
数的智能合约语言所编写的程序的翻译。
[0019]根据另一些实施例,通过对复合数据类型和函数翻译过程进行形式化验证,实现了智能合约语言的可信编译,保证了智能合约语言编译的安全性。
[0020]应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
[0021]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。通过参照附图详细描述其示例实施例,本申请的上述和其他目标、特征及优点将变得更加显而易见。
[0022]图1示出根据本申请示例实施例的一种用于翻译所述智能合约语言的方法流程图。
[0023]图2示出根据本申请示例实施例的一种生成规范化抽象语法树的方法流程图。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于翻译智能合约语言的方法,其特征在于,包括:响应于加载的所述智能合约语言编写的源代码,生成规范化的抽象语法树;根据所述智能合约语言的类型定义,对所述抽象语法树中的复合数据类型表达式节点进行翻译;根据所述智能合约语言的函数定义,对所述抽象语法树中的函数节点进行翻译;根据可信编译工具的源语言规范,对所述抽象语法树中的其他节点进行翻译,其中,所述其他节点包括所述抽象语法树中除去复合数据类型表达式节点和函数节点外的节点。2.根据权利要求1所述的方法,其特征在于,根据所述智能合约语言的类型定义,对所述抽象语法树中的复合数据类型表达式节点进行翻译,包括:遍历所述抽象语法树,以得到所述复合数据类型表达式节点的复合数据类型;生成所述复合数据类型的内置函数;将所述复合数据类型的内置方法语句,翻译为调用所述内置函数的函数调用语句;将所述复合数据类型翻译为符合可信编译工具的源语言规范的数据类型。3.根据权利要求2所述的方法,其特征在于,根据所述智能合约语言的函数定义,对所述抽象语法树中的函数节点进行翻译,包括:将所述函数中的函数调用语句中的输出参数表达式合并到输入参数表达式中;将所述函数的结构定义中的输出参数合并到输入参数中。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:对所述智能合约语言编写的源代码的翻译过程进行形式化验证。5.根据权利要求4所述的方法,其特征在于,对所述智能合约语言编写的源代码的翻译过程进行形式化验证,包括:对得到所述复合数据类型进行形式化验证;对生成所述复合数据类型的内置函数进行形式化验证;对将所述复合数据类型的内置方法语句,翻译为调用所述内置函数的函数调用语句进行形式化验证;对将所述复合数据类型翻译为符合所述可信编译工具的源语言规范的数据类型进行形式化验证;对将所述函数中的函数调用语句中的输出参数表达式合并到输入参数表达式中进行形式化验证;对将所述函数的结构定义中的输出参数合并到输入参数中进行形式化验证;和/或对翻译所述抽象语法树中的其他节点进行形式化验证,其中,所述其他节点包括所述抽象...

【专利技术属性】
技术研发人员:许颖康跃馨陈胜夏清方明哲吴志林李玉成
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1