本申請公開了一種區塊鏈中的交易執行方法、裝置、存儲介質及設備,屬于區塊鏈技術領域。所述方法包括:生成待執行的交易,交易中包括需要調用的智能合約的信息;獲取Gas值集合,Gas值集合包含與智能合約相關的歷史交易的Gas值;根據Gas值集合計算第一Gas預估值;根據第一Gas預估值和區塊Gas值計算第二Gas預估值,第二Gas預估值小于或等于區塊Gas值;將攜帶有第二Gas預估值的交易發送至區塊鏈,以使區塊鏈基于第二Gas預估值執行交易。本申請既可以避免Gas值設置過大時,導致區塊中打包的交易數量有限的問題;也可以避免Gas值設置過小時,導致交易執行失敗的問題。導致交易執行失敗的問題。導致交易執行失敗的問題。
【技術實現步驟摘要】
區塊鏈中的交易執行方法、裝置、存儲介質及設備
[0001]本申請涉及區塊鏈
,特別涉及一種區塊鏈中的交易執行方法、裝置、存儲介質及設備。
技術介紹
[0002]在區塊鏈中執行交易時,需要在交易中設置Gas值,通過Gas值來控制交易的執行。
[0003]在設置Gas值時,如果用戶設置的Gas值過大,可能導致區塊中打包的交易數量有限;如果用戶設置的Gas值過小,可能引發Gas值不足而導致交易執行失敗。
技術實現思路
[0004]本申請提供了一種區塊鏈中的交易執行方法、裝置、存儲介質及設備,用于解決無法精確設置交易的Gas值的問題。所述技術方案如下:
[0005]一方面,提供了一種區塊鏈中的交易執行方法,所述方法包括:
[0006]生成待執行的交易,所述交易中包括需要調用的智能合約的信息;
[0007]獲取Gas值集合,所述Gas值集合包含與所述智能合約相關的歷史交易的Gas值;
[0008]根據所述Gas值集合計算第一Gas預估值;
[0009]根據所述第一Gas預估值和區塊Gas值計算第二Gas預估值,所述第二Gas預估值小于或等于所述區塊Gas值;
[0010]將攜帶有所述第二Gas預估值的交易發送至區塊鏈,以使區塊鏈基于所述第二Gas預估值執行所述交易。
[0011]在一種可能的實現方式中,所述Gas值集合包括第一Gas值集合和第二Gas值集合,所述第一Gas值集合包含與所述交易具有相同的合約地址和合約方法的歷史交易的Gas值,所述第二Gas值集合包含與所述交易具有相同類型的智能合約和合約方法的歷史交易的Gas值,所述根據所述Gas值集合計算第一Gas預估值,包括:
[0012]當所述第一Gas值集合中Gas值的數量滿足預設條件時,采用預定算法計算所述第一Gas值集合中多個Gas值的中間數,將所述中間數確定為所述第一Gas預估值;
[0013]當所述第一Gas值集合中Gas值的數量不滿足預設條件,且所述第二Gas值集合中Gas值的數量滿足預設條件時,采用預定算法計算所述第二Gas值集合中多個Gas值的中間數,將所述中間數確定為所述第一Gas預估值。
[0014]在一種可能的實現方式中,所述根據所述Gas值集合計算第一Gas預估值,包括:
[0015]當所述第二Gas值集合中Gas值的數量不滿足預設條件時,調用所述智能合約的預執行接口,利用所述預執行接口基于預測的Gas值對所述交易進行預執行;
[0016]當預執行正確時,將所述預測的Gas值確定為所述第一Gas預估值。
[0017]在一種可能的實現方式中,所述根據所述第一Gas預估值和區塊Gas值計算第二Gas預估值,包括:
[0018]將所述第一Gas預估值乘以安全系數,得到第三Gas預估值;
[0019]比較所述第三Gas預估值和所述區塊Gas值;
[0020]當所述第三Gas預估值大于所述區塊Gas值時,將所述區塊Gas值確定為所述第二Gas預估值;
[0021]當所述第三Gas預估值小于或等于所述區塊Gas值時,將所述第三Gas預估值確定為所述第二Gas預估值。
[0022]在一種可能的實現方式中,所述方法還包括:
[0023]在交易執行成功后,向所述區塊鏈獲取交易執行結果;
[0024]從所述交易執行結果中獲取所述交易實際消耗的Gas值;
[0025]將所述Gas值添加到所述Gas值集合中。
[0026]在一種可能的實現方式中,所述方法還包括:
[0027]當交易執行失敗,且失敗原因是所述第二Gas預估值不足時,檢測所述第二Gas預估值與所述區塊Gas值是否相等;
[0028]若所述第二Gas預估值與所述區塊Gas值相等,則記錄所述交易無法在單個區塊內執行完成;
[0029]若所述第二Gas預估值與所述區塊Gas值不等,則獲取所述交易實際消耗的Gas值,基于所述Gas值重新向所述區塊鏈發送交易。
[0030]在一種可能的實現方式中,所述基于所述Gas值重新向所述區塊鏈發送交易,包括:
[0031]將所述Gas值乘以迭代系數,得到第四Gas預估值,所述迭代系數大于1;
[0032]比較所述第四Gas預估值和所述區塊Gas值;
[0033]當所述第四Gas預估值大于所述區塊Gas值時,將攜帶有所述區塊Gas值的交易重新發送至區塊鏈;
[0034]當所述第四Gas預估值小于或等于所述區塊Gas值時,將攜帶有所述第四Gas預估值的交易重新發送至區塊鏈。
[0035]一方面,提供了一種區塊鏈中的交易執行裝置,所述裝置包括:
[0036]生成模塊,用于生成待執行的交易,所述交易中包括需要調用的智能合約的信息;
[0037]獲取模塊,用于獲取Gas值集合,所述Gas值集合包含與所述智能合約相關的歷史交易的Gas值;
[0038]計算模塊,用于根據所述Gas值集合計算第一Gas預估值;
[0039]所述計算模塊,還用于根據所述第一Gas預估值和區塊Gas值計算第二Gas預估值,所述第二Gas預估值小于或等于所述區塊Gas值;
[0040]發送模塊,用于將攜帶有所述第二Gas預估值的交易發送至區塊鏈,以使區塊鏈基于所述第二Gas預估值執行所述交易。
[0041]一方面,提供了一種計算機可讀存儲介質,所述存儲介質中存儲有至少一條指令,所述至少一條指令由處理器加載并執行以實現如上所述的區塊鏈中的交易執行方法。
[0042]一方面,提供了一種計算機設備,所述計算機設備包括處理器和存儲器,所述存儲器中存儲有至少一條指令,所述指令由所述處理器加載并執行以實現如上所述的區塊鏈中的交易執行方法。
[0043]本申請提供的技術方案的有益效果至少包括:
[0044]由于Gas值集合包含與交易對應智能合約相關的歷史交易的Gas值,所以,可以參考Gas值集合計算第一Gas預估值,再根據第一Gas預估值和區塊Gas值計算第二Gas預估值,以使第二Gas預估值小于或等于區塊Gas值,最后將攜帶有第二Gas預估值的交易發送至區塊鏈,以使區塊鏈基于第二Gas預估值執行交易,這樣,既可以避免Gas值設置過大時,導致區塊中打包的交易數量有限的問題;也可以避免Gas值設置過小時,導致交易執行失敗的問題,從而能夠在提高交易執行的成功率的同時,提高區塊中打包的交易的數量。
附圖說明
[0045]為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0046]圖1是本申請一個實施例提供的區塊鏈中的交易執行方法的方法流程圖;
[0047]圖2是本申請另一實施例提供的區塊鏈中的交易執行方法的方本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種區塊鏈中的交易執行方法,其特征在于,所述方法包括:生成待執行的交易,所述交易中包括需要調用的智能合約的信息;獲取Gas值集合,所述Gas值集合包含與所述智能合約相關的歷史交易的Gas值;根據所述Gas值集合計算第一Gas預估值;根據所述第一Gas預估值和區塊Gas值計算第二Gas預估值,所述第二Gas預估值小于或等于所述區塊Gas值;將攜帶有所述第二Gas預估值的交易發送至區塊鏈,以使區塊鏈基于所述第二Gas預估值執行所述交易。2.根據權利要求1所述的區塊鏈中的交易執行方法,其特征在于,所述Gas值集合包括第一Gas值集合和第二Gas值集合,所述第一Gas值集合包含與所述交易具有相同的合約地址和合約方法的歷史交易的Gas值,所述第二Gas值集合包含與所述交易具有相同類型的智能合約和合約方法的歷史交易的Gas值,所述根據所述Gas值集合計算第一Gas預估值,包括:當所述第一Gas值集合中Gas值的數量滿足預設條件時,采用預定算法計算所述第一Gas值集合中多個Gas值的中間數,將所述中間數確定為所述第一Gas預估值;當所述第一Gas值集合中Gas值的數量不滿足預設條件,且所述第二Gas值集合中Gas值的數量滿足預設條件時,采用預定算法計算所述第二Gas值集合中多個Gas值的中間數,將所述中間數確定為所述第一Gas預估值。3.根據權利要求2所述的區塊鏈中的交易執行方法,其特征在于,所述根據所述Gas值集合計算第一Gas預估值,包括:當所述第二Gas值集合中Gas值的數量不滿足預設條件時,調用所述智能合約的預執行接口,利用所述預執行接口基于預測的Gas值對所述交易進行預執行;當預執行正確時,將所述預測的Gas值確定為所述第一Gas預估值。4.根據權利要求1所述的區塊鏈中的交易執行方法,其特征在于,所述根據所述第一Gas預估值和區塊Gas值計算第二Gas預估值,包括:將所述第一Gas預估值乘以安全系數,得到第三Gas預估值;比較所述第三Gas預估值和所述區塊Gas值;當所述第三Gas預估值大于所述區塊Gas值時,將所述區塊Gas值確定為所述第二Gas預估值;當所述第三Gas預估值小于或等于所述區塊Gas值時,將所述第三Gas預估值確定為所述第二Gas預估值。5.根據權利要求1至4任一...
【專利技術屬性】
技術研發人員:張亞寧,
申請(專利權)人:杭州溪塔科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。