在智慧型合約的形式化驗證過程中,需要專業的程式設計人員對不同模板的智慧型合約進行特徵分析、模型建立和模型驗證。現在市場上出現了一些一鍵式的智慧型合約形式化驗證工具,據說可以最大程度的減少驗證程式、發現bug,提高工作效率。這種一鍵式的智慧型合約形式化驗證工具真的有效麼?為了求真筆者做了乙個測試。
本次筆者測試選擇的是成都鏈安研發的離線版免費驗證工具beosin-vaas。我們基於vscode的外掛程式市場安裝乙個sodility開發外掛程式(具有語法檢測,高量和語法聯想,方便合約開發。),安裝完成後,在外掛程式市場安裝成都鏈安的免費檢測工具beosin-vaas。
合約**如下:
我們用成都鏈安的外掛程式檢測一下我們合約中存在的問題
我擷取部分報錯解釋說明一下
外掛程式報錯會展示行號和那一行的**以及描述資訊,有助於開發人員修改問題
在呼叫call/send函式後無論執行成功還是失敗都不會直接拋異常,如果不對呼叫返回值進行檢查,函式會繼續執行,造成安全漏洞。
溢位是典型的合約漏洞,可能導致檢查被繞過,合約執行邏輯出錯。
solidity中允許有未使用的變數,它們不會構成直接的安全問題,但會降低**的可讀性並且額外占用儲存空間導致部署時的資源消耗增加。
成都鏈安的檢測外掛程式整合了編譯器的告警,會提示你一些合約開發中的資訊。
在transfer、transferfrom、transferownership等敏感函式中,使用者操作不可逆,所以建議開發者在這些函式實現中增加目標位址非零檢查,避免使用者誤操作導致使用者許可權丟失和財產損失。
以上是我們這個合約中部分存在的漏洞報錯,有了這個外掛程式的檢測,我們就能快速定位解決問題,使我們的合約更加安全。
區塊鏈智慧型合約及形式化驗證平台 VaaS 講解
2017年7月20號,parity 的多簽名錢包合約被曝漏洞,導致3200萬美元的數字貨幣被盜,甚至連 dao bec 這樣的著名專案市值也出現了一夜歸零的慘痛事件,而所有代幣都由智慧型合約生成,所以,毫無疑問,智慧型合約是區塊鏈生態安全中最重要的一環,越來越多的人逐漸意識到區塊鏈智慧型合約安全的重...
關於軟體形式化驗證
軟體開發中一般使用 測試 來找bug,這種方法只能找到bug,不能證明程式沒有bug。形式化驗證是用邏輯來驗證程式的可靠性,就是把一段程式用邏輯的方法證明一遍,證明它能得到預期的結果,沒有bug。一般這類研究主要應用於昂貴的航天器材的作業系統 危險的醫療裝置的程式之中。因為航天器材 醫療裝置牽扯到人...
形式化驗證工具之離線免費版Beosin VaaS
形式化驗證工具之離線免費版beosin vaas 儘管筆者認為離線免費版beosin vaas的功能已足夠強大,但根據官方發布的訊息,對於一些複雜型別的業務合約 以及對安全性要求高的業務合約,比如數字金融類 如defi 物流 鏈類 跨境支付類 防偽溯源類等等,還是建議選擇企業版beosin vaas...