風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
ChatGPT的“形式化驗證”會取代人類嗎?
CertiK
特邀专栏作者
2023-02-09 11:41
本文約1981字,閱讀全文需要約3分鐘
我們常說形式化驗證用於智能合約審計,那麼審計當中,到底哪些部分使用了形式化驗證,人工審計又有著怎樣的作用呢?

3hittYAYmq9LeIU6bZc8WJRr4EvZhn276MuY4rt9.png

近日,ChatGPT 火出圈,上線僅兩個月活躍用戶就已突破一億。用它寫文章、碼代碼、談戀愛,找工作回郵件已成了常規操作,網上還有不少教你利用該軟件“賺錢”的門道,甚至賓大的沃頓商學院教授也聲稱“學生”ChatGPT 通過了商業管理考試。

於是人工智能取代某些崗位甚至是人工智能取代人類的熱議話題登上了熱搜,在人人被捲的時代,大家心裡也漸漸打起小鼓。

那麼人工智能,或形式化驗證這樣的“計算機產物”,到底能否取代人類呢?在Web3.0 的世界,形式化驗證又能否取代人工審查呢?

w7cPeoW7gKiNJe7AyVYZTECIfylgnnkNfcHLIKxC.png

形式化驗證

形式化驗證,是一種驗證計算機程序是否按照了預期運行的數學證明方法。它將程序的屬性和預期行為表達成為數學公式,然後使用自動化工具來檢查這些公式是否成立。該過程有助於確保其程序符合預期。

形式化驗證的應用

形式化驗證是一種可被廣泛應用於不同系統的工具,包括:

  • 計算機硬件設計:確保集成電路和數字系統符合它們所需的規範,並且行為正確。

  • 軟件工程:驗證軟件系統的正確性和可靠性,特別是在航空、醫療設備和金融系統等任務關鍵型應用/領域。

  • 網絡安全:評估加密算法和協議的安全性,並識別對安全敏感的系統中的安全漏洞。

  • 人工智能和機器學習:驗證人工智能和機器學習模型的屬性和行為,確保它們按照預期運行並做出精準預測。

  • 自動化定理證明:驗證數學定理和證明數學猜想,應用於數學、物理學和計算機科學等領域。

  • 區塊鍊和智能合約:確保區塊鏈系統和智能合約的正確性、安全性和可靠性。

智能合約的形式化驗證

智能合約的形式化驗證,是通過將智能合約的邏輯和預期行為用數學表達式表示,然後使用自動化工具來檢查這些數學表達式是否正確。

這個過程包括:

  • 用形式化語言定義合約的規範和屬性。

  • 將合約的代碼“翻譯"”成形式化的表示,如數學邏輯或模型。

  • 使用自動定理證明器或模型檢查器來驗證合約的規範和屬性是否成立。

  • 重複驗證過程,以發現和修復任何錯誤或偏離預期的情況。

有時,自動化定理證明器或模型檢查器不能證明或證偽一個屬性。在這種情況下,可能需要對規範和期望的屬性進行改進,並重複驗證過程。

將規範分解成更短小的代碼或者提供更多的規範信息,可以完善規範和期望的屬性。這可以使定理證明者和模型檢查者更容易驗證規範和屬性是否成立。

形式化驗證可以應用於一個合約或同時應用於多個合約。 Web3.0 項目經常使用多個合約,確保這些合約一起工作並正確實現所需的項目功能非常重要。

形式化驗證當中,由於其屬性已在數學上被嚴格證明是正確的,因此使用這種數學方法有助於確保智能合約不存在錯誤、漏洞和其他非預期行為。

將代碼形式化表示

代碼片段示例一

如下代碼顯示了一個簡化的代幣轉移功能程序:有兩個用戶,他們各自有一些代幣(balance 和balance 2 )。函數transferFromUser 1 將代幣從用戶1 轉移到了用戶2 。該程序有一個不變量,即代幣的總供應量總是等於餘額之和。

wmffLi8fL6S2ox9rqflnFLU9u2ErReLsaegHLKgM.png

代碼片段一:代幣轉移程序

我們把不變量用數學公式表示,並對公式進行編號。數學公式中,“=”意味著“等於”,而不是賦值。

0iYVNkfKuqrAjP5DGImIS5tzQaUJLVuXWpjaHBEg.png

代碼片段示例二

如下代碼顯示瞭如何添加邏輯公式(為了例子簡單明確,在此暫時忽略整數溢出)。

i0p2XZzt0AE8lrFA7gqi54jdedeLOzHrq1a9i2wk.png

代碼片段二:表達了代碼含義的邏輯公式函數

如果想要檢查transferFromUser 1 是否保持了程序中的不變量,那麼我們可以檢查公式7 (在函數的末尾)是否有不變性(公式1 )。下面是使用高中代數方法進行的證明。

V03Mw2ETOMqoLcpyeas7arVR5FY6r27CCsb2lDah.png

形式化驗證與人工審計的協同

在確保智能合約的安全性方面,形式化驗證和人工審計可謂相輔相成。

形式化驗證:

形式化驗證提供了一種系統化和自動化的方法來檢查合約的邏輯和行為以及它的預期屬性,使其更容易識別和修復潛在的錯誤或漏洞。它對發現複雜或不容易被察覺的問題十分有效,因為這些問題可能很難通過人工檢查發現。

當處理複雜或多個合約時,人類則很難推理出所有需要檢查的組合和可能性,而機器則“毫無壓力”。

人工審計:

人工審計提供了專家對合約代碼、設計和部署的審查,審計專家可以利用他們的經驗和專業知識來識別潛在的安全風險並評估合約的整體安全情況。

除此之外,人工還可以驗證形式化驗證過程是否被正確執行,並檢查無法用自動化工具檢測的問題。因此人工專家審計,更有助於確保形式化驗證中使用的規範和所需屬性的正確性。

綜上,結合形式化驗證和人工審計兩個方法,才能對智能合約的安全性進行全面徹底評估,並增加發現和漏洞修復的機會。這也是一種結合了人類和機器各自特長,且被稱為“深度防禦”的安全方法。

安全專家在線AMA

形式化驗證的力量不可小覷,但是也不能忽略人工審計的重要性。在ChatGPT 官網上,其已坦言了自身的不足,而人工智能無法取代人類思考和創造這樣老生常談的討論在此也可以省略一萬字……這不,Bard 出錯谷歌股價大跌。

同樣的,形式化驗證也不可取代人工審計,兩者相輔相成才能對智能合約進行完整的檢驗。

文章閱讀完還有疑問?不妨做客【 2 月10 日本週五】的【CertiK 推特AMA】,與專家進行在線一對一問答!有時差不能到場的朋友們可以後台留言你的問題,我們將替你傳達給嘉賓並且公開AMA 回放內容!

安全
AI總結
返回頂部
我們常說形式化驗證用於智能合約審計,那麼審計當中,到底哪些部分使用了形式化驗證,人工審計又有著怎樣的作用呢?
下載Odaily星球日報app
讓一部分人先讀懂 Web3.0
IOS
Android