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