基於處理模組跨鏈發送可認證訊息的方法和裝置
本說明書實施例係有關區塊鏈技術領域,更具體地,有關一種跨鏈發送可認證訊息的方法和裝置。
區塊鏈技術也被稱之為分散式帳本技術,是一種去中心化的分散式資料庫技術,其特點是去中心化、公開透明、不可篡改、可信任。區塊鏈的每筆資料,都會廣播到全網的區塊鏈節點,每個全節點都有全量的、一致的資料。隨著區塊鏈技術的火熱,出現了許多不同類型的鏈,應用在金融、健康醫療、供應鏈、資產管理和溯源等領域。然而大部分鏈上應用(加密貨幣或者智能合約)都無法跨越目前鏈的邊界,不能與其他鏈協同合作實現價值的流通,從而限制了區塊鏈的發揮空間。如何能讓不同類型的鏈協同合作實現價值的流通成了探索的方向。目前已出現多種跨鏈技術,然而,每種跨鏈技術都有自己獨特設計,應對的場景也各不相同,針對不同場景下的跨鏈,一條鏈可能需要接入多種跨鏈平台。
因此,需要一種更有效的跨鏈傳遞資訊的方案。
本說明書實施例旨在提供一種更有效的跨鏈發送可認證訊息的方案,以解決現有技術中的不足。
為實現上述目的,本說明書一個態樣提供一種跨鏈發送可認證訊息的方法,所述跨鏈發送為從第一區塊鏈的第一帳戶向鏈外發送,所述第一區塊鏈與中繼端連接,所述方法由所述第一區塊鏈執行,包括:
透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息中至少包括滿足預定協定的以下欄位:發送區塊鏈標識、發送帳戶、接收對象資訊及訊息內容,其中,發送區塊鏈標識、發送帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶,其中,所述第一帳戶在呼叫所述第一介面時傳入至少以下參數:接收對象資訊及訊息內容;以及
將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述接收對象,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置,所述中繼端與所述接收對象所在系統連接。
在一個實施例中,所述處理模組包括第一處理器和第二處理器,所述第一介面為所述第一處理器的介面,其中,透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料包括,透過所述第一處理器進行以下步驟:
透過所述第一介面從所述呼叫至少獲取以下參數:第一帳戶、接收對象資訊和訊息內容;
基於所述參數產生所述可認證訊息;以及
將所述可認證訊息提供給所述第二處理器。
在一個實施例中,透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料還包括,透過所述第二處理器進行以下步驟:
從第一處理器獲取所述可認證訊息;
基於所述可認證訊息產生特定結構資料,以用於產生所述第一資料。
在一個實施例中,所述第二處理器具有第二介面,其中,將所述可認證訊息提供給所述第二處理器包括,透過呼叫第二介面,將所述可認證訊息提供給所述第二處理器。
在一個實施例中,所述第一資料被標注有預定標誌。
在一個實施例中,所述第一資料為收據,所述特定結構資料為日誌,所述日誌的發送欄位、接收欄位和資料欄位分別為:第一處理器標識、第二處理器標識和所述可認證訊息,所述第二處理器還包括與本地虛擬機連接的第三介面,其中,透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料還包括,透過所述第二處理器進行以下步驟:在產生所述日誌之後,透過所述第三介面將所述日誌提供給所述虛擬機,以用於產生所述第一資料。
在一個實施例中,所述預定標誌為上述第一處理器標識或所述第二處理器標識。
在一個實施例中,所述日誌被標注有預定主題,所述預定標誌為所述預定主題。
在一個實施例中,所述第一帳戶為第一智能合約的合約帳戶。
在一個實施例中,所述中繼端還與第二區塊鏈連接,所述接收對象資訊欄位包括接收區塊鏈標識欄位和接收帳戶欄位,其分別與第二區塊鏈標識、第二區塊鏈中的第二帳戶相對應。
在一個實施例中,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位和第三層協定,第三層協定包括接收區塊鏈標識欄位、接收帳戶欄位和訊息內容欄位。
在一個實施例中,所述第一層協定中還包括協定版本號欄位和預留欄位。
在一個實施例中,所述第二層中還包括類型欄位,用於指示該可認證訊息的使用場景類型。
在一個實施例中,所述類型為以下任一類型:訊息類型、遠端程式呼叫類型、發布/訂閱類型。
在一個實施例中,所述第三層協定中還包括序號欄位,用於在所述第一帳戶向所述第二帳戶多次發送可認證訊息的情況中表示目前發送序號。
在一個實施例中,所述可認證訊息滿足預定協定堆疊,所述預定協定堆疊包括由外向內的第一至第三層協定,其中,第一層協定包括發送區塊鏈標識欄位、接收區塊鏈標識欄位和第二層協定,第二層協定包括發送帳戶欄位、接收帳戶欄位和第三層協定,第三層協定包括訊息內容欄位。
本說明書另一態樣提供一種跨鏈發送可認證訊息的裝置,所述跨鏈發送為從第一區塊鏈的第一帳戶向鏈外發送,所述第一區塊鏈與中繼端連接,所述裝置部署在所述第一區塊鏈,包括:
存入單元,配置成,透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息中至少包括滿足預定協定的以下欄位:發送區塊鏈標識、發送帳戶、接收對象資訊及訊息內容,其中,發送區塊鏈標識、發送帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶,其中,所述第一帳戶在呼叫所述第一介面時傳入至少以下參數:接收對象資訊及訊息內容;以及
提供單元,配置成,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述接收對象,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置,所述中繼端與所述接收對象所在系統連接。
在一個實施例中,所述處理模組包括第一處理器和第二處理器,所述第一介面為所述第一處理器的介面,其中,所述存入單元還包括部署在所述第一處理器的以下子單元:
第一獲取子單元,配置成,透過所述第一介面從所述呼叫至少獲取以下參數:第一帳戶、接收對象資訊和訊息內容;
第一產生子單元,配置成,基於所述參數產生所述可認證訊息;以及
第一提供子單元,配置成,將所述可認證訊息提供給所述第二處理器。
在一個實施例中,所述存入單元還包括部署在所述第二處理器的以下子單元:
第二獲取子單元,配置成,從第一處理器獲取所述可認證訊息;
第二產生子單元,配置成,基於所述可認證訊息產生特定結構資料,以用於產生所述第一資料。
在一個實施例中,所述第二處理器具有第二介面,其中,所述提供子單元還配置成,透過呼叫第二介面,將所述可認證訊息提供給所述第二處理器。
在一個實施例中,所述第一資料為收據,所述特定結構資料為日誌,所述日誌的發送欄位、接收欄位和資料欄位分別為:第一處理器標識、第二處理器標識和所述可認證訊息,所述第二處理器還包括與本地虛擬機連接的第三介面,所述存入單元還包括部署在所述第二處理器的第二提供子單元,配置成,在產生所述日誌之後,透過所述第三介面將所述日誌提供給所述虛擬機,以用於產生所述第一資料。
本說明書另一態樣提供一種電腦可讀儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行上述任一項方法。
本說明書另一態樣提供一種計算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行碼,所述處理器執行所述可執行碼時,實現上述任一項方法。
在本說明書實施例的跨鏈方案中,透過平台級的處理器進行可認證訊息的相關處理,使得處理速度更快,效率更高,並且在該處理器中可根據平台帳本的結構定制化特定結構資料,以取得更好的性能和擴展性。
下面將結合圖式描述本說明書實施例。
圖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,透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息中至少包括滿足預定協定的以下欄位:發送區塊鏈標識、發送帳戶、接收對象資訊及訊息內容,其中,發送區塊鏈標識、發送帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶,其中,所述第一帳戶在呼叫所述第一介面時傳入至少以下參數:接收對象資訊及訊息內容。
如上文所述,基於接收對象的不同,接收對象資訊也相應地不同。例如,在接收對象為另一個區塊鏈中的一組帳戶的情況中,該接收對象資訊可包括該另一個區塊鏈的鏈標識、該組的組標識,或者還可以包括該組中每個帳戶的帳戶標識等等。在接收對象為例如鏈下通道中的特定對象的情況中,接收對象資訊可包括該鏈下通道的標識和該對象的標識等等。在一個實施例中,所述接收對象為第二區塊鏈中的第二帳戶,從而,所述接收對象資訊包括接收區塊鏈標識(亦即,第二區塊鏈)和接收帳戶(亦即,第二帳戶),下文中將以該情況為例進行詳細描述。
其中,第一帳戶可以為用戶帳戶,或者也可以為合約帳戶。在一個實施例中,所述第一資料可以為區塊鏈中的交易、收據等,在一個實施例中,所述第一資料可以為具有特定結構的資料,其例如被存入各個節點預設的專用資料庫中。這些資料都是經過各個節點的共識存入區塊鏈中,因此其在各個節點是一致的,並且是可驗證的。
圖3示出根據本說明書實施例的區塊鏈中節點本地構造示意圖。該節點為區塊鏈中的全節點,其中包括交易接收層31、共識層32、交易執行層33和儲存層34。其中,如本領域技術人員已知的,交易執行層中通常包括虛擬機,用於執行與交易相關的可執行碼。在本說明書實施例中,在交易執行層中除了包括虛擬機之外,還在本地預置了用於向區塊鏈中存入可認證訊息(AM)的處理模組。如圖3中所示,所述處理模組具體包括第一處理器和第二處理器,其中,第一處理器包括第一介面(圖中介面1),該第一介面供虛擬機中進行呼叫,第二處理器包括第二介面(圖中介面2)和第三介面(圖中介面3)。所述第二介面供第一處理器呼叫,用於在呼叫之後從第一處理器獲取可認證訊息,並基於可認證訊息產生特定結構資料。所述第三介面與虛擬機連接,以將所述特定結構資料提供給虛擬機,以透過虛擬機產生第一資料並將第一資料存入儲存層(例如,區塊)中。
具體是,例如,第一區塊鏈中的第一帳戶透過呼叫第一介面,以用於向第一區塊鏈存入第一資料,從而向第二區塊鏈中的第二帳戶傳遞可認證訊息。所述第一帳戶在呼叫第一介面時向第一處理器傳入至少以下參數:第二區塊鏈標識、第二帳戶及訊息內容。第一處理器在接收到呼叫請求之後,其從發出呼叫的帳戶(即第一帳戶)獲取其帳戶,將第一帳戶、預置的第一區塊鏈的鏈標識以及在呼叫時傳入的參數(亦即,第二區塊鏈標識、第二帳戶及訊息內容)以預定格式(亦即,預定協定)組合成可認證訊息,並將該可認證訊息提供給第二處理器。在一個實施例中,第一處理器可透過呼叫第二處理器的第二介面,以所述可認證訊息作為參數傳給第二處理器。
第二處理器在獲取所述可認證訊息之後,例如,可基於所述可認證訊息產生特定結構資料。該特定結構資料例如為日誌。圖4示出了透過第二處理器產生的日誌的示意圖。該日誌(Log)具有預定主題(Topic),例如該主題可以預設為“AM”,以用於指示該日誌是用於對鏈外發送AM訊息的日誌。所述日誌的發送欄位(“From”)、接收欄位(“To”)和資料欄位(“Data”)分別為:第一處理器標識(例如,Msg-Client)、第二處理器標識(例如,AM-IO-Client)和所述可認證訊息。第二處理器在產生該日誌之後,將該日誌發送給虛擬機。虛擬機在接收到該日誌之後,將該日誌添加到與該交易相關的收據中,從而產生第一資料。該第一資料在經過共識之後被存入到各個節點的區塊中,從而將所述可認證訊息存入區塊中。
在所述收據(亦即,第一資料)被存入區塊中之後,中繼端例如可透過所述收據中日誌的以下任一項作為預定標誌查找該第一資料:預定主題、第一處理器標識和第二處理器標識。可以理解,在所述第一資料為存入關係型資料庫的特定結構資料的情況中,所述第一資料並不需要被標注特定標誌。
可以理解,圖3所示的節點本地構造以及上文的描述僅是示意性的,本說明書實施例不限於此。例如,所述第一資料不一定為收據,其還可以為交易,或者所述特定結構資料本身。所述第一資料也不一定透過虛擬機被存入區塊中,例如,所述第二處理器在產生特定結構資料之後,可在共識之後將該特定結構資料存入本地的關係型資料庫中。
其中,上述預定協定可以根據具體場景的需要進行設定,在此不特定限定。在一個實施例中,在所述接收對象為第二區塊鏈中的第二帳戶的情況中,所述可認證訊息滿足預定協定堆疊。圖5示出根據本說明書實施例的預定協定堆疊的示意圖。如圖5所示,圖中最下層為根據本說明書實施例的第一層協定,該第一層協定中包括發送區塊鏈標識欄位(S_C_ID)和第二層協定;圖中中間層為第二層協定,該第二層協定中包括發送帳戶欄位(S_A_id)和第三層協定;圖中最上層為第三層協定,該第三層協定中包括接收區塊鏈標識欄位(R_C_ID)、接收帳戶欄位(R_A_id)和訊息內容欄位。可以理解,發送帳戶應為發送區塊鏈中的帳戶,接收帳戶應為接收區塊鏈中的帳戶。
例如,如上文所述,所述可認證訊息為從第一區塊鏈中的第一帳戶發送給第二區塊鏈中的第二帳戶的訊息,假設第一區塊鏈的鏈標識為ID1,第一帳戶為id1,第二區塊鏈的鏈標識為ID2,第二帳戶為id2,則,圖6示出了可認證訊息的示意形式。如圖6所示,根據圖5所示的協定堆疊,第一層協定包括ID1和第二層協定,第二層協定包括id1和第三層協定,第三層協定包括ID2、id2和訊息內容。
該協定堆疊基於可認證訊息的認證過程設計,其中,第一層協定和第二層協定分別對應於對發送鏈和發送帳戶的認證過程,第三層協定對應於具體的通訊過程和業務處理過程。透過這樣設計協定堆疊,可使得在接收到可認證訊息之後,對其分層驗證並在驗證通過之後獲取訊息內容並進行具體業務處理,因此,每層協定都具有其特定的認證語義,以便於分層認證的過程。
例如,所述第一資料為第一收據,第二區塊鏈中的驗證節點在透過中繼端接收該第一收據之後,對所述可認證訊息進行驗證首先包括對可認證訊息中第一層協定的發送鏈標識的驗證。所述對發送鏈標識的驗證包括,基於所述第一收據、各個區塊的區塊頭和另外獲取的第一區塊中的與第一收據相關聯的默克爾樹路徑,透過簡單支付驗證方法(spv驗證方法)驗證:所述第一收據來自於第一區塊鏈中的第一區塊,其中,所述默克爾樹路徑基於所述第一位置資訊獲取。另外,所述驗證還可以包括對可認證訊息中第二層協定中的發送帳戶的驗證,由於所述可認證訊息中的發送帳戶由第一處理器基於對其的呼叫帳戶填入,因此,在驗證所述區塊是第一區塊鏈中的區塊之後,自動驗證了所述第一帳戶為發送所述可認證訊息的帳戶。
在一個實施例中,第一層協定中還包括協定版本號欄位和預留欄位。以允許對該協定堆疊進行升級和擴展。其中,所述預留欄位為空欄位。
在一個實施例中,第二層協定中還包括類型欄位,用於指示該可認證訊息的使用場景類型。從而使得各個使用場景可疊加使用該協定堆疊。例如,針對不同的使用場景(亦即,可認證訊息中的不同的類型),所述訊息內容欄位中可對應於不同的內容、具有不同的格式等。所述類型為以下任一類型:訊息類型、遠端程式呼叫類型、發布/訂閱類型,等等。
所述第三層協定中還包括序號欄位,用於在所述第一帳戶向所述第二帳戶多次發送可認證訊息的情況中表示目前發送序號。
圖7示出根據本說明書實施例的高適用性的協定堆疊的示意圖。如圖7所示,相比於圖5所示的協定堆疊,該協定堆疊的第一層協定中還包括版本號欄位和預留欄位,該協定堆疊的第二層協定中還包括類型欄位,該協定堆疊的第三層協定中還包括序號欄位。如上文所述,該協定堆疊可升級、可擴展,可用於多種場景類型,可進行多次通訊,因此具有高適用性。
圖8示出根據本說明書實施例的另一預定協定堆疊的示意圖。如圖8所示,圖中最下層為根據本說明書實施例的第一層協定,該第一層協定中包括發送區塊鏈標識欄位(S_C_ID)、接收區塊鏈標識欄位(R_C_ID)和第二層協定;圖中中間層為第二層協定,該第二層協定中包括發送帳戶欄位(S_A_id)、接收帳戶欄位(R_A_id)和第三層協定;圖中最上層為第三層協定,該第三層協定中包括訊息內容欄位。可以理解,發送帳戶應為發送區塊鏈中的帳戶,接收帳戶應為接收區塊鏈中的帳戶。
例如,如上文所述,所述可認證訊息為從第一區塊鏈中的第一帳戶發送給第二區塊鏈中的第二帳戶的訊息,假設第一區塊鏈的鏈標識為ID1,第一帳戶為id1,第二區塊鏈的鏈標識為ID2,第二帳戶為id2,則,圖9示出了可認證訊息的示意形式。如圖9所示,根據圖8所示的協定堆疊,第一層協定包括ID1、ID2和第二層協定,第二層協定包括id1、id2和第三層協定,第三層協定包括訊息內容。
該協定堆疊基於可認證訊息的傳輸過程設計,其中,第一層協定對應於從第一區塊鏈到第二區塊鏈之間的傳輸,第二層協定對應於從第一帳戶到第二帳戶之間的傳輸,第三層協定對應於在傳輸到第二帳戶之後基於訊息內容的具體業務處理過程。透過這樣設計協定堆疊,可使得在傳輸可認證訊息的過程中,透過從外至內分層讀取該可認證訊息,即,首先透過讀取第一層協定中的ID2,從而可將該可認證訊息先傳輸到第二區塊鏈,然後透過讀取第二層協定中的id2,再將該可認證訊息傳輸到第二帳戶,最後透過讀取第三層協定中的訊息內容並提供給第二帳戶,從而使得第二帳戶基於訊息內容進行具體的業務處理。
在一個實施例中,第一層協定中還包括協定版本號欄位和預留欄位。以允許對該協定堆疊進行升級和擴展。其中,所述預留欄位為空欄位。
在一個實施例中,第三層協定中還包括類型欄位,用於指示該可認證訊息的使用場景類型。從而使得各個使用場景可疊加使用該協定堆疊。所述第三層協定中還包括序號欄位,用於在所述第一帳戶向所述第二帳戶多次發送可認證訊息的情況中表示目前發送序號。
所述協定版本號欄位、預留欄位、類型欄位、序號欄位等各自對應的欄位值可類似地由第一帳戶在呼叫第一介面時作為輸入參數傳入第一處理器,從而使得第一處理器可基於這些輸入參數輸出包含這些欄位值的可認證訊息。
圖10示出根據本說明書實施例的高適用性的協定堆疊的示意圖。如圖10所示,相比於圖8所示的協定堆疊,該協定堆疊的第一層協定中還包括版本號欄位和預留欄位,該協定堆疊的第三層協定中還包括類型欄位和序號欄位。如上文所述,該協定堆疊可升級、可擴展,可用於多種場景類型,可進行多次通訊,因此具有高適用性。
在步驟S204,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述接收對象,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置,所述中繼端與所述接收對象所在系統連接。
如上文所述,在本說明書實施例中,可使用不同的中繼端,根據中繼端的不同的實現方式,可透過不同的方法將第一資料提供給中繼端。例如,在所述接收對象為第二區塊鏈中的第二帳戶的情況中,該中繼端本身為第一區塊鏈和第二區塊鏈中的節點,從而中繼端可從本地儲存的資料(如區塊、狀態樹)中獲取所述第一資料,並同時獲取第一位置資料,所述第一位置資訊指示第一資料在區塊鏈中的位置,例如,在第一資料為收據的情況中,所述第一位置資訊包括收據所在區塊編號、以及收據在該區塊中的編號等。例如,該中繼端為與第一區塊鏈和第二區塊鏈都連接的中轉裝置,從而,第一區塊鏈的任一節點可根據中繼端的請求從本地獲取該第一資料及其位置資訊,並將其發送給該中繼端。中繼端在獲取該第一資料及其位置資訊之後,將根據其自身的形式的不同,執行不同的步驟,以用於將第一資料中的可認證訊息提供給第二區塊鏈中的第二帳戶。
圖11示出根據本說明書實施例的一種跨鏈發送可認證訊息的裝置1100,所述跨鏈發送為從第一區塊鏈的第一帳戶向鏈外發送,所述第一區塊鏈與中繼端連接,所述裝置部署在所述第一區塊鏈,包括:
存入單元111,配置成,透過由第一帳戶呼叫本地預置的處理模組的第一介面,以基於所述處理模組的處理向第一區塊鏈中存入經共識的第一資料,其中,所述第一資料中包括可認證訊息,所述可認證訊息中至少包括滿足預定協定的以下欄位:發送區塊鏈標識、發送帳戶、接收對象資訊及訊息內容,其中,發送區塊鏈標識、發送帳戶欄位分別對應於以下欄位值:第一區塊鏈標識、第一帳戶,其中,所述第一帳戶在呼叫所述第一介面時傳入至少以下參數:接收對象資訊及訊息內容;以及
提供單元112,配置成,將所述第一資料和第一位置資訊提供給所述中繼端,以用於將所述可認證訊息提供給所述接收對象,其中,所述第一位置資訊指示第一資料在第一區塊鏈中的位置,所述中繼端與所述接收對象所在系統連接。
在一個實施例中,所述處理模組包括第一處理器和第二處理器,所述第一介面為所述第一處理器的介面,其中,所述存入單元還包括部署在所述第一處理器的以下子單元:
第一獲取子單元1111,配置成,透過所述第一介面從所述呼叫至少獲取以下參數:第一帳戶、接收對象資訊和訊息內容;
第一產生子單元1112,配置成,基於所述參數產生所述可認證訊息;以及
第一提供子單元1113,配置成,將所述可認證訊息提供給所述第二處理器。
在一個實施例中,所述存入單元還包括部署在所述第二處理器的以下子單元:
第二獲取子單元1114,配置成,從第一處理器獲取所述可認證訊息;
第二產生子單元1115,配置成,基於所述可認證訊息產生特定結構資料,以用於產生所述第一資料。
在一個實施例中,所述第二處理器具有第二介面,其中,所述提供子單元還配置成,透過呼叫第二介面,將所述可認證訊息提供給所述第二處理器。
在一個實施例中,所述第一資料為收據,所述特定結構資料為日誌,所述日誌的發送欄位、接收欄位和資料欄位分別為:第一處理器標識、第二處理器標識和所述可認證訊息,所述第二處理器還包括與本地虛擬機連接的第三介面,所述存入單元還包括部署在所述第二處理器的第二提供子單元1116,配置成,在產生所述日誌之後,透過所述第三介面將所述日誌提供給所述虛擬機,以用於產生所述第一資料。
本說明書另一態樣提供一種電腦可讀儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行上述任一項方法。
本說明書另一態樣提供一種計算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行碼,所述處理器執行所述可執行碼時,實現上述任一項方法。
在本說明書實施例的跨鏈方案中,透過平台級的處理器進行可認證訊息的相關處理,使得處理速度更快,效率更高,並且在該處理器中可根據平台帳本的結構定制化特定結構資料,以取得更好的性能和擴展性。另外,根據本說明書實施例的跨鏈方案抽象區塊鏈互動操作模型,設計一種可認證訊息,使得區塊鏈發出的訊息可以被其他鏈認證:訊息來自於哪條鏈,且由鏈上的哪個身份實體(帳號/合約)發出。使得基於此可認證訊息,允許進行跨鏈應用(合約)編程,使開發者更輕易地開發出各種跨鏈業務、應用。
需要理解,本文中的“第一”,“第二”等描述,僅僅為了描述的簡單而對相似概念進行區分,並不具有其他限定作用。
本說明書中的各個實施例均採用漸進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範疇內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多工處理和並行處理也是可以的或者可能是有利的。
本領域普通技術人員應該還可以進一步意識到,結合本文中所揭示的實施例描述的各示例的單元及演算法步驟,能夠以電子硬體、電腦軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。本領域普通技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
結合本文中所揭示的實施例描述的方法或演算法的步驟可以用硬體、處理器執行的軟體模組,或者二者的結合來實施。軟體模組可以置於隨機記憶體(RAM)、內部記憶體、唯讀記憶體(ROM)、電可編程ROM、電可擦除可編程ROM、暫存器、硬碟、可移動磁碟、CD-ROM、或技術領域內所公知的任意其它形式的儲存媒體中。
以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,並不用來限定本發明的保護範圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
11:第一區塊鏈
12:中繼端
13:第二區塊鏈
S202:方法步驟
S204:方法步驟
31:交易接收層
32:共識層
33:交易執行層
34:儲存層
111:存入單元
112:提供單元
1100:跨鏈發送可認證訊息的裝置
1111:第一獲取子單元
1112:第一產生子單元
1113:第一提供子單元
1114:第二獲取子單元
1115:第二產生子單元
1116:第二提供子單元
透過結合圖式描述本說明書實施例,可以使得本說明書實施例更加清楚:
[圖1] 示出根據本說明書實施例的跨鏈系統的示意圖;
[圖2] 示出根據本說明書實施例的一種跨鏈發送可認證訊息的方法流程圖;
[圖3] 示出根據本說明書實施例的區塊鏈中節點本地構造示意圖;
[圖4] 示出了透過第二處理器產生的日誌的示意圖;
[圖5] 示出根據本說明書實施例的預定協定堆疊的示意圖;
[圖6] 示出了可認證訊息的示意形式;
[圖7] 示出根據本說明書實施例的高適用性的協定堆疊的示意圖;
[圖8] 示出根據本說明書實施例的另一預定協定堆疊的示意圖;
[圖9] 示出了可認證訊息的示意形式;
[圖10] 示出根據本說明書實施例的高適用性的協定堆疊的示意圖;
[圖11] 示出根據本說明書實施例的一種跨鏈發送可認證訊息的裝置1100。