[發明專利]智能合約安全檢測方法、系統、設備、終端及應用在審
| 申請號: | 202110862067.6 | 申請日: | 2021-07-29 |
| 公開(公告)號: | CN113626826A | 公開(公告)日: | 2021-11-09 |
| 發明(設計)人: | 董學文;田文生;沈玉龍;叢雅倩;張志為;佟威;張濤;冶英杰;李光夏 | 申請(專利權)人: | 西安電子科技大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57;G06F16/27;G06F8/41;G06N3/04;G06N3/08 |
| 代理公司: | 西安長和專利代理有限公司 61227 | 代理人: | 何畏 |
| 地址: | 710071 陜西省*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 智能 合約 安全 檢測 方法 系統 設備 終端 應用 | ||
1.一種智能合約安全檢測方法,其特征在于,所述智能合約安全檢測方法包括以下步驟:
步驟一,使用Github上的開源Go代碼訓練word2vec模型;
步驟二,按照智能合約語法,將開源Github代碼封裝成智能合約函數;
步驟三,將封裝好的函數轉化為抽象語法樹,并提取數據流和控制流信息;
步驟四,將智能合約的數據流和控制流信息轉化為圖模型;
步驟五,使用已訓練的word2vec模型將圖節點轉化成向量;
步驟六,使用圖神經網絡對圖模型進行訓練;
步驟七,讀出所有節點信息,將智能合約函數圖模型轉化成一個向量;
步驟八,使用分類模型判斷函數向量是否包含智能合約漏洞信息。
2.如權利要求1所述的智能合約安全檢測方法,其特征在于,所述智能合約安全檢測方法,還包括:
(1)使用開源代碼訓練word2vec模型,將開源代碼封裝成智能合約函數,并通過人工標注建立訓練數據集;
(2)將數據集按8:1:1進行整理,劃分為訓練集、驗證集和測試集;
(3)利用Go語言開發的AST分析工具,對源代碼文件進行處理,生成源文件的AST圖結構;
(4)將生成的圖結構保存到文件中,生成的程序圖結構文件和源文件對應;
(5)使用word2vec算法對步驟(4)的圖結構文件進行訓練;
(6)訓練圖神經網絡漏洞檢測模型,以完成分類檢測。
3.如權利要求2所述的智能合約安全檢測方法,其特征在于,步驟(4)中,所述程序圖由AST中的語法節點和語法標記構建而成;標準AST節點只有一個邊,用于表示兩個AST節點之間的父子關系;模型向AST添加保護邊、跳轉以及最后字典在內的多條邊,使用鄰接矩陣來記錄每個關系圖的邊,用于獲取額外的語法、數據和控制信息;對于每一條邊,在額外添加一條后向邊,用于在關系圖中傳播信息;其中,所述AST中的語法節點語言語法中的非終端,包括if語句或函數聲明的AST節點;所述語法標記為終端,包括標識符名稱和常數值。
4.如權利要求2所述的智能合約安全檢測方法,其特征在于,步驟(5)中,所述使用word2vec算法對圖結構文件進行訓練通過調用Gensim庫實現;所述word2vec網絡將每個程序圖的節點和標記映射到一個向量中,使源代碼中上下文關系緊密的詞在向量空間中彼此緊鄰;
將源代碼文件以函數為單位分割,用訓練好的word2vec模型逐個對函數進行處理,實現每個函數圖結點向量的初始化,并創建數據流、控制流圖,并將函數的圖結點和圖結構單獨保存到文件中,文件用0和1標注函數是否包含漏洞,這些文件將作為圖神經網絡的輸入數據。
5.如權利要求2所述的智能合約安全檢測方法,其特征在于,步驟(6)中,所述訓練圖神經網絡漏洞檢測模型,包括:
使用鄰域聚合算法進行多關系圖的學習,GGNN模型將關系圖的每個節點表示成一個包含100個特征的向量,通過鄰域聚合方案更新節點的嵌入;圖節點v的100維嵌入向量hv是由嵌入層通過遞歸聚合和變換其相鄰節點的表示向量而計算的;節點通過將其當前狀態,即嵌入向量作為消息發送給沿邊緣的所有鄰居來交換信息;在每個節點處,消息被匯總,用于在下一個嵌入層,即下一個迭代更新關聯的節點表示;在重復此過程以固定數量的迭代更新節點狀態后,使用讀出函數將圖狀體聚合到單個嵌入向量。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安電子科技大學,未經西安電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110862067.6/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種針對地下停車場的移動充電系統
- 下一篇:測量眼睛的光學質量的眼科儀器





