北京航空航天大学分布式实验室北京航空航天大学云南创新研究院?周楚涵胡凯
形式化验证是智能合约工程的重要环节,它可以成为对合约进行确定性验证的一种技术,通过形式化语言把合约中的概念、判断、推理转化成智能合约模型,可以消除自然语言的歧义性、不通用性,进而采用形式化工具对智能合约建模、分析和验证,进行一致性测试,最后自动生成验证过的合约代码,形成智能合约生产的可信全生命周期。
1.?????形式化验证
形式化验证是基于形式化方法相关理论。形式化方法起源于20世纪50年代对编译技术的研究,20世纪60年代发生了“软件危机”,当时针对“软件危机”,主要有两种解决方法:一种是采用合理有效的工程方法来管理和组织软件的开发过程,这也是软件工程的起源;另一种是建立严格的数学推导理论,以指导软件开发过程,这方面推进了形式化方法的深入研究。
形式化方法主要包括形式规约和形式化验证。形式规约是指应用具有精确语法和语义的形式化语言来刻画系统的性质和行为,是设计系统约束和验证系统是否正确的依据;形式化验证是在形式规约的基础上,建立系统的行为及其性质的关联,进而验证系统是否需求的关键性质。形式化验证与形式化规约之间具有紧密的联系,形式化验证就是验证已有的程序P,是否满足其规约的要求),它也是形式化方法所要解决的核心问题。
目前常见的形式化验证方法主要可分为两类:演绎验证和模型检测。演绎验证主要基于定理证明的基本思想,采用逻辑公式描述系统及其性质,通过一些公理或推理规则来证明系统具有某些性质。目前主要的演绎验证工具有:基于Manna-Pnueli证明系统的STeP、TLV、机器定理证明器等。模型检测方法的基本思想是通过状态空间搜索来确认合约是否具有某些性质。即给定一个合约P和规约ψ,生成对应于合约模型M,然后证明M╞ψ,即规约公式ψ在合约模型M中成立,这样就证明了合约P满足规约ψ。常用的模型验证工具有:SMV、SPIN、SDL、UPPAAL等。
模型检测技术是近三十年来最成功的自动验证技术之一,目前被广泛地应用于有限状态系统的验证,包括电路设计和通信协议的分析与验证。根据所要验证模型的规格特点,可以分为复合检验器、时态逻辑模型检测器和行为一致检验器。根据采用的不同的技术可以分为:面向状态的模型检测和符号模型检测。模型检测器的基本原理都是一样的,其工作原理如图1???所示。通常情况下,模型都需要经过迭代验证的过程,才能最终满足验证条件。
基于AI的Web3智能合约生成器Mazzuma完成新一轮融资,Adaverse参投:金色财经报道,基于人工智能技术的Web3智能合约生成器Mazzuma宣布完成新一轮融资,Cardano生态投资机构Adaverse参投,但具体融资金额暂未披露。Mazzuma总部位于非洲加纳,旨在利用人工智能技术支持帮助开发人员为Web3去中心化应用程序无缝生成智能合约代码,继而加快区块链智能合约的创建和部署,新资金将用于推动旗下新产品MazzumaGPT上线。 (disrupt-africa)[2023/6/27 22:03:15]
图1模型检测器原理
形式化验证是一种基于数学和逻辑学的方法,在智能合约部署之前,对其代码和文档进行形式化建模,然后通过数学的手段对代码的安全性和功能正确性进行严格的证明,可有效检测出智能合约是否存在安全漏洞和逻辑漏洞。该方法可以有效弥补传统的靠人工经验查找代码逻辑漏洞的缺陷。形式化验证技术的优势在于,用传统的测试等手段无法穷举所有可能输入,而我们用数学证明的角度,就能克服这一问题,提供更加完备的安全审计。
2.???形式化验证在区块链领域的应用现状
随着区块链平台级应用的普遍化,智能合约涉及的金额呈指数级别增长,智能合约的安全问题也成为投资者和开发者共同关注的焦点。今年以来有数个基于ERC-20的项目因为智能合约代码出现漏洞而遭到黑客攻击,导致投资者巨额的损失。为了防止类似事件的发生,交易所、钱包、项目方等都在智能合约安全上加大投入,同时围绕着智能合约安全的周边生态成为目前投资的热点。
形式化验证技术已经在军工、航天等高系统安全要求领域的取得了相当成功的应用,将形式化方法应用于智能合约,使得合约的生成和执行有了规范性约束,保证了合约的可信性,使人们可以信任智能合约的生产过程和执行效力。通过形式化语言,把合约中的概念、判断、推理转化成智能合约模型,可以消除自然语言的歧义性、不通用性,进而采用形式化工具对智能合约建模、分析和验证,进行一致性测试。合约的形式化验证保证了合约的正确属性,自动化代码生成提高了合约的生成效率,合约的一致性测试保证了合约代码与合约文本的一致性。
Hamster宣布智能合约Gas分析工具正式上线:4月25消息,一站式Web3.0安全开发环境及中间件引擎Hamster自研的智能合约代码分析工具正式上线。据悉,该工具可向Web3.0数以十万计的智能合约提供合约Gas消耗情况分析,能大幅提高合约运行效率,缓解以太坊网络堵塞情况。此外,Hamster将自动创建模拟链并生成Gas费消耗报告,让开发者更好地了解自己合约在以太坊网络中的消耗情况。通过结果分析,开发者还可以发现合约中的潜在问题,如:循环操作次数过多;过量的存储操作与计算操作;不必要的外部调用及复杂性设计等。能进一步优化合约的性能和可靠性,降低运行成本。[2023/4/25 14:25:06]
目前区块链产业中与形式化验证相关的产品可以分为三类:VaaS平台,公链,和语言,应用尚在技术的早期,自动化程度和实用性,及用户工具还有待于极大的进步。
Vaas平台
是直接面向开发者提供形式化验证服务的平台。目前Vaas类项目包括CertiKzecurify.ch、RuntimeVerification等项目。目前,CertiK仍在初始阶段,Securify.ch的测试版已经上线,而RuntimeVerification已经在商业运营。
与其它几个项目不同,RuntimeVerification是基于EVM虚拟机二进制码进行形式化验证,而非针对智能合约本身用的高级语言,因此在安全性上又更进一步,避免了因编译器编译过程中可能产生的漏洞。
语言
语言类产品一般为函数式语言的子语言,提供与智能合约形式化验证相关的开发者库和工具,目前有Imandra和Tezos等项目。
其中,Imandra发布了一套开源的以太坊虚拟机用ImandraML语言标记的模型,并且专注于交易所等金融应用场景的形式化验证,用以确保金融交易的合法合规,据称相关技术已经用于华尔街顶级投行的交易系统。
ARK Invest:到2030年,智能合约网络每年可提供4500亿美元的费用:金色财经报道,ARK Invest近日发布“2023 Big Ideas”研究报告,比特币、数字钱包、公链和智能合约网络占据2023年14个“大创意”中的四席。
报告强调了Layer2网络Arbitrum和Optimism上的交易数量,现在与以太坊基础层交易数量相当。ARK Invest补充说,到2030年,智能合约网络每年可提供4500亿美元的费用。与此同时,ARK Invest预计数字钱包用户的数量将以每年8%的速度增长,到2030年达到全球人口的65%。
在另一个名为“技术融合”的主题中,Ark表示,加密挖矿可以支持更多的太阳能电池安装,并指出“将比特币挖矿纳入太阳能存储系统可以提高电网的规模和可靠性,而不会增加电力的平均成本”。[2023/2/2 11:41:53]
公链
直接包含形式化验证引擎的公链产品目前只有TheMatrix项目,特征是基于AI辅助的形式化验证及动态约束的检查。AI是否对于形式化验证的自动化带来帮助在技术上仍是个未知数。
3.?????智能合约的形式化验证
智能合约的安全性验证问题迫在眉睫,智能合约可能存在的主要安全隐患有:1)合约中某一方利用合约漏洞修改合约,使得合约执行结果偏向某一方;2)智能合约攻击者利用合约漏洞攻击合约,造成合约中财产的损失。这最终都会导致人们对于智能合约的不信任。在智能合约的验证方面,形式化验证方法可以检查智能合约的很多属性,例如,合约的公平性、可达性、有界性、活锁、死锁、不可达,以及无状态二义性等。形式化方法重点可以解决智能合约产生与执行的可信性问题。采用模型检测的优点是完全自动化并且验证速度快,即便是只给出了部分描述的合约,通过搜索也可以提供关于已知部分正确性的有用信息。尤其重要的是,在性质未被满足时,搜索终止可以给出反例,这种信息常常反映了合约设计中的细微失误,因而对于合约排错有极大的帮助。
这里我们采用模型检测工具SPIN对智能合约进行验证。SPIN是用来检测和验证分布式软件系统的模型检测器。SPIN即PROMELA解析器,是由美国贝尔实验室开发并用于形式化验证分布式软件系统的模型检测器,是一种广泛应用于大规模复杂软件系统的形式化模型检测器,与商业性模型检测器相比,SPIN在技术上和使用上更加自由和开放。
OKExChain十月月报:Farm和Swap模块完成开发,EVM智能合约完成30%:据OKExChain十月项目进度月报显示:OKExChain测试网已升级至v0.12.3,流动性挖矿Farm模块和Swap模块开发完毕,并完成第一轮测试。EVM智能合约开发顺利进行,已完成30%,且各项测试均正常运行。另外,OKEx Dex的AMMSwap完成整理联调,支持创建任意币种流动性池,添加流动性,删除流动性,token互换四大核心功能。[2020/11/4 11:37:47]
描述一个智能合约,包括以下几个方面:合约方的信息、合约状态机、各个合约方的执行状态机。
我们定义智能合约
,为一个二元组,其中:
Con为合约的基本信息描述,Con={CId,CTimeStamp,CTime,CSign},CId为合约标识,是区分合约的唯一标识,CTime为合约的时限,即合约的有效期,CTimeStamp为合约的时间戳,即签订合约的日期,CSign为合约方的签名。
Machine={
},表示各个合约方的执行状态机的集合,
动态 | Cosmos启动适用于CosmosSDK的WASM智能合约模组:跨链项目Cosmos宣布启动适用于CosmosSDK的WASM智能合约模组,这意味着,使用包括Rust在内的多种不同编程语言编写的软件也可以在该区块链上安全运行,比如说 Rust 开发人员可使用 Rust 语言编写智能合约,然后上传到任何包含CosmWasm模块的Cosmos SDK的链上无缝集成,即使是开发基于Rust的自定义应用程序逻辑,也可使用经过主网验证的Cosmos-SDK模块和BPoS Tendermint共识算法。同时,开发者能够在交易中上传代码而不是重新启动链,从而可以更快地部署新功能,而仅当需要更改核心逻辑时Cosmos Hub升级过程才是必须的。CosmWasm模块包括成熟构建和测试环境,并且得益于Rust的原生编程功能而带有集成开发环境(IDE)。由于CosmWasm的智能合约环境是图灵完备的,这意味着任何可在以太坊中实现的逻辑,都可以在 Cosmos SDK 中执行,而无需修改底层区块链。[2019/12/12]
表示第i个合约方的执行状态机。
合约状态机
=<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验证框架
据此验证框架,我们设计完成了一个形式化验证系统,取得了较好的验证效果,值得推广应用,后文将给出一个验证案例。
标签:COSOSMCOSMTIMX ECOSYSTEMCosmic ChainCosmo CoinTIMESERIES币
据Cointelegraph11月13日报道,为了提高加密货币在瑞士的支付接受度,加密货币券商BitcoinSuisse与欧洲支付和交易服务提供商Worldline展开合作.
1900/1/1 0:00:00说起谷歌,这家巨头在量子计算领域的“霸权”如今被视为比特币的最大威胁。然而,对于整个加密货币行业来说,这家搜索巨头进军银行业可能是完全不同的事情.
1900/1/1 0:00:00近几日一直在学习Nervos这个项目,查阅了各种资料与文献。惊讶于1confirmation对Nervos的评价如此之高:“这是我们所见过的在以太坊之外建造Layer1的最强团队?”.
1900/1/1 0:00:00文章来源:新华社记者:毛振华、王阳、潘晔从幕后走到台前,区块链技术火热背后,另一场“盛宴”却在暗流涌动.
1900/1/1 0:00:00作者:超级君几日以后,张楠赓站在纳斯达克上市敲钟的舞台上,灯光闪耀,掌声如潮,准会想起导师拒绝他休学的那个遥远的深夜。当时正是比特币进入中国人的视野的第二年,2012.
1900/1/1 0:00:00作者:王小云来源:经济参考密码法共五章四十四条,明确了密码工作的领导和管理体制,即中央密码工作领导机构对全国密码工作实行统一领导,国家密码管理部门负责管理全国的密码工作.
1900/1/1 0:00:00