比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

PUT:智能合約入門系列 | 智能合約工程重要環節:形式化驗證方法_Stable USD

Author:

Time: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等。

Input Output發文介紹保護隱私的智能合約解決方案Kachina:8月5日消息,Cardano開發團隊Input Output發文介紹與愛丁堡大學合作開發的保護隱私的智能合約解決方案Kachina,它利用ZK Snarks使用戶能夠在不犧牲去中心化特性的情況下實現隱私保護和通用智能合約功能。Input Output表示,提議的設計主要是理論上的,但Kachina證明了在現實生活的限制下創建保護隱私的智能合約的可能性。[2022/8/6 12:05:39]

模型檢測技術是近三十年來最成功的自動驗證技術之一,目前被廣泛地應用于有限狀態系統的驗證,包括電路設計和通信協議的分析與驗證。根據所要驗證模型的規格特點,可以分為復合檢驗器、時態邏輯模型檢測器和行為一致檢驗器。根據采用的不同的技術可以分為:面向狀態的模型檢測和符號模型檢測。模型檢測器的基本原理都是一樣的,其工作原理如圖1???所示。通常情況下,模型都需要經過迭代驗證的過程,才能最終滿足驗證條件。

圖1模型檢測器原理

形式化驗證是一種基于數學和邏輯學的方法,在智能合約部署之前,對其代碼和文檔進行形式化建模,然后通過數學的手段對代碼的安全性和功能正確性進行嚴格的證明,可有效檢測出智能合約是否存在安全漏洞和邏輯漏洞。該方法可以有效彌補傳統的靠人工經驗查找代碼邏輯漏洞的缺陷。形式化驗證技術的優勢在于,用傳統的測試等手段無法窮舉所有可能輸入,而我們用數學證明的角度,就能克服這一問題,提供更加完備的安全審計。

2.???形式化驗證在區塊鏈領域的應用現狀

Terra生態DEX Astroport發布Terra 2.0計劃,智能合約將重新部署并通過快照發行新代幣:金色財經消息,Terra生態去中心化交易所Astroport發布Terra 2.0計劃,Astroport智能合約系統將在新網絡上重新部署,此外還要保持與Terra Classic上的Astroport的兼容性。Terra2.0上的新ASTRO代幣將基于Terra Classic上ASTRO和xASTRO余額的快照進行分配,快照日期將與在“Terra生態系統復興計劃2”中用于計算LUNA和UST余額的快照日期相同,其他細節(包括代幣分配百分比、釋放、治理等)將盡快公布。[2022/5/24 3:37:03]

隨著區塊鏈平臺級應用的普遍化,智能合約涉及的金額呈指數級別增長,智能合約的安全問題也成為投資者和開發者共同關注的焦點。今年以來有數個基于ERC-20的項目因為智能合約代碼出現漏洞而遭到黑客攻擊,導致投資者巨額的損失。為了防止類似事件的發生,交易所、錢包、項目方等都在智能合約安全上加大投入,同時圍繞著智能合約安全的周邊生態成為目前投資的熱點。

形式化驗證技術已經在軍工、航天等高系統安全要求領域的取得了相當成功的應用,將形式化方法應用于智能合約,使得合約的生成和執行有了規范性約束,保證了合約的可信性,使人們可以信任智能合約的生產過程和執行效力。通過形式化語言,把合約中的概念、判斷、推理轉化成智能合約模型,可以消除自然語言的歧義性、不通用性,進而采用形式化工具對智能合約建模、分析和驗證,進行一致性測試。合約的形式化驗證保證了合約的正確屬性,自動化代碼生成提高了合約的生成效率,合約的一致性測試保證了合約代碼與合約文本的一致性。

目前區塊鏈產業中與形式化驗證相關的產品可以分為三類:VaaS平臺,公鏈,和語言,應用尚在技術的早期,自動化程度和實用性,及用戶工具還有待于極大的進步。

Mintscan推出智能合約驗證功能,已上線Cosm Wasm和Juno Network:金色財經消息,驗證節點基礎設施Cosmostation宣布基于Cosmos-SDK網絡的區塊瀏覽器Mintscan推出智能合約驗證新功能,現已上線Cosmos生態智能合約平臺鏈Cosm Wasm和Juno Network。

Cosmostation表示,智能合約驗證并不審計代碼,驗證后不代表代碼是安全的,僅表示校驗一致。下一步,Mintscan將把智能合約可視化拓展到其他鏈,將在第二季度和IBCwallet合作推出系列新功能。[2022/4/1 14:31:45]

Vaas平臺

是直接面向開發者提供形式化驗證服務的平臺。目前Vaas類項目包括CertiKzecurify.ch、RuntimeVerification等項目。目前,CertiK仍在初始階段,Securify.ch的測試版已經上線,而RuntimeVerification已經在商業運營。

與其它幾個項目不同,RuntimeVerification是基于EVM虛擬機二進制碼進行形式化驗證,而非針對智能合約本身用的高級語言,因此在安全性上又更進一步,避免了因編譯器編譯過程中可能產生的漏洞。

語言

語言類產品一般為函數式語言的子語言,提供與智能合約形式化驗證相關的開發者庫和工具,目前有Imandra和Tezos等項目。

其中,Imandra發布了一套開源的以太坊虛擬機用ImandraML語言標記的模型,并且專注于交易所等金融應用場景的形式化驗證,用以確保金融交易的合法合規,據稱相關技術已經用于華爾街頂級投行的交易系統。

動態 | 以太坊AirDrop薅羊毛攻擊再現 數十個智能合約被攻擊:今天下午13:19,PeckShield安全盾風控平臺監測到0x84ec開頭的以太坊賬號先后對FOMO Lightning、MC2 COSMOS等29個游戲、Token合約進行了AirDrop空投攻擊,以薅羊毛的方式持續獲利。PeckShield安全人員分析發現,該攻擊者于今天中午13:19創建了0x42fe開頭的控制合約,又通過該合約先后針對每個目標游戲創建部署了相應的攻擊合約,進而成功實施攻擊。此種攻擊在去年FOMO3D類現象級游戲火爆時,就已被PeckShield披露并命名,今天發生的連續攻擊行為表明,攻擊者一直在尋找潛在目標并進行攻擊嘗試,PeckShield團隊提醒各項目開發者提起重視并及時修復漏洞,避免造成不必要的數字資產損失。[2019/3/12]

公鏈

直接包含形式化驗證引擎的公鏈產品目前只有TheMatrix項目,特征是基于AI輔助的形式化驗證及動態約束的檢查。AI是否對于形式化驗證的自動化帶來幫助在技術上仍是個未知數。

3.?????智能合約的形式化驗證

智能合約的安全性驗證問題迫在眉睫,智能合約可能存在的主要安全隱患有:1)合約中某一方利用合約漏洞修改合約,使得合約執行結果偏向某一方;2)智能合約攻擊者利用合約漏洞攻擊合約,造成合約中財產的損失。這最終都會導致人們對于智能合約的不信任。在智能合約的驗證方面,形式化驗證方法可以檢查智能合約的很多屬性,例如,合約的公平性、可達性、有界性、活鎖、死鎖、不可達,以及無狀態二義性等。形式化方法重點可以解決智能合約產生與執行的可信性問題。采用模型檢測的優點是完全自動化并且驗證速度快,即便是只給出了部分描述的合約,通過搜索也可以提供關于已知部分正確性的有用信息。尤其重要的是,在性質未被滿足時,搜索終止可以給出反例,這種信息常常反映了合約設計中的細微失誤,因而對于合約排錯有極大的幫助。

獨家 | “新增代幣型智能合約風險榜”出爐 Peach Will(PW)風險排名第一:第三方大數據評級機構RatingToken最新數據顯示,截止2018年8月12日,全球新增919個合約地址,其中173個為代幣型智能合約。RatingToken團隊發布的“新增代幣型智能合約風險榜”中,Peach Will(PW)、Ready Player ONE(RP1)和Vote Bhelp(Test)排名前三,檢測得分依次為1.50、2.00和2.00,其中Peach Will存在24個疑似風險項。其他登上該風險榜TOP10的合約還包括PreSale、EarlyBirdSale、LFC_Crowdsale、Crowdsale、REWARD、Real Q Coin(RQC)和HODL Coin(HODL)。如需查看更多智能合約檢測結果,請查看原文鏈接。[2018/8/13]

這里我們采用模型檢測工具SPIN對智能合約進行驗證。SPIN是用來檢測和驗證分布式軟件系統的模型檢測器。SPIN即PROMELA解析器,是由美國貝爾實驗室開發并用于形式化驗證分布式軟件系統的模型檢測器,是一種廣泛應用于大規模復雜軟件系統的形式化模型檢測器,與商業性模型檢測器相比,SPIN在技術上和使用上更加自由和開放。

描述一個智能合約,包括以下幾個方面:合約方的信息、合約狀態機、各個合約方的執行狀態機。

我們定義智能合約

,為一個二元組,其中:

Con為合約的基本信息描述,Con={CId,CTimeStamp,CTime,CSign},CId為合約標識,是區分合約的唯一標識,CTime為合約的時限,即合約的有效期,CTimeStamp為合約的時間戳,即簽訂合約的日期,CSign為合約方的簽名。

Machine={

},表示各個合約方的執行狀態機的集合,

表示第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驗證框架

據此驗證框架,我們設計完成了一個形式化驗證系統,取得了較好的驗證效果,值得推廣應用,后文將給出一個驗證案例。

Tags:PUTIMESTATIMInternet Computer(Dfinity)ScPrimeStable USDPLC Ultima

酷幣下載
區塊鏈:烏鎮·比原鏈CEO朗豫:重金啟動MOV生態建設,這會是第一個分布式區塊鏈商業生態_MOV

11月8日,由巴比特主辦的2019世界區塊鏈大會·烏鎮在烏鎮互聯網國際會展中心正式開幕。在比原鏈“KeepMOVing”專場活動上,比原鏈CEO朗豫做了主題分享.

1900/1/1 0:00:00
EFI:烏鎮·DeFi與CeFi必有一戰?一場圓桌看懂DeFi的挑戰與未來_Metaegg DeFi

11月9日,由巴比特主辦的2019世界區塊鏈大會·烏鎮進入第二天的精彩議程。在9號上午的《D-Future:去中心化金融的未來》主題論壇上舉行了“洞見DeFi:新金融之路or流動性空城?”圓桌對.

1900/1/1 0:00:00
比特幣:嘉楠路演PPT曝光:發行區間9到11美元,擬下周美國上市_ASI

作者:雷建平 來源:雷帝網? 嘉楠canaan今日再次更新招股書,公布發行區間為9到11美元,發行10,000,000股ADS,預計募集資金規模最高1.1億美元.

1900/1/1 0:00:00
PAY:PayPal領投,YC參投,加密貨幣公司TRM獲得420萬美元融資_techshares

據了解,全球支付處理商PayPal剛剛領投了加密貨幣風險管理平臺TRMLabs420萬美元的融資.

1900/1/1 0:00:00
比特幣:納斯達克敲鐘在即,帶你回顧嘉楠耘智這條走了三年的IPO道路_區塊鏈運用的技術中不包括哪一項a共識算法

來源:小蔥 美國當地時間11月21日,比特幣礦機生產商嘉楠耘智將正式在納斯達克敲鐘,股票代碼擬定為CAN。據媒體透露,嘉楠耘智將通過在美國IPO籌集9000萬美元.

1900/1/1 0:00:00
區塊鏈:區塊鏈入門 | 區塊鏈行業的估值模型以及存在的弊端_nvt幣價值預測

作者:Wayne 出品:白話區塊鏈 投資者和金融分析師一直在尋找一種簡單而有用的指標來評估股票和商品價格。近年來,加密貨幣或通證已成為這種嘗試的最新焦點.

1900/1/1 0:00:00
ads