发明内容
本说明书实施例旨在提供一种更有效的跨链中转数据的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种基于中继设备网络跨链中转数据的方法,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接、并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,所述第二中继设备与第二区块链连接,所述方法由所述第一中继设备执行,包括:
从所述第一区块链获取跨链数据,所述跨链数据中包括该跨链数据的接收链标识;
基于所述跨链数据确定所述跨链数据的接收链为第二区块链;
确定本地是否与所述第二区块链连接;
在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述预定数目个中继设备中包括所述第二中继设备,其中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备包括,基于所述查找表,将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述预定数目个中继设备中不包括所述第二中继设备,其中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备包括,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的第三中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述方法还包括,在确定本地与所述第二区块链连接的情况中,将所述跨链数据提供给所述第二区块链。
在一种实施方式中,所述跨链数据包括第一数据及其证明数据。
在一种实施方式中,所述第一数据为所述第一区块链中的以下任一种数据:交易数据、收据数据、账户状态数据、区块头数据。
本说明书另一方面提供一种基于中继设备网络跨链中转消息的方法,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接,并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,并且,所述第一中继设备中包括预言机,所述第二中继设备与第二区块链连接,所述方法由所述第一中继设备执行,包括:
从所述第一区块链获取第一数据及其证明数据,其中,所述第一数据中包括第一消息数据,所述第一消息数据中包括该第一消息数据的接收链标识;
由所述预言机使用所述证明数据对所述第一数据进行验证;
在验证通过的情况中,由所述预言机对所述第一消息数据进行数字签名;
基于所述第一消息数据确定所述第一消息数据的接收链为第二区块链;
确定本地是否与所述第二区块链连接;
在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述第一消息数据及对其的数字签名发送给预定数目个中继设备中的至少一个中继设备,以用于将所述第一消息数据及对其的数字签名发送给所述第二中继设备。
在一种实施方式中,在验证通过的情况中,对所述第一消息数据进行数字签名包括,在验证通过的情况中,将所述第一消息数据的格式转换为预定格式,对具有预定格式的第一消息数据进行数字签名。
本说明书另一方面提供一种基于中继设备网络跨链中转数据的装置,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接、并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,所述第二中继设备与第二区块链连接,所述装置部署于所述第一中继设备,包括:
获取单元,配置为,从所述第一区块链获取跨链数据,所述跨链数据中包括该跨链数据的接收链标识;
第一确定单元,配置为,基于所述跨链数据确定所述跨链数据的接收链为第二区块链;
第二确定单元,配置为,确定本地是否与所述第二区块链连接;
发送单元,配置为,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述预定数目个中继设备中包括所述第二中继设备,其中,所述发送单元还配置为,基于所述查找表,将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述预定数目个中继设备中不包括所述第二中继设备,其中,所述发送单元还配置为,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的第三中继设备,以用于将所述跨链数据发送给所述第二中继设备。
本说明书另一方面提供一种基于中继设备网络跨链中转消息的装置,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接,并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,并且,所述第一中继设备中包括预言机,所述第二中继设备与第二区块链连接,所述装置部署于所述第一中继设备,包括:
获取单元,配置为,从所述第一区块链获取第一数据及其证明数据,其中,所述第一数据中包括第一消息数据,所述第一消息数据中包括该第一消息数据的接收链标识;
验证单元,配置为,由所述预言机使用所述证明数据对所述第一数据进行验证;
签名单元,配置为,在验证通过的情况中,由所述预言机对所述第一消息数据进行数字签名;
第一确定单元,配置为,基于所述第一消息数据确定所述第一消息数据的接收链为第二区块链;
第二确定单元,配置为,确定本地是否与所述第二区块链连接;
发送单元,配置为,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述第一消息数据及对其的数字签名发送给预定数目个中继设备中的至少一个中继设备,以用于将所述第一消息数据及对其的数字签名发送给所述第二中继设备。
在一种实施方式中,所述签名单元包括,转换子单元,配置为,在验证通过的情况中,将所述第一消息数据的格式转换为预定格式,签名子单元,配置为,对具有预定格式的第一消息数据进行数字签名。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器在执行所述计算机程序或指令时,实现上述任一项方法。
通过根据本说明书实施例的跨链中转消息的方案,可在区块链的链下实现支持路由的中继设备网络,从而可基于该中继设备网络形成跨链网络拓扑,该跨链网络拓扑支持大规模跨链网络连接。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的跨链系统的示意图。如图1所示,所述跨链系统包括第一区块链11、中继设备网络12和第二区块链13。其中,所述中继设备网络12中包括多个具有预定连接关系的中继设备,图1仅示意示出第一中继设备121和第二中继设备122,其中以虚线示出的云朵表示,第一中继设备121与第二中继设备122有可能直接连接,或者有可能通过其它中继设备连接。中继设备网络12中的每个中继设备与至少一个区块链连接,每个中继设备中存储有查找表,该查找表记录了预定数目个中继设备与其连接的区块链的对应关系,从而通过中继设备网络12中的多个中继设备,中继设备网络可与更多个区块链连接。图1中示意示出了,第一区块链11与第一中继设备121连接,第二区块链13与第二中继设备122连接。
其中,第一区块链11中部署有第一合约和消息发送合约,第二区块链13中部署有消息接收合约和第四合约。其中,所述第一合约和第四合约例如为用于进行跨链转账的合约。第一区块链11中的账户A例如希望给第二区块链13中的账户B进行转账,账户A通过发送调用第一合约的交易而发起转账。当在第一区块链11中执行在该交易时,执行第一合约,从而对账户A的余额减去转账的数目,并执行第一合约中调用的消息发送合约,从而在第一区块链中存入例如收据m,其中m为收据编号,收据m中包括待发送给第二区块链13中的第四合约的消息。该消息中例如包括该消息的发送链(第一区块链11)标识、接收链(第二区块链13)标识、接收合约(第四合约)账户、发送账户(账户A)、接收账户(账户B)、及对账户B的余额增加的数目等内容。
假设第一区块链为以太坊链,在第一区块链11中存入收据m之后,第一中继设备121可从第一区块链11中获取所述收据m及对应的简单支付验证(Spv)证明数据。第一中继设备121基于收据m中消息的内容可确定该消息的接收链为第二区块链13,第一中继设备121确定其是否与第二区块链13连接,如果与第二区块链13连接,则第一中继设备121可直接将收据m及其Spv证明数据提供给第二区块链13(该情况中在图1中未示出)。如果第一中继设备121确定其不与第二区块链13连接,则可如图1中所示,通过读取查找表,确定到第二区块链13的路由路径,从而第一中继设备121可将收据m及其Spv证明数据发送到中继设备网络12中,以最后发送给第二中继设备122。
第二中继设备122在接收到收据m及其Spv证明数据之后,可向第二区块链13发送交易n,其中n为交易编号,在交易n中以收据m及其Spv证明数为传入参数调用消息接收合约。当第二区块链13中的节点执行交易n时,也即在执行消息接收合约时,使用Spv证明数据对收据m进行验证,以验证收据m是否确实为第一区块链11中的收据。在验证通过之后,从消息的数据解析出消息。之后,基于消息中的接收合约账户(即第四合约的合约账户),以消息作为传入参数调用第四合约,从而将消息传递给第四合约。第四合约在接收到消息之后,根据消息的内容将第二区块链13中的账户B的余额增加与预定数目对应的数目,从而完成所述转账过程。
可以理解,上述参考图1的描述只是示意性的,而不是用于限制本说明书实施例的范围。例如,所述中继设备不限于为图1中所示的形式,所述第一合约和第四合约不限于为用于转账的合约,等等。
下面将具体描述上述跨链中转数据的过程。
图2示出根据本说明书实施例的一种基于中继设备网络跨链中转数据的方法流程图,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接、并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,所述第二中继设备与第二区块链连接,所述方法由所述第一中继设备执行,包括:
步骤S202,从所述第一区块链获取跨链数据,所述跨链数据中包括该跨链数据的接收链标识;
步骤S204,基于所述跨链数据确定所述跨链数据的接收链为第二区块链;
步骤S206,确定本地是否与所述第二区块链连接;
步骤S208,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在本说明书实施例中,第一区块链11和第二区块链13可以为任意区块链,如比特币链、以太坊链、Hyperledger Fabric区块链(下文称为Fabric链)等等。不同的区块链具有不同的链上数据证明方式,例如,Fabric链使用背书节点签名的方式,以太坊链使用Spv证明的方式。下文中将以第一区块链11为以太坊链为例进行描述。第一中继设备例如为图1中所示的第一中继设备121。第二中继设备例如为图1中的第二中继设备122。
首先,在步骤S202,从所述第一区块链获取跨链数据,所述跨链数据中包括该跨链数据的接收链标识。
所述跨链数据可以为第一区块链希望跨链发送到其它链(例如第二区块链)的任意数据,该跨链数据中应包括其接收链标识,以用于在发送的过程用于路由发送路径。例如,所述跨链数据可以为第一数据及其证明数据。所述第一数据例如为区块中的交易、收据,或者为账户状态等等,这些数据的共性为,其都在第一区块链中经过多个节点的共识之后存入第一区块链中,并且,基于区块的数据结构,可通过Spv验证方式验证这些数据确实是第一区块链中的数据,即,第一数据为可认证数据,所述第一数据中例如包括第一区块链希望跨链发送的跨链消息,也即,第一数据中包括的跨链消息是可认证消息。
如图1中所示,在第一区块链中11,可通过消息发送合约将需要跨链发送的消息以收据m的形式存入区块链中。该收据m为执行调用消息发送合约的交易所存入的收据,从而,该收据m中例如包括如图3所示的与消息发送合约对应的日志。图3示出了在执行消息发送合约之后生成的日志的示意图。如图3所示,该日志(Log)具有预定主题(Topic),例如该主题可以预设为“AM”,以用于指示该日志是用于对链外发送消息的日志。在该日志中包括“To”字段,“From”字段和“Data”字段。其中,“To”字段对应于被调用合约的账户,也即消息发送合约的账户,“From”字段对应于发起调用的合约的账户,也即第一合约的账户,“Data”字段中即第一合约希望跨链发送的消息。其中,消息可包括以下字段内容:发送链标识(即第一区块链11的标识)、接收链标识(即第二区块链13的标识)、发送账户(即账户A)、接收账户(即账户B)、接收合约(第四合约)账户、及消息的消息内容。上述Data字段对应的内容即构成消息的数据,其以预定格式(如以太坊中的rlp格式存入区块链中)。可以理解,在本说明书实施例中,由于第一数据不限于为上述收据m,因此,第一数据中的消息不限于为上述收据m中的消息的具体形式,例如,所述消息也可以为第一数据自身,或者可以为第一数据中包括的具有预定标识的部分数据,对此不作限定。
在以太坊链中,用于对第一数据进行Spv验证的数据即为第一数据的证明数据。例如,第一数据为区块1中的收据m,收据m的Spv证明数据包括:区块1的区块头哈希值、区块1中包括的收据树根哈希值、收据树中从收据m到根节点的树路径中其它各个节点的哈希值。
从而,第一中继设备121可对与消息发送合约对应的收据进行监听,每当确定第一区块链11中存入了执行消息发送合约所产生的收据时,即可从第一区块链11中读取该收据,并相应地读取该收据的Spv证明数据。或者,第一区块链11中可主动进行信息推送,每次在确定第一区块链11中存入了执行消息发送合约所产生的收据时,将该收据及相应的Spv证明数据主动推送给第一中继设备121。可以理解,在本说明书实施例中,不限于通过调用消息发送合约的方式来跨链发送消息,即,所述第一数据不限于为执行消息发送合约所存入区块链中的共识数据,而是可通过任何交易来跨链发送消息,即,所述第一数据可以为执行任何交易所存入区块链中的共识数据。
在步骤S204,基于所述跨链数据确定所述跨链数据的接收链为第二区块链。
由于跨链数据中包括其接收链标识,因此,通过读取该跨链数据中的接收链标识可确定该跨链数据的接收链。例如,第一中继设备121在从第一区块链11获取收据m之后,参考图3,可基于预定标识(例如“AM”)从收据m中查找用于存储消息的日志,并在查找到该日志之后,从该日志中读取消息。通过读取消息,基于消息中的接收链标识字段内容,可确定消息的接收链为第二区块链13。
在步骤S206,确定本地是否与所述第二区块链连接。
如前文所述,第一中继设备121与预定数目的区块链连接,第一中继设备121在本地记录有如表1所示的数据表,该数据表中记录了与其连接的区块链的连接地址。
表1
其中,在表1中,左侧的区块链ID即为第一中继设备121连接的各个区块链的标识,右侧的连接地址为相应的区块链中的至少一个节点的连接地址。
第一中继设备121通过查询表1,可确定表1中是否记录了第二区块链13的区块链标识(区块链ID),如果记录了,则可基于表1中与第二区块链13对应的连接地址中的任一连接地址连接第二区块链13中的与该连接地址对应的节点。如果表1中未记录第二区块链13的区块链ID,则说明第一中继设备121不与第二区块链13直接连接,从而需要如下文所述通过链下中继设备的中转来与第二区块链建立连接。
在步骤S208,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,中继设备和区块链的数目较少,从而可在一个查找表中记录全部中继设备与其各自连接的区块链的对应关系。从而,中继设备网络中的各个中继设备中可存储同样的查找表。表2示意示出了根据该实施方式的查找表。
表2
假设第二区块链13的区块链标识为表2中的区块链ID2,第一中继设备121在查找表2之后,可确定第二区块链13与第二中继设备122连接。第一中继设备121可在表2中还记录各个中继设备的连接地址,或者第一中继设备121可在另外的表格中记录各个中继设备的连接地址,从而,第一中继设备121在确定第二区块链13与第二中继设备122连接之后,可从本地获取第二中继设备122的连接地址,连接第二中继设备122,从而将收据m及其Spv证明数据发送给第二中继设备122。
在一种实施方式中,区块链的数目较多,中继设备网络中的中继设备的数目也较多,在该情况中,每个中继设备不一定与中继设备网络中的其它各个中继设备连接,例如,第一中继设备121不与第二中继设备122直接连接,从而,需要通过其它中继设备的中转来使得第一中继设备121与第二中继设备122间接连接。也就是说,各个中继设备仅与中继设备网络中的预定数目的中继设备连接,各个中继设备中存储的查找表中仅记录了该中继设备连接的中继设备与区块链的连接关系,因此,各个中继设备的查找表是不同的表。假设第一中继设备121与中继设备ID3和中继设备4连接,中继设备ID3与第二中继设备122和中继设备5连接,表3示意示出根据该实施方式的第一中继设备121中的查找表。表4示意示出根据该实施方式的中继设备ID3中的查找表:
表3
表4
第一中继设备121在读取本地的查找表(表3)之后,可基于预定路由算法将收据m及其Spv证明数据发送给其连接的至少一个中继设备,从而通过中继设备网络中的其它中继设备的中转最终将收据m及其Spv证明数据发送到第二中继设备122。
例如,表3和表4可以为分布式散列表(DHT表),在该情况中,表3和表4中的中继设备ID与区块链ID可以是同构的,例如各个中继设备ID为通过对各个中继设备编号取哈希值而获取的不同的第一数值,所述多个第一数值构成多个均匀的取值范围,各个区块链ID为通过对区块链域名取哈希值获取的不同第二数值,所述多个第二数值分布在所述多个取值范围中,并基于其所分布的取值范围确定该区块链ID对应的区块链与哪个中继设备连接。例如,第二中继设备122的中继设备ID为中继设备ID2,则将分布于以中继设备ID2为中心的预定范围中的区块链ID对应的区块链确定为与第二中继设备122连接。从而,第一中继设备121可基于DHT算法计算路由路径,使得以最少的中转次数将收据m及其Spv发送到第二中继设备122。
例如,参考表3和表4,可确定路由路径中继设备ID3→中继设备ID2是最优的路径,从而,第一中继设备121基于本地存储的中继设备ID3的连接地址将收据m及其Spv发送给中继设备ID3。中继设备ID3在对收据m进行解析之后,确定其中的消息的接收链为第二区块链13,中继设备ID3通过查找其本地的查找表(表4)确定其连接的第二中继设备122与第二区块链13连接,从而,中继设备ID3将收据m及其Spv直接发送给第二中继设备122。
图4示出根据本说明书实施例的一种基于中继设备网络跨链中转数据的方法流程图,所述中继设备网络中包括第二中继设备,所述第二中继设备与第二区块链连接,所述中继设备网络与第一区块链连接,所述方法由所述第二中继设备执行,包括:
步骤S402,从所述中继设备网络接收跨链数据,其中,所述跨链数据由所述中继设备网络从所述第一区块链获取,并且,所述跨链数据中包括该跨链数据的接收链标识;
步骤S404,基于所述跨链数据确定所述跨链数据的接收链为第二区块链;
步骤S406,将所述跨链数据提供给所述第二区块链。
首先,在步骤S402,从所述中继设备网络接收跨链数据,其中,所述跨链数据由所述中继设备网络从所述第一区块链获取,并且,所述跨链数据中包括该跨链数据的接收链标识。
参考上文的描述,基于中继设备网络中中继设备的查找表的不同形式,或者中继设备网络中的各个中继设备的不同的连接关系,第二中继设备122可能与第一中继设备121直接连接,从而从第一中继设备121接收到所述跨链数据,或者第二中继设备122可能不与第一中继设备121直接连接,而是通过其它至少一个中继设备(例如中继设备ID3)与第一中继设备121连接,从而,第二中继设备122可能从中继设备网络中的中继设备ID3接收到跨链数据。
步骤S404可参考上文对步骤S204的描述,在此不再赘述。
在步骤S406,将所述跨链数据提供给所述第二区块链。
如图1中所示,第二中继设备122在接收到跨链数据之后,基于其中的消息的消息内容,可确定该消息将发送给第二区块链13。第二中继设备122从本地存储的与表1类似的数据表中可确定本地与第二区块链13连接,并且可从该数据表获取第二区块链13的连接地址,从而,如图1所示,第二中继设备122可通过向第二区块链13发送交易n的方式将跨链数据提供给第二区块链13,其中,该交易n中以收据m及其Spv证明数据为传入参数调用消息接收合约。可以理解,所述交易n不限于通过调用消息接收合约的方式来向第二区块链13提供跨链数据,而可以具有其它形式,只要交易n中有特定标识指示其中的数据包括跨链数据,从而指示第二区块链13对该跨链数据进行接收即可。
图5示出根据本说明书另一实施例的一种基于中继设备网络跨链中转消息的方法流程图,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接,并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,并且,所述第一中继设备中包括预言机,所述第二中继设备与第二区块链连接,所述方法由所述第一中继设备执行,包括:
步骤S502,从所述第一区块链获取第一数据及其证明数据,其中,所述第一数据中包括第一消息数据,所述第一消息数据中包括该第一消息数据的接收链标识;
步骤S504,由所述预言机使用所述证明数据对所述第一数据进行验证;
步骤S506,在验证通过的情况中,由所述预言机对所述第一消息数据进行数字签名;
步骤S508,基于所述第一消息数据确定所述第一消息数据的接收链为第二区块链;
步骤S510,确定本地是否与所述第二区块链连接;
步骤S512,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述第一消息数据及对其的数字签名发送给预定数目个中继设备中的至少一个中继设备,以用于将所述第一消息数据及对其的数字签名发送给所述第二中继设备。
在该实施例中,与图1所示的中继设备不同在于,在中继设备网络中的各个中继设备中包括预言机,所述预言机是指对其对数据的处理过程可进行自证明以确保其对数据的处理真实可信的系统或装置。所述预言机例如可以为可信计算环境(Trusted ExecutionEnvironment,TEE),其例如为通过SGX、Trust Zone等技术生成的TEE。任何需要的一方(例如第一区块链或第二区块链)都可以发送验证请求以对TEE的处理过程进行验证。TEE在接收所述验证请求之后,基于其内部机制生成认证信息,并将该认证信息发送给请求发送方以供其验证。所述认证信息例如包括所述TEE的签名信息、硬件信息和软件信息等。其中,所述签名信息例如通过TEE的硬件密钥生成;所述硬件信息例如包括,各种硬件的指标,比如CPU主频,内存容量等等;所述软件信息包括各个程序的代码哈希值、代码名称、版本、运行日志等。如本领域技术人员所知,TEE可通过内存硬件执行对其中运行程序的“测量”,例如获取该程序的代码哈希值、该程序在特定执行点的内存占有的哈希值等等,并在所述认证信息中包括对所述程序的“测量”信息,由于该“测量”信息由该TEE自身实体(内存硬件)执行,而不涉及任何软件、操作系统,因此是真实可信的。从而验证请求发送方在从TEE接收到认证信息之后,可自身基于从TEE接收的认证信息进行对TEE的验证,或者可将所述认证信息发送给TEE服务方,以通过TEE的服务方获取对该TEE的验证,从而可确定该TEE是否可信,该TEE中是否执行了预定程序,等等。
可以理解,所述预言机不限于为TEE,而可以为任意符合上述预言机功能的系统或装置。例如,所述预言机可以为中继链,该中继链中包括多个中继节点,每个中继节点拥有其私钥和公钥,每个中继节点都对相同的数据进行同样的处理过程,只有在所述多个中继节点达成共识(即确定其对数据的处理结果是一致的)时,所述多个中继节点对相同的结果依次进行数字签名,从而可确保该数据处理结果是可信的。
下文中将以TEE作为预言机的实例进行描述。
在根据该实施例的方法中,步骤S502可参考上文对步骤S202的描述,在此不再赘述。
在步骤S504,由所述预言机使用所述证明数据对所述第一数据进行验证。
如上文所述,以预言机为TEE为例,第一中继设备121的TEE中预先设置了与各个区块链分别对应的验证算法。例如,TEE中预设了与第一区块链11对应的Spv验证算法,该Spv验证算法中包括用于对来自第一区块链的数据进行Spv验证所需要的代码及数据等。当第一中继设备121确定第一数据(例如收据m)来自于第一区块链11之后,即可执行与第一区块链11对应的Spv验证算法来使用Spv证明数据对第一数据进行验证。
具体是,在预言机中可通过如下步骤对第一中继设备121获取的收据m进行验证:计算获取的收据m的哈希值;基于Spv证明数据中包括的树路径中其它各节点的哈希值,计算区块1中收据树的根哈希值;将计算的根哈希值与Spv证明数据中包括的区块1的收据树的根哈希值进行比较,以确定收据m是否为区块1中的收据m;以及,基于Spv证明数据中包括区块1的区块头哈希值、以及Spv验证算法中预先设置的第一区块链11的创世区块的相关信息(例如创世区块哈希值),确定区块1是否为第一区块链11中的区块。
在步骤S506,在验证通过的情况中,由所述预言机对所述第一消息数据进行数字签名。
在上述验证都通过的情况中,即可验证收据m是第一区块链11中的区块1中的收据m,是经共识的可信数据。
在一种实施方式中,在第一数据为上述收据m的情况中,在验证通过之后,基于收据m中的数据结构,TEE可从收据m中找到具有“AM”主题的日志,获取该日志中包括的Data字段内容作为消息的数据,然后,TEE使用其私钥对该消息的数据进行数字签名,从而以该数字签名作为消息的数据的证明数据。
在一种实施方式中,在TEE从收据m中获取消息的数据之后,该消息的数据具有以太坊链中的rlp格式,该格式较为复杂,解析过程较慢,为了进一步加速第二区块链13的消息验证过程,TEE可使用预设的用于进行格式转换的程序对消息的数据进行格式转换,例如,将其格式转换为对合约友好的Json、tlv等数据格式,并在转换格式之后,对消息的数据进行数字签名。
如果上述验证未通过,则证明第一中继设备1212获取的收据m是不可信数据。TEE将停止后续处理过程。
TEE在对收据m进行处理之后,输出消息的数据及与该数据对应的数字签名,其中,该消息的数据可以为经格式转换的数据。
步骤S508和步骤S510可参考上文中对步骤S204和步骤S206的描述,在此不再赘述。
步骤S512与上述步骤S208基本相同,不同在于,在步骤S512中,将第一消息数据及其数字签名发送到中继设备网络中,即,通过第一中继设备121对第一消息的证明数据进行了转换,并且对第一消息的数据格式进行了转换,从而使得第二区块链13在接收到第一消息数据及其数字签名之后可以更快捷容易地进行数据验证和数据解析。
图6示出根据本说明书实施例的一种基于中继设备网络跨链中转消息的方法流程图,所述中继设备网络中包括第二中继设备,所述第二中继设备与第二区块链连接,所述中继设备网络中的第一中继设备与第一区块链连接,所述方法由所述第二中继设备执行,包括:
步骤S602,从所述中继设备网络接收第一消息数据及其数字签名,所述第一消息数据由所述第一中继设备从所述第一区块链获取,并且,所述第一消息数据中包括该第一消息数据的接收链标识,所述数字签名为所述第一中继设备对所述第一消息数据的数字签名;
步骤S604,基于所述第一消息数据确定所述第一消息数据的接收链为第二区块链;
步骤S606,将所述第一消息数据及其数字签名提供给所述第二区块链。
首先,在步骤S602,从所述中继设备网络接收第一消息数据及其数字签名,所述第一消息数据由所述第一中继设备从所述第一区块链获取,并且,所述第一消息数据中包括该第一消息数据的接收链标识,所述数字签名为所述第一中继设备对所述第一消息数据的数字签名。
参考上文的描述,基于中继设备网络中中继设备的查找表的不同形式,或者中继设备网络中的各个中继设备的不同的连接关系,第二中继设备122可能与第一中继设备121直接连接,从而从第一中继设备121接收到中转数据,或者第二中继设备122可能不与第一中继设备121直接连接,而是通过其它至少一个中继设备(例如中继设备ID3)与第一中继设备121连接,从而,第二中继设备122可能从中继设备网络中的中继设备ID3接收到第一消息数据及其数字签名。如上文所述,所述数字签名为所述中继设备网络中的第一中继设备121对所述第一消息数据的数字签名。
步骤S604可参考上文对步骤S204的描述,在此不再赘述。
在步骤S606,将所述第一消息数据及其数字签名提供给所述第二区块链。
如图1中所示,第二中继设备122在接收到第一消息数据(即消息的数据)及其数字签名之后,基于其中的消息的消息内容,可确定该消息将发送给第二区块链13。第二中继设备122从本地存储的与表1类似的数据表中可确定本地与第二区块链13连接,并且可从该数据表获取第二区块链13的连接地址,从而,如图1所示,第二中继设备122可通过向第二区块链13发送交易n的方式将消息的数据及其数字签名提供给第二区块链13。例如,则该交易n中可以以消息的数据及其数字签名为传入参数调用消息接收合约。
图7示出根据本说明书实施例的一种基于中继设备网络跨链中转数据的装置700,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接、并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,所述第二中继设备与第二区块链连接,所述装置部署于所述第一中继设备,包括:
获取单元71,配置为,从所述第一区块链获取跨链数据,所述跨链数据中包括该跨链数据的接收链标识;
第一确定单元72,配置为,基于所述跨链数据确定所述跨链数据的接收链为第二区块链;
第二确定单元73,配置为,确定本地是否与所述第二区块链连接;
发送单元74,配置为,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的至少一个中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述预定数目个中继设备中包括所述第二中继设备,其中,所述发送单元74还配置为,基于所述查找表,将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述预定数目个中继设备中不包括所述第二中继设备,其中,所述发送单元74还配置为,基于所述查找表,将所述跨链数据发送给所述预定数目个中继设备中的第三中继设备,以用于将所述跨链数据发送给所述第二中继设备。
在一种实施方式中,所述装置700还包括,提供单元75,配置为,在确定本地与所述第二区块链连接的情况中,将所述跨链数据提供给所述第二区块链。
图8示出根据本说明书实施例的一种基于中继设备网络跨链中转数据的装置800,所述中继设备网络中包括第二中继设备,所述第二中继设备与第二区块链连接,所述中继设备网络与第一区块链连接,所述装置部署于所述第二中继设备,包括:
接收单元81,配置为,从所述中继设备网络接收跨链数据,其中,所述跨链数据由所述中继设备网络从所述第一区块链获取;
确定单元82,配置为,基于所述跨链数据确定所述跨链数据的接收链为第二区块链;
提供单元83,配置为,将所述跨链数据提供给所述第二区块链。
图9示出根据本说明书另一实施例的一种基于中继设备网络跨链中转消息的装置900,所述中继设备网络中包括第一中继设备和第二中继设备,所述第一中继设备与第一区块链连接,并存储有查找表,所述查找表中记录了预定数目个中继设备各自连接的区块链,所述第一中继设备中还记录了所述预定数目个中继设备的连接地址,并且,所述第一中继设备中包括预言机,所述第二中继设备与第二区块链连接,所述装置部署于所述第一中继设备,包括:
获取单元91,配置为,从所述第一区块链获取第一数据及其证明数据,其中,所述第一数据中包括第一消息数据,所述第一消息数据中包括该第一消息数据的接收链标识;
验证单元92,配置为,由所述预言机使用所述证明数据对所述第一数据进行验证;
签名单元93,配置为,在验证通过的情况中,由所述预言机对所述第一消息数据进行数字签名;
第一确定单元94,配置为,基于所述第一消息数据确定所述第一消息数据的接收链为第二区块链;
第二确定单元95,配置为,确定本地是否与所述第二区块链连接;
发送单元96,配置为,在确定本地不与所述第二区块链连接的情况中,基于所述查找表,将所述第一消息数据及对其的数字签名发送给预定数目个中继设备中的至少一个中继设备,以用于将所述第一消息数据及对其的数字签名发送给所述第二中继设备。
在一种实施方式中,所述签名单元93包括,转换子单元931,配置为,在验证通过的情况中,将所述第一消息数据的格式转换为预定格式,签名子单元932,配置为,对具有预定格式的第一消息数据进行数字签名。
图10示出根据本说明书另一实施例的一种基于中继设备网络跨链中转消息的装置1000,所述中继设备网络中包括第二中继设备,所述第二中继设备与第二区块链连接,所述中继设备网络中的第一中继设备与第一区块链连接,所述装置部署于所述第二中继设备,包括:
接收单元101,配置为,从所述中继设备网络接收第一消息数据及其数字签名,所述第一消息数据由所述第一中继设备从所述第一区块链获取,并且,所述第一消息数据中包括该第一消息数据的接收链标识,所述数字签名为所述第一中继设备对所述第一消息数据的数字签名;
确定单元102,配置为,基于所述第一消息数据确定所述第一消息数据的接收链为第二区块链;
提供单元103,配置为,将所述第一消息数据及其数字签名提供给所述第二区块链。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器在执行所述计算机程序或指令时,实现上述任一项方法。
通过根据本说明书实施例的跨链中转消息的方案,可在区块链的链下实现支持路由的中继设备网络,从而可基于该中继设备网络形成跨链网络拓扑,该跨链网络拓扑支持大规模跨链网络连接。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。