[發明專利]一種以太坊智能合約問題檢測和預防方法與裝置在審
| 申請號: | 201911314940.7 | 申請日: | 2019-12-19 |
| 公開(公告)號: | CN111177730A | 公開(公告)日: | 2020-05-19 |
| 發明(設計)人: | 張鵬程;肖鋒;于佳男;張勐;吉順慧;戴啟印;曹文南 | 申請(專利權)人: | 河海大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57 |
| 代理公司: | 南京蘇高專利商標事務所(普通合伙) 32204 | 代理人: | 孟紅梅 |
| 地址: | 211100 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 以太 智能 合約 問題 檢測 預防 方法 裝置 | ||
1.一種以太坊智能合約問題檢測和預防方法,其特征在于,包括如下步驟:
步驟1:獲取待檢測的以太坊智能合約,并將源代碼進行格式化;
步驟2:根據不同問題的特征,確定對應的正則表達式及檢測規則,以及確定預防重入漏洞和整數溢出漏洞的代碼語句的構造方法;
步驟3:將格式化后的代碼發送到不同的問題檢測程序中,問題檢測程序根據步驟2定義的正則表達式和檢測規則,檢測不同種類的智能合約問題;
步驟4:對于重入漏洞,將格式化后的代碼發送到預防重入漏洞程序中,預防重入漏洞程序根據步驟2定義的正則表達式定位可能引入重入漏洞的代碼語句,然后根據合約內容構造欲插入的預防代碼,最后將預防代碼插入到智能合約中;
步驟5:對于整數溢出漏洞,將格式化后的代碼發送到預防整數溢出漏洞程序中,預防整數溢出漏洞程序根據步驟2定義的正則表達式定位可能引入整數溢出漏洞的代碼語句,然后根據合約內容構造欲插入的預防代碼,最后將預防代碼插入到智能合約中;
步驟6:根據用戶的選擇的功能,將步驟3-步驟5中至少一個步驟的檢測或預防結果輸出給用戶。
2.根據權利要求1所述的一種以太坊智能合約問題檢測和預防方法,其特征在于,所述步驟1中作為輸入的以太坊智能合約源代碼是使用以太坊智能合約編程語言Solidity編寫的。
3.根據權利要求1所述的一種以太坊智能合約問題檢測和預防方法,其特征在于,所述步驟2中智能合約問題的種類包括嚴格地比較合約存款、未處理的異常、被外部地址拒絕服務、使用tx.origin進行身份驗證、缺失構造函數、鎖定的錢、不安全的類型推斷、使用Byte[]、昂貴的循環、時間戳依賴、不標準的代幣接口、使用浮點數、私有可見性、冗余的拒絕支付、編譯器版本問題、不標準的編程風格、整數除法、未顯式指明地可見性中的至少一種;每種問題至少使用一個正則表達式描述其特征。
4.根據權利要求1所述的一種以太坊智能合約問題檢測和預防方法,其特征在于,所述步驟3包括如下步驟:
步驟31:讀取保存著格式化代碼的智能合約文件;
步驟32:將格式化的代碼發送到不同種類的問題檢測程序中;
步驟33:每個問題檢測程序將格式化代碼保存為一個字符串數組,逐行遍歷,使用為這一個問題定義的正則表達式和檢測規則匹配這一行代碼;如果匹配成功,則認定這一行代碼含有這一種問題;如匹配失敗,則認定這一行代碼不含有這一種問題;
步驟34:根據步驟33中所有的問題檢測程序的檢測結果,統計問題種類和數量,確定每個問題存在的行數。
5.根據權利要求1所述的一種以太坊智能合約問題檢測和預防方法,其特征在于,所述步驟4中插入代碼預防重入漏洞產生,具體包括:
步驟41:讀取保存著格式化智能合約源代碼的文件;
步驟42:將格式化后的代碼發送到預防重入漏洞產生程序中;
步驟43:預防重入漏洞產生程序將格式化代碼保存為一個字符串數組;
步驟44:預防重入漏洞產生程序逐行遍歷數組,根據步驟2定義的正則表達式和檢測規則定位可能引入重入漏洞的代碼語句,如果代碼中存在這樣的語句,則轉入步驟45,否則轉入步驟5;
步驟45:對于每一行可能引入重入漏洞的代碼語句,首先,從頭開始逐行遍歷格式化后的代碼,尋找第一個記錄著賬戶地址和地址持有代幣數量關系賬本變量,獲取賬本變量的名字;然后,從可能引入重入漏洞的代碼語句中獲得接收以太幣的地址;最后,根據接收以太幣的地址和賬本變量的名字,構造要插入到合約中的預防代碼;
步驟46:首先,根據合約中的函數調用關系,構造函數調用鏈;然后,根據函數調用鏈,將步驟45中構造的預防代碼插入到調用鏈中的不同位置。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于河海大學,未經河海大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911314940.7/1.html,轉載請聲明來源鉆瓜專利網。





