CN108459860B - 区块链智能合约形式化验证代码转换器及转换方法 - Google Patents

区块链智能合约形式化验证代码转换器及转换方法 Download PDF

Info

Publication number
CN108459860B
CN108459860B CN201810266318.2A CN201810266318A CN108459860B CN 108459860 B CN108459860 B CN 108459860B CN 201810266318 A CN201810266318 A CN 201810266318A CN 108459860 B CN108459860 B CN 108459860B
Authority
CN
China
Prior art keywords
language
intelligent contract
code
unit sequence
grammar
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
Application number
CN201810266318.2A
Other languages
English (en)
Other versions
CN108459860A (zh
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.)
Chengdu Li'an Technology Co ltd
Original Assignee
Chengdu Li'an Technology Co ltd
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 Chengdu Li'an Technology Co ltd filed Critical Chengdu Li'an Technology Co ltd
Priority to CN201810266318.2A priority Critical patent/CN108459860B/zh
Publication of CN108459860A publication Critical patent/CN108459860A/zh
Application granted granted Critical
Publication of CN108459860B publication Critical patent/CN108459860B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了区块链智能合约形式化验证代码转换器及方法,将多种语言开发的智能合约程序代码自动化转换为形式化验证辅助证明器可识别运行的中间层语言M+代码,然后通过形式化验证辅助证明器对工具生成的中间语言M+语言代码进行自动化安全验证,高自动化的将智能合约源代码一键转换为形式化验证中间语言M+代码,自动提取形式化代码中的数据类型、运算符、特殊结构、条件和循环语句、函数继承关系、函数限定符等内容,并映射到执行空间执行,从而极大程度的提高区块链智能合约形式化安全验证效率,减少了人工参与度,提高了自动化程度,同时也确保了代码形式化过程的准确性。

Description

区块链智能合约形式化验证代码转换器及转换方法
技术领域
本发明涉及区块链智能合约安全技术领域,具体涉及区块链智能合约形式化验证代码转换器及转换方法。
背景技术
智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在区块链技术背景下,智能合约是指运行在区块链上,能够执行某些功能的程序代码。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可追踪、不可篡改。正因为此特性,一旦因为智能合约程序自身设计问题,导致智能合约的安全漏洞,或将产生不可逆转的重大损失。形式化验证方法是使用数学的公式、定理和系统来验证一个系统的正确性,可以使用该方法验证智能合约代码的安全性,检查代码是否有漏洞。但是传统的形式化验证方法对源码形式化描述阶段代码量大,对安全验证的程序员要求高,并且效率低下,同时也保证了代码形式化过程的准确性。
发明内容
本发明的目的在于提供一种区块链智能合约形式化验证代码转换器及转换方法,解决区块链智能合约形式化验证过程对源码形式化描述阶段代码量大、操作复杂、人工参与量大并且效率低下的问题。
本发明通过下述技术方案实现:
区块链智能合约形式化验证代码转换器,包括:
智能合约语言文法规则库:用于存储不同编程语言的文法规则;
词法分析器:用于读入智能合约程序源程序,结合智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列;
语法分析器:用于存储简单优先表,接收词法分析器输出的词法单元序列,并将词法单元序列与简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,结合智能合约语言文法规则库中对应的文法规则,对词法单元序列中的词素按照自定义规则生成抽象语法树;
形式化验证语言文法规则库:用于存储形式化验证语言文法规则、以及智能合约编程语言词素与形式化中间语言M+语言词素对接字典表;
语法树对接器:利用对接字典表将语法分析器输出的抽象语法树中的内容一一对应替换,从而生成新的形势化验证中间语言M+语法树;
形式化验证语言推导器:利用中间语言M+的文法规则将语法树对接器输出的中间语言M+语法树生成M+语言代码;
形式化验证代码解析器:解析出形式化验证语言推导器所生成的M+语言代码,得到智能合约代码中的内容,并为其分配内存地址,映射到虚拟执行空间中。
本发明的区块链智能合约形式化验证代码转换器,其主要功能是将多种语言开发的智能合约程序代码自动化转换为形式化验证辅助证明器可识别运行的中间层语言M+代码,然后通过形式化验证辅助证明器对工具生成的中间语言M+语言代码进行自动化安全验证,从而极大程度的提高区块链智能合约形式化安全验证效率,减少了人工参与度,提高了自动化程度,保证了代码形式化过程的准确性。
区块链智能合约形式化验证代码转换方法,包括以下步骤:
(a)词法分析器读入智能合约程序源程序,结合智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列;
(b)语法分析器接收步骤(a)得到的词法单元序列,并将词法单元序列与存储的简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,结合智能合约语言文法规则库中对应的文法规则,对词法单元序列中的词素按照自定义规则生成抽象语法树;
(c)语法树对接器利用对接字典表将步骤(b)得到的抽象语法树中的内容一一对应替换,从而生成新的形势化验证中间语言M+语法树;
(d)形式化验证语言推导器利用中间语言M+的文法规则将步骤(c)得到的中间语言M+语法树生成M+语言代码;
(e)形式化验证代码解析器解析出步骤(d)生成的M+语言代码,得到智能合约代码中的内容,并为其分配内存地址,映射到虚拟执行空间中。
本发明的区块链智能合约形式化验证代码转换方法,通过分析多种智能合约编程语言,建立不同编程语言的文法规则表,开发词法分析器读入智能合约程序源程序,结合文法规则表,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列;按照语法分析方法中的简单优先分析法为文法设计简单优先表,对词法分析得到的单词序列进行语法分析,以判别输入的语句是否属于该文法的语句,然后,结合文法规则表,对单元序列中的词素按照自定义规则生成抽象语法树;建立智能合约编程语言词素与形式化中间语言M+语言词素对接字典表,该对接字典表记录了智能合约编程语言和形式化中间语言M+关键字、运算符、结构体、数组等等所有内容的对接过程,然后通过生成的智能合约抽象语法树,结合词素对接字典表,将智能合约代码的语法树全部内容一一对应替换,从而生成新的形式化验证中间语言M+语法树,形式化验证中间语言M+语法树,结合中间语言M+的文法规则表,生成M+语言的代码,该代码即是智能合约源程序使用形式化中间语言M+描述的代码,解析出使用形式化中间语言M+描述的智能合约代码中的常量、变量、继承关系、函数限定符等内容,并为其分配内存地址,映射到虚拟执行空间中,为后面启动形式化验证器做准备。
本发明与现有技术相比,具有如下的优点和有益效果:
1、本发明区块链智能合约形式化验证代码转换器,将多种语言开发的智能合约程序代码自动化转换为形式化验证辅助证明器可识别运行的中间层语言M+代码,然后通过形式化验证辅助证明器对工具生成的中间语言M+语言代码进行自动化安全验证,从而极大程度的提高区块链智能合约形式化安全验证效率,确保了代码形式化过程的准确性;
2、本发明区块链智能合约形式化验证代码转换方法,通过分析多种智能合约编程语言,建立不同编程语言的文法规则表,开发词法分析器读入智能合约程序源程序,结合文法规则表,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列,该方法可面向多种区块链智能合约开发语言编写的程序代码,实现编程语言代码到形式化验证代码的转换;
3、本发明区块链智能合约形式化验证代码转换方法,高自动化的将智能合约源代码一键转换为形式化验证中间语言M+代码,自动提取形式化代码中的数据类型、运算符、特殊结构、条件和循环语句、函数继承关系、函数限定符等内容,并映射到执行空间执行。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为本发明原理框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例
如图1所示,本发明区块链智能合约形式化验证代码转换器及方法,可以将区块链智能合约源代码一键自动转换为形式化验证中间语言M+描述的程序代码,为了能够更容易让本领域技术人员理解,以下将用以太坊区块链智能合约的形式化验证为例进行说明,其智能合约编程语言为solidity,其并不构成对本发明的任何限制。本领域技术人员在本发明公开的技术内容启示下,将其应用于其他区块链平台,例如超级账本Fabric等,本例中以太坊区块链平台的IBM智能捐款合约应用为例,结合图1,使用本发明工具对智能捐款合约进行形式化验证代码转换的流程进行详细阐述,主要框架结构包括智能合约语言文法规则库:用于存储不同编程语言的文法规则;词法分析器:用于读入智能合约程序源程序,结合智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列;语法分析器:用于存储简单优先表,接收词法分析器输出的词法单元序列,并将词法单元序列与简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,结合智能合约语言文法规则库中对应的文法规则,对词法单元序列中的词素按照自定义规则生成抽象语法树;形式化验证语言文法规则库:用于存储形式化验证语言文法规则、以及智能合约编程语言词素与形式化中间语言M+语言词素对接字典表;语法树对接器:利用对接字典表将语法分析器输出的抽象语法树中的内容一一对应替换,从而生成新的形势化验证中间语言M+语法树;形式化验证语言推导器:利用中间语言M+的文法规则将语法树对接器输出的中间语言M+语法树生成M+语言代码;形式化验证代码解析器:解析出形式化验证语言推导器所生成的M+语言代码,得到智能合约代码中的内容,并为其分配内存地址,映射到虚拟执行空间中。
实现过程如下:
步骤001:输入智能捐款合约源代码到代码转换器中;
将IBM智能捐款合约源代码输入到代码转换器工具中的solidity code输入框中,本发明工具的界面是使用网页的形式展现,转换之后的代码也是通过网页的方式展现给用户,可非常方便的适配各平台;
步骤002:代码转换器将智能合约源代码转换为形式化验证中间层语言M+描述的代码;
代码转换器读取网页界面输入的智能合约源代码,根据不同的高级语言编写智能合约的文法规则,使用词法分析器产生词法单元序列,并将词法单元序列传入到语法分析器,语法分析器分析词法单元序列,按照文法规则生成中间语法树;代码转换器后台,通过将智能合约solidity语言的语法树和形式化M+语言语法树对接的方式,遍历语法树,将多种高级语言编写的智能合约代码转换为形式化中间语言M+描述的代码程序;
步骤003:解析形式化中间层语言代码,并映射到虚拟执行空间运行;
通过分析生成的形式化验证中间语言M+描述的代码,解析出智能合约代码中的常量、变量、继承关系、函数限定符等内容,分配内存地址,并映射到虚拟执行空间中;本发明验证工具中的虚拟执行空间可模拟真实计算机执行环境,将形式化验证中间层程序在其上运行,可追踪变量和程序逻辑是否符合安全属性。
形式化验证过程可以证明一个系统不存在某个缺陷或符合某个或某些属性,本发明针对不同的安全属性,编写形式化验证安全策略,使用形式化验证器验证虚拟执行空间的程序代码执行的结果是否满足属性定义的条件,从而完成对智能合约属性进行安全验证。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.区块链智能合约形式化验证代码转换器,其特征在于包括:
智能合约语言文法规则库:用于存储不同编程语言的文法规则;
词法分析器:用于读入智能合约程序源程序,结合智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列;
语法分析器:用于存储简单优先表,接收词法分析器输出的词法单元序列,并将词法单元序列与简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,结合智能合约语言文法规则库中对应的文法规则,对词法单元序列中的词素按照自定义规则生成抽象语法树;
形式化验证语言文法规则库:用于存储形式化验证语言文法规则、以及智能合约编程语言词素与形式化中间层语言M+语言词素对接字典表;
语法树对接器:利用对接字典表将语法分析器输出的抽象语法树中的内容一一对应替换,从而生成新的形势化验证中间层语言M+语法树;
形式化验证语言推导器:利用中间层语言M+的文法规则将语法树对接器输出的中间层语言M+语法树推导生成M+语言代码;
形式化验证代码解析器:解析出形式化验证语言推导器所生成的M+语言代码,得到智能合约代码中的内容,并为其分配内存地址,映射到虚拟执行空间中。
2.区块链智能合约形式化验证代码转换方法,其特征在于包括以下步骤:
(a)词法分析器读入智能合约程序源程序,结合智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生并输出特定规则的词法单元序列;
(b)语法分析器接收步骤(a)得到的词法单元序列,并将词法单元序列与存储的简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,结合智能合约语言文法规则库中对应的文法规则,对词法单元序列中的词素按照自定义规则生成抽象语法树;
(c)语法树对接器利用对接字典表将步骤(b)得到的抽象语法树中的内容一一对应替换,从而生成新的形势化验证中间层语言M+语法树;
(d)形式化验证语言推导器利用中间层语言M+的文法规则将步骤(c)得到的中间层语言M+语法树生成M+语言代码;
(e)形式化验证代码解析器解析出步骤(d)生成的M+语言代码,得到智能合约代码中的内容,并为其分配内存地址,映射到虚拟执行空间中。
CN201810266318.2A 2018-03-28 2018-03-28 区块链智能合约形式化验证代码转换器及转换方法 Active CN108459860B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810266318.2A CN108459860B (zh) 2018-03-28 2018-03-28 区块链智能合约形式化验证代码转换器及转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810266318.2A CN108459860B (zh) 2018-03-28 2018-03-28 区块链智能合约形式化验证代码转换器及转换方法

Publications (2)

Publication Number Publication Date
CN108459860A CN108459860A (zh) 2018-08-28
CN108459860B true CN108459860B (zh) 2021-03-30

Family

ID=63236879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810266318.2A Active CN108459860B (zh) 2018-03-28 2018-03-28 区块链智能合约形式化验证代码转换器及转换方法

Country Status (1)

Country Link
CN (1) CN108459860B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375899B (zh) * 2018-09-25 2021-08-03 杭州趣链科技有限公司 一种形式验证Solidity智能合约的方法
CN109460657A (zh) * 2018-10-15 2019-03-12 杭州安恒信息技术股份有限公司 一种基于智能合约代码数值溢出的安全检测方法
CN109492402A (zh) * 2018-10-25 2019-03-19 杭州趣链科技有限公司 一种基于规则引擎的智能合约安全评测方法
CN109523383B (zh) * 2018-10-30 2022-01-21 广州斯拜若科技有限公司 一种智能合约转换系统及方法
CN109522008B (zh) * 2018-11-06 2020-07-10 陕西医链区块链集团有限公司 一种区块链智能合约构建方法
CN109903164A (zh) * 2019-01-03 2019-06-18 广州斯拜若科技有限公司 基于区块链的私募股权基金自动化监管方法与系统
CN110109675A (zh) * 2019-04-30 2019-08-09 翟红鹰 智能合约处理方法、装置以及计算机可读存储介质
CN110347405A (zh) * 2019-07-01 2019-10-18 电子科技大学 一种schedule调度模块的形式化验证方法
CN110533533A (zh) * 2019-08-21 2019-12-03 杭州趣链科技有限公司 一种场外交易智能合约的形式验证方法
CN110688428B (zh) * 2019-09-24 2021-01-26 北京海益同展信息科技有限公司 用于发布智能合约的方法和装置
CN111158692B (zh) * 2019-12-09 2023-05-02 华南师范大学 智能合约函数相似性的排序方法、系统和存储介质
CN111124485B (zh) * 2019-12-20 2023-03-10 成都互诚在线科技有限公司 一种基于中间语言的形式化规约语言简化方法
CN111179056A (zh) * 2019-12-20 2020-05-19 杭州趣链科技有限公司 一种众筹智能合约的形式验证方法
CN111124422B (zh) * 2019-12-25 2023-03-10 成都互诚在线科技有限公司 一种基于抽象语法树的eos智能合约语言转换方法
CN111240772B (zh) * 2020-01-22 2024-06-18 腾讯科技(深圳)有限公司 一种基于区块链的数据处理方法、装置及存储介质
CN111309305B (zh) * 2020-02-12 2023-06-02 扬州大学 面向智能合约的代码自动推荐方法、系统、计算机设备和存储介质
CN113031934B (zh) * 2021-04-06 2022-07-26 卡斯柯信号有限公司 一种用于形式化验证的联锁数据安全转换方法及翻译器
CN114331396A (zh) * 2021-12-28 2022-04-12 中国科学技术大学 面向以太坊智能合约的协议安全属性自动提取方法及系统
CN116149671B (zh) * 2023-04-23 2023-07-04 中国科学院软件研究所 用于翻译智能合约语言的方法和装置、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106375317A (zh) * 2016-08-31 2017-02-01 北京明朝万达科技股份有限公司 一种基于区块链的大数据安全认证方法和系统
CN106600405A (zh) * 2016-11-17 2017-04-26 复旦大学 基于区块链的数据权益保护方法
CN107330701A (zh) * 2017-07-28 2017-11-07 中链科技有限公司 植入智能合约的方法和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170140408A1 (en) * 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106375317A (zh) * 2016-08-31 2017-02-01 北京明朝万达科技股份有限公司 一种基于区块链的大数据安全认证方法和系统
CN106600405A (zh) * 2016-11-17 2017-04-26 复旦大学 基于区块链的数据权益保护方法
CN107330701A (zh) * 2017-07-28 2017-11-07 中链科技有限公司 植入智能合约的方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
智能合约的形式化验证方法;胡凯,白晓敏,高灵超,董爱强;《信息安全研究》;20161231;第2卷(第12期);第1-10页 *

Also Published As

Publication number Publication date
CN108459860A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
CN108459860B (zh) 区块链智能合约形式化验证代码转换器及转换方法
CN108985073B (zh) 一种高度自动化的智能合约形式化验证系统及方法
US11334692B2 (en) Extracting a knowledge graph from program source code
CN109753288B (zh) 一种适用于形式化验证的智能合约编译方法
US9122540B2 (en) Transformation of computer programs and eliminating errors
US8762962B2 (en) Methods and apparatus for automatic translation of a computer program language code
Calegari et al. Verification of model transformations: A survey of the state-of-the-art
Zhao et al. Automatic assertion generation from natural language specifications using subtree analysis
CN101499015A (zh) 一种高级语言转换成其它高级语言的方法及转换器
Pelsmaeker et al. Language-parametric static semantic code completion
CN111695002A (zh) 一种基于xml语句的数据库无关的查询语言
Yang et al. Lolisa: formal syntax and semantics for a subset of the Solidity programming language in mathematical tool Coq
CN116149671B (zh) 用于翻译智能合约语言的方法和装置、电子设备
CN113885876A (zh) 一种参数校验方法、装置、存储介质及计算机系统
Garis et al. Translating Alloy specifications to UML class diagrams annotated with OCL
CN117093222A (zh) 一种基于改进转换器模型的代码参数摘要生成方法和系统
CN117112608A (zh) 一种基于Antlr4的数据库语句转换方法及装置
CN110727428B (zh) 一种转换业务逻辑层代码的方法、装置和电子设备
CN112860233B (zh) 目标语法树的生成方法以及相关设备
CN114912110A (zh) 一种Node.js代码安全检测方法及系统
US10929106B1 (en) Semantic analyzer with grammatical-number enforcement within a namespace
CN112579065A (zh) 一种将图形组态画面生成跨平台代码的方法及系统
Haowei et al. Software Safety Verification Framework based on Predicate Abstraction
Megacz Scannerless boolean parsing
CN113238759B (zh) 一种类Python程序设计语言XD-M的解释系统及方法

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