[發明專利]一種執行智能合約的方法、區塊鏈節點和存儲介質有效
| 申請號: | 202010901429.3 | 申請日: | 2020-08-31 |
| 公開(公告)號: | CN111815310B | 公開(公告)日: | 2021-08-17 |
| 發明(設計)人: | 劉琦 | 申請(專利權)人: | 支付寶(杭州)信息技術有限公司 |
| 主分類號: | G06Q20/06 | 分類號: | G06Q20/06;G06Q20/38;G06Q40/04;H04L29/08 |
| 代理公司: | 北京博思佳知識產權代理有限公司 11415 | 代理人: | 李威 |
| 地址: | 310000 浙江省杭州市*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 執行 智能 合約 方法 區塊 節點 存儲 介質 | ||
1.一種執行智能合約的方法,包括:
區塊鏈節點接收創建智能合約的請求,所述請求中包括所述智能合約的字節碼;
所述區塊鏈節點完成所述智能合約的部署后,開始將所述智能合約的字節碼通過JIT編譯為機器碼并存儲;
所述區塊鏈節點執行部署的所述智能合約時,如果所述JIT編譯已完成,則執行JIT編譯得到并存儲的所述機器碼;
所述區塊鏈節點執行部署的所述智能合約時,如果所述JIT編譯未完成,則對所述智能合約的字節碼進行解釋執行,包括:
所述區塊鏈節點執行部署的所述智能合約時,如果本地沒有存儲所述智能合約的機器碼,所述區塊鏈節點還查詢當前對所述智能合約的字節碼的JIT編譯情況,如果正處于JIT編譯中,則對所述智能合約的字節碼進行解釋執行;如果尚未開始JIT編譯,則啟動JIT編譯,并對所述智能合約的字節碼進行解釋執行。
2.如權利要求1所述的方法,所述區塊鏈節點完成所述智能合約的部署后,開始將所述智能合約的字節碼通過JIT編譯為機器碼,包括:
所述區塊鏈節點完成創建所述智能合約后開始對所述智能合約的字節碼進行JIT編譯;或,
所述區塊鏈節點完成創建所述智能合約后,利用相對空閑的時間段對所述智能合約的字節碼進行JIT編譯;或,
所述區塊鏈節點接收到調用創建的所述智能合約的交易請求后,對所述智能合約的字節碼進行JIT編譯。
3.如權利要求1所述的方法,所述將所述智能合約的字節碼通過JIT編譯為機器碼并存儲,包括:
對所述智能合約的字節碼進行翻譯和/或執行的過程中識別熱點字節碼進行編譯并存儲;
和/或,
對所述智能合約的字節碼進行翻譯和/或執行的過程中進行優化編譯并存儲。
4.如權利要求3所述的方法,所述識別熱點字節碼的粒度包括函數級別或代碼塊級別。
5.如權利要求1所述的方法,所述區塊鏈節點對所述智能合約的字節碼進行解釋執行,包括:
所述區塊鏈節點對所述智能合約中對應于所調用函數的字節碼進行解釋執行。
6.如權利要求1所述的方法,所述區塊鏈節點執行所述機器碼,包括:
所述區塊鏈節點執行存儲的所述智能合約中對應于所調用函數和/或代碼塊的機器碼。
7.如權利要求1-6中任一項所述的方法,所述存儲為緩存。
8.一種執行智能合約的方法,包括:
區塊鏈節點部署所述智能合約的字節碼后,開始將所述智能合約的字節碼通過JIT編譯為機器碼并存儲;
所述區塊鏈節點執行部署的所述智能合約時,如果所述JIT編譯已完成,則執行JIT編譯得到并存儲的所述機器碼;
所述區塊鏈節點執行部署的所述智能合約時,如果所述JIT編譯未完成,則對所述智能合約的字節碼進行解釋執行,包括:
所述區塊鏈節點執行部署的所述智能合約時,如果本地沒有存儲所述智能合約的機器碼,所述區塊鏈節點還查詢當前對所述智能合約的字節碼的JIT編譯情況,如果正處于JIT編譯中,則對所述智能合約的字節碼進行解釋執行;如果尚未開始JIT編譯,則啟動JIT編譯,并對所述智能合約的字節碼進行解釋執行。
9.如權利要求8所述的方法,所述區塊鏈節點部署所述智能合約的字節碼后,開始將所述智能合約的字節碼通過JIT編譯為機器碼,包括:
所述區塊鏈節點完成創建所述智能合約后開始對所述智能合約的字節碼進行JIT編譯;或,
區塊鏈節點完成創建所述智能合約后,利用相對空閑的時間段對所述智能合約的字節碼進行JIT編譯;或,
區塊鏈節點接收到調用創建的所述智能合約的交易請求后,對所述智能合約的字節碼進行JIT編譯。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于支付寶(杭州)信息技術有限公司,未經支付寶(杭州)信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010901429.3/1.html,轉載請聲明來源鉆瓜專利網。





