對智能合約進行形式化驗證可避免它們出現(xiàn)錯誤、漏洞和其他不利的情況。在這個過程中,人類專家會將智能合約的邏輯轉(zhuǎn)換為數(shù)學(xué)語句,然后通過自動化流程對照合約預(yù)期行為的模型檢查實際邏輯。將形式化驗證和人工審計相結(jié)合,我們就可以對智能合約的安全性進行全面評估。
簡介
智能合約是部署在區(qū)塊鏈上的計算機程序,在滿足某些條件時會自動運行。智能合約可能非常簡單,也可能極其復(fù)雜,可以持有價值數(shù)百萬甚至數(shù)十億美元的資產(chǎn)。
智能合約代碼如果有安全漏洞,就可能造成毀滅性后果,比如被不法分子盜竊其持有的所有資產(chǎn)。2021年,由于智能合約中的一個拼寫錯誤,自動做市商(AMM)Uranium Finance被盜取了5,000萬美元。
同樣在2021年,由于單個代碼錯誤,Compound Finance錯誤發(fā)放了8000萬美元的獎勵。2022年,因智能合約出現(xiàn)一個錯誤,Wormhole Bridge被盜走3.2億美元。
因此,一開始就把智能合約程序弄對很重要。智能合約采用開源模式,這意味著一旦合約部署后,代碼就會公開。如果黑客發(fā)現(xiàn)其中的錯誤,就可以立即加以利用。此外,隨著時間的推移修補安全漏洞的常規(guī)操作派不上用場,因為智能合約的代碼在部署后通常無法修改。
智能合約驗證是如何運作的?
智能合約的形式化驗證是通過將智能合約的邏輯和預(yù)期行為呈現(xiàn)為數(shù)學(xué)語句來實現(xiàn)的。隨后,審計師會使用自動化工具檢查這些語句是否正確。
該過程涉及:
用正式語言定義合約的規(guī)范和預(yù)期的特性。
將合約的代碼轉(zhuǎn)換為形式化陳述,例如數(shù)學(xué)模型或邏輯。
使用自動化定理證明或模型檢測來驗證合約的規(guī)范和特性。
重復(fù)驗證過程,以發(fā)現(xiàn)并修復(fù)任何錯誤或與預(yù)期特性的偏差。
為什么智能合約驗證很重要
通過運用數(shù)學(xué)推理,有助于確保經(jīng)過形式化驗證的智能合約避免出現(xiàn)錯誤、漏洞和其他不利的情況。驗證也有助于增加對合約的信賴和信心,因為其特性已經(jīng)過了嚴格檢驗,正確可靠。
以下這些示例大致說明了智能合約驗證如何幫助防止重大財務(wù)損失和其他災(zāi)難性后果。
Uniswap
Uniswap是一家著名的AMM。Uniswap V1智能合約在開發(fā)過程中,進行了形式化驗證。在發(fā)布前,這項形式化驗證發(fā)現(xiàn)并修復(fù)了一些舍入誤差,避免了Uniswap V1的資金被吸干殆盡。
Balancer
Balancer V2也是一個經(jīng)過驗證的AMM。形式化驗證發(fā)現(xiàn)并修復(fù)了智能合約中閃電貸款功能的費用計算錯誤,該錯誤會使交易平臺很容易遭受盜竊。
SafeMoon
SafeMoon V1在部署后,通過形式化驗證發(fā)現(xiàn)了一個極其微小的錯誤,如果該錯誤沒被發(fā)現(xiàn),合約所有人如果在放棄所有權(quán)之前進行了某些操作,那合約所有人在放棄之后有可能重新獲得該合約。
大多數(shù)對SafeMoon V1分叉的人工審計都遺漏了這個錯誤,因為需要分析程序變量值的特定組合才能發(fā)現(xiàn)這個錯誤。人類很容易錯過這個問題,但機器卻能及時地捕捉到它。
形式化驗證和人工審計如何配合發(fā)揮作用
形式化驗證提供了一種系統(tǒng)化、自動化的辦法,來根據(jù)合約的預(yù)期特性檢查合約的邏輯和行為。這樣可以更輕松地識別和修復(fù)任何潛在的錯誤或漏洞。這對于人工檢查難以發(fā)現(xiàn)的復(fù)雜、細微的問題特別有用。
人工審計則包括專家對合約的代碼、設(shè)計和部署進行審查。審計師會利用自己的經(jīng)驗和專業(yè)知識,來識別安全風險并評估合約的整體安全狀況。他們還可以確認形式化驗證過程是否正確執(zhí)行,并檢查是否存在自動化工具可能無法檢測到的任何問題。
將形式化驗證和人工審計相結(jié)合,我們就可以對智能合約的安全性進行全面評估。這可以提高發(fā)現(xiàn)和修復(fù)任何漏洞的幾率。這樣一來,我們就相當于采用了一種結(jié)合人類和機器各自專長的深度防御安全措施。
結(jié)語
為了確保智能合約的安全性,必須將形式化驗證和人工審計相結(jié)合,從而確保對智能合約的安全態(tài)勢進行全面而徹底的評估。
雖然形式化驗證對資源消耗較高,但對于具有高價值或高風險因素的合約來說,這是一項值得的投資。畢竟歸根結(jié)底,安全重于泰山,一定要優(yōu)先考慮安全性并確保智能合約遠離錯誤、漏洞和不利的意外行為。