本發(fā)明涉及區(qū)塊鏈,尤其涉及一種智能合約的自動化生成方法及裝置。
背景技術:
1、智能合約是一種基于區(qū)塊鏈技術的自動執(zhí)行的交易協(xié)議,它可以實現(xiàn)各種資產(chǎn)和服務的交換,無需第三方的介入和信任,智能合約是由計算機代碼編寫的,需要遵循一定的規(guī)范和格式。然而,智能合約編程對于普通用戶來說是一項具有挑戰(zhàn)性和復雜性的任務,需要具備一定的編程基礎和區(qū)塊鏈知識,否則可能會導致合約代碼出現(xiàn)錯誤、漏洞或者不符合用戶意圖和需求。此外,智能合約編程也需要耗費大量的人力物力和時間成本,尤其是在涉及到多個參與方、多個場景和多個條件的復雜合約時。
2、為了解決上述問題,一些研究者提出了通過從已有的合約代碼庫中提取和重用代碼片段來生成智能合約代碼。這些方法可以在一定程度上簡化智能合約編程的過程,降低編程難度和門檻,提高編程效率和質量。然而,這些方法也存在一些局限性和不足之處,從已有的合約代碼庫中提取和重用代碼片段的方法依賴于代碼庫中存在與用戶需求相匹配或相似的合約代碼片段,如果代碼庫中缺乏相關的合約代碼片段,則可能導致生成的智能合約代碼不完整或不適用。
3、因此,需要一種智能合約的自動化生成方法,能夠根據(jù)用戶輸入或選擇的規(guī)則,自動生成滿足用戶需求的智能合約代碼。
技術實現(xiàn)思路
1、一種智能合約的自動化生成方法,該方法解決了如何利用知識圖譜和深度學習技術,根據(jù)用戶輸入或選擇的規(guī)則,自動生成區(qū)塊鏈智能合約的技術問題。該方法包括以下步驟:
2、提供圖形化界面讓用戶輸入或選擇區(qū)塊鏈智能合約的規(guī)則;
3、將用戶輸入或選擇的規(guī)則轉換為json格式的數(shù)據(jù);
4、將所述json格式的數(shù)據(jù)進行解析得到json規(guī)則,并基于該json規(guī)則構建一個知識圖譜,將規(guī)則中的屬性和關系進行建模;
5、訓練模型,所述模型用于根據(jù)規(guī)則推斷生成智能合約代碼;
6、根據(jù)訓練好的模型,通過將知識圖譜中的節(jié)點和邊映射到智能合約的不同部分和功能,將知識圖譜中的屬性和關系轉化為區(qū)塊鏈智能合約的代碼;
7、將生成的代碼編譯為字節(jié)碼,并部署到區(qū)塊鏈網(wǎng)絡上,創(chuàng)建一個可執(zhí)行的智能合約實例。
8、該方法產(chǎn)生了以下有益效果:提高了智能合約的生成效率和質量,減少了人工編寫的錯誤和風險;利用了知識圖譜和深度學習技術,實現(xiàn)了智能合約的自動化生成,提高了智能合約的智能性和靈活性;實現(xiàn)了智能合約的自動化測試和部署,提高了智能合約的可靠性和安全性。
9、在較佳實施情況下,該方法還包括對生成的代碼進行自動化的測試。該步驟包括:
10、根據(jù)規(guī)則集合,生成一組測試用例,每個測試用例包含一個輸入和一個期望輸出;
11、對每個測試用例,向智能合約地址發(fā)送輸入,并獲取輸出;
12、比較輸出和期望輸出,計算合約代碼的正確率和覆蓋率;
13、如果發(fā)現(xiàn)任何不符合規(guī)則和需求的輸出,給出相應的錯誤提示或修改建議,否則,輸出合約代碼測試通過的結果。
14、該步驟產(chǎn)生了以下有益效果:提高了智能合約的正確性和覆蓋率,減少了潛在的漏洞和風險;利用了測試用例和測試框架技術,實現(xiàn)了智能合約的自動化測試,提高了智能合約的可測試性和可維護性;實現(xiàn)了智能合約的自動化錯誤提示或修改建議,提高了智能合約的可改進性和可優(yōu)化性。
15、在較佳實施情況下,所述將用戶輸入或選擇的規(guī)則轉換為json格式的數(shù)據(jù),具體包括:
16、對用戶輸入或選擇的規(guī)則進行語法分析,提取出規(guī)則中的主體、謂語以及賓語成分;
17、將提取出的成分按照json格式進行編碼,形成一個鍵值對的數(shù)據(jù)結構;
18、將編碼后的數(shù)據(jù)結構存儲在json文件中。
19、該步驟產(chǎn)生了以下有益效果:提高了規(guī)則轉換的效率和準確性,減少了數(shù)據(jù)丟失和錯誤的可能性;利用了語法分析技術和json格式技術,實現(xiàn)了規(guī)則轉換的自動化和標準化,提高了規(guī)則轉換的通用性和兼容性;實現(xiàn)了規(guī)則轉換后的數(shù)據(jù)結構的清晰和簡潔,提高了規(guī)則轉換后的數(shù)據(jù)結構的可讀性和可擴展性。
20、在較佳實施情況下,所述將json格式的數(shù)據(jù)進行解析得到json規(guī)則,并基于該json規(guī)則構建一個知識圖譜,將規(guī)則中的屬性和關系進行建模,具體包括:
21、從json文件中讀取規(guī)則數(shù)據(jù);
22、將規(guī)則數(shù)據(jù)中的主體、賓語作為知識圖譜中的實體節(jié)點,將規(guī)則數(shù)據(jù)中的謂語作為知識圖譜中的關系邊;
23、根據(jù)規(guī)則數(shù)據(jù)中的屬性值和條件限制,為知識圖譜中的節(jié)點和邊添加相應的標簽和權重;
24、將構建好的知識圖譜存儲在圖數(shù)據(jù)庫中。
25、該步驟產(chǎn)生了以下有益效果:提高了規(guī)則解析和建模的效率和準確性,減少了數(shù)據(jù)冗余和錯誤的可能性;利用了知識圖譜技術,實現(xiàn)了規(guī)則解析和建模的自動化和標準化,提高了規(guī)則解析和建模的通用性和兼容性;實現(xiàn)了規(guī)則解析和建模后的知識圖譜的清晰和完整,提高了規(guī)則解析和建模后的知識圖譜的可視化和可查詢性。
26、在較佳實施情況下,所述的訓練模型,具體包括:
27、從已有的合約代碼庫、智能合約中提取代碼片段,并將其轉換為抽象語法樹;
28、構建代碼生成網(wǎng)絡,該網(wǎng)絡由編碼器和解碼器組成,所述編碼器將抽象語法樹編碼為向量表示,所述解碼器將向量表示解碼為合約代碼;
29、利用規(guī)則集合作為訓練數(shù)據(jù),對代碼生成網(wǎng)絡進行深度學習訓練,使其能夠根據(jù)規(guī)則推斷生成合約代碼;
30、輸出訓練好的代碼生成網(wǎng)絡模型。
31、該步驟產(chǎn)生了以下有益效果:提高了智能合約代碼生成的效率和質量,減少了人工編寫的錯誤和風險;利用了深度學習技術,實現(xiàn)了智能合約代碼生成的自動化和智能化,提高了智能合約代碼生成的靈活性和創(chuàng)新性;實現(xiàn)了智能合約代碼生成的自適應和優(yōu)化,提高了智能合約代碼生成的可擴展性和可維護性。
32、在較佳實施情況下,所述的將知識圖譜中的節(jié)點和邊映射到智能合約的不同部分和功能,將知識圖譜中的屬性和關系轉化為區(qū)塊鏈智能合約的代碼,具體包括:
33、讀取知識圖譜數(shù)據(jù);
34、根據(jù)訓練好的代碼生成網(wǎng)絡模型,對每個知識圖譜節(jié)點和邊,生成相應的合約代碼片段,所述合約代碼片段的生成過程采用以下公式表示:
35、
36、f(vi,ei)=dec(enc(vi)+enc(ei))
37、其中,c表示生成的智能合約代碼片段的集合,m表示知識圖譜中的節(jié)點個數(shù),vi表示第i個節(jié)點對應的屬性,ei表示與第i個節(jié)點相連的邊的結合,f表示代碼生成網(wǎng)絡模型的映射函數(shù),dec表示解碼器函數(shù),enc表示編碼器函數(shù);
38、根據(jù)知識圖譜中的標簽和權重,為合約代碼片段分配優(yōu)先級和順序;
39、將合約代碼片段按照優(yōu)先級和順序拼接成一個完整的智能合約代碼文件。
40、該步驟產(chǎn)生了以下有益效果:提高了智能合約代碼映射的效率和準確性,減少了數(shù)據(jù)丟失和錯誤的可能性;利用了代碼映射技術,實現(xiàn)了智能合約代碼映射的自動化和標準化,提高了智能合約代碼映射的通用性和兼容性;實現(xiàn)了智能合約代碼映射后的代碼文件的清晰和完整,提高了智能合約代碼映射后的代碼文件的可讀性和可執(zhí)行性。
41、在較佳實施情況下,所述的根據(jù)知識圖譜中的標簽和權重,為合約代碼片段分配優(yōu)先級和順序,將合約代碼片段按照優(yōu)先級和順序拼接成一個完整的合約代碼文件,具體包括:
42、對每個合約代碼片段,計算其在知識圖譜中對應的節(jié)點的標簽和權重之和,作為該合約代碼片段的優(yōu)先級分數(shù),所述優(yōu)先級分數(shù)采用以下公式進行計算:
43、
44、其中,p表示優(yōu)先級分數(shù)的集合,n表示智能合約代碼片段的個數(shù),pi表示第i段智能合約代碼片段的優(yōu)先級分數(shù),k表示與第i段智能合約代碼片段對應的節(jié)點的個數(shù),lj表示第j個節(jié)點的標簽值,wj表示第j個節(jié)點的權重值;
45、對所有的合約代碼片段按照優(yōu)先級分數(shù)從高到低進行排序,得到一個有序的合約代碼片段列表;
46、對有序的合約代碼片段列表進行遍歷,根據(jù)合約代碼片段的類型和功能,將其插入到合約代碼文件的合適位置,形成一個完整的合約代碼文件。
47、該步驟產(chǎn)生了以下有益效果:提高了智能合約代碼拼接的效率和準確性,減少了數(shù)據(jù)丟失和錯誤的可能性;利用了優(yōu)先級和順序分配技術,實現(xiàn)了智能合約代碼拼接的自動化和標準化,提高了智能合約代碼拼接的通用性和兼容性;實現(xiàn)了智能合約代碼拼接后的代碼文件的清晰和完整,提高了智能合約代碼拼接后的代碼文件的可讀性和可執(zhí)行性。
48、在較佳實施情況下,所述的將生成的代碼編譯為字節(jié)碼,并部署到區(qū)塊鏈網(wǎng)絡上,創(chuàng)建一個可執(zhí)行的智能合約實例,具體包括:
49、調用智能合約編譯器,將合約代碼文件編譯為字節(jié)碼文件;
50、調用智能合約部署器,將字節(jié)碼文件部署到區(qū)塊鏈網(wǎng)絡上,并返回一個智能合約地址;
51、輸出智能合約地址。
52、該步驟產(chǎn)生了以下有益效果:提高了智能合約的執(zhí)行效率和安全性,減少了運行時的錯誤和風險;利用了編譯器和部署器技術,實現(xiàn)了智能合約的自動化編譯和部署,提高了智能合約的可部署性和可交互性;實現(xiàn)了智能合約的自動化輸出和返回,提高了智能合約的可訪問性和可追溯性。
53、一種智能合約的自動化生成裝置,該裝置解決了如何利用知識圖譜和深度學習技術,根據(jù)用戶輸入或選擇的規(guī)則,自動生成區(qū)塊鏈智能合約的技術問題。該裝置包括:
54、規(guī)則輸入模塊,用于提供圖形化界面讓用戶輸入或選擇區(qū)塊鏈智能合約的規(guī)則;
55、規(guī)則轉換模塊,用于將用戶輸入或選擇的規(guī)則轉換為json格式的數(shù)據(jù);
56、知識圖譜構建模塊,用于將所述json格式的數(shù)據(jù)進行解析得到json規(guī)則,并基于該json規(guī)則構建一個知識圖譜,將規(guī)則中的屬性和關系進行建模;
57、模型訓練模塊,用于訓練一個用于根據(jù)規(guī)則推斷生成智能合約代碼的模塊;
58、智能合約代碼映射模塊,用于根據(jù)訓練好的模型,通過將知識圖譜中的節(jié)點和邊映射到合約的不同部分和功能,將知識圖譜中的屬性和關系轉化為區(qū)塊鏈智能合約的代碼;
59、智能合約代碼編譯模塊,用于將生成的代碼編譯為字節(jié)碼,并部署到區(qū)塊鏈網(wǎng)絡上,創(chuàng)建一個可執(zhí)行的智能合約實例。