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