智能合約形式化驗證工具真能解決問題麼?

在智能合約的形式化驗證過程中,需要專業的編程人員對不同模板的智能合約進行特徵分析、模型建立和模型驗證。現在市場上出現了一些一鍵式的智能合約形式化驗證工具,據說可以最大程度的減少驗證程序、發現bug,提高工作效率。這種一鍵式的智能合約形式化驗證工具真的有效麼?爲了求真筆者做了一個測試。

本次筆者測試選擇的是成都鏈安研發的離線版免費驗證工具Beosin-VaaS。我們基於VSCode的插件市場安裝一個sodility開發插件(具有語法檢測,高量和語法聯想,方便合約開發。),安裝完成後,在插件市場安裝成都鏈安的免費檢測工具Beosin-VaaS。
合約代碼如下:
在這裏插入圖片描述
在這裏插入圖片描述
我們用成都鏈安的插件檢測一下我們合約中存在的問題
在這裏插入圖片描述開始檢測
我截取部分報錯解釋說明一下
插件報錯會展示行號和那一行的代碼以及描述信息,有助於開發人員修改問題
在這裏插入圖片描述
在調用call/send函數後無論執行成功還是失敗都不會直接拋異常,如果不對調用返回值進行檢查,函數會繼續執行,造成安全漏洞。
在這裏插入圖片描述

溢出是典型的合約漏洞,可能導致檢查被繞過,合約運行邏輯出錯。
在這裏插入圖片描述
Solidity中允許有未使用的變量,它們不會構成直接的安全問題,但會降低代碼的可讀性並且額外佔用存儲空間導致部署時的資源消耗增加。
在這裏插入圖片描述
成都鏈安的檢測插件集成了編譯器的告警,會提示你一些合約開發中的信息。
在這裏插入圖片描述
在transfer、transferFrom、transferOwnership等敏感函數中,用戶操作不可逆,所以建議開發者在這些函數實現中增加目標地址非零檢查,避免用戶誤操作導致用戶權限丟失和財產損失。

以上是我們這個合約中部分存在的漏洞報錯,有了這個插件的檢測,我們就能快速定位解決問題,使我們的合約更加安全。

發佈了5 篇原創文章 · 獲贊 1 · 訪問量 252
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章