• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于階段桶的復雜智能合約狀態同步方法技術

    技術編號:14637412 閱讀:159 留言:0更新日期:2017-02-15 11:35
    本發明專利技術提供了一種基于階段桶的復雜智能合約狀態同步方法,包括如下步驟:(1)判斷狀態類型交易,確定需要更新狀態的賬戶地址;(2)根據狀態交易的信息生成階段桶,然后為每個階段桶設定一個計時器;(3)統計階段桶內的狀態信息,并分別統計每類信息的條數;(4)檢查步驟(3)的結果,確定某階段桶是否已達成一致,如果已達成一致,繼續執行步驟(5),否則繼續執行步驟(7);(5)將狀態存儲到狀態區塊鏈中;(6)標記該階段桶為“已達成一致”,然后刪除該階段桶;(7)檢查階段桶的計時器是否已超時,如果未超時則跳轉執行步驟(3),否則繼續執行步驟(8);(8)標記該階段桶為“已超時”,然后刪除該階段桶,此時的階段桶稱為“廢桶”。

    【技術實現步驟摘要】

    本專利技術涉及一種區塊鏈技術,特別是一種基于階段桶的復雜智能合約狀態同步方法
    技術介紹
    所謂復雜智能合約,就是執行時間長,邏輯較復雜的合約,通常具有多個階段。在區塊鏈系統中,智能合約需要部署在所有節點上,并且智能合約在每次執行時也需要系統中所有節點來同時執行,以使得所有的節點狀態保持一致。然而,在實際中,區塊鏈系統中的各個節點的環境可能各有不同,智能合約在各個節點運行的速度可能各不相同,加之邏輯復雜,智能合約可能會在運行中的任何一個階段改變其所在節點的狀態,而現有技術的方案并沒有針對只能合約節點環境存在差異情況下的智能合約執行方法,因此會產生合約狀態異步,區塊鏈系統對于支持復雜智能合約執行的能力低的技術缺陷,同時,多個獨立節點同時執行合約時數據一致性,結果統一性,數據的完整性以及數據的隔離性難以保證,數據同步會相互干擾。
    技術實現思路
    本專利技術的目的在于提供一種基于階段桶的復雜智能合約狀態同步方法,允許執行智能合約的各節點環境存在差異,并且在執行同一個智能合約時的速度存在差異,包括如下步驟:(1)判斷狀態類型交易,確定需要更新狀態的賬戶地址;(2)根據狀態交易的信息生成階段桶,然后為每個階段桶設定一個計時器;(3)統計階段桶內的狀態信息,并分別統計每類信息的條數;(4)檢查步驟(3)的結果,確定某階段桶是否已達成一致,如果已達成一致,繼續執行步驟(5),否則繼續執行步驟(7);(5)將狀態存儲到狀態區塊鏈中;(6)標記該階段桶為“已達成一致”,然后刪除該階段桶;(7)檢查階段桶的計時器是否已超時,如果未超時則跳轉執行步驟(3),否則繼續執行步驟(8);(8)標記該階段桶為“已超時”,然后刪除該階段桶,此時的階段桶稱為“廢桶”。優選的,步驟(1)的所述交易是從交易區塊鏈發來的。優選的,步驟(2)中所述信息包括合約賬戶的地址、該合約賬戶總共被觸發執行的次數以及需要更改的賬戶地址,優選的,步驟(3)所述統計階段桶內的狀態信息是對階段桶內的來自交易區塊鏈不同節點的相同內容信息進行歸類。優選的,步驟(4)所述確定某階段桶是否已達成一致是確定否有超過2/3的合約執行節點擁有相同的狀態。優選的,步驟(8)所述“廢桶”是由某個階段桶中的意見長期無法達成一致產生的。優選的,廢桶是由于桶內已經收集了所有執行合約的節點的意見,但相同的狀態信息總數小于總節點數的2/3而沒有達成一致所產生的。優選的,廢桶是由于執行智能合約的個別節點執行速度慢,當它將自己的sTx發送到狀態區塊鏈時,狀態區塊鏈已經完成了對該階段的狀態統計,超過2/3的節點已經對該階段的狀態改變達成了一致,并已經銷毀了對應的階段桶而產生的,狀態區塊鏈會為該條sTx新建一個階段桶并等待永遠無法完成的狀態統計。優選的,廢桶是由于某些sTx未能到達狀態區塊鏈,或者某些節點未能成功發送sTx導致對某階段的狀態統計達不到執行合約總節點數的2/3以上所產生的。優選的,廢桶產生后,對于該合約的后續狀態無論是否一致都不再統計,記錄本次合約的源賬戶地址和標記了本次執行是合約第幾次被激活執行的本次的執行序號,如果后續sTx是對同一合約的相同執行序號的狀態信息,則直接丟棄。優選的,執行智能合約的個別節點執行速度慢時,對于最近一段時間內已經確認達成一致的階段桶,系統動態維護一張“狀態表”,銷毀該階段桶時在表中記錄了桶的標記名,以及銷毀時桶內累計的意見總數,如果隨后的sTx對應標記名與表中記錄的標記名匹配,直接丟棄該sTx并將累計在該標記名的意見總數加1,當一條階段桶緩存記錄上所累積的意見總數達到執行合約的所有節點的節點點數,即執行合約的所有節點已經執行完這個階段,或者該緩存記錄超過了一定時間限制時,將記錄寫入日志,然后在“狀態表”中清除它。優選的,某些sTx未能到達狀態區塊鏈,或者某些節點未能成功發送sTx時,系統在每次新建階段桶的時候都會啟動一個計時器,當一個階段桶經過一段時間后還沒有達成狀態一致時,系統將銷毀階段桶。本專利技術通過在單獨存儲狀態的區塊鏈上使用“階段桶”的辦法來保證執行智能合約的各節點狀態的一致,區塊鏈系統對于支持復雜智能合約執行的能力提高,同時,多個獨立節點同時執行合約時數據一致性,結果統一性,數據的完整性以及數據的隔離性的以保證,數據同步不會相互干擾。根據下文結合附圖對本專利技術具體實施例的詳細描述,本領域技術人員將會更加明了本專利技術的上述以及其他目的、優點和特征。附圖說明后文將參照附圖以示例性而非限制性的方式詳細描述本專利技術的一些具體實施例。附圖中相同的附圖標記標示了相同或類似的部件或部分。本領域技術人員應該理解,這些附圖未必是按比例繪制的。本專利技術的目標及特征考慮到如下結合附圖的描述將更加明顯,附圖中:圖1是根據本專利技術實施例的簡單賬戶結構示意圖;圖2是根據本專利技術實施例的復雜合約賬戶結構示意圖;圖3是根據本專利技術實施例的狀態同步流程示意圖。具體實施方式在進行具體實施方式的說明之前,為了更為清楚的表達所論述的內容,首先說明本專利技術所涉及的一些重要概念。1、賬戶智能合約附屬于某個賬戶,賬戶的結構描述如下:(1)激活狀態:賬戶是否已被激活。0代表未被激活,1代表已激活。如果該字段為0,則賬戶不能發送交易,并且忽略除激活信息外一切發送到它的交易信息,直到重新被激活;(2)創建時間和更新時間:記錄了此賬戶被創建的時間和上一次更新的時間;(3)合約哈希值:對合約賬戶而言,這個字段記錄了與該賬戶關聯的合約代碼的哈希值,賬戶一旦生成,這個值就不再改變;(4)nonce:一個整數,記錄從該賬戶地址共發出了多少交易;(5)number:記錄有多少交易發送到了該賬戶地址,記錄了合約被激活執行的次數;(6)賬戶類型:分為兩種類型,1表示普通合約賬戶,2表示復雜合約賬戶;(7)賬戶地址:一個20位長的字符串,在系統中唯一標識一個賬戶采用的是非對稱加密技術生成的公鑰和私鑰,然后對公鑰進行md5哈希,取最后20個字符作為地址;(8)賬戶緩存:暫時記錄合約執行過程中產生的臨時數據。對于簡單的合約,完全可以將編譯完成后的二進制數據直接存儲在區塊鏈上,以提高加載速度。但是對于復雜智能合約,如果將合約執行相關的文件直接存儲在區塊鏈上將可能造成區塊體積過大,因此復雜合約只在賬戶中保存了相關文件的地址以節省空間,真正的文件保存在區塊鏈外。賬戶的結構如附圖1和圖2所示。2、交易區塊鏈和狀態區塊鏈交易區塊鏈接收來自區塊鏈系統外部的信息,并將這些信息存儲至區塊中,智能合約的執行在交易區塊鏈的節點中完成。狀態區塊鏈專門存儲狀態信息,維護賬戶信息,它負責智能合約執行過程中和執行完畢后的狀態同步及存儲。3、狀態型交易在智能合約執行的過程中,每當有狀態改變的操作時,各執行合約節點都會向專門存儲狀態的區塊鏈發送狀態型交易(sTx)來進行狀態同步。sTx的內容如下:(1)源地址:發出該狀態交易的賬戶地址;(2)源賬戶的公鑰:對這個公鑰進行哈希后取其最后20個字符,應該與源地址相同;(3)執行信息:本次合約的執行信息,包括記錄本次是合約的第幾次執行;(4)對象賬戶地址:改變狀態的賬戶地址;(5)狀態信息:狀態改變信息,與具體的領域有關;(6)簽名:使用源地址的私鑰對對象賬戶地址、執行信息、狀態信息生成的摘要字段的簽名;(7)時本文檔來自技高網...
    一種基于階段桶的復雜智能合約狀態同步方法

    【技術保護點】
    一種基于階段桶的復雜智能合約狀態同步方法,其特征在于,包括如下步驟:(1)判斷狀態類型交易,確定需要更新狀態的賬戶地址;(2)根據狀態交易的信息生成階段桶,然后為每個階段桶設定一個計時器;(3)統計階段桶內的狀態信息,并分別統計每類信息的條數;(4)檢查步驟(3)的結果,確定某階段桶是否已達成一致,如果已達成一致,繼續執行步驟(5),否則繼續執行步驟(7);(5)將狀態存儲到狀態區塊鏈中;(6)標記該階段桶為“已達成一致”,然后刪除該階段桶;(7)檢查階段桶的計時器是否已超時,如果未超時則跳轉執行步驟(3),否則繼續執行步驟(8);(8)標記該階段桶為“已超時”,然后刪除該階段桶,此時的階段桶稱為“廢桶”。

    【技術特征摘要】
    1.一種基于階段桶的復雜智能合約狀態同步方法,其特征在于,包括如下步驟:(1)判斷狀態類型交易,確定需要更新狀態的賬戶地址;(2)根據狀態交易的信息生成階段桶,然后為每個階段桶設定一個計時器;(3)統計階段桶內的狀態信息,并分別統計每類信息的條數;(4)檢查步驟(3)的結果,確定某階段桶是否已達成一致,如果已達成一致,繼續執行步驟(5),否則繼續執行步驟(7);(5)將狀態存儲到狀態區塊鏈中;(6)標記該階段桶為“已達成一致”,然后刪除該階段桶;(7)檢查階段桶的計時器是否已超時,如果未超時則跳轉執行步驟(3),否則繼續執行步驟(8);(8)標記該階段桶為“已超時”,然后刪除該階段桶,此時的階段桶稱為“廢桶”。2.根據權利要求1所述的一種基于階段桶的復雜智能合約狀態同步方法,其特征在于:步驟(1)的所述交易是從交易區塊鏈發來的。3.根據權利要求1所述的一種基于階段桶的復雜智能合約狀態同步方法,其特征在于:步驟(2)中所述信息包括合約賬戶的地址、該合約賬戶總共被觸發執行的次數以及需要更改的賬戶地址。4.根據權利要求1所述的一種基于階段桶的復雜智能合約狀態同步方法,其特征在于:步驟(3)所述統計階段桶內的狀態信息是對階段桶內的來自交易區塊鏈不同節點的相同內容信息進行歸類。5.根據權利要求1所述的一種基于階段桶的復雜智能合約狀態同步方法,其特征在于:步驟(4)所述確定某階段桶是否已達成一致是確定否有超過2/3的合約執行節點擁有相同的狀態。6.根據權利要求1所述的一種基于階段桶的復雜智能合約狀態同步方法,其特征在于:步驟(8)所述“廢桶”是由某個階段桶中的意見長期無法達成一致產生的。7.根據權利要求6所述的一種基于階段桶的復雜智能合約狀態同步方法,其特征在于:所述廢桶是由于桶內已經收集了所有執行合約的節點的意見,但相同的狀態信息總數小于總節點數的2/3而沒有達成一致所產生的。8.根據權利要求6所述的一種基于...

    【專利技術屬性】
    技術研發人員:鄧恩艷
    申請(專利權)人:北京天德科技有限公司
    類型:發明
    國別省市:北京;11

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 黑人无码精品又粗又大又长 | 在线a亚洲v天堂网2019无码 | 在线无码午夜福利高潮视频| 制服在线无码专区| 极品无码国模国产在线观看| 国产V片在线播放免费无码| 国产a级理论片无码老男人| 麻豆精品无码国产在线果冻| 久久久无码精品亚洲日韩蜜桃| 亚洲av无码专区在线观看亚| 亚洲一区精品无码| 精品无码久久久久久国产| 亚洲AV无码成人精品区蜜桃| 亚洲Av无码乱码在线播放| 亚洲AV无码久久久久网站蜜桃| 精品无码中出一区二区| 6080YYY午夜理论片中无码 | heyzo高无码国产精品| 69久久精品无码一区二区 | 中文字幕有码无码AV| 无码人妻aⅴ一区二区三区| 精品无码久久久久国产动漫3d| 13小箩利洗澡无码视频网站免费| 国产精品成人一区无码| 一本色道无码道DVD在线观看| 国产日韩精品中文字无码| 久久午夜无码鲁丝片午夜精品| 精品人妻系列无码人妻漫画| 激情无码人妻又粗又大中国人| 无码无遮挡又大又爽又黄的视频| 久久精品无码专区免费| 亚洲AV无码一区二三区| 精品无码一区二区三区水蜜桃| 日韩毛片无码永久免费看| 亚洲中文字幕无码中文字| 亚洲GV天堂无码男同在线观看| 亚洲国产日产无码精品| 无码丰满熟妇juliaann与黑人 | 国产精品无码AV不卡| 少妇极品熟妇人妻无码| 丰满亚洲大尺度无码无码专线|