System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及計算機領域,尤其涉及一種java智能合約的執行方法、裝置、存儲介質以及電子設備。
技術介紹
1、java智能合約通常指的是使用java編寫并在區塊鏈上執行的智能合約。智能合約是一種自動執行、無需第三方信任的計算機程序,通常用于執行和管理數字資產、數據或其他價值的交換。區塊鏈技術是智能合約執行的基礎,因為它提供了去中心化、透明、不可篡改的分布式賬本。java智能合約在區塊鏈上執行時,通常需要先獲取合約字節碼,再由java智能合約執行引擎以解釋執行的方式根據java字節碼指令逐行解釋執行。由于java智能合約每次執行時,都需要執行引擎將字節碼指令逐行翻譯為機器碼后再執行,耗時較長,導致java智能合約的執行效率低,區塊鏈的整體性能不佳。
技術實現思路
1、本申請提供了一種java智能合約的執行方法、裝置、存儲介質以及電子設備,以解決java智能合約以解釋執行的方式進行執行導致java智能合約的執行效率低的技術問題。
2、第一方面,本申請提供了一種java智能合約的執行方法,包括:在java智能合約進入執行引擎的情況下,在合約類緩存中獲取上述java智能合約對應的合約機器碼;在未獲取到上述合約機器碼的情況下,對上述java智能合約的java字節碼進行編譯,得到上述合約機器碼;控制上述執行引擎調用執行上述合約機器碼,得到上述java智能合約的執行結果。
3、第二方面,本申請提供了一種java智能合約的執行裝置,包括:第一獲取模塊,用于在java智能合約進入
4、作為一種可選的示例,上述裝置還包括:第二執行模塊,用于在合約類緩存中獲取上述java智能合約對應的合約機器碼之后,在獲取到上述合約機器碼的情況下,控制上述執行引擎開始調用執行上述合約機器碼,得到上述java智能合約的執行結果。
5、作為一種可選的示例,上述編譯模塊包括:編譯單元,用于對上述java智能合約的每一個合約方法的java字節碼進行編譯,得到對應的合約方法機器碼;處理單元,用于將所有的上述合約方法機器碼按順序匯總,得到上述合約機器碼。
6、作為一種可選的示例,上述編譯單元包括:確定子單元,用于將目標寄存器作為上述java智能合約的執行環境的內存地址的保存目的;處理子單元,用于將上述java智能合約的每一個合約方法作為當前合約方法,對上述當前合約方法執行如下操作:將上述當前合約方法的每一個字節碼指令轉換為對應的中間代碼指令,得到上述當前合約方法對應的中間代碼指令序列;將上述中間代碼指令序列的每一個中間代碼指令編譯為匯編指令,得到上述當前合約方法對應的匯編代碼;將上述匯編代碼的每一個匯編指令轉換為機器碼,得到當前合約方法的合約方法機器碼。
7、作為一種可選的示例,上述處理子單元還包括:在將上述當前合約方法的每一個字節碼指令轉換為對應的中間代碼指令,得到上述當前合約方法對應的中間代碼指令序列的同時,在上述當前合約方法調用jdk類方法的情況下,在jdk類緩存中獲取上述jdk類方法對應的機器碼;在上述jdk類緩存中未獲取到上述jdk類方法對應的機器碼的情況下,對上述jdk類方法進行編譯,得到對應的機器碼,并保存至上述jdk類緩存。
8、作為一種可選的示例,上述第一執行模塊包括:綁定單元,用于將上述java智能合約的執行環境的相關內存地址與目標寄存器進行綁定;執行單元,用于控制上述執行引擎開始調用執行上述java智能合約的目標合約方法機器碼,其中,上述目標合約方法機器碼為用戶發起調用上述java智能合約時指定的合約方法對應的機器碼;輸出單元,用于在上述java智能合約的目標合約方法機器碼執行結束的情況下,輸出上述java智能合約的執行結果。
9、作為一種可選的示例,上述裝置還包括:第二獲取模塊,用于在未獲取到上述合約機器碼的情況下,對上述java智能合約的java字節碼進行編譯,得到上述合約機器碼之后,獲取上述合約類緩存的剩余空間;刪除模塊,用于在上述剩余空間小于預設值的情況下,將上述合約類緩存中的最近使用時間最早的合約機器碼從上述合約類緩存中刪除,并將上述合約機器碼保存至上述合約類緩存;保存模塊,用于在上述剩余空間大于或等于上述預設值的情況下,將上述合約機器碼保存至上述合約類緩存。
10、第三方面,本申請提供了一種存儲介質,該存儲介質中存儲有計算機程序,其中,該計算機程序被處理器運行時執行上述java智能合約的執行方法。
11、第四方面,本申請還提供了一種電子設備,包括存儲器和處理器,上述存儲器中存儲有計算機程序,上述處理器被設置為通過所述計算機程序執行上述的java智能合約的執行方法。
12、在本申請實施例中,采用了在java智能合約進入執行引擎的情況下,在合約類緩存中獲取上述java智能合約對應的合約機器碼;在未獲取到上述合約機器碼的情況下,對上述java智能合約的java字節碼進行編譯,得到上述合約機器碼;控制上述執行引擎調用執行上述合約機器碼,得到上述java智能合約的執行結果的方法,由于在上述方法中,采用編譯執行的方式,將java智能合約的java字節碼直接編譯成合約機器碼,在調用java智能合約時,直接執行對應的合約機器碼,從而實現了降低了java智能合約的執行耗時,提高了區塊的執行效率的目的,進而解決了java智能合約以解釋執行的方式進行執行導致java智能合約的執行效率低的技術問題。
本文檔來自技高網...【技術保護點】
1.一種java智能合約的執行方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,在合約類緩存中獲取所述java智能合約對應的合約機器碼之后,所述方法還包括:
3.根據權利要求1所述的方法,其特征在于,所述對所述java智能合約的java字節碼進行編譯,得到所述合約機器碼包括:
4.根據權利要求3所述的方法,其特征在于,所述對所述java智能合約的每一個合約方法的java字節碼進行編譯,得到對應的合約方法機器碼包括:
5.根據權利要求4述的方法,其特征在于,在將所述當前合約方法的每一個字節碼指令轉換為對應的中間代碼指令,得到所述當前合約方法對應的中間代碼指令序列的同時,所述方法還包括:
6.根據權利要求3所述的方法,其特征在于,所述控制所述執行引擎調用執行所述合約機器碼,得到所述java智能合約的執行結果包括:
7.根據權利要求1所述的方法,其特征在于,在未獲取到所述合約機器碼的情況下,對所述java智能合約的java字節碼進行編譯,得到所述合約機器碼之后,所述方法還包括:
8.一
9.一種計算機可讀的存儲介質,所述計算機可讀的存儲介質存儲有計算機程序,其特征在于,所述計算機程序被處理器運行時執行所述權利要求1至7任一項中所述的方法。
10.一種電子設備,包括存儲器和處理器,其特征在于,所述存儲器中存儲有計算機程序,所述處理器被設置為通過所述計算機程序執行所述權利要求1至7任一項中所述的方法。
...【技術特征摘要】
1.一種java智能合約的執行方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,在合約類緩存中獲取所述java智能合約對應的合約機器碼之后,所述方法還包括:
3.根據權利要求1所述的方法,其特征在于,所述對所述java智能合約的java字節碼進行編譯,得到所述合約機器碼包括:
4.根據權利要求3所述的方法,其特征在于,所述對所述java智能合約的每一個合約方法的java字節碼進行編譯,得到對應的合約方法機器碼包括:
5.根據權利要求4述的方法,其特征在于,在將所述當前合約方法的每一個字節碼指令轉換為對應的中間代碼指令,得到所述當前合約方法對應的中間代碼指令序列的同時,所述方法還包括:
6.根據權利要求3所述...
【專利技術屬性】
技術研發人員:尚璇,黃方蕾,王文強,詹士瀟,邵羽,
申請(專利權)人:杭州趣鏈科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。