本發(fā)明涉及區(qū)塊鏈技術。
背景技術:
目前大多數(shù)區(qū)塊鏈的交易記錄的校驗共識及智能合約的邏輯運算都在一起執(zhí)行,程序復雜度高,智能合約代碼出錯則無法修改。
技術實現(xiàn)要素:
本發(fā)明的目的是設計一種新的區(qū)塊鏈架構,用交易訂單日志鏈的共識來保證交易數(shù)據(jù)不可篡改性,也能通過替換智能合約代碼來修改程序錯誤。
本方案較好地解決了解決了區(qū)塊鏈不可篡改的要求與程序錯誤的矛盾。
1、本發(fā)明所采用的技術方案是:靈活區(qū)塊鏈架構,將區(qū)塊鏈分成第一層日志共識鏈、第二層合約邏輯執(zhí)行、第三層狀態(tài)變動共識鏈,降低復雜度,增加了穩(wěn)定性、提高性能,以下是實現(xiàn)流程;
步驟S1,第一層日志共識鏈接收用戶錢包發(fā)出的訂單,需校驗訂單簽名是否正確,這里的訂單可以是不同合約的訂單,可分類共識,為防止攻擊可對訂單收取一定費用或進行用戶公鑰身份認證,用戶錢包僅需要下載需要使用的合約代碼即可,第一層不執(zhí)行合約邏輯;
步驟S2,第二層執(zhí)行合約邏輯,不同的合約可以分開執(zhí)行,不同合約先到第三層獲取相關用戶最新狀態(tài),如地址上的數(shù)額、標的物是否抵押等,通過檢查后可以執(zhí)行邏輯,形成的結果可以傳給第三層進行共識;
步驟S3,到了第三層,可以把所有最新狀態(tài)變化用哈希算法來校驗一致性,達成共識后全部寫入第三層區(qū)塊鏈,加密數(shù)字貨幣、加密數(shù)字資產(chǎn)也可以分開寫入第三層的不同鏈上,第三層可根據(jù)合約分類用不同鏈分開進行共識;
步驟S4,第三層的共識鏈新區(qū)塊可只記錄狀態(tài)最新的變化,可建立Key-Value數(shù)據(jù)庫表來存儲所有的狀態(tài)值,供第二層執(zhí)行合約邏輯的時候查詢。
第一層日志鏈是不可修改的,其他鏈都可允許被修改,但仍可進行共識,保持一致性,若第二層智能合約的代碼有錯,可更新智能合約代碼,在根據(jù)日志鏈上的數(shù)據(jù)回溯交易結果,并更新第三層區(qū)塊鏈。
2、計算每個區(qū)塊的頭哈希值可以用梅克爾樹,也可以直接將哈希串聯(lián)后計算頭哈希值。
3、可以用FPGA、GPU等芯片來計算哈希值或校驗簽名。
4、第二層執(zhí)行完后,剔除無效訂單,將剩余有效訂單或成交單經(jīng)過實施共識算法后放到第四層區(qū)塊鏈上,可供用戶下載查詢。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:
本方案較好地解決了區(qū)塊鏈不可篡改的要求與程序錯誤的矛盾。用交易訂單日志鏈的共識來保證交易數(shù)據(jù)不可篡改性,也能通過替換智能合約代碼來修改程序錯誤。
附圖說明
圖1是靈活區(qū)塊鏈架構的說明圖。
具體實施方式
實施例1,參照說明書附圖1,本例說明靈活區(qū)塊鏈架構;
1、將區(qū)塊鏈分成第一層日志共識鏈、第二層合約邏輯執(zhí)行、第三層狀態(tài)變動共識鏈,降低復雜度,增加了穩(wěn)定性、提高性能,以下是實現(xiàn)流程;
步驟S1,第一層日志共識鏈接收用戶錢包發(fā)出的訂單,需校驗訂單簽名是否正確,這里的訂單可以是不同合約的訂單,可分類共識,為防止攻擊可對訂單收取一定費用或進行用戶公鑰身份認證,用戶錢包僅需要下載需要使用的合約代碼即可,第一層不執(zhí)行合約邏輯,這里甲用戶錢包有A、B智能合約,發(fā)送訂單Ai,Bj到第一層日志鏈,這里乙用戶錢包有B、C、D智能合約,發(fā)送訂單Bj+1,Ck、Dn到第一層日志鏈,;
步驟S2,第二層執(zhí)行合約邏輯,不同的合約可以分開執(zhí)行,不同合約先到第三層獲取相關用戶最新狀態(tài),如公鑰地址上的數(shù)額、標的物是否抵押等,通過檢查后可以執(zhí)行邏輯,形成的結果可以傳給第三層進行共識;
步驟S3,到了第三層,可以把所有最新狀態(tài)變化用哈希算法來校驗一致性,達成共識后全部寫入第三層區(qū)塊鏈,加密數(shù)字貨幣、加密數(shù)字資產(chǎn)也可以分開寫入第三層的不同鏈上,第三層可根據(jù)合約分類用不同鏈分開進行共識;
步驟S4,第三層的共識鏈新區(qū)塊可只記錄狀態(tài)最新的變化,可建立Key-Value數(shù)據(jù)庫表來存儲所有的狀態(tài)值,供第二層執(zhí)行合約邏輯的時候查詢。
步驟S5,第二層執(zhí)行完后,剔除無效訂單后剩余的有效訂單或成交單經(jīng)過實施共識算法后放到第四層區(qū)塊鏈上,可供用戶下載查詢;
本方案的第一層日志鏈不運行智能合約,執(zhí)行效率可大幅度提高,還可以用FPGA、GPU等芯片提高計算哈希值或校驗簽名的速度,第一層日志鏈是不可修改的,其他鏈都可允許被修改,但仍可進行共識,保持一致性;
若第二層智能合約的代碼出錯,可通過更新智能合約代碼,根據(jù)日志鏈上的數(shù)據(jù)回溯交易結果。