[發明專利]編譯和執行智能合約的方法及裝置有效
| 申請號: | 201910939504.2 | 申請日: | 2019-09-30 |
| 公開(公告)號: | CN110688122B | 公開(公告)日: | 2021-09-21 |
| 發明(設計)人: | 姚忠孝 | 申請(專利權)人: | 支付寶(杭州)信息技術有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F9/455;G06Q40/04 |
| 代理公司: | 北京億騰知識產權代理事務所(普通合伙) 11309 | 代理人: | 陳霽;周良玉 |
| 地址: | 310000 浙江省杭州市*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 編譯 執行 智能 合約 方法 裝置 | ||
本說明書實施例提供一種編譯和執行智能合約的方法和裝置,根據上述方法,在對智能合約進行編譯而該智能合約依賴于外部函數時,不再將外部函數的實現代碼納入到合約中進行編譯,而是將其轉化為一條對該外部函數的調用指令,并將函數的聲明信息添加到合約模塊的導入區段中。如此生成的合約模塊中僅包含外部函數的聲明信息,而不包含該外部函數的實現代碼。在執行該智能合約時,由虛擬機從本地的操作系統函數庫中獲取上述外部函數的實現代碼,并將該實現代碼與合約代碼相鏈接,從而執行該外部函數。
技術領域
本說明書一個或多個實施例涉及區塊鏈技術領域,尤其涉及編譯和執行區塊鏈中的智能合約的方法及裝置。
背景技術
目前,越來越多的區塊鏈平臺支持智能合約,來執行更為豐富的交易。智能合約是一種可以自動執行的交易合約,它以數字化的形式寫入區塊鏈中,由區塊鏈技術的特性保障存儲、讀取、執行整個過程透明可跟蹤、不可篡改。同時,由區塊鏈自帶的共識算法構建出一套狀態機系統,使得智能合約能夠高效地運行。例如,以太坊提供了一種開源的區塊鏈底層系統,通過提供諸多接口,允許開發人員在此基礎上開發各種區塊鏈應用,編寫智能合約。
如此,區塊鏈平臺允許用戶進行內容更加豐富的交易,從而提供更加豐富的功能。相應的,越來越多的數據存儲、程序應用(例如分布式應用Dapp),通過區塊鏈實現。相應地,在區塊鏈的各個節點中提供有虛擬機,用于執行區塊鏈中的智能合約,并通過共識機制,保證各個節點中的虛擬機具有相同的執行狀態和執行結果。因此,智能合約的執行效率,成為區塊鏈平臺的主要性能指標。
因此,希望提供有效的方案,提高區塊鏈中智能合約的執行效率,改進區塊鏈平臺的性能。
發明內容
本說明書一個或多個實施例描述了一種編譯和執行智能合約的方法和裝置,用以提升智能合約的部署效率和執行性能。
根據第一方面,提供了一種編譯智能合約的方法,通過編譯器執行,該方法包括:
讀取智能合約的源代碼中的第一語句,其中該第一語句包括對第一外部函數的調用;
根據與所述第一外部函數對應的函數庫,確定所述第一外部函數為預定類型函數,所述預定類型函數為在執行所述智能合約的虛擬機中實現的函數;
針對所述第一語句,生成對所述第一外部函數的調用指令,并將該調用指令轉換為對應的字節碼;
將所述調用指令對應的字節碼包含在有待形成的合約模塊的代碼區段中,并將所述第一外部函數的函數聲明信息包含在所述合約模塊的導入區段中。
在一個實施例中,所述函數庫為系統函數庫或第三方函數庫。
根據一種實施方式,通過以下方式確定第一外部函數為預定類型函數:
通過函數名在所述函數庫中查詢所述第一外部函數;
當所述函數庫中針對所述第一外部函數標記有用于指示所述預定類型函數的預定標記時,確定所述第一外部函數為所述預定類型函數。
根據另一種實施方式,通過以下方式確定第一外部函數為預定類型函數:
通過函數名在所述函數庫中查詢所述第一外部函數;
當所述函數庫中針對所述第一外部函數僅記錄有函數聲明而不包含函數的實現代碼時,確定所述第一外部函數為所述預定類型函數。
根據又一種實施方式,通過以下方式確定第一外部函數為預定類型函數:
當確定所述函數庫為專用于定義所述預定類型函數的函數庫時,確定所述第一外部函數為預定類型函數。
在一個實施例中,生成對所述第一外部函數的調用指令,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于支付寶(杭州)信息技術有限公司,未經支付寶(杭州)信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910939504.2/2.html,轉載請聲明來源鉆瓜專利網。





