6月7日:(缺乏合約的形式化驗證)
3:缺乏合約的形式化驗證
智能合約的形式化驗證仍然是一個未解決的巨大問題。首先,讓我們通過「形式化證明(formal proof)」來理解「形式化驗證(formally verify)」的意思。在數學上,「形式化證明」是一種數學證明,計算機可以通過基本的數學公里和推理規則(inference rules)來證明它。
在程序方面,形式化驗證是一種判斷程序是否能按預期運行的方法。具體的規約語言可以來描述輸入和輸出之間的函數關系。也就是說,如果在程序里聲明了一個不變量,則我們應該證明這個聲明的存在。
規范語言的一個例子是Isabelle,它是一種通用證明輔助,可以在形式化語言里表達數學公式,還提供了工具在邏輯運算上來證明這些公式。另一種規范語言是Coq,這是一種用來書寫數學定義、執行算法和定理的形式語言。
對于編碼在智能合約里的程序來說,為什么形式化驗證十分重要?一個原因是智能合約是不可逆的,這意味著一旦將它們部署到主網絡里,你就無法升級或修改它們。因此在部署和使用智能合約之前,需要保證一切都不會出錯。而且,智能合約是可公開訪問的,存儲在智能合約里的內容對任何人可見;每個人都可以調用智能合約里的公開方法。這帶來了開放性和透明性,但也會吸引黑客攻擊智能合約。
無論你多么小心謹慎,寫出一個沒有bug和完全可信的智能合約都是十分困難的。此外,在以太坊上,由EVM指令的設計方式,驗證EVM代碼也很困難。因此在以太坊上很難找到一種形式化驗證的解決方案。但無論如何,形式化驗證都是一種減少bug和攻擊的強有力手段。比起傳統方法(如代碼測試和同行審查),它在很大程度上可以保證正確性。我們急切地需要一種更好的解決方案。
公有鏈的本質挑戰之三
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...