跨鏈發送可認證訊息的方法和裝置
本說明書實施例涉及區塊鏈技術領域,更具體地,涉及一種跨鏈發送可認證訊息的方法和裝置。
區塊鏈技術也被稱之為分散式帳本技術,是一種去中心化的分散式資料庫技術,其特點是去中心化、公開透明、不可篡改、可信任。區塊鏈的每筆資料,都會廣播到全網的區塊鏈節點,每個全節點都有全量的、一致的資料。隨著區塊鏈技術的火熱,出現了許多不同類型的鏈,應用在金融、健康醫療、供應鏈、資產管理和溯源等領域。然而大部分鏈上應用(加密貨幣或者智慧合約)都無法跨越當前鏈的邊界,不能與其他鏈協同合作實現價值的流通,從而限制了區塊鏈的發揮空間。如何能讓不同類型的鏈協同合作實現價值的流通成了探索的方向。目前已出現多種跨鏈技術,然而,每種跨鏈技術都有自己獨特設計,應對的場景也各不相同,針對不同場景下的跨鏈,一條鏈可能需要接入多種跨鏈平臺。
因此,需要一種更有效的跨鏈傳遞資訊的方案。
本說明書實施例旨在提供一種更有效的跨鏈傳遞資訊的方案,以解決現有技術中的不足。
為實現上述目的,本說明書一個方面提供一種跨鏈發送可認證訊息的方法,所述跨鏈發送為從第一區塊鏈的第一帳戶向其它區塊鏈發送,所述第一區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第二區塊鏈,所述方法由所述第一區塊鏈執行,包括:
藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;以及
將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述第二區塊鏈中的所述第二帳戶,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置。
在一個實施例中,藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料包括,藉由由所述第一帳戶調用第一智慧合約向第一區塊鏈中存入所述第一資料,其中,所述第一帳戶在調用第一智慧合約時向第一智慧合約傳入至少以下參數:第二區塊鏈標識、第二帳戶及訊息內容。
在一個實施例中,所述第一資料被標註有預定標誌。
在一個實施例中,所述第一資料為收據,所述收據中包括在執行所述第一智慧合約之後產生的日誌,所述日誌的資料欄位為所述可認證訊息。
在一個實施例中,所述日誌被標註有預定主題,所述預定標誌為所述預定主題。
在一個實施例中,所述預定標誌為所述第一智慧合約的帳戶標識。
在一個實施例中,所述第一層協定中還包括協定版本號欄位和預留欄位。
在一個實施例中,所述第二層協定中還包括類型欄位,用於指示該可認證訊息的使用場景類型。
在一個實施例中,所述類型為以下任一類型:訊息類型、遠端過程調用類型、發佈/訂閱類型。
在一個實施例中,所述第三層協定中還包括序號欄位,用於在所述第一帳戶向所述第二帳戶多次發送可認證訊息的情況中表示當前發送序號。
在一個實施例中,所述第一帳戶為第二智慧合約的合約帳戶。
本說明書另一方面提供一種跨鏈中轉可認證訊息的方法,所述方法由中繼端執行,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述方法由中繼端執行,包括:
從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;以及
基於所述可認證訊息中的第二區塊鏈標識,將所述第一資料和所述第一位置資訊發送給所述第二區塊鏈。
在一個實施例中,所述第一資料被標註有預定標誌,其中,從所述第一區塊鏈獲取所述第一資料和第一位置資訊包括,基於所述預定標誌從所述第一區塊鏈獲取所述第一資料和第一位置資訊。
本說明書另一方面提供一種跨鏈接收可認證訊息的方法,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述第二區塊鏈中藉由所述中繼端同步有與至少一個其它區塊鏈分別相關的至少一個第二資料,其中,所述至少一個其它區塊鏈中包括第一區塊鏈,所述方法由第二區塊鏈執行,包括:
從所述中繼端接收第一資料和第一位置資訊,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述第一位置資訊指示所述第一資料在所述第一區塊鏈中的位置;
基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;以及
在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
在一個實施例中,所述第一資料為第一區塊鏈的第一區塊中的第一收據,所述第一位置資訊包括第一區塊的區塊編號和第一收據在第一區塊中的收據編號,所述與第一區塊鏈相關的第二資料為第一區塊鏈中的各個區塊的區塊頭,其中,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證包括,基於所述第一收據、所述各個區塊的區塊頭和第一區塊中的與第一收據相關聯的默克爾樹路徑,藉由簡單支付驗證方法驗證:所述第一收據來自於第一區塊鏈中的第一區塊,其中,所述默克爾樹路徑基於所述第一位置資訊獲取。
在一個實施例中,所述可認證訊息位於所述第一收據中的第一日誌中,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證還包括,基於所述第一日誌的發送欄位,驗證所述第一帳戶為發送所述可認證訊息的帳戶。
在一個實施例中,所述第二帳戶為第三智慧合約的合約帳戶,向所述第二帳戶提供所述可認證訊息包括,藉由以所述可認證訊息為傳入參數調用第三智慧合約,向第二帳戶提供所述可認證訊息。
本說明書另一方面提供一種跨鏈中轉可認證訊息的方法,所述方法由中繼端執行,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述中繼端同步有與各個區塊鏈分別相關的各個第二資料,所述方法包括:
從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;
基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;
在驗證通過的情況中,對所述可認證訊息進行數位簽名;以及
基於所述可認證訊息中的第二區塊鏈標識,將所述可認證訊息及其數位簽名發送給所述第二區塊鏈。
本說明書另一方面提供一種跨鏈接收可認證訊息的方法,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第一區塊鏈,所述第二區塊鏈中預先儲存有所述中繼端的公鑰,所述方法由第二區塊鏈執行,包括:
從所述中繼端接收可認證訊息、及所述中繼端對所述可認證訊息的數位簽名,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;
使用所述中繼端的公鑰對所述數位簽名進行驗證;以及
在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
本說明書另一方面提供一種跨鏈發送可認證訊息的裝置,所述跨鏈發送為從第一區塊鏈的第一帳戶向其它區塊鏈發送,所述第一區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第二區塊鏈,所述裝置部署在所述第一區塊鏈,包括:
存入單元,配置為,藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;以及
提供單元,配置為,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述第二區塊鏈中的所述第二帳戶,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置。
在一個實施例中,所述存入單元還配置為,藉由由所述第一帳戶調用第一智慧合約向第一區塊鏈中存入所述第一資料,其中,所述第一帳戶在調用第一智慧合約時向第一智慧合約傳入至少以下參數:第二區塊鏈標識、第二帳戶及訊息內容。
本說明書另一方面提供一種跨鏈中轉可認證訊息的裝置,所述裝置部署在中繼端,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述裝置包括:
查找單元,配置為,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;以及
發送單元,配置為,基於所述可認證訊息中的第二區塊鏈標識,將所述第一資料和所述第一位置資訊發送給所述第二區塊鏈。
在一個實施例中,所述第一資料被標註有預定標誌,其中,所述獲取單元還配置為,基於所述預定標誌從所述第一區塊鏈獲取所述第一資料和第一位置資訊。
本說明書另一方面提供一種跨鏈接收可認證訊息的裝置,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述第二區塊鏈中藉由所述中繼端同步有與至少一個其它區塊鏈分別相關的至少一個第二資料,其中,所述至少一個其它區塊鏈中包括第一區塊鏈,所述裝置部署在第二區塊鏈,包括:
接收單元,配置為,從所述中繼端接收第一資料和第一位置資訊,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述第一位置資訊指示所述第一資料在所述第一區塊鏈中的位置;
獲取單元,配置為,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
驗證單元,配置為,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;以及
提供單元,配置為,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
在一個實施例中,所述第一資料為第一區塊鏈的第一區塊中的第一收據,所述第一位置資訊包括第一區塊的區塊編號和第一收據在第一區塊中的收據編號,所述與第一區塊鏈相關的第二資料為第一區塊鏈中的各個區塊的區塊頭,其中,所述驗證單元還配置為,基於所述第一收據、所述各個區塊的區塊頭和第一區塊中的與第一收據相關聯的默克爾樹路徑,藉由簡單支付驗證方法驗證:所述第一收據來自於第一區塊鏈中的第一區塊,其中,所述默克爾樹路徑基於所述第一位置資訊獲取。
在一個實施例中,所述可認證訊息位於所述第一收據中的第一日誌中,所述驗證單元還配置為,基於所述第一日誌的發送欄位,驗證所述第一帳戶為發送所述可認證訊息的帳戶。
在一個實施例中,所述第二帳戶為第三智慧合約的合約帳戶,所述提供單元還配置為,藉由以所述可認證訊息為傳入參數調用第三智慧合約,向第二帳戶提供所述可認證訊息。
本說明書另一方面提供一種跨鏈中轉可認證訊息的裝置,所述裝置部署在中繼端,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述中繼端同步有與各個區塊鏈分別相關的各個第二資料,所述裝置包括:
查找單元,配置為,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;
獲取單元,配置為,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
驗證單元,配置為,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;
簽名單元,配置為,在驗證通過的情況中,對所述可認證訊息進行數位簽名;以及
發送單元,配置為,基於所述可認證訊息中的第二區塊鏈標識,將所述可認證訊息及其數位簽名發送給所述第二區塊鏈。
本說明書另一方面提供一種跨鏈接收可認證訊息的裝置,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第一區塊鏈,所述第二區塊鏈中預先儲存有所述中繼端的公鑰,所述裝置部署在第二區塊鏈,包括:
接收單元,配置為,從所述中繼端接收可認證訊息、及所述中繼端對所述可認證訊息的數位簽名,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;
驗證單元,配置為,使用所述中繼端的公鑰對所述數位簽名進行驗證;以及
提供單元,配置為,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
本說明書另一方面提供一種電腦可讀儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行上述任一項方法。
本說明書另一方面提供一種計算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行碼,所述處理器執行所述可執行碼時,實現上述任一項方法。
根據本說明書實施例的跨鏈方案,設計一種可認證訊息,使得區塊鏈發出的訊息可以被其他鏈認證:訊息來自於哪條鏈,且由鏈上的哪個身分實體(帳號/合約)發出。使得基於此可認證訊息,允許進行跨鏈應用(合約)編程,使開發者更輕易地開發出各種跨鏈業務、應用。
下面將結合圖式描述本說明書實施例。
圖1示出根據本說明書實施例的跨鏈系統的示意圖。如圖1所示,所述跨鏈系統包括第一區塊鏈11、中繼端12和第二區塊鏈13。第一區塊鏈11中例如包括帳戶A,第二區塊鏈13中例如包括帳戶B,所述帳戶A和帳戶B可以為用戶帳戶,或者也可以為合約帳戶。當第一區塊鏈中的帳戶A希望向第二區塊鏈中的帳戶B發送資訊時,其可藉由可認證訊息(AM訊息)的形式進行發送。該可認證訊息被包括在帳戶A存入區塊鏈的經共識的第一資料(資料1)中。第二區塊鏈13中可包括例如多個簡單支付驗證(spv)節點,該節點本地預先獲取有第一區塊鏈11中的第二資料(資料2),資料2用於驗證資料1。該spv節點可藉由第一區塊鏈11與第二區塊鏈13之間的中繼端12的中轉獲取第一資料(資料1)及其位置資訊(位置1),並使用資料2對該資料1進行驗證,並在驗證通過之後將資料1中的AM訊息提供給帳戶B。從而帳戶B可基於該AM訊息進行業務處理。
可以理解,上述參考圖1的描述只是示意性的,而不是用於限制本說明書實施例。例如,中繼端在獲取資料1之後,可根據預先獲取的第一區塊鏈中的資料2對資料1進行驗證並數位簽名,併發送給第二區塊鏈,第二區塊鏈可基於中繼鏈的公鑰驗證數位簽名,從而驗證所述資料1。
下面具體描述上述過程。
圖2示出根據本說明書實施例的一種跨鏈發送可認證訊息的方法流程圖,所述跨鏈發送為從第一區塊鏈的第一帳戶向其它區塊鏈發送,所述第一區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第二區塊鏈,所述方法由所述第一區塊鏈執行,包括:
步驟S202,藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;以及
步驟S204,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述第二區塊鏈中的所述第二帳戶,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置。
在本說明書實施例中,第一區塊鏈和第二區塊鏈可以為任意區塊鏈,如比特幣鏈、以太坊鏈等等,其藉由具有統一格式的可認證訊息傳遞資訊,因此,本說明書實施例對於區塊鏈的類型、具體的應用場景沒有特別限定。所述中繼端為連接在第一區塊鏈和第二區塊鏈之間的中間件,該中繼端可以具有多種形式,例如,該中繼端可以同為第一區塊鏈和第二區塊鏈中的節點,即,該中繼端同時具有第一區塊鏈和第二區塊鏈中的帳戶;或者該中繼端為與第一區塊鏈和第二區塊鏈都連接的中轉裝置,其不負責驗證資料,僅用於中轉資料;或者該中繼端為可信節點,其在從第一區塊鏈接收資料之後,對該資料進行驗證,並在驗證通過之後將資料發送給第二區塊鏈;或者該中繼端還可以為驗證區塊鏈,其在對從第一區塊鏈接收的資料進行共識驗證之後發送給第二區塊鏈。
在步驟S202,藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶。
其中,第一帳戶可以為用戶帳戶,或者也可以為合約帳戶。所述第一資料可以為區塊鏈中的交易、收據、狀態樹狀態、智慧合約記憶體、關係型資料庫等中的任一資料,這些資料都是經過各個節點的共識存入區塊鏈中,因此其在各個節點是一致的,並且是可驗證的。本領域技術人員已知,在區塊鏈中可藉由發送交易而在區塊鏈中存入上述經共識的資料,在此不再詳述該過程。
在一個實施例中,藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料包括,藉由由所述第一帳戶調用第一智慧合約向第一區塊鏈中存入所述第一資料,其中,所述第一帳戶在調用第一智慧合約時向第一智慧合約傳入至少以下參數:第二區塊鏈標識、第二帳戶及訊息內容。在一個實施例中,所述第一帳戶為第二智慧合約的合約帳戶,其例如藉由調用第一智慧合約,而向第二區塊鏈中的第三智慧合約傳遞參數,以實現跨鏈調用第三智慧合約的目的。第一智慧合約為用於向第一區塊鏈中存入第一資料以跨鏈傳遞可認證訊息的特定智慧合約,其例如可供用於發送資訊的合約(即第二智慧合約)調用,在調用時,需要至少傳入接收鏈標識(即第二區塊鏈標識)、接收帳戶標識(即第二帳戶)和訊息內容。
第一智慧合約在執行時,其例如包括存入函數“Save()”,該存入函數的傳入參數即為第一智慧合約的傳入參數,即第二區塊鏈標識、第二帳戶及訊息內容,另外,該存入函數從發出調用的第二智慧合約獲取其帳戶(即第一帳戶),將第一帳戶、預置的第一區塊鏈的鏈標識以及在調用時傳入的參數(即第二區塊鏈標識、第二帳戶及訊息內容)以預定格式(即預定協定堆疊)組合成可認證訊息,並作為函數結果輸出,從而使得該函數結果被存入相應的日誌中。該日誌被包括在與該次調用對應的交易的交易收據中,該交易收據藉由第一區塊鏈中的節點共識驗證被存入第一區塊鏈中的區塊中。也就是說,在該實施例中,所述第一資料即為區塊鏈中的收據,該收據中的特定日誌中包括了所述可認證訊息。在區塊鏈的區塊中,例如可藉由第一智慧合約的合約標識作為預定標誌查找到該收據。在一個實施例中,所述日誌中還設定特定主題(名稱)作為預定標誌,從而以用於後續對該收據和該日誌的查找。可以理解,在第一資料為收據的情況中,需要對該第一資料標誌預定標誌,以用於後期的查找。然而,第一資料不限於為收據,例如,其可以為存入智慧合約的記憶體中的資料,可以為存入關係型資料庫中的資料等等,在該情況中,將不需要標註有預定標誌,而可以直接在特定資料庫(或記憶體)中獲取該第一資料。
在藉由第二智慧合約對第一智慧合約的調用從而執行第一智慧合約之後,例如將產生如圖3所示的日誌,圖3示出了在執行第一智慧合約之後產生的日誌的示意圖。如圖3所示,該日誌(Log)具有預定主題(Topic),例如該主題可以預設為“AM”,以用於指示該日誌是用於對鏈外發送AM訊息的日誌。在該日誌中包括“To”欄位,“From”欄位和“Data”欄位。其中,“To”欄位對應於被調用合約的帳戶,也即第一智慧合約的帳戶,“From”欄位對應於發起調用的合約的帳戶,也即第二智慧合約的帳戶(即第一帳戶),“Data”欄位中即第二智慧合約希望發出的可認證訊息。
其中,所述可認證訊息滿足預定協定堆疊。圖4示出根據本說明書實施例的預定協定堆疊的示意圖。如圖4所示,圖中最下層為根據本說明書實施例的第一層協定,該第一層協定中包括發送區塊鏈標識欄位(S_C_ID)、接收區塊鏈標識欄位(R_C_ID)和第二層協定;圖中中間層為第二層協定,該第二層協定中包括發送帳戶欄位(S_A_id)、接收帳戶欄位(R_A_id)和第三層協定;圖中最上層為第三層協定,該第三層協定中包括訊息內容欄位。可以理解,發送帳戶應為發送區塊鏈中的帳戶,接收帳戶應為接收區塊鏈中的帳戶。
例如,如上文所述,所述可認證訊息為從第一區塊鏈中的第一帳戶發送給第二區塊鏈中的第二帳戶的訊息,假設第一區塊鏈的鏈標識為ID1,第一帳戶為id1,第二區塊鏈的鏈標識為ID2,第二帳戶為id2,則,圖5示出了可認證訊息的示意形式。如圖5所示,根據圖4所示的協定堆疊,第一層協定包括ID1、ID2和第二層協定,第二層協定包括id1、id2和第三層協定,第三層協定包括訊息內容。
該協定堆疊基於可認證訊息的傳輸過程設計,其中第一層協定對應於從第一區塊鏈到第二區塊鏈之間的傳輸,第二層協定對應於從第一帳戶到第二帳戶之間的傳輸,第三層協定對應於在傳輸到第二帳戶之後基於訊息內容的具體業務處理過程。藉由這樣設計協定堆疊,可使得在傳輸可認證訊息的過程中,藉由從外至內分層讀取該可認證訊息,即,首先藉由讀取第一層協定中的ID2,從而可將該可認證訊息先傳輸到第二區塊鏈,然後藉由讀取第二層協定中的id2,再將該可認證訊息傳輸到第二帳戶,最後藉由讀取第三層協定中的訊息內容並提供給第二帳戶,從而使得第二帳戶基於訊息內容進行具體的業務處理。
在一個實施例中,第一層協定中還包括協定版本號欄位和預留欄位。以允許對該協定堆疊進行升級和擴展。其中,所述預留欄位為空欄位。
在一個實施例中,第三層協定中還包括類型欄位,用於指示該可認證訊息的使用場景類型。從而使得各個使用場景可疊加使用該協定堆疊。例如,針對不同的使用場景(即可認證訊息中的不同的類型),所述訊息內容欄位中可對應於不同的內容、具有不同的格式等。所述類型為以下任一類型:訊息類型、遠端過程調用類型、發佈/訂閱類型,等等。
所述第三層協定中還包括序號欄位,用於在所述第一帳戶向所述第二帳戶多次發送可認證訊息的情況中表示當前發送序號。
所述協定版本號欄位、預留欄位、類型欄位、序號欄位等各自對應的欄位值可類似地由第一帳戶在調用第一智慧合約時作為輸入參數傳入第一智慧合約,從而使得第一智慧合約中的存入函數可基於這些輸入參數輸出包含這些欄位值的可認證訊息。
圖6示出根據本說明書實施例的高適用性的協定堆疊的示意圖。如圖6所示,相比於圖4所示的協定堆疊,該協定堆疊的第一層協定中還包括版本號欄位和預留欄位,該協定堆疊的第三層協定中還包括類型欄位和序號欄位。如上文所述,該協定堆疊可升級、可擴展,可用於多種場景類型,可進行多次通信,因此具有高適用性。
雖然上文中以第二智慧合約調用第一智慧合約為例描述了向第一區塊鏈中存入經共識的收據的過程,本說明書實施例不限於此,例如,第一帳戶為用戶帳戶,其可藉由向其它任一帳戶發送交易,從而實現向區塊鏈中存入第一資料的過程,該第一資料例如還可以為區塊中的交易資料,例如,可在該交易的資料欄位中預置預定標誌,以標識該交易為用於跨鏈發送資訊的交易,並且該交易的資料欄位中包括上述可認證訊息。從而,在第一帳戶發出該交易之後,該交易在共識驗證之後被存入區塊中。在後續過程中,可藉由預定標誌查找到該交易資料,並從該交易資料中獲取可認證訊息。
在步驟S204,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述第二區塊鏈中的所述第二帳戶,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置。
如上文所述,在本說明書實施例中,可使用不同的中繼端,根據中繼端的不同的實現方式,可藉由不同的方法將第一資料提供給中繼端。例如,該中繼端本身為第一區塊鏈和第二區塊鏈中的節點,從而中繼端可從本地儲存的資料(如區塊、狀態樹)中獲取所述第一資料,並同時獲取第一位置資料,所述第一位置資訊指示第一資料在區塊鏈中的位置,例如,在第一資料為收據的情況中,所述第一位置資訊包括收據所在區塊編號、以及收據在該區塊中的編號等。例如,該中繼端為與第一區塊鏈和第二區塊鏈都連接的中轉裝置,從而,第一區塊鏈的任一節點可根據中繼端的請求從本地獲取該第一資料及其位置資訊,並將其發送給中繼端。中繼端在獲取該第一資料及其位置資訊之後,將根據其自身的形式的不同,執行不同的步驟,以用於將第一資料中的可認證訊息提供給第二區塊鏈中的第二帳戶,該過程將在下文詳細描述。
圖7示出根據本說明書實施例的一種跨鏈中轉可認證訊息的方法流程圖,所述方法由中繼端執行,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述方法包括:
步驟S702,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;以及
步驟S704,基於所述可認證訊息中的第二區塊鏈標識,將所述第一資料和所述第一位置資訊發送給所述第二區塊鏈。
在第一區塊鏈中進行圖2所示方法之後,在所述第一區塊鏈中存入了上述經共識的第一資料,從而可執行該方法。
該方法由中繼端執行,根據中繼端的具體實現方式不同,中繼端中執行的方法步驟也相應地不同,在該方法中,中繼端為第一區塊鏈與第二區塊鏈之間的中轉端,即,其不進行對資料的驗證,僅用於資料的中轉,並且不對資料的真實性、完整性負責。
在步驟S702,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置。
在一個實施例中,所述第一資料帶有預定標誌地被存入區塊鏈中,該預定標誌用於對該類用於跨鏈發送的資料的查找。例如,該預定標誌為第一智慧合約的帳戶,其它合約帳戶在希望跨鏈傳送資訊時調用該第一智慧合約。在調用該第一智慧合約之後,在相應的收據中將包括該第一智慧合約的帳戶,從而藉由基於該第一智慧合約的帳戶可從區塊中查找該收據作為第一資料,並可確定該收據所在的區塊標識、該收據在該區塊中的收據編號等一起作為第一位置資訊。中繼端例如可向任一節點訂閱區塊中具有第一智慧合約的帳戶的收據,從而可從該節點接收所述第一資料和所述第一位置資訊。如上文所述,在第一資料為特定資料的情況中,可在特定資料庫或記憶體中獲取所述第一資料及其儲存位置。
在步驟S704,基於所述可認證訊息中的第二區塊鏈標識,將所述第一資料和所述第一位置資訊發送給所述第二區塊鏈。
中繼端在獲取所述第一資料和第一位置資訊之後,例如,該第一資料為上述調用第一智慧合約的收據,中繼端藉由該第一智慧合約帳戶或者日誌的預定主題從該收據中找到特定日誌,並從該特定日誌的資料欄位中獲取可認證訊息。基於所述預定協定堆疊,可確定該可認證訊息中的“第二區塊鏈標識”即為將要接收該可認證訊息的鏈標識,從而可將該第一資料和第一位置資訊發送給第二區塊鏈。可以理解,該中繼端可能連接了不止兩個區塊鏈,例如可能還連接了第三區塊鏈、第四區塊鏈等,因此,該中繼端在獲取該第一資料和第一位置資訊之後,基於其中的第二區塊鏈標識進行資料的發送,也即基於接收鏈標識對接收鏈的尋址過程。
圖8示出根據本說明書實施例的一種跨鏈接收可認證訊息的方法流程圖,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述第二區塊鏈中藉由所述中繼端同步有與至少一個其它區塊鏈分別相關的至少一個第二資料,其中,所述至少一個其它區塊鏈中包括第一區塊鏈,所述方法由第二區塊鏈執行,包括:
步驟S802,從所述中繼端接收第一資料和第一位置資訊,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述第一位置資訊指示所述第一資料在所述第一區塊鏈中的位置;
步驟S804,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
步驟S806,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;以及
步驟S808,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
圖8所示方法與圖7所示方法中的中繼端相對應,在進行圖7所示方法之後,可開始圖8所示方法。在第二區塊鏈中,例如在多個驗證節點進行對可認證訊息的驗證,該驗證節點中藉由中繼端同步有與其它各個區塊鏈分別相關的各個第二資料,該第二資料用於進行對可認證訊息的驗證。根據具體的不同驗證方式,所述驗證節點各不相同,該第二資料也相應地不同,例如在藉由簡單支付驗證(spv)方法進行驗證的情況中,所述驗證節點為spv節點,該第二資料為相應鏈中各個區塊的區塊頭。
首先,在步驟S802,從所述中繼端接收第一資料和第一位置資訊,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述第一位置資訊指示所述第一資料在所述第一區塊鏈中的位置。
所述第一資料如上文所述,例如為藉由中繼端從第一區塊鏈的區塊中獲取的具有預定標誌的收據。中繼端在從第一區塊鏈中獲取該收據及其位置之後即可中轉給第二區塊鏈,從而使得第二區塊鏈中的各個節點獲取該收據及其位置,從而使得第二區塊鏈中的記帳節點或驗證節點等進行下述步驟S804-S808。
步驟S804,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料。
圖4所示協定堆疊還可以用於分層認證過程,所述第一層協定包括發送鏈標識,因此可用於對發送鏈標識的認證過程。因此,首先可基於第一層協定中的發送鏈標識(即第一區塊鏈標識),在本地儲存的各個第二資料中獲取與第一區塊鏈對應的第二資料。由於該協定堆疊的分層設計,使得在進行該步驟的過程中,僅讀取第一層協定的發送鏈標識欄位即可,而不用讀取第一層協定中包括的第二層協定的具體內容。
在步驟S806,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證。
在一個實施例中,所述第一資料為第一區塊鏈的第一區塊中的第一收據,所述第一位置資訊包括第一區塊的區塊編號和第一收據在第一區塊中的收據編號,所述與第一區塊鏈相關的第二資料為第一區塊鏈中的各個區塊的區塊頭。其中,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證首先包括對可認證訊息中第一層協定的發送鏈標識的驗證。所述對發送鏈標識的驗證包括,基於所述第一收據、各個區塊的區塊頭和另外獲取的第一區塊中的與第一收據相關聯的默克爾樹路徑,藉由簡單支付驗證方法(spv驗證方法)驗證:所述第一收據來自於第一區塊鏈中的第一區塊,其中,所述默克爾樹路徑基於所述第一位置資訊獲取。該spv驗證方法包括以下具體步驟:
計算該第一收據的收據雜湊值;
根據上述默克爾樹路徑,計算該默克爾樹的根雜湊值;
將計算的根雜湊值與第一區塊的區塊頭中的收據樹根雜湊值進行比較,以確定該第一收據是否在第一區塊中。
在一個實施例中,所述spv驗證還可以包括,在確定第一收據在第一區塊中之後,根據第一區塊的所處位置,驗證該區塊的區塊頭是否包含在已知最長鏈中,以確定該第一區塊是否經過共識。在一個實施例中,所述區塊鏈標識與區塊鏈中創世塊的頭雜湊值相對應,所述spv驗證還可以包括,藉由第一區塊的區塊頭中的頭雜湊值和父雜湊值及各個區塊的區塊頭,驗證該區塊鏈的創世塊的頭雜湊值是否對應於第一區塊鏈的鏈標識。
在一個實施例中,參考上文對圖4的描述,所述第一收據藉由由第二智慧合約調用第一智慧合約而自動產生的包括圖4所示日誌的收據,在該情況下,該第一收據可自身證明,可認證訊息中的第一帳戶即為發送該訊息的帳戶。
在一個實施例中,所述第一收據由用戶帳戶(即第一帳戶)發送交易而存入區塊鏈中,所述可認證訊息由用戶填入交易資料中,在產生第一收據之後,所述可認證訊息位於所述第一收據中的第一日誌中,在該情況中,所述驗證還包括對可認證訊息中第二層協定中的發送帳戶的驗證,具體是,可基於所述第一日誌的發送欄位,驗證所述第一帳戶為發送所述可認證訊息的帳戶。
在步驟S808,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
在一個實施例中,如上文所述,第一區塊鏈中的第二智慧合約藉由調用第一智慧合約向第二區塊鏈中的第三智慧合約傳遞資訊,以進行對第三智慧合約的調用。在該情況中,第二帳戶即為第三智慧合約的合約帳戶,該可認證訊息中例如為第三智慧合約傳入參數。從而,向所述第二帳戶提供所述可認證訊息包括,藉由以所述可認證訊息為傳入參數調用第三智慧合約,向第二帳戶提供所述可認證訊息。第三智慧合約在經調用之後,基於該可認證訊息中的第三層協定執行具體的業務過程。可以理解,所述第二帳戶不限於為智慧合約帳戶,例如,其也可以為用戶帳戶,在該情況中,可藉由區塊鏈中常用方法(例如發送交易的方法)由驗證節點向該用戶帳戶提供所述可認證訊息。
圖9示出根據本說明書實施例的一種跨鏈中轉可認證訊息的方法流程圖,所述方法由中繼端執行,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述中繼端同步有與各個區塊鏈分別相關的各個第二資料,所述方法包括:
步驟S902,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;
步驟S904,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
步驟S906,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;
步驟S908,在驗證通過的情況中,對所述可認證訊息進行數位簽名;以及
步驟S910,基於所述可認證訊息中的第二區塊鏈標識,將所述可認證訊息及其數位簽名發送給所述第二區塊鏈。
在該方法中,中繼端為可信節點,或者可以為驗證區塊鏈,其可在從第一區塊鏈獲取第一資料之後,在本地進行驗證,並在驗證通過之後進行數位簽名,併發送給第二區塊鏈,從而第二區塊鏈可藉由中繼端的數位簽名進行對第一資料的驗證,從而簡化了第二區塊鏈的驗證過程。該方法中的步驟S902和步驟S910可參考上文中對步驟S702和S704的描述,步驟S904和S906可參考上文中對步驟S804和S806的描述,在此不再贅述。
圖10示出根據本說明書實施例的一種跨鏈接收可認證訊息的方法流程圖,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第一區塊鏈,所述第二區塊鏈中預先儲存有所述中繼端的公鑰,所述方法由第二區塊鏈執行,包括:
步驟S1002,從所述中繼端接收可認證訊息、及所述中繼端對所述可認證訊息的數位簽名,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;
步驟S1004,使用所述中繼端的公鑰對所述數位簽名進行驗證;以及
步驟S1006,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
圖10所示方法與圖9所示方法中的中繼端相對應,在進行圖9所示方法之後,可開始圖10所示方法。該方法可由第二區塊鏈中任一節點或客戶端執行,該節點(或客戶端)本地只需要保存中繼端的公鑰,即可以進行對可認證訊息的驗證,因此,不需要如圖8所示方案,從中繼端接收第一資料,而僅需要接收可認證訊息。其中,步驟S1006可參考上文對步驟S808的描述,在此不再贅述。
圖11示出根據本說明書實施例的一種跨鏈發送可認證訊息的裝置1100,所述跨鏈發送為從第一區塊鏈的第一帳戶向其它區塊鏈發送,所述第一區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第二區塊鏈,所述裝置部署在所述第一區塊鏈,包括:
存入單元111,配置為,藉由所述第一帳戶向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;以及提供單元112,配置為,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述第二區塊鏈中的所述第二帳戶,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置。
在一個實施例中,所述存入單元111還配置為,藉由由所述第一帳戶調用第一智慧合約向第一區塊鏈中存入所述第一資料,其中,所述第一帳戶在調用第一智慧合約時向第一智慧合約傳入至少以下參數:第二區塊鏈標識、第二帳戶及訊息內容。
圖12示出根據本說明書實施例的一種跨鏈中轉可認證訊息的裝置1200,所述裝置部署在中繼端,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述裝置包括:獲取單元121,配置為,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;以及
發送單元122,配置為,基於所述可認證訊息中的第二區塊鏈標識,將所述第一資料和所述第一位置資訊發送給所述第二區塊鏈。
在一個實施例中,所述第一資料被標註有預定標誌,其中,所述獲取單元還配置為,基於所述預定標誌從所述第一區塊鏈獲取所述第一資料和第一位置資訊。
圖13示出根據本說明書實施例的一種跨鏈接收可認證訊息的裝置1300,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述第二區塊鏈中藉由所述中繼端同步有與至少一個其它區塊鏈分別相關的至少一個第二資料,其中,所述至少一個其它區塊鏈中包括第一區塊鏈,所述裝置部署在第二區塊鏈,包括:
接收單元131,配置為,從所述中繼端接收第一資料和第一位置資訊,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述第一位置資訊指示所述第一資料在所述第一區塊鏈中的位置;
獲取單元132,配置為,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
驗證單元133,配置為,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;以及
提供單元134,配置為,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
在一個實施例中,所述第一資料為第一區塊鏈的第一區塊中的第一收據,所述第一位置資訊包括第一區塊的區塊編號和第一收據在第一區塊中的收據編號,所述與第一區塊鏈相關的第二資料為第一區塊鏈中的各個區塊的區塊頭,其中,所述驗證單元133還配置為,基於所述第一收據、所述各個區塊的區塊頭和第一區塊中的與第一收據相關聯的默克爾樹路徑,藉由簡單支付驗證方法驗證:所述第一收據來自於第一區塊鏈中的第一區塊,其中,所述默克爾樹路徑基於所述第一位置資訊獲取。
在一個實施例中,所述可認證訊息位於所述第一收據中的第一日誌中,所述驗證單元133還配置為,基於所述第一日誌的發送欄位,驗證所述第一帳戶為發送所述可認證訊息的帳戶。
在一個實施例中,所述第二帳戶為第三智慧合約的合約帳戶,所述提供單元134還配置為,藉由以所述可認證訊息為傳入參數調用第三智慧合約,向第二帳戶提供所述可認證訊息。
圖14示出根據本說明書實施例的一種跨鏈中轉可認證訊息的裝置1400,所述裝置部署在中繼端,所述中繼端與至少兩個區塊鏈連接,所述至少兩個區塊鏈中包括第一區塊鏈和第二區塊鏈,其中,所述第一區塊鏈中預存有經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶,所述中繼端同步有與各個區塊鏈分別相關的各個第二資料,所述裝置包括:
第一獲取單元141,配置為,從所述第一區塊鏈獲取所述第一資料和第一位置資訊,所述第一位置資訊指示第一資料在第一區塊鏈中的位置;
第二獲取單元142,配置為,基於所述可認證訊息中的第一區塊鏈標識,獲取與所述第一區塊鏈相關的第二資料;
驗證單元143,配置為,基於所述第一資料、與所述第一區塊鏈相關的第二資料以及所述第一位置資訊,對所述可認證訊息進行驗證;
簽名單元144,配置為,在驗證通過的情況中,對所述可認證訊息進行數位簽名;以及
發送單元145,配置為,基於所述可認證訊息中的第二區塊鏈標識,將所述可認證訊息及其數位簽名發送給所述第二區塊鏈。
圖15示出根據本說明書實施例的一種跨鏈接收可認證訊息的裝置1500,所述跨鏈接收為由第二區塊鏈的第二帳戶從其它區塊鏈接收,所述第二區塊鏈與中繼端連接,所述中繼端還與至少一個其它區塊鏈連接,所述至少一個其它區塊鏈中包括第一區塊鏈,所述第二區塊鏈中預先儲存有所述中繼端的公鑰,所述裝置部署在第二區塊鏈,包括:
接收單元151,配置為,從所述中繼端接收可認證訊息、及所述中繼端對所述可認證訊息的數位簽名,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位,其中,發送區塊鏈標識、發送帳戶、接收區塊鏈標識、接收帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶、第二區塊鏈標識、第二帳戶;
驗證單元152,配置為,使用所述中繼端的公鑰對所述數位簽名進行驗證;以及
提供單元153,配置為,在驗證通過之後,基於所述可認證訊息中的第二帳戶,向所述第二帳戶提供所述可認證訊息。
本說明書另一方面提供一種電腦可讀儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行上述任一項方法。
本說明書另一方面提供一種計算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行碼,所述處理器執行所述可執行碼時,實現上述任一項方法。
根據本說明書實施例的跨鏈方案抽象區塊鏈互操作模型,設計一種可認證訊息,使得區塊鏈發出的訊息可以被其他鏈認證:訊息來自於哪條鏈,且由鏈上的哪個身分實體(帳號/合約)發出。使得基於此可認證訊息,允許進行跨鏈應用(合約)編程,使開發者更輕易地開發出各種跨鏈業務、應用,並且該可認證訊息保留較高的擴展性,支持疊加協定堆疊,使各種跨鏈互操作技術、應用場景都能標準化,另外,該可認證訊息可以被異構平臺實現,使得區塊鏈僅實現一種跨鏈適配升級,可以接入多種跨鏈平臺、連接多條鏈。
需要理解,本文中的“第一”,“第二”等描述,僅僅為了描述的簡單而對相似概念進行區分,並不具有其他限定作用。
本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和並行處理也是可以的或者可能是有利的。
本領域具有通常知識者應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、電腦軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執軌道,取決於技術方案的特定應用和設計約束條件。本領域具有通常知識者可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本申請的範圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以用硬體、處理器執軌道的軟體模組,或者二者的結合來實施。軟體模組可以置於隨機存取記憶體(RAM)、內部儲存器、唯讀記憶體(ROM)、電可程式ROM、電可擦除可程式ROM、暫存器、硬碟、抽取式磁碟、CD-ROM、或技術領域內所公知的任意其它形式的儲存媒體中。
以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,並不用於限定本發明的保護範圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
11:第一區塊鏈
12:中繼端
13:第二區塊鏈
1100:裝置
111:存入單元
112:提供單元
1200:裝置
121:獲取單元
122:發送單元
1300:裝置
131:接收單元
132:獲取單元
133:驗證單元
134:提供單元
1400:裝置
141:第一獲取單元
142:第二獲取單元
143:驗證單元
144:簽名單元
145:發送單元
1500:裝置
151:接收單元
152:驗證單元
153:提供單元
S202~S204:步驟
S702~S704:步驟
S802~S808:步驟
S902~S910:步驟
S1002~S1006:步驟
藉由結合圖式描述本說明書實施例,可以使得本說明書實施例更加清楚:
[圖1]示出根據本說明書實施例的跨鏈系統的示意圖;
[圖2]示出根據本說明書實施例的一種跨鏈發送可認證訊息的方法流程圖;
[圖3]示出了在執行第一智慧合約之後產生的日誌的示意圖;
[圖4]示出根據本說明書實施例的預定協定堆疊的示意圖;
[圖5]示出了可認證訊息的示意形式;
[圖6]示出根據本說明書實施例的高適用性的協定堆疊的示意圖;
[圖7]示出根據本說明書實施例的一種跨鏈中轉可認證訊息的方法流程圖;
[圖8]示出根據本說明書實施例的一種跨鏈接收可認證訊息的方法流程圖;
[圖9]示出根據本說明書實施例的一種跨鏈中轉可認證訊息的方法流程圖;
[圖10]示出根據本說明書實施例的一種跨鏈接收可認證訊息的方法流程圖;
[圖11]示出根據本說明書實施例的一種跨鏈發送可認證訊息的裝置1100;
[圖12]示出根據本說明書實施例的一種跨鏈中轉可認證訊息的裝置1200;
[圖13]示出根據本說明書實施例的一種跨鏈接收可認證訊息的裝置1300;
[圖14]示出根據本說明書實施例的一種跨鏈中轉可認證訊息的裝置1400;
[圖15]示出根據本說明書實施例的一種跨鏈接收可認證訊息的裝置1500。