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

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

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


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

技术介绍

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

【技术保护点】

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

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

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

1