CN111651977A - 一种语言独立的法律合约与智能合约一致性度量方法 - Google Patents
一种语言独立的法律合约与智能合约一致性度量方法 Download PDFInfo
- Publication number
- CN111651977A CN111651977A CN202010452972.XA CN202010452972A CN111651977A CN 111651977 A CN111651977 A CN 111651977A CN 202010452972 A CN202010452972 A CN 202010452972A CN 111651977 A CN111651977 A CN 111651977A
- Authority
- CN
- China
- Prior art keywords
- contract
- consistency
- legal
- language
- execution
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000005259 measurement Methods 0.000 claims abstract description 13
- 238000000691 measurement method Methods 0.000 claims abstract description 13
- 238000000072 solvent casting and particulate leaching Methods 0.000 claims description 70
- 238000004458 analytical method Methods 0.000 claims description 49
- 238000011161 development Methods 0.000 claims description 22
- 238000012360 testing method Methods 0.000 claims description 21
- 102100040066 Interleukin-27 receptor subunit alpha Human genes 0.000 claims description 17
- 101710089672 Interleukin-27 receptor subunit alpha Proteins 0.000 claims description 17
- 238000005516 engineering process Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000011002 quantification Methods 0.000 claims description 5
- 230000014509 gene expression Effects 0.000 claims description 4
- 230000001364 causal effect Effects 0.000 claims description 3
- 239000000470 constituent Substances 0.000 claims description 3
- 230000032823 cell division Effects 0.000 claims description 2
- 230000004927 fusion Effects 0.000 claims description 2
- 238000007726 management method Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 claims 2
- 238000010835 comparative analysis Methods 0.000 claims 1
- 238000011160 research Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 244000191761 Sida cordifolia Species 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000375 direct analysis in real time Methods 0.000 description 1
- 238000012063 dual-affinity re-targeting Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 235000002020 sage Nutrition 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/18—Legal services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Tourism & Hospitality (AREA)
- Economics (AREA)
- Technology Law (AREA)
- Software Systems (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种语言独立的法律合约与智能合约一致性度量方法,精确度量法律合约和智能合约一致性。首先提出法律合约和智能合约部分一致性、完全一致性定义及度量指标,然后融合重写逻辑和语言独立的符号执行,提出语言独立的法律合约与智能合约一致性的度量方法,精确度量具体的法律合约的可计算部分和相应的智能合约代码的部分一致性和完全一致性。本发明提出的方法,能够用于度量任何语言描述的法律合约与区块链中任何语言开发的智能合约的一致性。
Description
技术领域
本发明属于服务计算领域,尤其涉及一种语言独立的法律合约与智能合约一致性度量方法。
背景技术
区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。我们要把区块链作为核心技术自主创新的重要突破口,明确主攻方向,加大投入力度,着力攻克一批关键核心技术,加快推动区块链技术和产业创新发展。智能合约是区块链的核心组成部分,法律合约与智能合约的一致性是智能合约的首先必须具有的关键属性。智能合约使用计算机程序代码表示法律合约条款,是法律合约的一种载体。智能合约依据其所表示的法律合约进行自动执行。因此一致性决定了智能合约的实际应用价值。
法律合约与智能合约的一致性本质是智能合约代码与法律合约的一致性。胡凯等认为可以基于形式化方法分析已有的智能合约代码与法律合约的相关属性。Hardjono和Maler从法律合约的视角,探讨了智能合约的可执行性。同年,周学峰等从新计算法律学层面,强调要对法律进行动态分析,认为法律实现代码化,可以代替或帮助法官对案件进行审判。现实世界的法律与代码世界的法律一致性,提出了法律合约转化为智能合约代码的框架。
以上均讨论了法律合约和智能合约的一致性内涵,重点关注在概念层面,没有给出具体的实现方法。比如,如何分析已有的智能合约代码与法律合约的一致性,如何生成与法律合约一致的智能合约代码。对于如何生成与法律合约一致的智能合约代码,一种思路是在生成过程中实现法律合约和智能合约的一致性,另外一种思路是对生成的智能合约代码,分析其与法律合约的一致性。现有的工作主要集中在第一种思路。主要包含基于形式化模型生成智能合约代码和基于合约模板生成智能合约代码,但是这些工作都没有分析其生成过程的一致性或者生成结果的一致性。基于形式化模型生成智能合约代码,2016年,一种把ADCIO结构表示的法律合约半自动化转换成智能合约Solidity代码框架的方法被提出;2017年,一种将法律合约BPMN模型映射为智能合约Solidity代码的方法被提出;同年,一个将法律合约的FSM模型自动转换为智能合约的Solidity代码的框架被提出;2020年,一种基于将法律合约的Petri网生成智能合约的方法被提出,同时开发了可视化的原型开发工具;基于合约模板生成智能合约代码,2016年,一种基于Ricardian Contract三要素实现智能合约代码的生成方法被提出,该方法设计了具有法律效力的智能合约模板,建立法律合约的操作参数与标准化代码映射关系,实现智能合约代码的生成;CommonAccord项目旨在开发一个基于Ricardian Contract的智能合约模板系统,自动生成智能合约代码;同年,一种基于C++程序语言的法律合约模板被提出;OpenLaw开发了一个使用特殊标记语言的法律合约模板库,调用区块链平台的智能合约代码。
根据对国内外对于法律合约和智能合约的一致性研究现状进行分析和研究后发现,虽然对一致性的概念和内涵进行了讨论,但是没有给出其定量的分析方法。
符号执行是一种相对精确的程序分析技术。传统的符号执行技术使用符号化输入代替实际输入以模拟执行(不实际执行)被分析程序,程序中的操作被转化为相应的符号表达式操作。符号执行在程序代码分析与验证具有重要的应用。符号执行可以分为语言独立的符号执行和面向特殊语言的符号执行。
面向特殊语言的符号执行,主要包含面向源代码的、二进制的、字节码的符号执行。语言独立的符号执行主要是基于K框架的语言独立的符号执行。面向特殊语言的特殊符号执行:基于源代码的符号执行,分析C语言程序,如DART工具、CREST工具等,分析Java语言程序,有Jcute和Java PathFinder;基于二进制的符号执行,有面向X86二进制代码的在线符号执行分析工具FuzzBALL,结合模糊测试和动态符号执行的程序测试分析工具SAGE,使用Valgrind和VEX作为中间语言的二进制分析框架ANGR;基于字节码的符号执行,有面向Java字节码的符号执行分析工具Symbolic PathFinder,面向EVM字节码,2016年,Luu等开发了一个基于符号执行的工具OYENTE,静态符号执行分析智能合约EVM字节码中整数类bug问题。但是该工具对代码的分析粒度太细,耗费的时间成本较大。为了提高分析效率,2018年,Johannes Krupp等开发了TEETHER工具对EVM字节码的四个关键指令进行符号执行分析。2018年,Kalra等开发了ZEUS工具,通过将Solidity编写的智能合约转化中间语言,再转换为LLVM位代码,最后利用LLVM工具分析一般安全属性。语言独立的符号执行,典型工作有2015年Andrei Arusoaie等基于重写逻辑提出的语言独立的符号执行框架。由于K本身是一个基于重写逻辑的可执行语义框架,提供了程序状态空间和语义规则的表示方法,可以方便用来定义一门语言的可执行语义,该工作的核心是基于RL逻辑和ML逻辑的可执行语义定义框架,可以对任何程序开发语言的语义进行定义,如特定领域语言、命令式语言等,然后对程序代码进行符号执行和具体执行,并输出路径约束及状态信息等。
对符号执行的国内外研究现状分析发现,由于面向特殊语言的符号执行本身的局限性,故转向了语言独立的符号执行;智能合约语言更新速度很快,如果采用面向特殊语言的符号执行,其也必须进行相应更新,代价很大;法律合约可计算部分LCTC和其相应的智能合约的代码量少,而且结构简单,故几乎不存在符号执行中需要重点考虑的路径空间爆炸的问题。
故本发明借鉴程序等价和协议一致性的思想,首先提出法律合约和智能合约一致性定义及度量指标,然后提出语言独立的法律合约与智能合约一致性度量方法,精确度量法律合约和智能合约一致性。
发明内容:
为了解决区块链安全的关键核心技术问题,本发明提出一种语言独立的法律合约与智能合约一致性度量方法,精确度量法律合约和智能合约一致性,可用于对任何语言描述的法律合约与区块链中任何语言开发的智能合约的一致性验证。
本发明的技术解决方案为一种语言独立的法律合约与智能合约一致性度量方法,具体包括以下步骤:
步骤1:提出法律合约和智能合约部分一致性和完全一致性定义,并融合重写逻辑和语言独立的符号执行,提出语言独立的法律合约与智能合约一致性的度量方法,根据度量指标度量法律合约和智能合约的部分一致性和完全一致性;
步骤2:借鉴Clack的智能合约模板的思想,构建自然语言描述的法律合约模板,进而把法律合约模板分为可计算部分和不可计算部分,根据法律合约参与方的角色,应用非自然语言的法律合约描述语言,对可计算部分描述,得到具体的法律合约可计算部分描述LCTC[LCPL];
步骤3:根据基于RL逻辑和ML逻辑的可执行语义定义框架,应用重写逻辑和语义框架,定义法律合约描述语言的可执行语义LCPL[KS]和智能合约开发语言的可执行语义SCPL[KS];
步骤4:应用合适的可达性规则,结合语言独立的符号执行技术和K框架,对法律合约描述语言的可执行语义LCPL[KS]与智能合约代码开发语言的可执行语义SCPL[KS]进行编译,定义符号变量,对具体的法律合约和其对应的智能合约代码分别进行符号执行分析,获得符号路径约束,计算轨迹一致率以度量法律合约和智能合约的完全一致性;
步骤5:将符号路径约束输入到Z3 SMT求解器进行求解,以构造具体的法律合约可计算部分描述LCTC[LCPL]和对应的智能合约代码SCC[SCPL]的测试用例,应用K框架将得到的测试用例分别作为LCTC[LCPL]和对应的智能合约代码SCC[SCPL]的输入,通过执行分析结果度量法律合约与智能合约的部分一致性。
作为优选,步骤1所述一致性为部分一致性和完全一致性;
所述部分一致性,借鉴协议一致性的概念,即对网络协议与协议标准的一致性分析,对于相同序列输入产生的输出一致,对任何一个使法律合约和与其对应的智能合约都终止的具体输入,法律合约和与其对应的智能合约产生相同的输出;
所述完全一致性,在部分一致的基础上,同时借鉴程序等价的概念,即行为等价,如果程序满足相同的行为特性,则可以认为它们在行为上是等价的;
步骤1所述融合重写逻辑和语言独立的符号执行具体方法为:
应用基于重写逻辑的语义分析工具K框架分别对法律合约可计算部分描述语言LCTC[LCPL]和智能合约开发语言SCC[LCPL]分别进行建模和语义分析,分析内容涉及到合约规则、事件管理、触发机制等所有关于合约的执行步骤和结果等内容,并定义相应的语法和规则;
在规则中定义需要分析的符号变量,符号变量可包含时间、合约状态等信息,通过语言独立的符号执行框架对具体的法律合约形式化描述LCTC[LCPL]和相对应的智能合约代码SCC[SCPL]进行符号执行分析和具体执行分析,分别得到符号执行后的符号执行路径和具体执行后的具体输出结果;
步骤1所述语言独立的法律合约与智能合约一致性的度量方法为:
对于确定性的法律合约和智能合约,在初始环境和输入相同的情况下,根据前面得到的输出结果和符号执行路径:
部分一致性的度量指标计算公式:输出一致率OPCR=相同的输出/全部输出;
完全一致性度量指标的计算公式:轨迹一致率TCCR=相同执行轨迹/全部执行轨迹。
步骤1所述根据度量指标度量法律合约和智能合约的部分一致性和完全一致性:
部分一致性量化后的结果表示为:当输出一致率OPCR=100%时,表示的是法律合约和智能合约满足部分一致性;当输出一致率OPCR<100%时,表示的是法律合约和智能合约不满足部分一致性;
完全一致性量化后的结果表示为:当轨迹一致率TCCR=100%时,表示的是法律合约和智能合约满足完全一致性;当轨迹一致率TCCR<100%时,表示的是法律合约和智能合约不满足完全一致性;
作为优选,步骤2所述不可计算部分包含:不确定性的合约描述、部分确定性描述内容;
步骤2所述可计算部分包含:合约触发条件、交易时间、交易金额、交易数量、合约最终状态等;
步骤2所述具体的法律合约可计算部分描述LCTC[LCPL]为:
对合约模板中的可计算部分LCTC[NL],根据法律合约参与方的角色,结合具体的法律合约,通过构建本体将要素信息,进行归类,并建立相互之间的因果联系,应用某个法律合约描述语言LCPL对其进行描述,具体的描述语言可根据合约的类型和合约的要求来进行选择,最终得到可计算部分的法律合约描述LCTC[LCPL];
作为优选,步骤3所述法律合约描述语言的可执行语义LCPL[KS]为:
基于使用RL逻辑和ML逻辑给出语言定义的一般概念,并结合基于重写逻辑的K框架,实现可定义法律合约可计算部分的描述语言LCTC[LCPL]的可执行语义框架;
ML逻辑全名为匹配逻辑(Matching Logic),是一种公理语义,可使用匹配逻辑来描述和推理任意程序配置的结构特性。RL逻辑全名为可达逻辑,由可达性规则组成;
语言的定义具体包含ML符号、M模型和一组RL公式的语义组成的三元组,可表示为R=(ML,M,RL);
应用基于RL逻辑的支持符号执行和具体执行的K语义框架,分别定义可进行符号分析和具体执行的法律合约描述语言LCPL的可执行语义LCPL[KS];
法律合约LCPL[KS]语义包含LCPL[BNF]语法、LCPL[BNF]配置和LCPL[KS]语义规则三部分,其中LCPL[BNF]是一种以BNF表示的语法,涵盖其核心特征,遵循K框架的BNF范式规则,直接以.K文件存储,且可直接由K框架进行语法校验和编译;
LCPL[BNF]配置则根据语言的特点来进行格单元划分,配置使用ML逻辑完成,LCPL[KS]语义规则是根据其语法和配置定制的语义规范,实际的语义可根据实际的语言特点和需要进行具体定义。
步骤3所述智能合约开发语言的可执行语义SCPL[KS]为:
基于使用RL逻辑和ML逻辑给出语言定义的一般概念,并结合基于重写逻辑的K框架,实现可定义智能合约开发语言SCC[LCPL]的可执行语义框架,该框架同定义LCTC[LCPL]的可执行语义框架;
语言的定义包含ML符号M、M模型、一组RL公式的语义组成的三元组,可表示为R=(ML,M,RL);
应用基于RL逻辑的支持符号执行和具体执行的K语义框架,定义可进行符号分析和具体执行的智能合约开发语言SCPL的可执行语义SCPL[KS];
智能合约SCPL[KS]语义包含SCPL[BNF]语法、SCPL[BNF]配置和SCPL[KS]语义规则三部分,其中SCPL[BNF]一种以BNF表示的语法,涵盖其核心特征,遵循K框架的BNF范式规则,直接以.K文件存储,且可直接由K框架进行语法校验和编译。SCPL[BNF]配置,则根据语言的特点来进行单元格划分,配置使用ML逻辑完成,SCPL[KS]语义规则是根据其语法和配置定制的语义规范,实际的语义可根据实际的语言特点和需要进行具体定义;
作为优选,步骤4所述语言独立的符号执行技术具体为:基于重写逻辑的K框架,从给定的语言定义开始,生成一个新的语言定义,其语法与原始定义相同,对其语义规则进行转换;
根据定义对具体程序进行符号执行,就是用符号语义执行相同的程序,形成支持语言独立的符号执行技术框架;
步骤4所述定义符号变量具体为:符号变量是法律合约和智能合约通用的,即定义相同的符号变量,主要涉及到合约判断条件中的变量信息;
步骤4所述对具体的法律合约和其对应的智能合约代码分别进行符号执行分析获得符号执行路径具体为:
定义源代码的符号变量,基于已得到的语言独立的符号执行技术框架,对源代码进行符号执行技术分析,获得多个以一串由符号变量组成的逻辑表达式的交集表示的符号路径约束,该路径约束作为后面的一致性分析数据基础;
步骤4所述计算轨迹一致率以度量法律合约和智能合约的完全一致性为:
对具体的法律合约可计算部分描述LCTC[LCPL]和其相应的智能合约代码SCC[SCPL],设置符号变量,代码中判断语句中涉及到变量进行符号化处理,具体方法是在定义LCPL[BNF]和SCPL[BNF]的语法规则配置中对其进行符号出化处理。
在定义好语法和语义规则的基础上,使用K框架对LCPL[KS]和SCPL[KS]分别进行Kompile编译,使用的编译命令中输入符号变量,并使用-backendsymbolic选项以表示进行的是符号编译,然后再进行Krun执行源代码,即使用Krun运行具体的法律合约的可计算部分LCTC[LCPL]和相应智能合约代码SCC[SCPL];
符号执行过程中,在遇到比如if语句、while语句、switch判断语句时,执行路径开始进行分支,直至结束,在所有的输出结果中的path-condition配置获得了所有全部路径约束,每个路径都对应包括对应的状态信息即状态包含对应的符号具体值、其他变量值等,对于同一符号输入比较符号执行轨迹,匹配所有符号路径信息,查找相同的路径执行轨迹;
通过轨迹一致率TCCR=相同执行轨迹/全部执行轨迹,根据度量指标度量其完全一致性;
当轨迹一致率TCCR=100%时,表示的是法律合约和智能合约满足完全一致性;
当轨迹一致率TCCR<100%时,表示的是法律合约和智能合约不满足完全一致性。
作为优选,步骤5所述通过执行分析结果度量法律合约与智能合约的部分一致性具体为:
根据步骤4中得到的所有符号路径约束,输入到Z3 SMT求解器中求解路径约束,得到符号变量对应的具体值,从而构造了法律合约LCTC[LCPL]和相应智能合约代码SCC[SCPL]的运行测试用例。
将测试用例输入分别到具体的法律合约的可计算部分LCTC[LCPL]和相应智能合约代码SCC[SCPL]中,实现具体执行得到具体的输出结果,并对输出结果进行比较分析。具体是对LCPL[KS]和SCPL[KS]分别进行Kompile编译,如在编译命令中使用-cPC="true"-cIN="10",表示的是以符号变量的具体值10作为具体输入执行,然后使用Krun运行LCTC[LCPL]和SCC[SCPL]的文件,最终输出得到测试用例的对应的全部具体执行结果,对于同一输入比较输出结果,统计输出结果一致的数量和全部输出数量,计算总的输出一致率OPCR=相同的输出/全部输出,根据度量指标度量其部分一致性。当输出一致率OPCR=100%时,表示的是法律合约和智能合约满足部分一致性;当输出一致率OPCR<100%时,表示的是法律合约和智能合约不满足部分一致性。
本发明与现有的技术相比,其显著优点:给出了法律合约和智能合约的一致性定量的分析方法,该方法可以对法律合约与智能合约给出一个从0到1的数值,而不是像传统方法那样仅提供一致性或者不一致性的结论,从而有效区分不同程度的一致性,也填补了目前对法律合约和智能合约的一致性度量方法方面的空白。
附图说明
图1:为语言独立的法律合约与智能合约一致性度量方法整体研究框架;
图2:为语言独立的法律合约与智能合约一致性度量方法的步骤流程;
图3:为法律合约模板可计算部分形式化描述LCTC[LCPL]的技术路线图;
图4:具体示例的法律合约流程图;
图5:具体示例的法律合约本体图;
图6:法律合约和智能合约的可执行语义形成方法;
图7:为语言独立的完全一致性度量方法技术路线;
图8:为语言独立的部分一致性度量方法技术路线;
图9:为示例合约伪代码的符号执行树。
具体实施方法
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提出一种语言独立的法律合约与智能合约一致性度量方法,精确度量法律合约和智能合约一致性。具体分为部分一致性和完全一致性,部分一致性指的是对于同一测试用例的输入比较输出结果,计算总的输出一致率OPCR=相同的输出/全部输出,根据度量指标度量其部分一致性,完全一致性指的是在部分一致性的基础上,对于同一测试用例的输入比较输出执行路径(执行轨迹),计算总的轨迹一致率TCCR=相同执行轨迹/全部执行轨迹,根据度量指标度量其完全一致性。
下面结合附图1-9对本发明作进一步说明,本发明就是对所提出的方法度量法律合约与智能合约一致性的具体体现,要求分析的法律合约描述语言是针对法律合约的可计算部分,同时所实现的法律合约和智能合约的可执行语义严格遵守KS语义,同时语义本身也要进行一致性验证,本发明不对该语义的一致性验证作详细的阐述,如图1所示为本发明的方法的整体研究框架,具体步骤流程如下:
步骤1:提出法律合约和智能合约部分一致性和完全一致性定义,并融合重写逻辑和语言独立的符号执行,提出语言独立的法律合约与智能合约一致性的度量方法,根据度量指标度量法律合约和智能合约的部分一致性和完全一致性,流程如图2所示;
部分一致性,主要借鉴协议一致性的概念,即对网络协议与协议标准的一致性分析,对于相同序列输入产生的输出一致。这里指的是,对任何一个使法律合约和与其对应的智能合约都终止(即整个合约的执行结果是满足或者不满足合约条款的约定,合约状态为履行成功或违约)的具体输入,法律合约和与其对应的智能合约产生相同的输出。输入包含合约的各参与方的合约账户初始余额Bala、合约的触发条件(交易类合约转账触发条件,如时间点Time、时间段N)等,输出包含合约的所有账户最终余额Bala、合约的状态ContractState(履约成功或违约)等。
完全一致性,在部分一致的基础上,同时借鉴程序等价的概念,即行为等价,如果程序满足相同的行为特性,则可以认为它们在行为上是等价的。这里指的是,对任何一个可以使法律合约和智能合约终止的符号输入,首先将法律合约进行形式化描述,具体的形式化描述方法可根据不同的符号分析框架进行选择和设计,接着利用符号执行技术,以形式化描述的法律合约和智能合约代码作为分析对象,将输入的变量进行符号化,具体需要符号化的数量需要根据具体的合约进行具体的设计,如将触发条件时间段n符号化为N,收货状态flag符号化为F,最后利用符号执行框架和符号执行技术,得到的法律合约和智能合约的执行轨迹相同(即符号路径约束一致,且各约束的先后顺序一致),符号路径约束PC的表现形式为一串逻辑运算符的交集,符号执行轨迹包含合约各条款的执行顺序、每一个条款执行完成后的合约状态等信息。
步骤2:提出法律合约的可计算部分的描述LCTC[LCPL]。借鉴Clack的智能合约模板的思想,首先构建自然语言描述的法律合约模板LCT[NL],进而把法律合约模板分为可计算部分LCTC[NL]和不可计算部分LCTNC[NL]。不可计算部分LCTNC[NL]除了包含不确定性的合约描述,如及时、根据实际情况、适当地等术语之外,还包含了法律法规的基本概念和条款解释等确定性描述内容;可计算部分LCTC[NL]包含合约触发条件、交易时间、交易金额、交易数量、合约最终状态(正常、违约、撤销)等,然后根据法律合约参与方的角色,应用某个非自然语言的法律合约描述语言LCPL,对可计算部分描述,得到具体法律合约的可计算部分的描述LCTC[LCPL],流程如图3所示。
可计算部分LCTC[NL]指的是可通过相应参数具体表示且具备一定的上下文关系的内容,具体包含了合约的签订时间(StartTime)、合约账户的初始余额(Balance)、合约执行触发条件(Condition),合约约束方(Agent),合约规则之间的逻辑关系(Relation)、合约的状态(ContractState)等,并可根据具体合约实际情况进行相应的添加和修改。
对合约模板中的可计算部分LCTC[NL],根据法律合约参与方的角色,结合具体的法律合约,通过构建本体将要素信息,比如责任、义务和条件等,进行归类,并建立相互之间的因果联系,应用某个法律合约描述语言LCPL对其进行描述,具体的描述语言可根据合约的类型和合约的要求来进行选择,最终得到可计算部分的法律合约描述LCTC[LCPL]。
为了更好的说明根据法律合约参与方的角色形成LCTC[LCPL]的过程,现以一个简单的三方买卖交易合约的可计算部分LCTC[NL]为例(但本发明并不仅限于此类型的合约):合同签订有甲乙丙三方,分别为卖方、买方、第三方(如供应商、平台方、物流方等),分别参数化为A,B,C,A负责销售货物object,B购买货物object,B开始预付定金dep表示买卖交易开始,由C开始发货,合约规定N天内C需将货物object送到B的指定地点,若B收货成功,交易完成,则A收到a的交易额,C获得c的报酬,合约结束,合约状态为Complete。若B收货出现延误,不仅影响了A的信誉,同时对B造成了违约,将由C对A和B进行不同程度的赔偿,赔偿金额分别按照每天a和b进行,合约状态为Delay,若出现货物object丢失,将由C对A和B进行一次性不同程度的赔偿,赔偿金额分别为a和b,合约状态为Fail。具体合约过程流程图如图4所示。在本示例中容易得知,这里使用合约的本体来描述各参与方的要素和各要素直接的联系,如图5所示。根据图4和图5,易知各参与方要素信息分类如下:
卖方A:收定金,提交订单,合约状态为Complete、Delay或Fail时收账a;
买方B:付定金,收到货,合约状态为Complete时转账给A和C分别为a、c,合约状态为Delay或Fail时收账b;
发货方(第三方)C:收到订单后发货,合约状态为Complete时收账c,合约状态为Delay或Fail,转账给A和B分别为a、b。
最后,据此参与方的要素分类构建法律合约可计算部分的描述LCTC[LCPL]。对于不同的法律合约的可计算部分的形式化描述语言,可根据不同的要求要求选择不同的定义方法和形式化语言,目前已有法律合约形式化描述语言LCPL有业务流程语言BPMN,形式化合同语言FCL,商业合同语言BCL、确定性有限状态机DFA等多种。为了更贴合本课题研究方法,以形式化描述语言BCL来描述本示例中的法律合约。BCL全称为Business ContractLanguage,是一种基于事件的方式描述业务合同执行的形式化语言,包含角色(Role)、事件模式(EventPattern)、状态(State)、策略(Policy)、义务(Obligation)、允许(Permission)、禁止(Prohibition)、违反(Violation)等八个部分。仍以上述法律合约为例,使用BCL描述合约的内容时,角色可包含A、B、C三个,事件包含付定金(Desposit)、提交订单(PurchaseOrder)和货物送达(GoodsAvailable)共三种,策略可包含提供货物策略(MakeGoodsAvailable)、正常完成收费策略(NomalChargingPolicy)、超时收费策略(OverChargingPolicy)、货物丢失收费策略(FailChargingPolicy)共四种,义务(Obligation)包含各方的转账操作,不同的策略会有不同的义务。
步骤3:提出法律合约描述语言的可执行语义LCPL[KS]与智能合约开发语言的可执行语义SCPL[KS]。基于RL逻辑和ML逻辑的可执行语义定义框架,该框架可以对任何程序开发语言的语义进行定义,如特定领域语言、命令式语言等,可对程序代码进行符号执行和具体执行,并输出路径约束及状态信息等。应用重写逻辑和语义框架,定义法律合约描述语言LCPL的可执行语义LCPL[KS]和智能合约开发语言SCPL语言的可执行语义SCPL[KS]。如图6所示。
首先,基于使用RL逻辑和ML逻辑给出语言定义的一般概念,并结合基于重写逻辑的K框架,实现可定义法律合约和智能合约的可执行语义框架。语言的定义具体包含ML符号M(包含语言的语法、配置等)、M模型和一组RL公式的语义组成的三元组。ML逻辑全名为匹配逻辑(Matching Logic),是一种公理语义,可使用匹配逻辑来描述和推理任意程序配置的结构特性。在语法上,它引入了一个新的公式结构,称之为模式,这是一个可能包含变量的配置项。其中,<..>cfg作为一个顶级的配置符号包含其他具有语义数据的格单元,比如代码<..>k,环境<…>env,堆<…>heap,输入缓冲<…>in,输出缓冲<…>out等等单元,整体配置形式示例如下:<<…>k<…>env<…>heap<…>in<…>out…>cfg,具体配置虚根据不同的语言特点设计。RL逻辑全名为可达逻辑(Reachability Logic),由一些可达性规则组成,可将RL逻辑与ML单元结合,实现基于ML逻辑检查可达逻辑的有效性。K是一个基于重写逻辑的框架,给定一种语言的语法和语义,K可以生成解析器、解释器、符号执行等分析工具,如模型检查器和演绎定理证明程序,因此,可基于K利用ML和RL构建独立于语言的符号执行框架,同时K-Maude工具链能够为模型检查和程序的符号执行提供自动支持。
然后,应用基于RL逻辑的支持符号执行和具体执行的K语义框架,设置法律合约和智能合约的符号变量,包括各账户余额、交易条件等,分别定义可进行符号分析和具体执行的法律合约描述语言LCPL的可执行语义LCPL[KS]、智能合约开发语言SCPL的可执行语义SCPL[KS]。法律合约描述语言的可执行语义LCPL[KS]语义包含LCPL[BNF]语法、LCPL[BNF]配置和LCPL[KS]语义规则三部分,智能合约开发语言的可执行语义SCPL[KS]语义包含SCPL[BNF]语法、SCPL[BNF]配置和SCPL[KS]语义规则三部分,其中LCPL[BNF]和SCPL[BNF]一种以BNF表示的语法,涵盖其核心特征,遵循K框架的BNF范式规则,直接以.K文件存储,且可直接由K框架进行语法校验和编译,可根据图5的初步构建LCPL[BNF]。LCPL[BNF]配置和SCPL[BNF]配置,则根据语言的特点来进行格单元划分,LCPL[KS]语义规则和SCPL[KS]语义规则是根据其语法和配置定制的语义规范,是后期的编译和执行的语义基础。
最后,对于法律合约和智能合约的共性特征,可以使用同一语义。共性的基本类型包含数值类型、布尔类型等,共性的基本运算有数值的加减乘除、条件判断等,表1列举了部分共性特征的语义规则示例。
表1
语义说明 | KS语义 |
数值相加/减 | <<I1±I2…><sub>K</sub>…><sub>cfg</sub>→<<I1±<sub>Int</sub>I2…><sub>K</sub>…><sub>cfg</sub> |
数值比较 | <<I1≤I2…><sub>K</sub>…><sub>cfg</sub>→<<I1≤<sub>Int</sub>I2…><sub>K</sub>…><sub>cfg</sub> |
If判断 | <<if B then S1 else S2…><sub>k</sub>…><sub>cfg</sub>∩B=ture→<<S1…><sub>K</sub>…><sub>cfg</sub> |
步骤4:法律合约与智能合约的完全一致性度量方法。应用合适的可达性规则,结合语言独立的符号执行和K框架,对法律合约描述语言的可执行语义LCPL[KS]与智能合约开发语言的可执行语义SCPL[KS]进行编译,然后对具体的法律合约可计算部分描述LCTC[LCPL]和对应的智能合约代码SCC[SCPL]分别进行符号执行分析,获得符号路径约束,即符号执行轨迹,包含其路径、状态(配置)和迁移关系,计算轨迹一致率TCCR,度量法律合约和智能合约的完全一致性,如图7所示。
首先,对具体的法律合约可计算部分描述LCTC[LCPL]和其相应的智能合约代码SCC[SCPL],设置符号变量,主要对代码中判断语句中涉及到变量进行符号化处理,比如将时间变量date符号化为N,具体方法是在定义LCPL[BNF]和SCPL[BNF]的语法规则配置中对其进行符号出化处理。
然后,在定义好语法和语义规则的基础上,使用K框架对法律合约描述语言的可执行语义LCPL[KS]和智能合约开发语言的可执行语义SCPL[KS]分别进行Kompile编译,编译命令输入符号变量,K框架中-backend symbolic选项以表示进行的是符号编译,若未返回错误代表编译成功。
最后,再进行Krun执行源代码,即使用K框架中的Krun工具运行具体的法律合约可计算部分描述LCTC[LCPL]和相应智能合约代码SCC[SCPL]文件,比如在krun命令中使用选项-cIN="ListItem(#symInt(n))"-cPC="true"表示的是对符号变量n进行符号执行分析。在符号执行过程中,在遇到比如if语句、while语句等判断语句时,执行路径开始进行分支,直至结束,在所有的输出结果中的path-condition配置获得了所有全部路径约束,每个路径都对应包括对应的状态信息(状态包含对应的符号具体值、其他变量值等),对于同一符号输入比较符号执行轨迹,匹配所有符号路径信息,查找相同的路径执行轨迹,通过轨迹一致率TCCR=相同执行轨迹/全部执行轨迹,根据度量指标度量其完全一致性。
步骤5:部分一致性度量方法。将步骤4获得符号路径约束连接Z3 SMT求解器进行求解,构造其测试用例,应用K框架将测试用例分别作为具体的法律合约计算部分描述LCTC[LCPL]和对应的智能合约代码SCC[SCPL]的输入,进行具体执行分析,通过最终的执行结果计算,度量法律合约与智能合约的部分一致性,如图8所示。
首先,根据步骤4中得到的所有符号路径约束,结合Z3 SMT求解器求解路径约束(K框架本身是可以融合Z3 SMT求解器),得到符号变量对应的具体值,从而构造了具体的法律合约可计算部分的描述LCTC[LCPL]和相应智能合约代码SCC[SCPL]的运行测试用例。
然后,输入测试用例实现具体执行得到具体的输出结果。将测试用例输入分别到具体的法律合约的可计算部分LCTC[LCPL]和相应智能合约代码SCC[SCPL]种,对法律合约描述语言的可执行语义LCPL[KS]和智能合约开发语言的可执行语义SCPL[KS]分别进行Kompile编译,比如在语法规则中设置一个符号变量n,在编译命令中使用-cPC="true"-cIN="10",表示的是以符号变量n对应的具体值10作为具体输入执行,然后使用Krun运行LCTC[LCPL]和SCC[SCPL]的文件,最后输出得到测试用例的对应的全部具体执行结果;对于同一输入比较输出结果,总的输出一致率OPCR=相同的输出/全部输出,根据度量指标度量其部分一致性;
为了更详细的说明利用符号执行框架实现部分一致性和完全一致性的量化,仍然以2.1章节的合约为例子说明。在合约的语言描述或代码开发中:
首先需要获得每个参与方A、B、C的账户的初始余额,分别为BalaA、BalaB、BalaC,并声明其它相关的变量,变量包含从发货到收货的天数n,收货状态flag、每个账户的余额变动金额a,b,c、合约状态ContractState等;
然后,对收货的天数n和收货状态flag进行if条件判断,对于不同的情况给出不同的转账策略,并更新合约的状态ContractState。
最后,将条件判断涉及到的变量n符号化为N,flag符号化为F,其他变量保持不变,对法律合约的语言描述或对应的智能合约代码基于独立语言的符号执行框架进行符号执行分析,理想情况下得到的基本符号执行树如图9所示。
在输出一致率和轨迹一致率均为100%的理想条件下,使用独立语言的符号执行框架对具体的法律合约可计算部分描述LCTC[LCPL]和其相应的智能合约代码SCC[SCPL]的分析,得到的符号路径约束均各有三个,分别是:
N<=10∩F==1;
N>10∩F==2
N>10∩F==3
对于具体执行衡量其部分一致性,在本示例中,通过将得到的符号路径约束传送给约束求解器,分别得到三组解:
N=1,F=1;N=11,F=2;N=11,F=3;然后利用该框架中的Kompile和Krun工具,将得到的三组符号变量的解作为输入,输出每个路径对应的所有变量的终值,本示例中除了变量n和flag之外,还包含与之对应的BalaA,BalaB,BalaC,ContractState等变量的值。若在同一输入的情况下,得到的所有变量值一致,则称为输出一致率为100%,满足部分一致性;若只有其中的2组输出一致,称为输出一致率为67%,不满足部分一致性,或者说这两种情况下的部分一致性程度不一样。
对于符号执行衡量其完全一致性,在本示例中,路径约束个数只有3个,但在实际的合约分析中,最终得到的路径约束的个数取决于变量的个数和条件语句的复杂度。若利用符号执行框架,针对法律合约形式化语言和对应的智能合约代码分别进行符号执行分析,得到符号路径约束结果不一致,如法律合约和智能合约分别得到3条路径,且完全匹配,则轨迹一致率TCCR为100%,满足完全一致性;若只有1条路径一致,另外两条路径无法匹配,则轨迹一致率TCCR为33%,不满足完全一致性,或者说这两种情况完全一致性程度不一样。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (6)
1.一种语言独立的法律合约与智能合约一致性度量方法,其特征在于,包括以下步骤:
步骤1:提出法律合约和智能合约部分一致性和完全一致性定义,并融合重写逻辑和语言独立的符号执行,提出语言独立的法律合约与智能合约一致性的度量方法,根据度量指标度量法律合约和智能合约的部分一致性和完全一致性;
步骤2:借鉴Clack的智能合约模板的思想,构建自然语言描述的法律合约模板,进而把法律合约模板分为可计算部分和不可计算部分,根据法律合约参与方的角色,应用非自然语言的法律合约描述语言,对可计算部分描述,得到具体的法律合约可计算部分描述LCTC[LCPL];
步骤3:根据基于RL逻辑和ML逻辑的可执行语义定义框架,应用重写逻辑和语义框架,定义法律合约描述语言的可执行语义LCPL[KS]和智能合约开发语言的可执行语义SCPL[KS];
步骤4:应用合适的可达性规则,结合语言独立的符号执行技术和K框架,对法律合约描述语言的可执行语义LCPL[KS]与智能合约代码开发语言的可执行语义SCPL[KS]进行编译,定义符号变量,对具体的法律合约和其对应的智能合约代码分别进行符号执行分析,获得符号路径约束,计算轨迹一致率以度量法律合约和智能合约的完全一致性;
步骤5:将符号路径约束输入到Z3 SMT求解器进行求解,以构造具体的法律合约可计算部分描述LCTC[LCPL]和对应的智能合约代码SCC[SCPL]的测试用例,应用K框架将得到的测试用例分别作为LCTC[LCPL]和对应的智能合约代码SCC[SCPL]的输入,通过执行分析结果度量法律合约与智能合约的部分一致性。
2.根据权利要求1所述的语言独立的法律合约与智能合约一致性度量方法,其特征在于:
步骤1所述一致性为部分一致性和完全一致性;
所述部分一致性,借鉴协议一致性的概念,即对网络协议与协议标准的一致性分析,对于相同序列输入产生的输出一致,对任何一个使法律合约和与其对应的智能合约都终止的具体输入,法律合约和与其对应的智能合约产生相同的输出;
所述完全一致性,在部分一致的基础上,同时借鉴程序等价的概念,即行为等价,如果程序满足相同的行为特性,则可以认为它们在行为上是等价的;
步骤1所述融合重写逻辑和语言独立的符号执行具体方法为:
应用基于重写逻辑的语义分析工具K框架分别对法律合约可计算部分描述语言LCTC[LCPL]和智能合约开发语言SCC[LCPL]分别进行建模和语义分析,分析内容涉及到合约规则、事件管理、触发机制等所有关于合约的执行步骤和结果等内容,并定义相应的语法和规则;
在规则中定义需要分析的符号变量,符号变量可包含时间、合约状态等信息,通过语言独立的符号执行框架对具体的法律合约形式化描述LCTC[LCPL]和相对应的智能合约代码SCC[SCPL]进行符号执行分析和具体执行分析,分别得到符号执行后的符号执行路径和具体执行后的具体输出结果;
步骤1所述语言独立的法律合约与智能合约一致性的度量方法为:
对于确定性的法律合约和智能合约,在初始环境和输入相同的情况下,根据前面得到的输出结果和符号执行路径:
部分一致性的度量指标计算公式:输出一致率OPCR=相同的输出/全部输出;
完全一致性度量指标的计算公式:轨迹一致率TCCR=相同执行轨迹/全部执行轨迹;
步骤1所述根据度量指标度量法律合约和智能合约的部分一致性和完全一致性:
部分一致性量化后的结果表示为:当输出一致率OPCR=100%时,表示的是法律合约和智能合约满足部分一致性;当输出一致率OPCR<100%时,表示的是法律合约和智能合约不满足部分一致性;
完全一致性量化后的结果表示为:当轨迹一致率TCCR=100%时,表示的是法律合约和智能合约满足完全一致性;当轨迹一致率TCCR<100%时,表示的是法律合约和智能合约不满足完全一致性。
3.根据权利要求1所述的语言独立的法律合约与智能合约一致性度量方法,其特征在于:
步骤2所述不可计算部分包含:不确定性的合约描述、部分确定性描述内容;
步骤2所述可计算部分包含:合约触发条件、交易时间、交易金额、交易数量、合约最终状态等;
步骤2所述具体的法律合约可计算部分描述LCTC[LCPL]为:
对合约模板中的可计算部分LCTC[NL],根据法律合约参与方的角色,结合具体的法律合约,通过构建本体将要素信息,进行归类,并建立相互之间的因果联系,应用某个法律合约描述语言LCPL对其进行描述,具体的描述语言可根据合约的类型和合约的要求来进行选择,最终得到可计算部分的法律合约描述LCTC[LCPL]。
4.根据权利要求1所述的语言独立的法律合约与智能合约一致性度量方法,其特征在于:
步骤3所述法律合约描述语言的可执行语义LCPL[KS]为:
基于使用RL逻辑和ML逻辑给出语言定义的一般概念,并结合基于重写逻辑的K框架,实现可定义法律合约可计算部分的描述语言LCTC[LCPL]的可执行语义框架;
ML逻辑全名为匹配逻辑(Matching Logic),是一种公理语义,可使用匹配逻辑来描述和推理任意程序配置的结构特性;RL逻辑全名为可达逻辑,由可达性规则组成;
语言的定义具体包含ML符号、M模型和一组RL公式的语义组成的三元组,可表示为R=(ML,M,RL);
应用基于RL逻辑的支持符号执行和具体执行的K语义框架,分别定义可进行符号分析和具体执行的法律合约描述语言LCPL的可执行语义LCPL[KS];
法律合约LCPL[KS]语义包含LCPL[BNF]语法、LCPL[BNF]配置和LCPL[KS]语义规则三部分,其中LCPL[BNF]是一种以BNF表示的语法,涵盖其核心特征,遵循K框架的BNF范式规则,直接以.K文件存储,且可直接由K框架进行语法校验和编译;
LCPL[BNF]配置则根据语言的特点来进行格单元划分,配置使用ML逻辑完成,LCPL[KS]语义规则是根据其语法和配置定制的语义规范,实际的语义可根据实际的语言特点和需要进行具体定义;
步骤3所述智能合约开发语言的可执行语义SCPL[KS]为:
基于使用RL逻辑和ML逻辑给出语言定义的一般概念,并结合基于重写逻辑的K框架,实现可定义智能合约开发语言SCC[LCPL]的可执行语义框架,该框架同定义LCTC[LCPL]的可执行语义框架;
语言的定义包含ML符号M、M模型、一组RL公式的语义组成的三元组,可表示为R=(ML,M,RL);
应用基于RL逻辑的支持符号执行和具体执行的K语义框架,定义可进行符号分析和具体执行的智能合约开发语言SCPL的可执行语义SCPL[KS];
智能合约SCPL[KS]语义包含SCPL[BNF]语法、SCPL[BNF]配置和SCPL[KS]语义规则三部分,其中SCPL[BNF]一种以BNF表示的语法,涵盖其核心特征,遵循K框架的BNF范式规则,直接以.K文件存储,且可直接由K框架进行语法校验和编译;SCPL[BNF]配置,则根据语言的特点来进行单元格划分,配置使用ML逻辑完成,SCPL[KS]语义规则是根据其语法和配置定制的语义规范,实际的语义可根据实际的语言特点和需要进行具体定义。
5.根据权利要求1所述的语言独立的法律合约与智能合约一致性度量方法,其特征在于:步骤4所述语言独立的符号执行技术具体为:基于重写逻辑的K框架,从给定的语言定义开始,生成一个新的语言定义,其语法与原始定义相同,对其语义规则进行转换;
根据定义对具体程序进行符号执行,就是用符号语义执行相同的程序,形成支持语言独立的符号执行技术框架;
步骤4所述定义符号变量具体为:符号变量是法律合约和智能合约通用的,即定义相同的符号变量,主要涉及到合约判断条件中的变量信息;
步骤4所述对具体的法律合约和其对应的智能合约代码分别进行符号执行分析获得符号执行路径具体为:
定义源代码的符号变量,基于已得到的语言独立的符号执行技术框架,对源代码进行符号执行技术分析,获得多个以一串由符号变量组成的逻辑表达式的交集表示的符号路径约束,该路径约束作为后面的一致性分析数据基础;
步骤4所述计算轨迹一致率以度量法律合约和智能合约的完全一致性为:
对具体的法律合约可计算部分描述LCTC[LCPL]和其相应的智能合约代码SCC[SCPL],设置符号变量,代码中判断语句中涉及到变量进行符号化处理,具体方法是在定义LCPL[BNF]和SCPL[BNF]的语法规则配置中对其进行符号出化处理;
在定义好语法和语义规则的基础上,使用K框架对LCPL[KS]和SCPL[KS]分别进行Kompile编译,使用的编译命令中输入符号变量,并使用-backend symbolic选项以表示进行的是符号编译,然后再进行Krun执行源代码,即使用Krun运行具体的法律合约的可计算部分LCTC[LCPL]和相应智能合约代码SCC[SCPL];
符号执行过程中,在遇到比如if语句、while语句、switch判断语句时,执行路径开始进行分支,直至结束,在所有的输出结果中的path-condition配置获得了所有全部路径约束,每个路径都对应包括对应的状态信息即状态包含对应的符号具体值、其他变量值等,对于同一符号输入比较符号执行轨迹,匹配所有符号路径信息,查找相同的路径执行轨迹;
通过轨迹一致率TCCR=相同执行轨迹/全部执行轨迹,根据度量指标度量其完全一致性;
当轨迹一致率TCCR=100%时,表示的是法律合约和智能合约满足完全一致性;
当轨迹一致率TCCR<100%时,表示的是法律合约和智能合约不满足完全一致性。
6.根据权利要求1所述的语言独立的法律合约与智能合约一致性度量方法,其特征在于:
步骤5所述通过执行分析结果度量法律合约与智能合约的部分一致性具体为:
根据步骤4中得到的所有符号路径约束,输入到Z3 SMT求解器中求解路径约束,得到符号变量对应的具体值,从而构造了法律合约LCTC[LCPL]和相应智能合约代码SCC[SCPL]的运行测试用例;
将测试用例输入分别到具体的法律合约的可计算部分LCTC[LCPL]和相应智能合约代码SCC[SCPL]中,实现具体执行得到具体的输出结果,并对输出结果进行比较分析;具体是对LCPL[KS]和SCPL[KS]分别进行Kompile编译,如在编译命令中使用-cPC="true"-cIN="10",表示的是以符号变量的具体值10作为具体输入执行,然后使用Krun运行LCTC[LCPL]和SCC[SCPL]的文件,最终输出得到测试用例的对应的全部具体执行结果,对于同一输入比较输出结果,统计输出结果一致的数量和全部输出数量,计算总的输出一致率OPCR=相同的输出/全部输出,根据度量指标度量其部分一致性;当输出一致率OPCR=100%时,表示的是法律合约和智能合约满足部分一致性;当输出一致率OPCR<100%时,表示的是法律合约和智能合约不满足部分一致性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010452972.XA CN111651977B (zh) | 2020-05-26 | 2020-05-26 | 一种语言独立的法律合约与智能合约一致性度量方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010452972.XA CN111651977B (zh) | 2020-05-26 | 2020-05-26 | 一种语言独立的法律合约与智能合约一致性度量方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111651977A true CN111651977A (zh) | 2020-09-11 |
CN111651977B CN111651977B (zh) | 2021-07-06 |
Family
ID=72344792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010452972.XA Active CN111651977B (zh) | 2020-05-26 | 2020-05-26 | 一种语言独立的法律合约与智能合约一致性度量方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651977B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540753A (zh) * | 2020-12-23 | 2021-03-23 | 航天科工智慧产业发展有限公司 | 一种案件特征解析方法 |
CN113448592A (zh) * | 2021-02-08 | 2021-09-28 | 北京科技大学 | 一种基于合同文本标记语言的智能法律合约生成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180174255A1 (en) * | 2016-03-31 | 2018-06-21 | Clause, Inc. | System and method for creating and executing data-driven legal contracts |
US20190034404A1 (en) * | 2017-07-28 | 2019-01-31 | International Business Machines Corporation | Cognitive mediator for generating blockchain smart contracts |
WO2019090005A1 (en) * | 2017-11-01 | 2019-05-09 | Clause, Inc. | System and method for a blockchain-based network transitioned by a legal contract |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985073B (zh) * | 2018-07-18 | 2020-05-22 | 成都链安科技有限公司 | 一种高度自动化的智能合约形式化验证系统及方法 |
CN109063477B (zh) * | 2018-07-18 | 2021-04-20 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
KR102041720B1 (ko) * | 2018-07-20 | 2019-11-06 | 숭실대학교산학협력단 | 플렉서블 블록체인 프레임워크 구현 시스템 및 p2p 네트워크 설계 방법, 상기 방법을 수행하기 위한 기록 매체 |
CN110599183B (zh) * | 2019-06-20 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 智能合约调用方法、装置及存储介质 |
US10656923B1 (en) * | 2019-07-31 | 2020-05-19 | Capital One Services, Llc | Systems for determining regulatory compliance of smart contracts |
CN111062038B (zh) * | 2019-11-23 | 2022-06-24 | 同济大学 | 一种基于状态空间的智能合约形式化验证系统及方法 |
-
2020
- 2020-05-26 CN CN202010452972.XA patent/CN111651977B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180174255A1 (en) * | 2016-03-31 | 2018-06-21 | Clause, Inc. | System and method for creating and executing data-driven legal contracts |
US20190034404A1 (en) * | 2017-07-28 | 2019-01-31 | International Business Machines Corporation | Cognitive mediator for generating blockchain smart contracts |
WO2019090005A1 (en) * | 2017-11-01 | 2019-05-09 | Clause, Inc. | System and method for a blockchain-based network transitioned by a legal contract |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540753A (zh) * | 2020-12-23 | 2021-03-23 | 航天科工智慧产业发展有限公司 | 一种案件特征解析方法 |
CN113448592A (zh) * | 2021-02-08 | 2021-09-28 | 北京科技大学 | 一种基于合同文本标记语言的智能法律合约生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111651977B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sarkar et al. | Metrics for measuring the quality of modularization of large-scale object-oriented software | |
CN111651977B (zh) | 一种语言独立的法律合约与智能合约一致性度量方法 | |
CN111695805B (zh) | 一种面向法律合同的智能合约模型构建方法及系统 | |
Cámara et al. | Interactive specification and verification of behavioral adaptation contracts | |
Rocha et al. | Model-based test case generation from UML sequence diagrams using extended finite state machines | |
Estero-Botaro et al. | Mutation operators for WS-BPEL 2.0 | |
Shishkin | Debugging smart contract’s business logic using symbolic model checking | |
Antignac et al. | Privacy architectures: Reasoning about data minimisation and integrity | |
Guanciale et al. | : A tool chain for choreographic design | |
Turner | Formalising web services | |
El-Saber | CMMI-CM compliance checking of formal BPMN models using Maude | |
Nooraei Abadeh et al. | Delta‐based regression testing: a formal framework towards model‐driven regression testing | |
Sneed et al. | The design and use of WSDL‐Test: a tool for testing Web services | |
Fitzgerald et al. | Triumphs and challenges for the industrial application of model-oriented formal methods | |
Penttinen et al. | An open modelling approach for availability and reliability of systems-OpenMARS | |
MacKenzie et al. | Verification technology potential with different modeling and simulation development and implementation paradigms | |
Zhang et al. | How Effective Are They? Exploring Large Language Model Based Fuzz Driver Generation | |
Liu | Agile formal engineering method for software productivity and reliability | |
Polo et al. | Automated generation of oracled test cases with regular expressions and combinatorial techniques | |
Ukić et al. | The influence of cyclomatic complexity distribution on the understandability of xtUML models | |
Weidmann | Fault-Tolerant Consistency Management in Model-Driven Engineering | |
Huang et al. | Measuring the maintainability of a communication protocol based on its formal specification | |
Bollig et al. | Modelling, specifying, and verifying message passing systems | |
Semeráth | Formal Validation and Model Generation for Domain-Specific Languages by Logic Solvers | |
Li et al. | Towards code generation from design models |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221230 Address after: Room 302, Floor 3, Huofenghuang Cloud Computing Base, No. 6, Jiangwang Road, Jianghan Economic Development Zone, Jianghan District, Wuhan, Hubei 430021 Patentee after: WUHAN LILOSOFT CO.,LTD. Address before: 430074 No. 182, National Road, Hongshan District, Wuhan, Hubei Patentee before: SOUTH CENTRAL University FOR NATIONALITIES |