CN107783758A - 一种智能合约工程方法 - Google Patents

一种智能合约工程方法 Download PDF

Info

Publication number
CN107783758A
CN107783758A CN201610724219.5A CN201610724219A CN107783758A CN 107783758 A CN107783758 A CN 107783758A CN 201610724219 A CN201610724219 A CN 201610724219A CN 107783758 A CN107783758 A CN 107783758A
Authority
CN
China
Prior art keywords
intelligent contract
contract
test
intelligent
model
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
Application number
CN201610724219.5A
Other languages
English (en)
Other versions
CN107783758B (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.)
Beihang University
Original Assignee
Beihang University
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 Beihang University filed Critical Beihang University
Priority to CN201610724219.5A priority Critical patent/CN107783758B/zh
Publication of CN107783758A publication Critical patent/CN107783758A/zh
Application granted granted Critical
Publication of CN107783758B publication Critical patent/CN107783758B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种智能合约生成方法,其特征在于包括以下步骤:将非形式化的智能合约说明文档转变为形式化规格的说明文档;根据对所述智能合约形式化规格的说明文档,建立智能合约的动态模型;实现不同的智能合约动态模型之间的转换;验证智能合约动态模型的正确性;通过正确性验证后,根据智能合约的动态模型自动生成智能合约代码;对智能合约形式化规格的说明文档与生成的智能合约代码进行一致性检测。

Description

一种智能合约工程方法
技术领域
本发明涉及智能合约验证领域,特别是涉及到智能合约的生成方法。
背景技术
智能合约是指把合约条款嵌入到软、硬件中,通过合约与用户接口来促进合约的执行,它是我们在互联网中形成安全、数字化关系的关键。智能合约的核心是算法合同(algorithmic contract),即当事人同意依据一定的计算机算法来确定合同的内容、订立合同和履行合同。
智能合约有以下主要特征:
特征1:存储在智能合约中的所有资产项目必须合法且有效的,运行的单位或个人在法律上必须要拥有合法的所有权。
特征2:智能合约的程序必须是被法律认同的程序,以使它具有法律效力。即合约程序需被律师、法官所承认。
特征3:智能合约执行必须是正确的、可验证的。智能合约所计算所产生的结果应能够被验证正确性,且数据保证不被破坏,结果被正确传送。如果有需要还能恢复以前状态,具有一定的容错性。
特征4:智能合约产生的数据必须被安全地存储且有法律效应,可被用于法律的取证。
特征5:智能合约应该是上下文一致的。合约必须与当地的法律法规结合在一起,不应该有冲突。
智能合约的生成可分为三步:首先,提出合约需求,然后,书写合约文本,最后,通过编码来实现合约。其中,在编码实现的过程中,会涉及以下三个重要问题:
1)智能合约需要验证合约本身有效性和逻辑属性的正确性。比如,智能合约的状态可达性,智能合约的死锁活锁问题;
2)只有保证智能合约文本和最终合约代码是一致的,它才会被认可,这是智能合约可以得到推广和使用的先决条件;
3)假设可以通过某种方法自动生成可靠的合约可执行代码,这将会大大的节省合约编码的时间和成本,提高合约生成的效率。
但是,目前的智能合约还没有解决以上问题。而且通常情况下,要求制订合约的双方或多方来理解和认可用代码写的合同是不切实际的。
因此,基于智能合约的5个特征和3个重要问题,为了完善智能合约的生成和发展,为保证智能合约的扩展和推广,使用户信任并使用智能合约,本发明提出将智能合约与形式化方法相结合的技术。
形式化方法是基于数学的特种技术,适合于软件和硬件的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和鲁棒性。形式化方法的一个重要研究内容是形式规约(也称形式规范或形式化描述),它是对程序“做什么”的数学描述,是用具有精确语义的形式语言书写的程序功能描述,它是设计和编制程序的出发点,也是验证程序是否正确的依据。对形式规约通常要讨论其一致性(自身无矛盾)和完备性(是否完全、无遗漏地刻画所要描述的对象)等性质。形式规约的方法主要可分为两类:一类是面向模型的方法也称为系统建模,该方法通过构造系统的计算模型来刻画系统的不同行为特征;另一类是面向性质的方法也称为性质描述,该方法通过定义系统必须满足的一些性质来描述一个系统。
形式验证形式化方法的另一重要研究内容是形式验证。形式验证与形式规约之间具有紧密的联系,形式验证就是验证已有的程序(系统)P,是否满足其规约的要求(即),它也是形式化方法所要解决的核心问题。传统的验证方法包括模拟和测试,它们都是通过实验的方法对系统进行查错。模拟和测试分别在系统抽象模型和实际系统上进行,一般的方法是在系统的某点给予输入,观察在另一点的输出,这些方法花费很大,而且由于实验所能涵盖的系统行为有限,很难找出所有潜在的错误。基于此,形式验证主要研究如何使用数学方法,严格证明一个程序的正确性(即程序验证)。
形式化方法贯穿于合约工程的整个生命周期,这里,以合约工程的思想对智能合约进行形式化方法的建模和验证。合约工程是一体化、形式化的合约开发过程。所谓“一体化”是指合约描述、验证、实现和测试等技术前后衔接,并在同一个开发系统中完成。所谓“形式化”是指形式化描述技术贯穿于合约开发的各个阶段,使得合约的研究开发可以独立于非形式化的自然语言文本和最终实现代码,避免合约验证测试的复杂性。
而合约工程方法可以采用基于模型驱动的形式化描述、模型检测、模型验证、定理证明和代码生成等手段,确保合约的可靠、安全和高效研发,具有重要意义。它可支持新合约的设计、已有合约的改造和验证。合约工程的核心是利用形式化描述语言建立合约模型、测试合约模型与合约标准的一致性、进行合约性质的验证,直到合约在模型层设计完毕,还可进行代码生成,从形成可表达、可测试、可验证和代码生成技术链和合约设计周期。
这种方法将合约设计重点从平台上移开,能够极大地减少开发的成本,并且提高设计的一致性和质量,消除了重复的低层次开发工作,并且还带来一致性和可维护性的优势。模型通过修改可以充分利用,这样可以应对快速变化的开发需求和环境。在早期进行分析与验证,能够尽早发现系统设计的潜在错误;采用形式化方法对模型进行分析与验证也具有更高的可靠级别。还能很好的使文档与实现保持一致,文档由模型生成,它们确保了一致性,并且使开发人员日常处理的模型中的信息可用,比在很难将信息定位的文档中要好。
因此,智能合约的开发涉及合约描述、合约验证、合约实现和合约测试等多个环节。本发明不仅解决了智能合约建模的设计问题,还提供了一种对智能合约系统模型的验证和一致性测试,并通过研究智能合约代码的自动生成,使得智能合约的表达与执行具有保障和一致性,信赖度更高。
发明内容
一种智能合约生成方法,其特征在于包括以下步骤:
将非形式化的智能合约说明文档转变为形式化规格的说明文档;
根据所述智能合约形式化规格的说明文档,建立智能合约的动态模型;
验证智能合约动态模型的正确性;
通过正确性验证后,根据智能合约动态模型自动生成智能合约代码;
对所述智能合约形式化规格的说明文档与生成的智能合约代码进行一致性检测。
优选的,选择建模语言与建模工具建立智能合约的动态模型。
优选的,验证智能合约动态模型的正确性包括验证以下一种或多种:
●可达性:验证智能合约的各种状态之间的可达关系;
●没有死锁;
●没有活锁;
●弱活锁:指智能合约处于死循环中,只有当智能合约交换命令的相对速度达到某一状态时,智能合约才退出死循环;
●时间相关的活锁,也称为临时阻塞:智能合约处于死循环中,当通信双方交换报文的相对速度到达某一状态时,智能合约打破死循环;
●有界性:检验合约的某些成分或参数的容量是否有界;
●可恢复性或自同步性:当出现差错后,智能合约能否在有限的步骤内返回到正常状态;
●无状态二义性;
●互斥性;
●终止或进展;智能合约提供的服务必须在有限时间内完成;
●无冗余描述:智能合约中没有无用的、冗余描述;
●公平性:每一个智能合约实体均应平等地得到运行的机会。
优选的,所述一致性检测具体包括以下步骤:
(1)确定测试目的,具体包括以下至少一种:能力测试、正确行为的行为测试、语法错误的行为测试、不合时宜行为的行为测试、智能合约必备行为的测试、发送与接收相互交互的测试、与实现选项相关的测试;
(2)产生测试集
测试集的产生包括:测试序列的产生、测试数据的生成、将测试序列和测试数据合起来生成并描述测试集;
(3)测试实现
基于测试工具,用测试和测试控制符(TTCN)描述测试集。
(4)测试执行
在测试工具中,对被测智能合约实现执行TTCN测试用例,并对被测智能合约实现的外部行为响应进行记录;
(5)测试评估
对一致性测试结果进行评估和分析,判定是否通过一致性测试,如未通过测试则查出原因,进行反馈。
优选的,使用形式化描述模型及形式化描述语言将非形式化的智能合约说明文档转变为形式化规格的说明文档,其中用于形式化的方法包括以下至少一种:状态变迁机、时序逻辑、进程代数;形式化描述语言包括:规范及描述语言(SDL)、时间调整规范语言(LOTOS)、网络协议形式化描述语言中的国际标准ESTELLE、过程或协议元语言(Promela)。
优选的,还包括对于同一个智能合约使用不同的建模语言建立多个智能合约的动态模型,并验证所述同一个智能合约的多个动态模型的正确性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要的附图做简单的介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的智能合约生成方法。
具体实施方式
有鉴于此,本发明设计了一种基于形式化方法的、携带证明的智能合约运行模型,用形式化方法对智能合约进行建模、验证、测试以及代码的自动生成,将形式化贯穿于智能合约的整个生命周期。
将形式化方法应用于智能合约描述,包括步骤:
根据用户提出的需求,这个需求是用自然语言描述的,为了对智能合约进行建模和编码,必须把用户提出的用非形式化的规格说明(自然语言)描述的需求,通过形式化描述,转化为形式化的规格说明;
合约行为的复杂性增大了行为描述的难度,因此需要借助一种语言或一种技术来准确地描述系统行为,自然语言虽然表达能力强、易于理解,但是具有不严格、不精确、存在二义性等缺点,而形式化描述技术是可以准确获得合约规范的唯一方法。
将形式化方法应用于智能合约建模并验证合约的正确性,包括步骤:
用形式化描述语言对形式化规格说明文档进行建模,这是对智能合约进行建模,然后用模型检查工具对模型的性质进行检测,并通过不断地修改,得到最终可以满足用户需求的完整智能合约模型。
以下为对上述过程的详细说明:
整理传统的自然语言合约,把不规则的自然语言描述转化为规则的自然语言描述,即命题逻辑可以直接描述的范畴;
对命题逻辑直接进行建模,选择一种建模语言和建模工具对智能合约建立动态模型,其中包括对合约框架的建模和对合约性能的描述;
由于不同的建模工具和建模语言对于模型的验证和检测方向有差异,因此,一个动态模型完成之后,可以使用不同的建模语言进行模型转换得到多个不同的智能合约动态模型;
建模完成后,通过执行这段合约,来检测智能合约框架是否符合用户要求,然后再针对不同的模型,检测模型的各个性质是否符合要求,对不符合要求的合约性质和条款进行修正,直到达到预期智能合约的要求为止。
其中,模型检测工具可以检查出模型的多种性质,包括合约的公平性、合约是否每个状态可达、合约的边界等。
验证模型的正确性之后,接着是根据智能合约的动态模型,通过一定的建模工具,自动生成合约的可执行代码。
产生合约代码后,接着验证合约文本和合约代码的一致性,其特征在于,包括步骤:
模型检查工作结束后,在保证模型性质满足要求的基础上,可以通过建模工具,直接对模型生成相应合约代码;
对生成的相应合约代码,必须保证代码与规格说明文档的一致性,这里就需要一致性测试,用一致性测试工具来进行检测。
以下为对上述过程的详细说明:
合约一致性测试一般包括如下步骤:确定测试目的、产生测试集、测试实现、测试执行、结果评估。
(1)确定测试目的
常见的一致性测试目的包括如下内容:
能力测试;
正确行为的行为测试;
语法错误的行为测试;
不合时宜行为的行为测试;
合约必备行为的测试;
发送与接收相互交互的测试;
与实现选项相关的测试
(2)产生测试集
一个特定合约的测试用例的集合称为测试集。用于描述给定合约的测试任务的事件或动作序列称为测试用例,因此测试序列是生成测试用例的基础。测试集的产生包括三方面的工作:测试序列的产生、测试数据的生成、将测试序列和测试数据合起来生成并描述测试集。
(3)测试实现
基于相关测试工具,用TTCN描述测试集。
(4)测试执行
在测试工具中,对被测合约实现执行TTCN测试用例,并对被测合约实现的外部行为响应进行观察和记录。
(5)测试评估
对一致性测试结果进行评估和分析,判定是否通过一致性测试,如未通过测试需要查出原因,进行反馈。
智能合约的形式化描述
当用户需要与另一方建立合约关系,并且要求合约可以智能执行时,用户首先会按照传统合约提出合约需求,在理解用户需求的基础上,由与合约相关的业务人员书写非形式化的规格说明文档,书写完成后,经用户双方或者多方审核达成一致。
由编码人员将自然语言描述的非形式化规格说明文档,经过逻辑判断和分析,转变成有限的命题逻辑可以表达的形式化规格说明文档,编码人员可以直接对形式化规格说明文档进行建模。
例如,将自然语言转变成固定格式的“与”、“非”、“如果···那么···”等可以表达的命题逻辑,文档仍然用自然语言描述。
智能合约建模
通过智能合约的形式化规格说明文档,对智能合约进行模型建立。
需要选择一种建模工具和相应的建模语言。使用建模语言,按照上述生成的形式化规格说明文档,对智能合约进行描述,即完成建模的过程。
建模分为两个过程:
1、对合约框架进行建模,即描述的范围是整个合约的执行流程;
2、针对合约的各个属性进行描述。
表1为各种形式化描述技术。
表1
智能合约的模型转换
对于同一个智能合约,不同的建模语言和建模工具对模型验证的方法不一样,因此,使用不同的模型进行验证,可以全方位的对一个合约的性质进行充分的验证。
通过模型转换工具可以实现不同模型之间的转换。
智能合约的模型验证
验证可分为形式化验证和非形式化验证,前者将形式化描述技术和推理技术想结合,后者主要通过传统的遍历和代码检测来实现。形式化验证有很多方法,一般分为模型检测和演绎验证,分别基于状态搜索和定理证明两种思想。
模型检测的步骤如下:
1、首先,检查模型是否是可运行的,若不可运行,则说明存在词法或语法错误,初步修改至模型可运行;
2、验证模型,最主要内容是检查合约是否满足规定的合约性质。一般情况下,合约性质包括如下内容:
●可达性。验证合约的各种可能状态之间的可达关系。
●没有死锁。最典型的死锁是合约中各实体都处于这样的一种等待状态,即只有在“某一事件”发生后才能做进一步的动作,但在该状态下,这个“某一事件”却不可能发生。死锁发生时,合约所处的状态称为死锁状态。
●没有活锁。活锁是指合约处于无限的死循环中,而没有别的事件可使合约从这一循环中解脱出来。例如,合约无限制地执行超时重发操作,但总是收不到对方的确认信息。状态还是在变化的,不过不能脱离这种死循环状态而已。
●弱活锁。是指合约处于死循环中,只有当合约交换命令的相对速度达到某一状态时,合约才退出死循环。
●时间相关的活锁,也称为临时阻塞。它是指合约处于死循环中,但是当通信双方交换报文的相对速度到达某一状态时,合约可以打破死循环。
●有界性。检验合约的某些成分或参数的容量(例如:通道容量、窗口大小)是否有界。有界性是针对合约元素性质和通道性质而言。
●可恢复性或自同步性。这是当出现差错后,合约能否在有限的步骤内返回到正常状态(包括初始态)执行。
●无状态二义性。一个进程在某一时刻只允许具有一个稳定状态。所谓稳定状态是指当通信双方的通道为空时的进程状态。若在某一时刻进程可以有多个稳定状态,则称该进程的状态为二义状态。
●互斥性。互斥性是指有些合约动作不能同时被多个用户执行。例如,多个用户不能同时请求同一资源。
●终止或进展。是指合约提供的服务必须在有限时间内完成。终止是针对终止合约而言,意思是指合约总是能到达期望的结束状态。进展则是针对循环合约而言,意思是指合约总是能到达它的初始状态。
●无冗余描述。合约规范中没有无用的、冗余描述,例如,没有未经实践的报文接收。
●公平性。是指每一个合约实体均应平等地得到运行的机会,无论其它的合约实体想做什么。
另外有些情况下,针对用一种形式化描述语言建立的合约的模型进行验证还是不够的,因为合约验证工具的能力是有限的,在这种情况下需要用到模型转换技术,把模型转换为另一种形式化描述语言描述的模型,然后利用其他验证工具进行验证,这样可以更好的验证合约。
自动生成智能合约代码
对智能合约的模型验证之后,可以通过一定的建模工具自动生成智能合约的可执行代码。
智能合约的一致性测试
测试集是合约一致性测试的基础,它由最基本的测试事件序列组成,详细定义了测试系统和合约实体的行为。因此需要用一种形式化语言来定义测试系统和IUT的行为。
测试序列是对被测系统进行测试时执行的事件序列。对同一测试序列施加不同的测试数据就产生不同的测试用例,一个特定合约的测试用例的集合称为测试集。
目前大部分测试序列生成算法是基于有限状态机FSM(Finite State Machine)的。可以分为两大类:转换游程法和特殊交互作用序列法。
●转换游程法(Transition Tour),又称为T方法,它的一种简单实现思路是:将产生的输入序列作用在有限状态机上,直到所有的状态转换都被至少执行一次,这样生产的测试序列会有很多的冗余。T方法的优点是算法简单,生产的测试序列长度较短;缺点在于没有解决“测试的可观察问题”,也就是没有检查到达的状态,无法断定转换后的状态是否正确。
●特殊交互作用序列法包括:特征序列集(Characterizing Set),简称为W方法;区分序列(Distinguishing Sequences),简称为D方法;唯一输入/输出序列(UniqueInput/Output Sequences),简称为UIO方法。
●D方法的思想是对合约状态机的每个状态输入相同的事件序列,通过各自不同的输出事件序列(DS,Distinguishing Sequences)来判断当前状态。由于各个状态的输出事件序列各不相同,从而能唯一确定该状态。D方法的优点在于生产的测试序列将错误检查能力强,能较全面地检查出输入和转换错误;缺点在于生成的测试序列长度较长,而且在许多实际的合约FSM中并不存在该方法必须用到的DS序列。
●W方法是D方法的进一步扩展,采用特征序列集W-set代替DS序列。W-set是一个包括k个输入事件序列的集合,对合约状态机的各个状态来说,W-set是相同的,但对于不同的状态产生的输出事件所组成的输出模式不同。这样可以根据输出模式的不同来判断所处的状态。W方法的优点是通用性较好,缺点在于生成序列的过程太复杂。
●UIO方法基于UIO序列的思想,合约状态机的各个状态都对应一个或多个UIO序列。UIO序列由一系列I/O操作组成,合约状态机中的其他状态不能表现出与之相同的I/O行为,因而该UIO序列可以唯一标识此状态。一般来说,UIO序列比较容易得到。UIO方法的错误检测能力比较强,生成的测试序列长度也较短,是最常用的测试序列生成算法。
测试序列生成算法
测试序列是对被测系统进行测试时执行的事件序列。对同一测试序列施加不同的测试数据就产生不同的测试用例,一个特定合约的测试用例的集合称为测试集。由此可知,测试序列对于一致性测试的重要性。
目前大部分测试序列生成算法是基于有限状态机FSM(Finite State Machine)的。可以分为两大类:转换游程法和特殊交互作用序列法。转换游程法又称T方法,其优点是算法简单,生成的测试序列长度较短;缺点是没有解决“测试的可观测问题”,也就是没有检查到达的状态,只能发现检查出IUT状态转换时的输出错误,而无法断定转换后的状态是否正确。特殊交互作用序列法要求合约的有限状态机具有一些特殊的交互作用序列,如特征序列集,称为W方法;区分序列,称为D方法;唯一输入/输出序列UIO,称为U方法。其中UIO是目前较为常用的方法。
以上所述,仅是本发明的实例,并非对本发明做任何形式上的限制。任何精于本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出其他种种的改良或修饰为等同变化的等效实例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (6)

1.一种智能合约生成方法,其特征在于包括以下步骤:
将非形式化的智能合约说明文档转变为形式化规格的说明文档;
根据所述智能合约形式化规格的说明文档,建立智能合约的动态模型;
验证智能合约动态模型的正确性;
通过正确性验证后,根据智能合约的动态模型自动生成智能合约代码;
对所述智能合约形式化规格的说明文档与生成的智能合约代码进行一致性检测。
2.根据权利要求1所述的智能合约生成方法,其特征在于:选择建模语言与建模工具建立智能合约的动态模型。
3.根据权利要求1所述的智能合约生成方法,其特征在于:验证智能合约动态模型的正确性包括验证以下一种或多种:
●可达性:验证智能合约的各种状态之间的可达关系;
●没有死锁;
●没有活锁;
●弱活锁:指智能合约处于死循环中,只有当智能合约交换命令的相对速度达到某一状态时,智能合约才退出死循环;
●时间相关的活锁,也称为临时阻塞:智能合约处于死循环中,当通信双方交换报文的相对速度到达某一状态时,智能合约打破死循环;
●有界性:检验合约的某些成分或参数的容量是否有界;
●可恢复性或自同步性:当出现差错后,智能合约能否在有限的步骤内返回到正常状态;
●无状态二义性;
●互斥性;
●终止或进展;智能合约提供的服务必须在有限时间内完成;
●无冗余描述:智能合约中没有无用的、冗余描述;
●公平性:每一个智能合约实体均应平等地得到运行的机会。
4.根据权利要求1所述的智能合约生成方法,其特征在于:所述一致性检测具体包括以下步骤:
(1)确定测试目的,具体包括以下至少一种:能力测试、正确行为的行为测试、语法错误的行为测试、不合时宜行为的行为测试、智能合约必备行为的测试、发送与接收相互交互的测试、与实现选项相关的测试;
(2)产生测试集
测试集的产生包括:测试序列的产生、测试数据的生成、将测试序列和测试数据合起来生成并描述测试集;
(3)测试实现
基于测试工具,用测试和测试控制符(TTCN)描述测试集。
(4)测试执行
在测试工具中,对被测智能合约实现执行TTCN测试用例,并对被测智能合约实现的外部行为响应进行记录;
(5)测试评估
对一致性测试结果进行评估和分析,判定是否通过一致性测试,如未通过测试则查出原因,进行反馈。
5.根据权利要求1所述的智能合约生成方法,其特征在于:使用形式化描述模型及形式化描述语言将非形式化的智能合约说明文档转变为形式化规格的说明文档,其中用于形式化的方法包括以下至少一种:状态变迁机、时序逻辑、进程代数;形式化描述语言包括:规范及描述语言(SDL)、时间调整规范语言(LOTOS)、网络协议形式化描述语言中的国际标准ESTELLE、过程或协议元语言(Promela)。
6.根据权利要求1所述的智能合约生成方法,其特征在于:还包括对于同一个智能合约使用不同的建模语言建立多个智能合约的动态模型,并验证所述同一个智能合约的多个动态模型的正确性。
CN201610724219.5A 2016-08-25 2016-08-25 一种智能合约工程方法 Active CN107783758B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610724219.5A CN107783758B (zh) 2016-08-25 2016-08-25 一种智能合约工程方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610724219.5A CN107783758B (zh) 2016-08-25 2016-08-25 一种智能合约工程方法

Publications (2)

Publication Number Publication Date
CN107783758A true CN107783758A (zh) 2018-03-09
CN107783758B CN107783758B (zh) 2019-01-18

Family

ID=61438375

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610724219.5A Active CN107783758B (zh) 2016-08-25 2016-08-25 一种智能合约工程方法

Country Status (1)

Country Link
CN (1) CN107783758B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595185A (zh) * 2018-04-11 2018-09-28 暨南大学 一种将以太坊智能合约转换成超级账本智能合约的方法
CN108985073A (zh) * 2018-07-18 2018-12-11 成都链安科技有限公司 一种高度自动化的智能合约形式化验证系统及方法
CN109033823A (zh) * 2018-07-23 2018-12-18 上海点融信息科技有限责任公司 用于在区块链网络中验证和运行智能合约的方法和装置
CN110097464A (zh) * 2019-04-10 2019-08-06 北京京东尚科信息技术有限公司 智能合约的生成方法、装置、电子设备与存储介质
CN110262777A (zh) * 2019-05-21 2019-09-20 阿里巴巴集团控股有限公司 一种区块链应用框架
CN110533533A (zh) * 2019-08-21 2019-12-03 杭州趣链科技有限公司 一种场外交易智能合约的形式验证方法
CN110705974A (zh) * 2019-09-03 2020-01-17 杭州趣链科技有限公司 一种完备的智能合约形式规范实现方法
CN112184432A (zh) * 2020-03-16 2021-01-05 北京天德科技有限公司 一种基于法律语言的智能合约开发方法
WO2021018312A1 (zh) * 2019-07-30 2021-02-04 杭州趣链科技有限公司 基于区块链的场外交易方法、系统、存储介质和电子装置
WO2021032192A1 (zh) * 2019-08-21 2021-02-25 杭州趣链科技有限公司 存证智能合约的形式验证方法、系统、计算机设备和可读存储介质
CN113515442A (zh) * 2021-03-26 2021-10-19 南京航空航天大学 基于函数签名相似度计算的智能合约测试种子推荐方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1812347A (zh) * 2005-01-24 2006-08-02 华为技术有限公司 基于模型转换的协议正确性验证和测试方法
CN102118230A (zh) * 2011-03-23 2011-07-06 华中科技大学 一种基于ttcn的网络协议性能测试方法
US20130151463A1 (en) * 2011-12-08 2013-06-13 Sap Ag Information Validation
CN105893042A (zh) * 2016-03-31 2016-08-24 北京航空航天大学 一种基于区块链的智能合约的实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1812347A (zh) * 2005-01-24 2006-08-02 华为技术有限公司 基于模型转换的协议正确性验证和测试方法
CN102118230A (zh) * 2011-03-23 2011-07-06 华中科技大学 一种基于ttcn的网络协议性能测试方法
US20130151463A1 (en) * 2011-12-08 2013-06-13 Sap Ag Information Validation
CN105893042A (zh) * 2016-03-31 2016-08-24 北京航空航天大学 一种基于区块链的智能合约的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李蕊 等: "基于扩展有限状态机模型的故障检测", 《计算机应用研究》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595185B (zh) * 2018-04-11 2021-07-27 暨南大学 一种将以太坊智能合约转换成超级账本智能合约的方法
CN108595185A (zh) * 2018-04-11 2018-09-28 暨南大学 一种将以太坊智能合约转换成超级账本智能合约的方法
CN108985073A (zh) * 2018-07-18 2018-12-11 成都链安科技有限公司 一种高度自动化的智能合约形式化验证系统及方法
CN109033823A (zh) * 2018-07-23 2018-12-18 上海点融信息科技有限责任公司 用于在区块链网络中验证和运行智能合约的方法和装置
CN110097464A (zh) * 2019-04-10 2019-08-06 北京京东尚科信息技术有限公司 智能合约的生成方法、装置、电子设备与存储介质
CN110262777A (zh) * 2019-05-21 2019-09-20 阿里巴巴集团控股有限公司 一种区块链应用框架
CN110262777B (zh) * 2019-05-21 2023-12-01 创新先进技术有限公司 一种区块链应用框架
WO2021018312A1 (zh) * 2019-07-30 2021-02-04 杭州趣链科技有限公司 基于区块链的场外交易方法、系统、存储介质和电子装置
WO2021032192A1 (zh) * 2019-08-21 2021-02-25 杭州趣链科技有限公司 存证智能合约的形式验证方法、系统、计算机设备和可读存储介质
CN110533533A (zh) * 2019-08-21 2019-12-03 杭州趣链科技有限公司 一种场外交易智能合约的形式验证方法
CN110705974A (zh) * 2019-09-03 2020-01-17 杭州趣链科技有限公司 一种完备的智能合约形式规范实现方法
CN112184432A (zh) * 2020-03-16 2021-01-05 北京天德科技有限公司 一种基于法律语言的智能合约开发方法
CN113515442A (zh) * 2021-03-26 2021-10-19 南京航空航天大学 基于函数签名相似度计算的智能合约测试种子推荐方法

Also Published As

Publication number Publication date
CN107783758B (zh) 2019-01-18

Similar Documents

Publication Publication Date Title
CN107783758B (zh) 一种智能合约工程方法
Wang et al. Automatic generation of system test cases from use case specifications
US6385765B1 (en) Specification and verification for concurrent systems with graphical and textual editors
Campos et al. Model checking interactor specifications
Meinke et al. LBTest: a learning-based testing tool for reactive systems
CN110083340A (zh) 代码生成方法、装置、计算机设备及存储介质
CN105975269B (zh) 一种基于流程模型的需求验证方法
Oliveira et al. Automated test oracles: State of the art, taxonomies, and trends
US20030018461A1 (en) Simulation monitors based on temporal formulas
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
CN106294148B (zh) 基于扩展符号变迁系统的c语言程序软件验证方法及装置
Morgado et al. Automated pattern-based testing of mobile applications
WO2021115186A1 (zh) 基于ann的程序检测方法和检测系统及应用
Zheng et al. On the state of the art in verification and validation in cyber physical systems
Salamah et al. Validated templates for specification of complex LTL formulas
Alenazi et al. SysML modeling mistakes and their impacts on requirements
Meinke Learning-based testing: recent progress and future prospects
Engels et al. Model-based verification and validation of properties
Garro et al. Modeling of system properties: Research challenges and promising solutions
Valueian et al. Constructing automated test oracle for low observable software
Liu et al. I/O conformance test generation with colored Petri nets
CN111245676B (zh) 通信协议可信性验证装置
Tatale et al. A Survey on Test Case Generation using UML Diagrams and Feasibility Study to Generate Combinatorial Logic Oriented Test Cases.
Fenton et al. Bayesian belief network model for the safety assessment of nuclear computer-based systems
Ferreira Filho et al. Generating counterexamples of model-based software product lines

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