基于去中心化网关的通用跨链支付方案的制作方法

文档序号:17729713发布日期:2019-05-22 02:46阅读:234来源:国知局
基于去中心化网关的通用跨链支付方案的制作方法

本发明提供了一种通用的不依赖于中心的多个区块链系统间进行价值交换和通信的方法,不仅可以解决不同区块链的互联问题,还可以通过互联解决单个区块链的扩展性问题,类似于多台单机通过互联组成集群解决单机的扩展性问题。



背景技术:

目前的区块链系统大多是孤岛,类似于早期的没有联网功能的单台电脑,不同区块链之间难以通信,单条区块链也难以通过互联进行扩展。

中心化交易所,中心化网关(比如cosmosnetwork),rtcrelay,以太坊的plasma。

通过中心化的交易所,用户可以在不同区块链之间完成价值交换,但这种方式需要用户在交易所有账户,需要手工操作,不是一种自动化的技术手段,它也只能完成价值交换,而不是一种通用的通信机制。

通过中心化的网关(比如cosmosnetwork),用户可以实现不同区块链之间的价值交换和通信,但网关是中心化的,牺牲了区块链最重要的去中心化的特性。

rtcrelay和以太坊的plasma解决了一些特定的跨链问题,但并不是通用的区块链之间的价值交换和通信方法。rtcrelay用于连接比特币和以太坊,但它只能用于这两条链,也只能用于验证比特币交易。

plasma可以在以太坊的pow主链和子链之间传递代币,但它要求子链采用utxo模型,限制很大,也只能传递代币,而不是通用的通信机制。



技术实现要素:

本发明的目的在于提供一种通用的不依赖于中心的多个区块链系统间进行价值交换和通信的方法,不仅可以解决不同区块链的互联问题,还可以通过互联解决单个区块链的扩展性问题,类似于多台单机通过互联组成集群解决单机的扩展性问题。

本发明首先提供如下方案。

基于去中心化网关的通用跨链支付方案,其特征在于:包含跨链通信系统合约及去中心化跨链网关两个部分,跨链通信系统合约部署在每条区块链上,去中心化跨链网关由多个节点组成,每个节点上都运行一个中继程序,配置连接两个或多个的区块链,在不同区块链之间传递价值和消息;

跨链通信系统合约包含发送接口、转发接口和响应接口,其中,发送接口和转发接口是接受用户支付的;

发送接口通过用户或合约调用,触发跨链转账和/或通用通信,入口参数至少包含:源地址,目标链,目标地址和请求消息;

转发接口通过中继节点调用,转发请求消息给目标链,入口参数至少包含:源链,请求序号,源地址,目标地址和请求消息;

响应接口通过中继节点调用,转发目标链的响应消息给源链,入口参数至少包含:目标链,请求序号,转账是否成功和响应消息;

跨链通信系统合约还包含:发送消息队列、接受消息队列及发送消息确认序号;

发送接口发出的消息放入发送消息队列,队列按目标链分开保存,

转发接口收到请求消息后,处理消息,将处理结果放入接受消息队列,接受消息队列按源链分开保存;

发送消息确认序号按目标链分开保存,源链通过响应接口调用收到目标链的响应后,更新针对目标链的确认序号;

跨链通信系统合约还包含:请求事件和响应事件;

请求事件产生新的请求消息,发送接口将请求消息放入发送消息队列后发出,请求事件信息包含目标链和请求序号;

响应事件产生新的响应消息,由转发接口生成响应消息,放入接受消息队列后发出,响应事件信息包括源链、消息序号、是否成功和响应消息;

基于上述的跨链转账流程如下:

s1、用户调用发送接口,将代币转给源链智能合约本身;

s2、中继节点调用转发接口,将自己在目标链上的代币转给目标链上的智能合约本身;

s3、目标链在转发接口内部,将代币转给目标链上的目标地址;

s4、源链在处理响应接口时,如果请求成功,则支付给网关账户,否则退给用户。

本发明系统架构有如下特点:本发明是一种通用方案。不仅可以转账,还可以实现通用的跨链请求和响应,这可以用于扩展单条链的处理能力,类似于网络连接功能可以扩展单台机器的处理能力。

本发明中的跨链转账和通信是可靠的。智能合约维护消息状态,每条消息都必须要有确认,消息id都会进行匹配检查,失败会回滚,网关可以有多个,会自动同步消息等,通过这些实现了消息的可靠传输和价值的可靠转移。

本发明中的跨链网关是去中心化的:

1、用户无需信任网关。用户并非转账给网关,而是转给智能合约,收到目标链确认后智能合约才转给网关,网关也无需担心用户,因为智能合约一旦验证成功就会支付给网关。

2、网关可以有多个,可以随时加入/退出。网关不维护状态,状态维护在智能合约中,网关可以随时加入,通过同步算法获得同步并开始请求/响应的转发;网关也可以有很多,竞争参与同一对链的请求/响应转发,智能合约会确保消息的一致性;网关还可以随时退出,其他网关可以代替转发,如果某一时刻或一段时间,没有任何网关负责请求/响应转发,请求和响应会保持在智能合约中,网关恢复后会进行同步。

附图说明

图1为本发明的系统架构图。

图2为本发明中跨链系统合约的主要api、存储模型和事件。

图3为本发明的跨链通信请求响应流程。

图4为本发明的跨链网关同步算法。

图5为本发明的跨链转账流程。

具体实施方式

本发明基于去中心化网关的通用跨链支付方案,请参阅图1所示,通过两个核心组件解决跨链通信和扩展问题:其一:跨链通信系统合约bcc(blockchaincommunicationcontract),其二:去中心化跨链网关bg(blockchaingateway)。bcc是一个智能合约,部署在每条区块链上。bg是一个去中心化的网络,由多个节点组成,bg中的节点可以自由加入/退出,每个节点上都运行一个中继程序,可以配置连接两个或更多的区块链,在不同区块链之间传递价值和消息。

请参阅图2所示,bcc有三个主要接口api,本文如下的英文或者参数表述全部以以太坊中solidity语言为例进行说明:发送接口(以下用send,send接口表述)、转发接口(以下用forward,或forward接口表述)和响应接口(以下用ack或ack接口表述),send和forward是payable的,即可以接受用户支付。

send接口由普通用户或合约调用,触发跨链转账和/或通用通信,有至少4个参数,destchain表示目标链,destaddr表示目标链中的地址,reqmsg表示通用的请求消息,该方法是payable的,对于转账交易,转账金额在隐含参数msg.value中,不需要显式传递,srcaddr用于指定源地址,srcaddr一般与发送账号相同,但如果send接口由合约调用,则可能是不同的账号。

forward接口由中继节点调用,它转发请求消息给目标链,有5个参数,srcchain表示源链,id表示请求序号,请求序号由智能合约在send接口调用中顺序分配,srcaddr、destaddr和reqmsg与send接口中的相同。forward接口也是payable的,转账金额在隐含参数转账金额msg.value中(以太坊中solidity语言)。

ack接口也由中继节点调用,它转发目标链的响应消息给源链,有4个参数,destchain表示目标链,id表示请求消息id,与forward中的id对应,success表示转账是否成功,resmsg表示通用的响应消息。

在合约中有两类消息队列,发送消息队列和接受消息队列。send接口发出的消息放入发送消息队列,队列按目标链分开保存。目标链通过forward调用收到请求消息后,处理消息,将处理结果放入接受消息队列,接受消息队列按源链分开保存。在合约中还保存有发送消息确认序号,确认序号按目标链分开保存,源链通过ack接口调用收到目标链的响应后,更新针对目标链的确认序号。

合约定义了两个事件,即:请求事件(以下简称request或request事件)和响应事件(以下简称response或response事件)。request表示产生了一个新的请求消息,由send接口在将消息放入发送消息队列后发出,事件信息包含目标链destchain和请求消息id。response表示产生了一个新的响应消息,由forward接口生成响应消息,放入接受消息队列后发出,事件信息包括源链srcchain、请求消息id、是否成功success和响应消息resmsg。

请参阅图3所示,其为本发明的跨链通信请求响应流程:

1、用户或智能合约发起跨链转账或通信时,调用本地链上的智能合约send接口,传递源地址srcaddr、目标链地址destchain、目标地址destaddr、转账金额(如果有转账)、请求消息reqmsg。

2、本地链a将消息存储到本地请求队列,队列按目标链分开存储,请求消息id从1开始分配,顺序增加,每个队列都保存有最后的请求消息序号(lastsentid),消息保存后触发request事件。

3、跨链网关节点监听到request事件,连接链a获取请求详情。

4、跨链网关转发请求,调用目标链b上的智能合约forward接口。

5、目标链b的智能合约处理消息,处理后,根据处理结果构造响应消息并放入响应队列,响应消息按源链分开保存,每个队列都保存有最后的接受消息序号(lastrecvmsgid),保存后触发response事件。

6、跨链网关节点监听到response事件,调用源链a上的智能合约ack接口转发响应。

7、源链a上的ack接口内部更新队列状态,更新针对目标链的确认序号lastackid,处理可能的失败回滚,并调用用户提供的回调函数rescallback。

跨链网关不保存状态,所有状态都保存在智能合约里,如果中继节点漏掉了事件消息,或者发生了崩溃,它可以通过查询智能合约上的lastsentid、lastackid和lastrecvmsgid等获取到最新的消息状态并进行适当的转发,以保持同步。

请参阅图4,其展示了跨链网关同步源链srcchain与目标链destchain的过程,该过程确保了源链srcchain发往目标链destchain的消息的可靠传输。如果lastackid大于等于lastsentid,表明srcchain发出去的所有消息都收到响应了,同步已完成。否则就根据目标链上的lastrecvmsgid对消息进行分别处理,针对lastrecvmsgid+1到lastsentid之间的消息,还没有被转发过,调用目标链上的forward接口进行转发,针对lastackid+1到lastrecvmsgid之间的消息,响应还没有被转发,调用源链上的ack方法转发响应。

请求和响应消息可以被重复转发,智能合约会对消息id进行检查,确保符合预期。在forward接口内部,会要求请求消息id等于lastrecvmsgid+1,如果不是,会返回错误。在ack方法内部,会要求响应消息id等于lastackid+1,如果不是,同样会返回错误。这样可以确保消息的有序传递。

可以有多个网关节点参与同一对链的消息转发,智能合约会接受第一个收到的消息,忽略后续的重复消息。

中继节点在每条链上都有账户,跨链转账流程如下:

1、用户调用send接口时,将代币转给本地链a智能合约本身。

2、中继节点调用forward接口时,将自己在目标链b上的代币转给目标链上的智能合约本身。

3、目标链b在forward接口内部,将代币转给目标链上的目标地址。

4、源链a在处理ack方法时,如果请求成功,则支付给网关账户,否则退给用户。

在以上流程中,用户不是直接支付给了网关,而是网关需要垫付,只有网关支付完成后,才由智能合约支付给网关,用户不需要信任网关,而网关也不需要担心用户。

在以上流程中,网关一方面负责转发请求/响应,另一方面负责垫付资金,其背后的驱动力主要是商业原因,比如,可以获得代币激励、可以收取转账费等,本发明不专门探讨。

本发明是一种通用方案。不仅可以转账,还可以实现通用的跨链请求和响应,这可以用于扩展单条链的处理能力,类似于网络连接功能可以扩展单台机器的处理能力。

本发明中的跨链转账和通信是可靠的。智能合约维护消息状态,每条消息都必须要有确认,消息id都会进行匹配检查,失败会回滚,网关可以有多个,会自动同步消息等,通过这些实现了消息的可靠传输和价值的可靠转移。

本发明中的跨链网关是去中心化的:

1、用户无需信任网关。用户并非转账给网关,而是转给智能合约,收到目标链确认后智能合约才转给网关,网关也无需担心用户,因为智能合约一旦验证成功就会支付给网关。

2、网关可以有多个,可以随时加入/退出。网关不维护状态,状态维护在智能合约中,网关可以随时加入,通过同步算法获得同步并开始请求/响应的转发;网关也可以有很多,竞争参与同一对链的请求/响应转发,智能合约会确保消息的一致性;网关还可以随时退出,其他网关可以代替转发,如果某一时刻或一段时间,没有任何网关负责请求/响应转发,请求和响应会保持在智能合约中,网关恢复后会进行同步。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1