当前位置:首页 > 科技创新 > 重点技术 >

跨链:详解Cosmos跨链间是如何相互通信

编辑:雅博体育App 来源:雅博体育App 创发布时间:2020-10-02阅读10115次
  

雅博体育app网页版

【雅博体育App】跨链作为区块链一种不可或缺的技术,我们研究跨链,以更佳地理解区块链之间是如何互相通信。最初建构区块链时,他们设想需要获取“一刀切”的解决方案,这意味著所有交易,智能合约或其他任何事物都在单个链上继续执行。

但是,现在很显著,这样的系统不过于简单,特别是在是在不存在可伸缩性容许和创意约束的情况下。跨链是两个比较独立国家的区块链之间的互操作性。换句话说,由于区块链是以标准化的方式建构的,因此它容许区块链彼此通信。跨链实行主要以资产互相交换和资产移往为代表,既是区块链世界的最重要组成部分,也是PPIO的最重要研究方向。

用于交叉链,可以防止单链的局限性。今天,我们将探究Cosmos跨链协议的逻辑结构。

根据有所不同的基础技术,跨链的相互作用可以分成同构的跨链和异类的跨链。对于同构链,安全性机制,共识算法,网络拓扑和块分解检验逻辑是完全一致的,它们之间的跨链交互比较非常简单。另一方面,异构链的跨链交互比较简单,并且还包括诸如针对比特币的PoW算法和针对Tendermint的PBFT共识算法之类的技术。

区块构成和确定性确保机制差异相当大,因此必要设计跨链交互机制并不更容易。异构链之间的跨链交互一般来说必须第三方辅助服务。如何构建跨链同构?基于Tendermint研发的链可以使用同构跨链。

Cosmos中同构链之间的资产移往原理如下。由于Tendermint用于PBFT+POS共识算法,因此只有在2/3个检验者表示同意的情况下,才不会将区块递交到网络。

可以通过检查区块头以检验区块头在特定链中否合法来检验检验器信息。例如Tendermint正在研发两条链:链A和链B。

现在假设资产必须在链上移往。首先,两个链A和B将互相登记。

在登记过程中,A和B认识到它们的独立性。然后链将互相发送到各自的创世纪块和ChainID(用作回应有所不同的链)。由于创世纪块包括检验者信息,因此在登记后,A和B链将具备另一条链的检验者信息以及区块头信息。

现在,必须将A中的资产移往到B。首先用户可以将横跨链交易包在Tx发送到A。A继续执行packageTx,封存或瞄准涉及资产,然后将packageTx载入出口。出口可视作摆放所有外部通报的跨链交易的邮箱。

为了将在链A中再次发生的事件通报链B,必须一个中继器。中继器负责管理将横跨链消息从链A的出口发送到链B的出口。在这种情况下,中继器在链A的出口中查找packageTx,并取得packageTx的Merkle证明。

该信息被包到IBC Package PostTx事务中所发送往链B,链B查找关于packageTx方位的区块头信息。它还将区块头信息包到IBCUpdate Chain Tx中,并将其发送到链B。

留意中继器缴纳了IBC Package PostTx和IBCUpdate Chain Tx的交易成本。链B接管到IBCPacketPostTx事务后,它首先通过该链中的检验器检查IBCUpdateChainTx中的区块头否为链A的一部分,然后检验IBCPacketPostTx中横跨链事务的Merkle证明否相等该区块IBCUpdateChainTx中的头哈希。

当所有支票都通过时,B链开始继续执行涉及操作者(对于B链,这意味著分解涉及资产等)。同构跨链构建方法Cosmos中的跨链由IBC协议构建。 Cosmos生态系统中定义了以下IBC协议软件包:IBCRegisterChainTx,IBCUpdateChainTx,IBCPacketCreateTx,IBCPacketPostTx。IBCRegisterChainTx在跨链的结尾用于以下代码登记和发送到创世纪区块。

检验者不会将其转交另一方。此代码不能继续执行一次,多次继续执行将报告错误。type IBCRegisterChainTx struct {BlockchainGenesis}type BlockchainGenesis struct {ChainID stringGenesis string}IBCUpdateChainTx用作将当前链上的近期区块信息,区块高度和区块头信息传输到另一个链。

type IBCUpdateChainTx struct {Header tm.HeaderCommit tm.Commit// TODO: NextValidators}IBCPacketCreateTx当链条接管到交易包时,它将继续执行跨链交易并将涉及信息放进出口。type IBCPacketCreateTx struct {Packet}type Packet struct {SrcChainID stringDstChainID stringSequence uint64Type string // redundant now that Type() is a method on Payload ?PayloadPayload}IBCPacketPostTx跨链交易继续执行后,此软件包包括Merkle证明,然后由中继器将其发送到另一个链。type IBCPacketPostTx struct {FromChainIDstring// The immediate source of the packet, not always Packet.SrcChainIDFromChainHeight uint64// The block height in which Packet was committed, to check ProofPacketProof *merkle.IAVLProof // Merkle证明}plugin从上面的协议我们可以看见,这些协议包在实质上是一个事务。

官网首页

Tendermint有一个plugin模块,以便利我们拓展。 我们可以在plugin中构建模块,并用于IBC plugin继续执行跨链交易。。

本文来源:雅博体育App-www.oversizedandoutdoors.com

024-15769819

联系我们

Copyright © 2010-2014 澳门市雅博体育App科技有限公司 版权所有  澳ICP备93871137号-9