[發明專利]智能合約數據提取和同步方法、系統有效
| 申請號: | 202010031809.6 | 申請日: | 2020-01-13 |
| 公開(公告)號: | CN111400303B | 公開(公告)日: | 2023-07-21 |
| 發明(設計)人: | 盧暾;王泓機;張紹華;顧寧;戴炳榮;李超 | 申請(專利權)人: | 復旦大學;上海計算機軟件技術開發中心 |
| 主分類號: | G06F16/22 | 分類號: | G06F16/22;G06F16/23;G06F16/27;G06Q40/04 |
| 代理公司: | 上海伯瑞杰知識產權代理有限公司 31227 | 代理人: | 孟旭彤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 智能 合約 數據 提取 同步 方法 系統 | ||
本發明公開了一種基于抽象語法樹的智能合約數據提取和同步方法。首先對智能合約源代碼進行詞法分析和語法分析,生成抽象語法樹;對該抽象語法樹進行由頂至下的遍歷分析,針對每個合約中的狀態變量記錄其序號及類型,并據此計算出該智能合約中的數據對應于存儲MPT樹中的索引值;當有新的交易產生時,根據交易所在的區塊頭的狀態MPT樹根重構存儲MPT樹,根據索引值查詢存儲MPT樹獲取到狀態變量實際值,并將該數據同步到外部存儲層中。使用本發明能夠有效提取和同步智能合約應用中變量的數據,用于后續查詢和分析。
技術領域
本發明涉及區塊鏈技術領域,特別涉及一種智能合約數據提取和同步方法、系統。
背景技術
同時,智能合約中的數據是與應用強相關的。在用戶使用和管理者維護時,智能合約中的業務數據被頻繁讀取和使用。?現有的一些區塊鏈數據抽取方案關注于區塊鏈本身數據的讀取和查詢,比如區塊數據、交易數據等。但目前卻鮮有對智能合約中的數據進行直接查詢的方法。
發明內容
有鑒于此,本發明提供了一種基于抽象語法樹的智能合約數據抽取和同步方法,能夠有效提取和同步智能合約內部狀態變量的值,方便后續的查詢與分析。
本發明的有益效果包括:
本發明提出的基于抽象語法樹的智能合約數據抽取和同步方法,能夠自動地分析和計算出智能合約中狀態變量的存儲鍵值,并直接方便地讀取智能合約中的變量數據,簡化了操作過程,提高了讀取效率。
本發明能夠通過對交易載荷的分析,智能識別當前交易調用的是哪一個合約方法,并結合抽象語法樹,自動判斷出該合約方法對哪部分狀態變量進行了更新,從而形成待更新列表,進行增量更新,減小了更新負擔,保證了同步效率。
本發明能夠快速、方便地提取和同步智能合約內部數據,在保證數據準確的同時解決了去中心化應用數據查詢困難、分析困難的問題。
附圖說明
通過參考附圖閱讀下文的詳細描述,本發明示例性實施方式的上述以及其他目的、特征和優點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發明的若干實施方式,其中:
圖1為根據本發明實施例之一的智能合約數據提取和同步方法流程圖。
圖2為根據本發明實施例之一的智能合約數據提取和同步系統模塊示意圖。
實施方式
根據一個或者多個實施例,一種基于抽象語法樹的智能合約數據提取和同步方法,包括:
步驟一、利用ANTLR4對智能合約進行詞法分析和語法分析,生成抽象語法樹;
步驟二、對抽象語法樹進行逐步遍歷分析,針對每個合約中的狀態變量記錄其序號及類型,并據此計算出該智能合約中的數據對應于存儲MPT樹中的索引值;
步驟三、對抽象語法樹進行逐步遍歷分析,針對每個合約中的方法節點,解析出所有該方法涉及到的狀態變量;
步驟四、當有新的交易產生時,根據交易關聯合約的ABI和交易載荷解析出交易所執行的方法,并根據交易所執行的方法涉及到的狀態變量生成待更新列表;
步驟五、當有新的交易產生時,根據交易所在的區塊頭的狀態MPT樹根重構存儲MPT樹,對待更新列表中的狀態變量,根據索引值獲取到狀態變量實際值,并將該數據同步到外部存儲層中。
優選的,步驟一獲得抽象語法樹后,進一步刪除抽象語法樹中與智能合約數據提取和同步無關的冗余節點,得到與智能合約數據提取和同步相關的保留節點;步驟二對保留節點進行遍歷分析。
優選的,所述冗余節點包括:說明編譯版本的節點、導入外部源文件的節點、合約種類為Library的合約節點,其他節點歸為保留節點。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學;上海計算機軟件技術開發中心,未經復旦大學;上海計算機軟件技術開發中心許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010031809.6/2.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





