本申请为2019年6月28日提交的申请号为201910579570.3,名为“一种跨链发送可认证消息的方法和装置”的发明专利申请的分案申请。
本说明书实施例涉及区块链技术领域,更具体地,涉及一种跨链发送可认证消息的方法和装置。
背景技术:
区块链技术也被称之为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔数据,都会广播到全网的区块链节点,每个全节点都有全量的、一致的数据。随着区块链技术的火热,出现了许多不同类型的链,应用在金融、健康医疗、供应链、资产管理和溯源等领域。然而大部分链上应用(加密货币或者智能合约)都无法跨越当前链的边界,不能与其他链协同合作实现价值的流通,从而限制了区块链的发挥空间。如何能让不同类型的链协同合作实现价值的流通成了探索的方向。目前已出现多种跨链技术,然而,每种跨链技术都有自己独特设计,应对的场景也各不相同,针对不同场景下的跨链,一条链可能需要接入多种跨链平台。
因此,需要一种更有效的跨链传递信息的方案。
技术实现要素:
本说明书实施例旨在提供一种更有效的跨链发送可认证消息的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种跨链发送可认证消息的方法,所述跨链发送为从第一区块链的第一账户向链外发送,所述第一区块链与中继端连接,所述方法由所述第一区块链执行,包括:
通过所述第一账户向第一区块链中存入经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户;以及
将所述第一数据和第一位置信息提供给所述中继端,以用于将所述可认证消息提供给所述接收对象,其中,所述第一位置信息指示第一数据在第一区块链中的位置,所述中继端与所述接收对象所在系统连接。
在一个实施例中,通过所述第一账户向第一区块链中存入经共识的第一数据包括,通过由所述第一账户调用第一智能合约向第一区块链中存入所述第一数据,其中,所述第一账户在调用第一智能合约时向第一智能合约传入至少以下参数:接收对象信息及消息内容。
在一个实施例中,所述第一数据被标注有预定标志。
在一个实施例中,所述第一数据为收据,所述收据中包括在执行所述第一智能合约之后生成的日志,所述日志的数据字段为所述可认证消息。
在一个实施例中,所述日志被标注有预定主题,所述预定标志为所述预定主题。
在一个实施例中,所述预定标志为所述第一智能合约的账户标识。
在一个实施例中,所述可认证消息中还包括协议版本号字段和预留字段。
在一个实施例中,所述可认证消息中还包括类型字段,用于指示该可认证消息的使用场景类型。
在一个实施例中,所述类型为以下任一类型:消息类型、远程过程调用类型、发布/订阅类型。
在一个实施例中,所述可认证消息中还包括序号字段,用于在所述第一账户向同一接收对象多次发送可认证消息的情况中表示当前发送序号。
在一个实施例中,所述第一账户为第二智能合约的合约账户。
在一个实施例中,所述中继端还与第二区块链连接,所述接收对象信息字段包括接收区块链标识字段和接收账户字段,其分别与第二区块链标识、第二区块链中的第二账户相对应。
本说明书另一方面提供一种跨链中转可认证消息的方法,所述方法由中继端执行,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述方法包括:
从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;以及
基于所述可认证消息中的接收对象信息,将所述第一数据和所述第一位置信息发送给接收对象所在系统,其中,所述中继端与该系统连接。
在一个实施例中,所述第一数据被标注有预定标志,其中,从所述第一区块链获取所述第一数据和第一位置信息包括,基于所述预定标志从所述第一区块链获取所述第一数据和第一位置信息。
本说明书另一方面提供一种跨链接收可认证消息的方法,所述跨链接收为由第二系统中的至少一个对象从其它区块链接收,所述第二系统中通过所述中继端同步有与至少一个其它区块链分别相关的至少一个第二数据,其中,所述至少一个其它区块链中包括第一区块链,所述方法由第二区块链执行,包括:
从所述中继端接收第一数据和第一位置信息,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述第一位置信息指示所述第一数据在所述发送区块链中的位置,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;以及
基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
在一个实施例中,所述第一数据为第一区块链的第一区块中的第一收据,所述第一位置信息包括第一区块的区块编号和第一收据在第一区块中的收据编号,所述与第一区块链相关的第二数据为第一区块链中的各个区块的区块头,其中,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证包括,基于所述第一收据、所述各个区块的区块头和第一区块中的与第一收据相关联的默克尔树路径,通过简单支付验证方法验证:所述第一收据来自于第一区块链中的第一区块,其中,所述默克尔树路径基于所述第一位置信息获取。
在一个实施例中,所述可认证消息位于所述第一收据中的第一日志中,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证还包括,基于所述第一日志的发送字段,验证所述第一账户为发送所述可认证消息的账户。
在一个实施例中,所述第二系统为第二区块链,所述至少一个对象为第二区块链中的第二账户,所述第二账户为第三智能合约的合约账户,向所述第二账户提供所述可认证消息包括,通过以所述可认证消息为传入参数调用第三智能合约,向第二账户提供所述可认证消息。
本说明书另一方面提供一种跨链中转可认证消息的方法,所述方法由中继端执行,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述中继端同步有分别对应于其连接的各个区块链的各个第二数据,所述方法包括:
从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;
基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;
在验证通过的情况中,对所述可认证消息进行数字签名;以及
基于所述可认证消息中的接收对象信息,将所述可认证消息及其数字签名发送给所述接收对象所在系统,其中,所述中继端与所述系统连接。
本说明书另一方面提供一种跨链接收可认证消息的方法,所述跨链接收为由第二系统中的至少一个对象从其它区块链接收,所述第二系统与中继端连接,所述中继端还与第一区块链连接,所述第二区块链中预先存储有所述中继端的公钥,所述方法由第二系统执行,包括:
从所述中继端接收可认证消息、及所述中继端对所述可认证消息的数字签名,其中,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
使用所述中继端的公钥对所述数字签名进行验证;以及
基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
本说明书另一方面提供一种跨链发送可认证消息的装置,所述跨链发送为从第一区块链的第一账户向链外发送,所述第一区块链与中继端连接,所述装置部署在所述第一区块链,包括:
存入单元,配置为,通过所述第一账户向第一区块链中存入经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户;以及
提供单元,配置为,将所述第一数据和第一位置信息提供给所述中继端,以用于将所述可认证消息提供给所述接收对象,其中,所述第一位置信息指示第一数据在第一区块链中的位置,所述中继端与所述接收对象所在系统连接。
在一个实施例中,所述存入单元还配置为,通过由所述第一账户调用第一智能合约向第一区块链中存入所述第一数据,其中,所述第一账户在调用第一智能合约时向第一智能合约传入至少以下参数:接收对象信息及消息内容。
本说明书另一方面提供一种跨链中转可认证消息的装置,所述装置部署在中继端,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述装置包括:
获取单元,配置为,从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;以及
发送单元,配置为,基于所述可认证消息中的接收对象信息,将所述第一数据和所述第一位置信息发送给接收对象所在系统,其中,所述中继端与该系统连接。
在一个实施例中,所述第一数据被标注有预定标志,其中,所述获取单元还配置为,基于所述预定标志从所述第一区块链获取所述第一数据和第一位置信息。
本说明书另一方面提供一种跨链接收可认证消息的装置,所述跨链接收为由第二系统中的至少一个对象从其它区块链接收,所述第二系统中通过所述中继端同步有与至少一个其它区块链分别相关的至少一个第二数据,其中,所述至少一个其它区块链中包括第一区块链,所述装置部署在第二系统,包括:
接收单元,配置为,从所述中继端接收第一数据和第一位置信息,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述第一位置信息指示所述第一数据在所述发送区块链中的位置,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
获取单元,配置为,基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
验证单元,配置为,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;以及
提供单元,配置为,基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
在一个实施例中,所述第一数据为第一区块链的第一区块中的第一收据,所述第一位置信息包括第一区块的区块编号和第一收据在第一区块中的收据编号,所述与第一区块链相关的第二数据为第一区块链中的各个区块的区块头,其中,所述验证单元还配置为,基于所述第一收据、所述各个区块的区块头和第一区块中的与第一收据相关联的默克尔树路径,通过简单支付验证方法验证:所述第一收据来自于第一区块链中的第一区块,其中,所述默克尔树路径基于所述第一位置信息获取。
在一个实施例中,所述可认证消息位于所述第一收据中的第一日志中,所述验证单元还配置为,基于所述第一日志的发送字段,验证所述第一账户为发送所述可认证消息的账户。
在一个实施例中,所述第二系统为第二区块链,所述至少一个对象为第二区块链中的第二账户,所述第二账户为第三智能合约的合约账户,所述提供单元还配置为,通过以所述可认证消息为传入参数调用第三智能合约,向第二账户提供所述可认证消息。
本说明书另一方面提供一种跨链中转可认证消息的装置,所述装置部署在中继端,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述中继端同步有分别对应于其连接的各个区块链的各个第二数据,所述装置包括:
第一获取单元,配置为,从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;
第二获取单元,配置为,基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
验证单元,配置为,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;
签名单元,配置为,在验证通过的情况中,对所述可认证消息进行数字签名;以及
发送单元,配置为,基于所述可认证消息中的接收对象信息,将所述可认证消息及其数字签名发送给所述接收对象所在系统,其中,所述中继端与所述系统连接。
本说明书另一方面提供一种跨链接收可认证消息的装置,所述跨链接收为由第二系统中的至少一个对象从其它区块链接收,所述第二系统与中继端连接,所述中继端还与第一区块链连接,所述第二区块链中预先存储有所述中继端的公钥,所述装置部署在第二系统,包括:
接收单元,配置为,从所述中继端接收可认证消息、及所述中继端对所述可认证消息的数字签名,其中,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户;
验证单元,配置为,使用所述中继端的公钥对所述数字签名进行验证;以及
提供单元,配置为,基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
根据本说明书实施例的跨链方案抽象区块链互操作模型,设计一种可认证消息,使得区块链发出的消息可以被其他链认证:消息来自于哪条链,且由链上的哪个身份实体(账号/合约)发出。使得基于此可认证消息,允许进行跨链应用(合约)编程,使开发者更轻易地开发出各种跨链业务、应用。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的跨链系统的示意图;
图2示出根据本说明书实施例的一种跨链发送可认证消息的方法;
图3示出了在执行第一智能合约之后生成的日志的示意图;
图4示出根据本说明书实施例的一种跨链中转可认证消息的方法;
图5示出根据本说明书实施例的一种跨链接收可认证消息的方法;
图6示出根据本说明书实施例的一种跨链中转可认证消息的方法;
图7示出根据本说明书实施例的一种跨链接收可认证消息的方法;
图8示出从第一区块链的第一账户向第二区块链的第二账户发送可认证消息的时序图;
图9示出根据本说明书实施例的一种跨链发送可认证消息的装置900;
图10示出根据本说明书实施例的一种跨链中转可认证消息的装置1000;
图11示出根据本说明书实施例的一种跨链接收可认证消息的装置1100;
图12示出根据本说明书实施例的一种跨链中转可认证消息的装置1200;
图13示出根据本说明书实施例的一种跨链接收可认证消息的装置1300。
具体实施方式
下面将结合附图描述本说明书实施例。
图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、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
1.一种跨链发送可认证消息的方法,所述方法由第一区块链执行,所述第一区块链与中继端连接,所述方法包括:
通过所述第一区块链的第一账户向第一区块链中存入经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户;以及
将所述第一数据和第一位置信息提供给所述中继端,其中,所述第一位置信息指示第一数据在第一区块链中的位置,所述中继端与所述接收对象所在系统连接。
2.根据权利要求1所述的方法,其中,通过所述第一区块链的第一账户向第一区块链中存入经共识的第一数据包括,通过由所述第一账户调用第一智能合约向第一区块链中存入所述第一数据,其中,所述第一账户在调用第一智能合约时向第一智能合约传入至少以下参数:接收对象信息及消息内容。
3.根据权利要求2所述的方法,其中,所述第一数据被标注有预定标志。
4.根据权利要求3所述的方法,其中,所述第一数据为收据,所述收据中包括在执行所述第一智能合约之后生成的日志,所述日志的数据字段为所述可认证消息。
5.根据权利要求4所述的方法,其中,所述日志被标注有预定主题,所述预定标志为所述预定主题。
6.根据权利要求4所述的方法,所述预定标志为所述第一智能合约的账户标识。
7.根据权利要求1所述的方法,其中,所述可认证消息中还包括协议版本号字段和预留字段。
8.根据权利要求1所述的方法,其中,所述可认证消息中还包括类型字段,用于指示该可认证消息的使用场景类型。
9.根据权利要求8所述的方法,其中,所述类型为以下任一类型:消息类型、远程过程调用类型、发布/订阅类型。
10.根据权利要求1所述的方法,其中,所述可认证消息中还包括序号字段,用于在所述第一账户向同一接收对象多次发送可认证消息的情况中表示当前发送序号。
11.根据权利要求1所述的方法,其中,所述第一账户为第二智能合约的合约账户。
12.根据权利要求1所述的方法,其中,所述中继端还与第二区块链连接,所述接收对象信息字段包括接收区块链标识字段和接收账户字段,其分别与第二区块链标识、第二区块链中的第二账户相对应。
13.一种跨链中转可认证消息的方法,所述方法由中继端执行,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述方法包括:
从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;以及
基于所述可认证消息中的接收对象信息,将所述第一数据和所述第一位置信息发送给接收对象所在系统,其中,所述中继端与该系统连接。
14.根据权利要求13所述的方法,其中,所述第一数据被标注有预定标志,其中,从所述第一区块链获取所述第一数据和第一位置信息包括,基于所述预定标志从所述第一区块链获取所述第一数据和第一位置信息。
15.一种跨链接收可认证消息的方法,所述方法由第二系统执行,所述第二系统与中继端连接,所述第二系统中通过所述中继端同步有与至少一个其它区块链分别相关的至少一个第二数据,其中,所述至少一个其它区块链中包括第一区块链,所述方法包括:
从所述中继端接收第一数据和第一位置信息,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述第一位置信息指示所述第一数据在所述发送区块链中的位置,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;以及
在验证通过之后,基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
16.根据权利要求15所述的方法,其中,所述第一数据为第一区块链的第一区块中的第一收据,所述第一位置信息包括第一区块的区块编号和第一收据在第一区块中的收据编号,所述与第一区块链相关的第二数据为第一区块链中的各个区块的区块头,其中,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证包括,基于所述第一收据、所述各个区块的区块头和第一区块中的与第一收据相关联的默克尔树路径,通过简单支付验证方法验证:所述第一收据来自于第一区块链中的第一区块,其中,所述默克尔树路径基于所述第一位置信息获取。
17.根据权利要求16所述的方法,所述可认证消息位于所述第一收据中的第一日志中,其中,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证还包括,基于所述第一日志的发送字段,验证所述第一账户为发送所述可认证消息的账户。
18.根据权利要求15所述的方法,其中,所述第二系统为第二区块链,所述至少一个对象为第二区块链中的第二账户,所述第二账户为第三智能合约的合约账户,向所述第二账户提供所述可认证消息包括,通过以所述可认证消息为传入参数调用第三智能合约,向第二账户提供所述可认证消息。
19.一种跨链中转可认证消息的方法,所述方法由中继端执行,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户分别对应于以下字段值:第一区块链标识、第一账户,所述中继端同步有分别对应于其连接的各个区块链的各个第二数据,所述方法包括:
从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;
基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;
在验证通过的情况中,对所述可认证消息进行数字签名;以及
基于所述可认证消息中的接收对象信息,将所述可认证消息及其数字签名发送给所述接收对象所在系统,其中,所述中继端与所述系统连接。
20.一种跨链接收可认证消息的方法,所述方法由第二系统执行,所述第二系统与中继端连接,所述中继端还与第一区块链连接,所述第二系统中预先存储有所述中继端的公钥,所述方法包括:
从所述中继端接收可认证消息、及所述中继端对所述可认证消息的数字签名,其中,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
使用所述中继端的公钥对所述数字签名进行验证;以及
在验证通过之后,基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
21.一种跨链发送可认证消息的装置,所述装置部署在第一区块链,所述第一区块链与中继端连接,所述装置包括:
存入单元,配置为,通过所述第一区块链的第一账户向第一区块链中存入经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户;以及
提供单元,配置为,将所述第一数据和第一位置信息提供给所述中继端,其中,所述第一位置信息指示第一数据在第一区块链中的位置,所述中继端与所述接收对象所在系统连接。
22.根据权利要求21所述的装置,其中,所述存入单元还配置为,通过由所述第一账户调用第一智能合约向第一区块链中存入所述第一数据,其中,所述第一账户在调用第一智能合约时向第一智能合约传入至少以下参数:接收对象信息及消息内容。
23.根据权利要求22所述的装置,其中,所述第一数据被标注有预定标志。
24.根据权利要求23所述的装置,其中,所述第一数据为收据,所述收据中包括在执行所述第一智能合约之后生成的日志,所述日志的数据字段为所述可认证消息。
25.根据权利要求24所述的装置,其中,所述日志被标注有预定主题,所述预定标志为所述预定主题。
26.根据权利要求24所述的装置,所述预定标志为所述第一智能合约的账户标识。
27.根据权利要求21所述的装置,其中,所述可认证消息中还包括协议版本号字段和预留字段。
28.根据权利要求21所述的装置,其中,所述可认证消息中还包括类型字段,用于指示该可认证消息的使用场景类型。
29.根据权利要求28所述的装置,其中,所述类型为以下任一类型:消息类型、远程过程调用类型、发布/订阅类型。
30.根据权利要求21所述的装置,其中,所述可认证消息中还包括序号字段,用于在所述第一账户向同一接收对象多次发送可认证消息的情况中表示当前发送序号。
31.根据权利要求21所述的装置,其中,所述第一账户为第二智能合约的合约账户。
32.根据权利要求21所述的装置,其中,所述中继端还与第二区块链连接,所述接收对象信息字段包括接收区块链标识字段和接收账户字段,其分别与第二区块链标识、第二区块链中的第二账户相对应。
33.一种跨链中转可认证消息的装置,所述装置部署在中继端,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述装置包括:
获取单元,配置为,从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;以及
发送单元,配置为,基于所述可认证消息中的接收对象信息,将所述第一数据和所述第一位置信息发送给接收对象所在系统,其中,所述中继端与该系统连接。
34.根据权利要求33所述的装置,其中,所述第一数据被标注有预定标志,其中,所述获取单元还配置为,基于所述预定标志从所述第一区块链获取所述第一数据和第一位置信息。
35.一种跨链接收可认证消息的装置,所述装置部署在第二系统,所述第二系统与中继端连接,所述第二系统中通过所述中继端同步有与至少一个其它区块链分别相关的至少一个第二数据,其中,所述至少一个其它区块链中包括第一区块链,所述装置包括:
接收单元,配置为,从所述中继端接收第一数据和第一位置信息,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述第一位置信息指示所述第一数据在所述发送区块链中的位置,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
获取单元,配置为,基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
验证单元,配置为,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;以及
提供单元,配置为,基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
36.根据权利要求35所述的装置,其中,所述第一数据为第一区块链的第一区块中的第一收据,所述第一位置信息包括第一区块的区块编号和第一收据在第一区块中的收据编号,所述与第一区块链相关的第二数据为第一区块链中的各个区块的区块头,其中,所述验证单元还配置为,基于所述第一收据、所述各个区块的区块头和第一区块中的与第一收据相关联的默克尔树路径,通过简单支付验证方法验证:所述第一收据来自于第一区块链中的第一区块,其中,所述默克尔树路径基于所述第一位置信息获取。
37.根据权利要求36所述的装置,所述可认证消息位于所述第一收据中的第一日志中,其中,所述验证单元还配置为,基于所述第一日志的发送字段,验证所述第一账户为发送所述可认证消息的账户。
38.根据权利要求35所述的装置,其中,所述第二系统为第二区块链,所述至少一个对象为第二区块链中的第二账户,所述第二账户为第三智能合约的合约账户,所述提供单元还配置为,通过以所述可认证消息为传入参数调用第三智能合约,向第二账户提供所述可认证消息。
39.一种跨链中转可认证消息的装置,所述装置部署在中继端,所述中继端与第一区块链连接,其中,所述第一区块链中预存有经共识的第一数据,其中,所述第一数据中包括可认证消息,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述中继端同步有分别对应于其连接的各个区块链的各个第二数据,所述装置包括:
第一获取单元,配置为,从所述第一区块链获取所述第一数据和第一位置信息,所述第一位置信息指示第一数据在第一区块链中的位置;
第二获取单元,配置为,基于所述可认证消息中的第一区块链标识,获取与所述第一区块链相关的第二数据;
验证单元,配置为,基于所述第一数据、与所述第一区块链相关的第二数据以及所述第一位置信息,对所述可认证消息进行验证;
签名单元,配置为,在验证通过的情况中,对所述可认证消息进行数字签名;以及
发送单元,配置为,基于所述可认证消息中的接收对象信息,将所述可认证消息及其数字签名发送给所述接收对象所在系统,其中,所述中继端与所述系统连接。
40.一种跨链接收可认证消息的装置,所述装置部署在第二系统,所述第二系统与中继端连接,所述中继端还与第一区块链连接,所述第二系统中预先存储有所述中继端的公钥,所述装置包括:
接收单元,配置为,从所述中继端接收可认证消息、及所述中继端对所述可认证消息的数字签名,其中,所述可认证消息中至少包括满足预定协议的以下字段:发送区块链标识、发送账户、接收对象信息及消息内容,其中,发送区块链标识、发送账户字段分别对应于以下字段值:第一区块链标识、第一账户,所述接收对象信息字段与所述第二系统标识和所述至少一个对象相对应;
验证单元,配置为,使用所述中继端的公钥对所述数字签名进行验证;以及
提供单元,配置为,基于所述可认证消息中的接收对象信息,向所述至少一个对象提供所述可认证消息。
41.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-20中任一项的所述的方法。
42.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-20中任一项所述的方法。
技术总结