4

金色观察|异构链跨链的通用方案

 2 years ago
source link: https://www.jinse.com/blockchain/1174765.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

金色观察|异构链跨链的通用方案

金色财经 Taylor W 11 小时前 7.9万

如今公链各显神通,建立了一个生态,也成为了一个个孤岛,为了实现资产顺利的使用流通,跨链就成为了一个必要的业务。

我们可以看到为了让链间资产互转,出现了非常多的跨链桥,以及跨链方案、协议等等。这些项目一般自带一个桥以及一个swap功能。

很有趣,这是最简单的功能,却因为业务需求的庞大快速发展。

今天我们就简单的讲述一套以桥、中继链的思路做跨链,最简单的跨链原理。了解了这个原理,大部分的跨链项目都可以以此分析。

异构链跨链解决方案中以中继链或者是桥为中心,其他区块链都可以加入,通过部署,具备智能合约的链之间可实现了跨链调用合约和资产互转,而无智能合约的链能实现资产互转。

这一条中继链或桥的角色要求加入的链具备一些能力:

实现一系列的接口,这些接口既可以用智能合约的方式来实现,也可以在底层直接实现。

链需要提交区块头格式,序列化、反序列化方式、签名验证方式,便于中继链可以解析并验证其区块头。

提交其账本或交易梅克尔树的构造和验证方式,使中继链可以验证其链上发生的真实交易。

要实现跨链,以以太坊举例,需要实现以下两个合约:区块头同步合约和跨链管理合约。

区块头同步合约会在该链维护中继链的区块头,用于验证跨链交易。每条链上有且仅有一本跨链管理合约,它负责构造跨链交易,在该链的所有跨链业务合约都需要和管理合约交互,比如在以太坊上,区块头同步合约和管理合约都通过以太智能合约实现。

以下介绍每个合约需要实现的接口及其功能。

合约1:区块头同步合约:

SyncGenesisHeader接口:同步中继链的创世区块头(或某个周期切换的区块头),在合约初始化时被调用,只能被调用一次。存储并解析创世区块,取得中继链此时的共识节点列表。可以参考相关代码。

SyncBlockHeader接口:持续同步中继链的区块头,主要包括周期切换的关键区块头和跨链交易发生的区块头。relayer通过该接口同步中继链区块头。存储并解析区块头,如果发现共识节点变更,则存储中继链此时的共识节点列表。可以参考相关代码。

合约2:跨链管理合约:

CreateCrossChainTx接口:创建跨链交易,该接口主要用于业务智能合约在需要跨链功能时调用。构造一笔跨链交易,此交易具有唯一的自增ID,并将交易参数写入merkle tree。

ProcessCrossChainTx 接口:处理跨链交易,该接口用于该链接受来自其他链的跨链交易,由relayer同步跨链交易的merkle proof时调用。接口按照高度找到该跨链交易的merkle root(存在于区块头中),验证该跨链交易的真实性,验证通过则解析跨链参数,调用目标链上的业务合约。

假设从A链跨链到链B,用户在链A发起跨链请求,调用了DApp的跨链接口,最终会在B链的DApp合约得到用户想要的结果。A链和B链实现了上文的两本合约及其接口,任何人都可以围绕跨链管理合约建立稳定可用的跨链DApp,分别在A链和B链部署业务合约,这些合约会组成一个完整的跨链DApp。

用户调用A链的业务合约,合约会进一步调用跨链管理合约,传递用户的跨链参数,跨链管理合约会创建跨链交易,随着A链出块,交易落账;

由于链与链之间是不会主动交换信息的,所以需要一个Relayer去传递信息,Relayer会把A链的区块头同步到中继链的区块头同步合约,然后从A链的存储中取出跨链管理合约返回的事件,其中包含用户的跨链参数,再获取跨链交易的Merkle Proof,一并转发给中继链的跨链管理合约;

中继链的跨链管理合约会读取A链的区块头,验证跨链参数的Proof是否正确,验证通过后,会将B链需要的跨链信息以事件的形式返回;

B链的Relayer会将中继链区块头同步到B链的区块头同步合约,然后从中继链的账本中获取到B链的跨链参数和其Merkle Proof,提交到B链的跨链管理合约;

链B的跨链管理合约验证跨链信息的正确性,然后调用信息里的目标合约,完成跨链合约的调用;

其中共有两个Merkle Proof,第一个证明了来自A链跨链信息确实存在于A链,第二个则证明了跨链信息确实存在于中继链,如此便建立了跨链的信任机制。这就是跨链DApp的运行流程,所有的侧链(跨链两方中的一方,比如polygon之于以太坊)仅需和中继链生态交互即可。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK