火星链 火星链
Ctrl+D收藏火星链

SPIN:智能合约入门系列 | 智能合约工程重要环节:形式化验证方法

作者:

时间:1900/1/1 0:00:00

北京航空航天大学分布式实验室北京航空航天大学云南创新研究院?周楚涵胡凯

形式化验证是智能合约工程的重要环节,它可以成为对合约进行确定性验证的一种技术,通过形式化语言把合约中的概念、判断、推理转化成智能合约模型,可以消除自然语言的歧义性、不通用性,进而采用形式化工具对智能合约建模、分析和验证,进行一致性测试,最后自动生成验证过的合约代码,形成智能合约生产的可信全生命周期。

1.?????形式化验证

形式化验证是基于形式化方法相关理论。形式化方法起源于20世纪50年代对编译技术的研究,20世纪60年代发生了“软件危机”,当时针对“软件危机”,主要有两种解决方法:一种是采用合理有效的工程方法来管理和组织软件的开发过程,这也是软件工程的起源;另一种是建立严格的数学推导理论,以指导软件开发过程,这方面推进了形式化方法的深入研究。

形式化方法主要包括形式规约和形式化验证。形式规约是指应用具有精确语法和语义的形式化语言来刻画系统的性质和行为,是设计系统约束和验证系统是否正确的依据;形式化验证是在形式规约的基础上,建立系统的行为及其性质的关联,进而验证系统是否需求的关键性质。形式化验证与形式化规约之间具有紧密的联系,形式化验证就是验证已有的程序P,是否满足其规约的要求),它也是形式化方法所要解决的核心问题。

目前常见的形式化验证方法主要可分为两类:演绎验证和模型检测。演绎验证主要基于定理证明的基本思想,采用逻辑公式描述系统及其性质,通过一些公理或推理规则来证明系统具有某些性质。目前主要的演绎验证工具有:基于Manna-Pnueli证明系统的STeP、TLV、机器定理证明器等。模型检测方法的基本思想是通过状态空间搜索来确认合约是否具有某些性质。即给定一个合约P和规约ψ,生成对应于合约模型M,然后证明M╞ψ,即规约公式ψ在合约模型M中成立,这样就证明了合约P满足规约ψ。常用的模型验证工具有:SMV、SPIN、SDL、UPPAAL等。

模型检测技术是近三十年来最成功的自动验证技术之一,目前被广泛地应用于有限状态系统的验证,包括电路设计和通信协议的分析与验证。根据所要验证模型的规格特点,可以分为复合检验器、时态逻辑模型检测器和行为一致检验器。根据采用的不同的技术可以分为:面向状态的模型检测和符号模型检测。模型检测器的基本原理都是一样的,其工作原理如图1???所示。通常情况下,模型都需要经过迭代验证的过程,才能最终满足验证条件。

市场押注Cardano不会在10月1日之前发布智能合约功能:金色财经报道,Polymarket周四出现了允许参与者押注Cardano区块链是否会在10月1日前发布智能合约功能的预测市场。目前该市场的交易量已超过157,000美元。选择“是”的份额为0.37美元,“否”的份额为0.63美元。更昂贵的注被认为更有可能是正确的,因此该市场目前倾向于预测智能合约功能将不会在10月开始时在Cardano上线。[2021/7/16 0:56:01]

图1模型检测器原理

形式化验证是一种基于数学和逻辑学的方法,在智能合约部署之前,对其代码和文档进行形式化建模,然后通过数学的手段对代码的安全性和功能正确性进行严格的证明,可有效检测出智能合约是否存在安全漏洞和逻辑漏洞。该方法可以有效弥补传统的靠人工经验查找代码逻辑漏洞的缺陷。形式化验证技术的优势在于,用传统的测试等手段无法穷举所有可能输入,而我们用数学证明的角度,就能克服这一问题,提供更加完备的安全审计。

2.???形式化验证在区块链领域的应用现状

随着区块链平台级应用的普遍化,智能合约涉及的金额呈指数级别增长,智能合约的安全问题也成为投资者和开发者共同关注的焦点。今年以来有数个基于ERC-20的项目因为智能合约代码出现漏洞而遭到黑客攻击,导致投资者巨额的损失。为了防止类似事件的发生,交易所、钱包、项目方等都在智能合约安全上加大投入,同时围绕着智能合约安全的周边生态成为目前投资的热点。

形式化验证技术已经在军工、航天等高系统安全要求领域的取得了相当成功的应用,将形式化方法应用于智能合约,使得合约的生成和执行有了规范性约束,保证了合约的可信性,使人们可以信任智能合约的生产过程和执行效力。通过形式化语言,把合约中的概念、判断、推理转化成智能合约模型,可以消除自然语言的歧义性、不通用性,进而采用形式化工具对智能合约建模、分析和验证,进行一致性测试。合约的形式化验证保证了合约的正确属性,自动化代码生成提高了合约的生成效率,合约的一致性测试保证了合约代码与合约文本的一致性。

OpenZeppelin 推出智能合约交互式工具 Contracts Wizard:4月6日消息,以太坊技术服务商 OpenZeppelin 推出智能合约交互式工具 Contracts Wizard。Contracts Wizard 是可以交互式地从 OpenZeppelin 合约组件中建立合约的一个界面,开发者可以自己选择合约类型(当前支持 ERC 20 和 ERC 721),设置所需的代币名称、符号和初始数量等功能,Contracts Wizard 生成满足开发者需求随时可编译部署的必要代码,也可以进一步定制特定应用逻辑的代码。[2021/4/6 19:50:15]

目前区块链产业中与形式化验证相关的产品可以分为三类:VaaS平台,公链,和语言,应用尚在技术的早期,自动化程度和实用性,及用户工具还有待于极大的进步。

Vaas平台

是直接面向开发者提供形式化验证服务的平台。目前Vaas类项目包括CertiKzecurify.ch、RuntimeVerification等项目。目前,CertiK仍在初始阶段,Securify.ch的测试版已经上线,而RuntimeVerification已经在商业运营。

与其它几个项目不同,RuntimeVerification是基于EVM虚拟机二进制码进行形式化验证,而非针对智能合约本身用的高级语言,因此在安全性上又更进一步,避免了因编译器编译过程中可能产生的漏洞。

语言

语言类产品一般为函数式语言的子语言,提供与智能合约形式化验证相关的开发者库和工具,目前有Imandra和Tezos等项目。

其中,Imandra发布了一套开源的以太坊虚拟机用ImandraML语言标记的模型,并且专注于交易所等金融应用场景的形式化验证,用以确保金融交易的合法合规,据称相关技术已经用于华尔街顶级投行的交易系统。

Cosmos 创始人 Jae Kwon 从 AIB 及 ICF 基金会离职 全职开发 Gno 智能合约语言:Cosmos 创始人 Jae Kwon 宣布从 Cosmos 网络软件开发公司 AIB (All in Bits)及 The Interchain 基金会(ICF)离职,全职开发 Gno 智能合约语言。The Interchain 基金会是位于瑞士的非盈利基金会以支持 Cosmos 的生态建设,而 AIB 是负责开发 Cosmos 网络的软件开发公司,这意味着 Cosmos 创始人 Jae Kwon 将离开 Cosmos 生态中最核心的支持机构。Jae Kwon 表示,Gno 是适用于 Cosmos 生态的下一代的智能合约编程语言。[2021/2/15 19:47:00]

公链

直接包含形式化验证引擎的公链产品目前只有TheMatrix项目,特征是基于AI辅助的形式化验证及动态约束的检查。AI是否对于形式化验证的自动化带来帮助在技术上仍是个未知数。

3.?????智能合约的形式化验证

智能合约的安全性验证问题迫在眉睫,智能合约可能存在的主要安全隐患有:1)合约中某一方利用合约漏洞修改合约,使得合约执行结果偏向某一方;2)智能合约攻击者利用合约漏洞攻击合约,造成合约中财产的损失。这最终都会导致人们对于智能合约的不信任。在智能合约的验证方面,形式化验证方法可以检查智能合约的很多属性,例如,合约的公平性、可达性、有界性、活锁、死锁、不可达,以及无状态二义性等。形式化方法重点可以解决智能合约产生与执行的可信性问题。采用模型检测的优点是完全自动化并且验证速度快,即便是只给出了部分描述的合约,通过搜索也可以提供关于已知部分正确性的有用信息。尤其重要的是,在性质未被满足时,搜索终止可以给出反例,这种信息常常反映了合约设计中的细微失误,因而对于合约排错有极大的帮助。

这里我们采用模型检测工具SPIN对智能合约进行验证。SPIN是用来检测和验证分布式软件系统的模型检测器。SPIN即PROMELA解析器,是由美国贝尔实验室开发并用于形式化验证分布式软件系统的模型检测器,是一种广泛应用于大规模复杂软件系统的形式化模型检测器,与商业性模型检测器相比,SPIN在技术上和使用上更加自由和开放。

杨海坡:智能合约就像现实世界的法人:ViaBTC矿池CEO杨海坡今日发布微博称,智能合约就像现实世界的法人,很多场景和普通地址没有区别,这个设计极大的丰富了其应用场景。[2020/8/23]

描述一个智能合约,包括以下几个方面:合约方的信息、合约状态机、各个合约方的执行状态机。

我们定义智能合约

,为一个二元组,其中:

Con为合约的基本信息描述,Con={CId,CTimeStamp,CTime,CSign},CId为合约标识,是区分合约的唯一标识,CTime为合约的时限,即合约的有效期,CTimeStamp为合约的时间戳,即签订合约的日期,CSign为合约方的签名。

Machine={

},表示各个合约方的执行状态机的集合,

表示第i个合约方的执行状态机。

合约状态机

以太坊智能合约开发工具Truffle宣布将集成Filecoin:以太坊智能合约开发工具Truffle在推特上宣布,其已经与Filecoin达成合作,旨在帮助全球的开发者创建和部署完全去中心化的应用程序。通过此次合作,Truffle将把Filecoin网络集成至其工具套件中,以帮助用户直接部署到Filecoin。然后,Truffle将向Ganache添加新特性,以便用户可以在开发和测试期间轻松模拟Filecoin网络。[2020/7/8]

=<MStatus,CInput,COutput,CFunction,CInit,CFinal,CBackground>,为一个多元组,其中:

MStatus是智能合约中第i个合约状态机的所有状态的集合和对集合的描述,MStatus={

?},其中,i表示第i个进程(0

i

n),

表示合约的第i个进程的进程集合。一个合约是由一个或多个进程组成的。

CInput是合约的输入集合,CInput={CIEvent,CITime},CIEvent为合约输入的事件,CITime为合约输入的时间。智能合约有两种触发执行机制,分别为时间触发和事件触发,合约通过时间或事件的输入触发合约的执行,使得智能合约的状态发生变化。

COutput是合约输出的集合,COutput={COData},COData为合约输出的数据。智能合约规定可以部分执行完成,因此,合约的输出可能是合约执行中间的一个结果输出,也可能是合约全部执行完成。合约的输出统一使用数据类型表示,每一个输出都意味着合约状态的迁移,同时每一次合约输出都分别对应了一个合约状态。

CFunction是合约状态转换函数的集合,且有CFunction:MStatus

MStatus。

CInit为合约初始状态值,且

CFinal为合约终止状态的集合,CFinal={

},且

CBackground为智能合约其他相关信息的描述。

在智能合约的描述过程中,合约的状态变迁过程代表了合约的执行过程,合约模型采用PROMELA进行合约建模。

SPIN的验证过程,首先从描述系统模型的规格开始,经过编译器的分析确定没有语法错误后,对系统模型进程之间的交互进行模拟,直至确认系统模型中出现的行为和系统设计的预期行为一致。其次,SPIN从系统的高级规约中会生成一个优化后的on-the-fly验证程序,经过编译器编译后执行,执行中会检测是否有违背正确性说明,若有反例出现,则返回交互模拟的执行状态进行再修正,确认出错原因,直至完成正确性验证。其验证框架如图2所示

图2基于SPIN验证框架

据此验证框架,我们设计完成了一个形式化验证系统,取得了较好的验证效果,值得推广应用,后文将给出一个验证案例。

标签:TIMEIMETIMSPINTIMESERIES价格DIME价格Optimus AISPIN币

火币网下载官方app热门资讯
APE:过去一周比特币大额交易总额骤降97%,这意味着什么?

来源:小葱昨日凌晨,比特币等主流币种出现跳水行情。目前,比特币正极力在8000美元上方获得支撑。此外,比特币网络上获得正收益的投资者人数以及大额交易的减少都给加密货币市场带来了一丝阴霾.

1900/1/1 0:00:00
HAI:月报|10月份,数字货币交易量上涨明显,股权融资市场火热

月报摘要“二级市场行情总览”:10月全球区块链数字资产日均市值下跌11.15%,交易量上涨18.06%.

1900/1/1 0:00:00
ANT:比特币跌破8000大关,现货可以入场了吗?

作者|哈希派分析团队数据:超10年未活跃的比特币供应量近250万枚,创历史新高:金色财经消息,据Glassnode数据显示,超过10年未活跃的比特币供应量达2487119.72枚,创历史新高.

1900/1/1 0:00:00
ECH:朱嘉明:区块链应用的最大领域是金融,将给复式记账带来重大革新

来源:?01区块链??作者:朱嘉明编者注:原标题为《朱嘉明:互联网与金融科技的“一体化”》“人类已经迈入计算和数字经济时代的门槛,不仅互联网、而且区块链成为广义基础设施的组成部分.

1900/1/1 0:00:00
CPU:EOS CPU拥堵指数达100%,可用的CPU仅剩13%

来源:财经网·链上财经作者:LornaQ目前EOSCPU拥堵指数达到100%,EOS网络进入饱和状态且拥堵状态已经持续近三周。87%的CPU处于占用状态,即可用的CPU仅剩13%.

1900/1/1 0:00:00
加密货币:Coinbase报告:一文读懂美国加密货币行业

编者注:原标题为《一文读懂美国加密货币行业》前言:美国是区块链技术发展最快的国家之一,也是加密行业最重要的版图之一.

1900/1/1 0:00:00