[發明專利]智能合約數據提取和同步方法、系統有效
| 申請號: | 202010031809.6 | 申請日: | 2020-01-13 |
| 公開(公告)號: | CN111400303B | 公開(公告)日: | 2023-07-21 |
| 發明(設計)人: | 盧暾;王泓機;張紹華;顧寧;戴炳榮;李超 | 申請(專利權)人: | 復旦大學;上海計算機軟件技術開發中心 |
| 主分類號: | G06F16/22 | 分類號: | G06F16/22;G06F16/23;G06F16/27;G06Q40/04 |
| 代理公司: | 上海伯瑞杰知識產權代理有限公司 31227 | 代理人: | 孟旭彤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 智能 合約 數據 提取 同步 方法 系統 | ||
1.一種智能合約數據提取和同步方法,其特征在于,包括:
步驟一、對所述智能合約數據進行詞法分析和語法分析,生成抽象語法樹,刪除抽象語法樹中與智能合約數據提取和同步無關的冗余節點,得到與智能合約數據提取和同步相關的保留節點;
步驟二、對所述抽象語法樹進行逐步遍歷分析,針對每個智能合約中的狀態變量記錄其序號及類型,并根據狀態變量的序號及類型計算出該智能合約中的數據對應于存儲MPT樹中的索引值,并且對保留節點進行遍歷分析;
步驟三、對抽象語法樹進行逐步遍歷分析,針對每個智能合約中的方法節點,解析出所有該方法涉及到的狀態變量;
步驟四、當有新的交易產生時,根據交易關聯合約的abi和交易載荷解析出交易所執行的方法,并根據交易所執行的方法涉及到的狀態變量生成待更新列表,
同時,根據交易所在的區塊頭的狀態MPT樹根重構存儲MPT樹,對待更新列表中的狀態變量,根據索引值獲取到狀態變量實際值,并將該數據同步到外部存儲層中;
其中,對智能合約中狀態變量的序號和類型的記錄方式為,設立兩個參數,分別保存在智能合約中出現的狀態變量信息和結構體信息,遍歷抽象語法樹時根據節點的不同類型將信息存儲到對應的參數中;
解析狀態變量的方法是,遍歷抽象語法樹,進入到函數節點時判斷函數內的賦值語句中的被賦值變量是否在曾在狀態變量中定義過,且沒有在函數內部聲明,若是,則將該狀態變量與該方法關聯起來;
所述生成待更新列表的方法步驟包括:
1)獲取到智能合約對應的abi;
2)獲取到智能合約生成的交易,對該交易的載荷進行解析,確定生成該交易所調用的智能合約函數名;
3)從步驟1)中的abi里找到步驟2)中解析出的函數名對應的函數參數和返回值規則;
4)將步驟2)中交易載荷去除函數名后的部分,按照步驟3)中的函數參數和返回值規則進行解析,獲得函數的參數以及返回值列表,獲得完整的函數簽名;
5)使用所述生成待更新列表的方法中步驟1)至4)找到的函數簽名,找到與該函數相關的狀態變量,將這些狀態變量加入到待更新列表中;
生成合約狀態變量對應的存儲MPT樹索引值的方式為,根據狀態變量的不同類型,維護一個當前槽位序號和槽位中序號,分別采用順序取序號和哈希取序號方式更新上述序號,并計算索引值;
重構存儲MPT樹的方式為:
從當前交易中獲取的狀態根,該狀態根是狀態MPT樹的hash,
連接到客戶端的底層levelDB數據庫中,使用該hash獲取到根節點的RLP編碼,
使用RLP解碼后獲得真實的節點數據,逐級下探還原出整棵狀態MPT樹;
使用智能合約的地址作為key,查詢該棵狀態MPT樹,獲取到該智能合約的存儲MPT樹的hash,使用狀態MPT樹的方法重構出整棵存儲MPT樹;
對于每個節點的RLP解碼后的對象,將其按照(hash值,RLP編碼)的形式存儲到key-value內存數據庫中。
2.一種智能合約數據提取和同步系統,其特征在于,包含合約解析器、交易分析器、交易監聽器、數據更新器、變量序號映射、方法變量映射、MPT樹緩存,其中,
合約解析器,解析用戶提供的智能合約,并根據變量序號生成變量序號映射;
交易監聽器監聽客戶端上發送的交易事件,并將獲取到的交易數據交由交易分析器進行進一步的分析;
交易分析器分析出智能合約中所調用的方法,并查詢方法變量映射獲取到待更新列表;
數據更新器根據所述待更新列表確定要增量更新的變量,讀取存儲在MPT樹緩存的數據,并更新數據到數據庫中;
所述系統采用如權利要求1所述的方法實現智能合約數據提取和同步。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學;上海計算機軟件技術開發中心,未經復旦大學;上海計算機軟件技術開發中心許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010031809.6/1.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





