当前位置:首页 > 物联网 > 区块链
[导读] 跨链作为区块链一种不可或缺的技术,我们研究跨链,以更好地了解区块链之间是如何相互通信。 最初构建区块链时,他们设想能够提供“一刀切”的解决方案,这意味着所有交易,智能合约或其他任何事物都

跨链作为区块链一种不可或缺的技术,我们研究跨链,以更好地了解区块链之间是如何相互通信。

最初构建区块链时,他们设想能够提供“一刀切”的解决方案,这意味着所有交易,智能合约或其他任何事物都在单个链上执行。 但是,现在很明显,这样的系统不太实用,尤其是在存在可伸缩性限制和创新约束的情况下。

跨链是两个相对独立的区块链之间的互操作性。换句话说,由于区块链是以标准化的方式构建的,因此它允许区块链彼此通信。跨链实施主要以资产交换和资产转移为代表,既是区块链世界的重要组成部分,也是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 string

Genesis string

}

IBCUpdateChainTx

用于将当前链上的最新区块信息,区块高度和区块头信息传输到另一个链。

type IBCUpdateChainTx struct {

Header tm.Header

Commit tm.Commit

// TODO: NextValidators

}

IBCPacketCreateTx

当链条接收到交易包时,它将执行跨链交易并将相关信息放入出口。

type IBCPacketCreateTx struct {

Packet

}

type Packet struct {

SrcChainID string

DstChainID string

Sequence uint64

Type string // redundant now that Type() is a method on Payload ?

Payload Payload

}

IBCPacketPostTx

跨链交易执行后,此软件包包含Merkle证明,然后由中继器将其发送到另一个链。

type IBCPacketPostTx struct {

FromChainID string

// The immediate source of the packet, not always Packet.SrcChainID

FromChainHeight uint64

// The block height in which Packet was committed, to check Proof

Packet

Proof *merkle.IAVLProof // Merkle证明

}

plugin

从上面的协议我们可以看到,这些协议包实际上是一个事务。Tendermint有一个plugin模块,以方便我们扩展。 我们可以在plugin中实现接口,并使用IBC plugin执行跨链交易。

type Plugin interface {

// Name of this plugin, should be short.

Name() string

// Run a transaction from ABCI DeliverTx

RunTx(store KVStore, ctx CallContext, txBytes []byte) (res abci.Result)

// Other ABCI message handlers

SetOpTIon(store KVStore, key, value string) (log string)

InitChain(store KVStore, vals []*abci.Validator)

BeginBlock(store KVStore, hash []byte, header *abci.Header)

EndBlock(store KVStore, height uint64) abci.ResponseEndBlock

}

上面的代码是plugin接口的定义。可以看出,该plugin与ABCI接口非常相似,因此IBC事务在deliverTx处交给了该plugin。

// ABCI::DeliverTx

func (app *BaseApp) DeliverTx(txBytes []byte) (res abci.Result) {

// Exec tx

switch tx := tx.(type) {

case *types.SendTx:

// 执行正常交交易

case *types.AppTx:

// 执行plugin中的交易

plugin := pgz.GetByName(tx.Name)

res = plugin.RunTx(cache, ctx, tx.Data)

return res

default:

return abci.ErrBaseEncodingError.SetLog(“Unknown tx type”)

}

return res

}

异构跨链PegZone

对于使用POW共识算法的链,例如比特币和以太坊,它们如何使用Tendermint的IBC协议跨链运作?由于这些链中使用了POW算法,因此我们无法通过验证器验证这些链的区块。我们也无法使用Merkle证明来证明这些链上跨链交易的合法性。此外,POW共识算法生成的区块是概率性最终的,并且有可能被回滚。我们需要确保跨链交易是真正的最终交易,并且不会回滚。

基于以上考虑,我们使用PegZone方案执行异构跨链。PegZone本身实际上是Tendermint开发的代理链,它实时跟踪原始链的状态,并设置安全阈值以等待原始链块的增长。当数字达到安全阈值时,原始链状态被视为具有伪实时终结性(回滚概率小),这与轻客户端钱包验证的原理相同。例如比特币安全阈值通常设置为6,而ETF安全阈值可以设置为20或100。PegZone本身具有实时确定性,可以通过IBC连接到Cosmos Hub以实现跨链。

下图使用PegZone或Peggy以及以太坊作为跨链接的示例。

从上图可以看出,PegZone可分为五个部分:

1. smart contract:资产托管在以太坊和Cosmos中代币托管中的作用。它主要提供四种方法:锁定,解锁,铸造和销毁。

2. witness:这是一个完整的以太坊节点,它监视以太坊合约的事件并等待生成100个区块。封装的见证人Tx被提交给PegZone以证明以太坊区块链上的状态变化。

3. PegZone:PegZone是基于Tendermint的区块链,可维护用户帐户信息,允许用户之间进行资产转移并提供交易查询。

4. signer:Secp256k1用于签名交易,以便可以通过智能合约有效地验证签名;这对应于智能合约的验证者公钥集。

5. relay:relay负责所有事务转发。该角色将已签名的SignTx转发到智能合约。

Cosmos Hub角色

在Cosmos中的basecoin跨链演示中,两个链(链A和链B)被跨链接,并相互发送IBC注册链Tx进行注册。 跨链时,将直接发送IBC协议包以执行资产的跨链操作。但是这种直接连接有问题。随着访问网络的区域(相当于一个独立的区块链)的数量增加,如果直接实现通信,链接的数量将以平方的顺序增加。以连接到网络的100个区域为例。 果每个区域直接需要建立IBC连接,则网络需要n(n-1)/ 2 = 4950个通信链路。如此快速的增长显然将压倒整个网络。

Hub的概念可以解决有关此问题的问题。在Cosmos生态系统中,所有区域都将注册并向集线器发送IBC软件包。

Hub运行模式

Hub管理许多区域。所有区域都需要向Hub注册。Hub跟踪每个区域的状态。每个区域将其产生的所有新区块信息报告给Hub。同时每个区域还需要同步Hub的状态。每个区域不是通过区域之间直接通信,而是通过将IBC发送到Hub进行间接通信。

当区域建立与Hub的IBC连接时,它可以自动访问连接到Hub的其他区域,这意味着一个区域不需要连接到其他区域。

当一个区域从连接到Hub的另一个区域接收令牌时,它只需要信任Hub和该区域,而不必信任网络中的所有其他区域。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭