随着公链和layer2链的数量越来越多,资产和Dapp的跨链需求也开始增多,跨链桥自然是一种比较常见的解决方案,但以Zetachain为代表的全链走出了一条完全不同的道路的道路,本文以Zetachain为例,解释Omminchain是如何把跨链规则写入智能合约从而实现跨链互操作的去中心化的。

几种跨链技术方案

跨链(Cross-Chain)技术的核心目标是实现不同区块链之间的互操作性(Interoperability)。互操作性是指不同的区块链系统能够相互理解和使用对方的资产(如代币)这一目标的实现,可以极大增强区块链生态系统的灵活性和扩展性,打破不同的区块链平台上运行的应用区块链平台之间的孤岛效应,从而促进更广泛的应用和发展。

根据跨链消息的处理方式以及相应资产的签名授权方式的不同,可以分为以下几个技术方案:

1.跨链桥(Cross-Chain Bridges):

跨链桥是一种使资产能够从一个区块链转移到另一个区块链的技术。它通过锁定在源链上的资产,并在目标链上发行相应的标的资产(或等价资产) )来实现这个过程。这种方式支持资产的跨链转移和使用,但需要保证资产的锁定和释放过程安全可靠。当两个独立的链采用桥接方式产生互操作时,我们说其中的一条链是另一条主链的侧链。

2. 公证(公证):

公证方案依赖于一组被信任的节点(或机构)来验证跨链交易的有效性。这些公证节点监听发生在一个链上的事件,并在另一个链上相应的事件来验证和记录这些这种方式虽然可以实现跨链互操作,但其安全性和去中心化程度很大程度上取决于公证节点的可信度。

3.哈希时间锁定协议(Hash Timelock Contracts, HTLCs):

HTLC是一种基于时间锁定的智能合约技术,允许两个参与方在没有第三方的情况下安全地进行跨链交易所。这是通过创建一个需要正确的密码才能释放资金的合约来实现的。当参与双方都履行了合约要求时,资金将被释放并交付给对方。这种方法支持去中心化的资产交易所,但对参与方的协作有一定的要求。

4. BoB(区块链on区块链,例如 Cosmos 的 IBC):

技术方案通过在现有区块链上创建新的区块链(或层)来实现跨链互操作性,例如Cosmos网络中的IBC(Inter-区块链Communication)协议。IBC允许不同的区块链保持独立的治理结构,同时实现资产和数据的安全传输。这种方法旨在建立一个去中心化的区块链互联网,其中各个链可以自由地交易所信息和价值。

这些技术方案各有优点,适用于不同的场景和需求。跨链技术的选择和实施需要目标区块链的特性、安全性要求、中心化程度以及实现的复杂性等因素。

跨链消息传递

跨链消息传递(Cross-Chain Message Passing,CCMP)是实现跨链互操作性的核心技术,保证跨链交互的流程能够安全、有效地进行,其根本目的是在不同的区块链间传递和验证消息,从而实现资产和数据的跨链交互。其工作原理主要包括以下几个关键环节:

1.消息的生成与发送:

– 消息通常包含涉及资产转移的所有必要信息,如资产数量、来源地址、地址目的等。

– 消息生成后,通过源链的智能合约发布,该合约会记录交易细节并触发资产的锁定。

2.消息的提交:

– 发货方式通常有两种:直接发货和中继发货。

– 直接传递意味着源链和目标链之间有直接的通信路径,但在实际中很少见到,因为大多数区块链都是独立可运行的。

– 中继传递涉及到中继者(可以是中心化的服务提供者,也可以是去中心化的节点网络),它们监听源链上的特定事件,捕捉相关信息,把这些信息传递到目标链。

3.消息的验证:

– 在目标链上,接收到的消息需要经过验证以确认其合法性和完整性。

– 验证过程通常需要源链的数据证明(如需要Merkle证明),这些证明可以证实消息确实来自源链,并且不会被篡改。

– 一旦验证通过,目标链上的智能合约将根据消息内容执行相应的操作,例如铸造代币或更新状态。

4. 处理和响应:

– 完成验证后,目标链会进行必要的操作处理,例如资产的释放或创建新的代币实例。

-此步骤完成后,跨链交易基本,用户可以在目标链上使用或管理自己的资产。

所以从本质上来说,前面提到的几种跨链技术方案是因为它们采用了不同的消息传递方式造成的。

1.跨链桥

跨链桥通过创建一个内部层来开始资产和信息在不同的区块链间的转移。这个内部层可以是:

  • 中心化的服务器,由可信实体控制,负责监听一条链上的事件并在另一条链上复制这些事件。
  • 去中心化网络,由独立运营的节点组成,这些多个节点通过舆情机制来验证和转发消息。

在跨链桥中,通常涉及资产在源链上的锁定和在目标链上对等资产的铸造。这个过程需要确保消息在被验证和执行之前不被篡改。

2. 公证人

公证方案需要依赖于一组预先选定的公证人(可以是个人、组织或自动化的节点),这些公证人负责监听一条链上的事件并在另一条链上验证和确认这些事件。有了一种中心化或半中心化的验证机制,这种安全性和信任度高度依赖于公证人的可信度机制。

3.哈希时间锁定合约(HTLC)

HTLC是一种依赖加密货币技术的合约,用于双链间的条件性资产交易所。它使用密码学哈希函数和时间锁来控制资产的释放条件:

  • 密码哈希:只有当接收方提供正确的预图像(对应于哈希的原始数据)时,资产才能从合约中释放。
  • 时间锁定:如果在规定期限内未提供正确的预图,资产将返还给原始持有者。

方式不依赖于中心化的验证,而是通过契约本身保障资产的安全交易所。

4.鲍勃

这种技术通过在一个跨链通信协议的基础上创建新的链或子链。例如,Cosmos通过IBC协议实现了不同区块链之间的直接通信,每条链同时保持其自治性,可以安全地交易所消息和资产。IBC和XCMP的本质其实是跨链通信协议。

同时CCMP技术也面临几个主要的挑战:

安全性:集群节点或网络必须是可信的,否则存在消息被篡改的风险。此外,源链和目标链的智能合约也需要设计得足够安全,以防止潜在的漏洞。

效率与延迟:跨链操作通常涉及多次区块确认,可能导致明显的时间延迟。

去中心化与信任问题:依赖节点或第三方服务可能与区块链的去中心化精神相悖,因此设计去中心化支撑安全的CCMP机制是一个技术挑战。

由于这些技术和安全上的挑战,CCMP的实现和优化是跨链技术研究和发展中的一个活跃领域。各种解决方案试图在去中心化、安全性和效率之间找到最佳平衡。

跨链资产的签名和授权

跨链技术和跨链互操作性不仅依赖于跨链消息传递(CCMP),还涉及如何在源链和目标链上进行有效的签名和授权,以保证资产的安全处理和交易的合法性。不同的跨链技术方案采用了不同的签名和授权,这些机制核心在于如何验证和执行交易的合法性,以及确保资产的安全转移。下面是一些常见的跨链技术方案中关于签名授权的实现:

1.跨链桥

跨链桥可能采用多签名(Multisignature)或代理签名(Proxy Signature)的方法来处理签名和授权。在这种方案中,转移资产的操作需要得到一定数量的验证节点或者特定的代理服务的授权,这些节点或服务承担验证交易请求的生态交易进行签名。这种方式可以增加安全性,但也引入了信任的问题,因为它依赖于被授权的中心化或半中心化实体。

2. 公证人

在公证人系统中,公证人或公证节点集合通常负责监听并验证跨链交易请求,并在目标链上执行相应的操作。公证人需要在目标链上对操作进行签名授权,证明源链上的交易是被允许的。这种方式依赖于公证人的信任度和安全性。

3.哈希时间锁定合约(HTLC)

在HTLC中,签名授权并不依赖于外部的验证者或输入。相反,交易的合法性和执行依赖于合约逻辑和参与者之间的直接交互。参与方提供正确的图像预(即密钥)作为解除合约的方式,这本身就是一种授权。另外,合约本身具备时间锁定机制,保证只有在特定时间窗口内提供正确的预图才能完成交易。

4.鲍勃

例如,Cosmos 的 IBC 协议中,签名过程通过链间协议和本地合约执行进行授权。每个链独立管理自己的安全性和授权机制,同时通过协议保证跨链消息的安全性和有效性。这种方案强调了去中心化和自治,减少了对单一实体的依赖。

总之,不同的跨链技术方案中的签名授权机制根据其结构和安全需求不同而不同。这些机制的选择和设计关键在于如何平衡安全性、信任、去中心化和效率。在实施跨链技术时,保证所有参与链的合法性和安全性是必要的。

Zetachain的架构

如果说 DeFi 是把金融规则写入智能合约,链上游戏是把游戏规则写入智能合约,那么 Omnichain 其实就是把跨链规则写入到智能合约里面,这里面包括了跨链消息传输规则和资产的签名授权规则,让我们深入细节来看看Zetachain是如何实现的。

ZetaChain 是一款基于 Cosmos SDK 和 Tendermint PBFT 思想引擎构建的 PoS区块链。由于使用了 Tendermint PBFT 思想引擎,ZetaChain 能够实现大约 5 秒的快速区块生成时间和即时的最终确定性(无需区块确认)在理想的网络条件下,其交易吞吐量可以达到每秒4000+笔交易,但跨链交易的吞吐量可能因为外部链的延迟和各种其他因素(如外部节点RPC速度等) )而无法达到这个水平。

ZetaChain 的架构包含了一个由节点组成的分布式网络,这些节点通常被称为验证者(validators)。ZetaChain 的每个验证者内部都包含 ZetaCore 和 ZetaClient。ZetaCore 负责产生区块链并维护复制的状态而 ZetaClient 负责观察外部链上的事件并签名外发交易。ZetaCore 和 ZetaClient 被资源放在一起,由节点运营者运行。任何人只需质币押足够的 ZETA 代就成为节点运营者,参与验证工作。

所以说,如果ZetaChain的验证者只运行ZetaCore组件,它就变成排序者(sequencer),如果只运行ZetaClinet组件并且只负责观察外部链上事件的话,它就变成观察者(observers),如果同样只运行ZetaClinet组件且只负责签名外发交易,它就是签名者(signers)。

ZetaChain 还集体持有标准的 ECDSA/EdDSA 密钥,用于与外部链进行认证互动。这些密钥去中心化在众多签名者(签名者)中,只有绝大多数签名者能够代表 ZetaChain 对外签名。ZetaChain 绑使用定性的质押和正/负激励机制来确保经济安全。

Zetachain的两种跨链互操作机制

Zetachain支持多种跨链互操作机制,一种就是传统的跨链桥机制,另一种全链智能合约机制。

跨链桥机制

我们首先来看跨链桥机制的工作流程,整个过程主要涉及以下几个步骤:

1. 用户与合约交互:用户在链 A 的合约 C1 上进行操作,留下一个事件或交易量,其中包含用户指定的 [chainID, contractAddress, message]。这个消息转换器二进制格式编码的应用数据。

2. 观察者捕获事件:ZetaChain的观察者(在zetaclient中)捕获到该事件或此时,并将其报告给zetacore,当天负责验证入站交易。

3. 构建出站交易:zetacore 修改 CCTX(跨链交易)状态变量以及 OutboundTxParams,指导 TSS 签名者(zetaclient 中)构建在签名并广播外部交易。

4.签名和广播:zetaclient的TSS签名者根据CCTX中的OutboundTxParams构建出站交易,进行TSS密钥签名仪式,然后将签名后的交易广播到外部链。

5.更新和追踪状态:CCTX结构还跟踪跨链交易的各个阶段/状态。

6. 交易确认:一旦广播的交易在某个区块链上被包含(即“挖矿”或“确认”),zetaclient 会将确认情况报告给 zetacore,随后更新 CCTX 状态。

7. 处理成功与失败:

– 如果外部交易成功,CCTX 状态变为 OutboundMined,CCTX 处理完成,进入终端状态。

– 如果外部交易失败(例如在以太坊链上被撤销),CCTX 状态更新为 PendingRevert(如果可能)或 Aborted(如果撤销不可能)。如果进入 Aborted 状态,则 CCTX 处理完成。

8.处理撤销:

– 如果新状态为“PendingRevert”,CCTX中应已经包含个OutboundTxParams,指导zetaclients创建一个返回到入站链和合约的“Revert”出站交易,允许入站合约实现应用级别的撤销功能以清理契约状态。

– zetaclients构建取消交易,进行TSS密钥签名仪式,将交易广播回站区块链(本例中的链A)。

9.取消确认:

-一旦撤销交易在链A上“确认”,zeta客户将交易状态报告给zetacore。

– 如果撤销交易成功,CCTX状态变为Reverted,并完成处理。

– 如果撤销交易失败,CCTX状态变为Aborted,并完成处理。

通过步骤,我们可以看到,跨链消息的传递主要是通过ZetaCore和ZetaClient的内部通信完成,是偏中心化的方式,也必然利用Zetachain本身的智能合约,只是用到了目标链的智能合约,在这种情况下,只有目标链是构成以太坊这样的智能合约平台才可以实现,并且每条链至少都要部署一个合约来达到跨链互操作性。如果是比特币这样的非智能另外,应用状态和逻辑以去中心化的方式去中心化在所有这些应用合约中。在不同的链之间同步状态和通信变得昂贵、缓慢,并且复杂化了回滚处理。解决上述问题,Zetachain引入了Omnichain智能合约机制。

全链智能合约机制

Omnichain智能合约是ZetaChain提出的一种简化跨链互操作性处理的方法。它主要通过以下步骤来处理跨链消息并实现跨链互操作:

1. 资产的接收:用户将本地资产(如ERC20代币)发送到链A的TSS地址,同时附上一条消息指定[zEVMContractAddress, message]这里的 TSS 地址可能是一个专门用于托管 ERC20 代币而设置的合约。

2. 观察和报告:ZetaChain 的观察者(zetaclients)监测到近期即将进行的跨链调用,类似 zetacore 报告。

3. 调用和执行:zetacore 调用 SystemContract 的 `depositAndCall()` 函数,该函数再调用指定的 zEVMContractAddress 的 `onCrossChainCall()` 函数。这个调用过程中:

– `zrc20` 参数将在第一步中为管理用户填充发送的外来代币的 ZRC20 合约地址。

– `amount` 参数将根据用户发送的代币数量进行填充。

– `message` 参数将是用户在交易中发送的消息。

4. 合约逻辑的执行:omnichain 智能合约通过 `zContract(zEVMContractAddress).onCrossChainCall(zrc20, amount, message)` 的方式被调用。应用合约应在 `onCrossChainCall()` 函数中实现其业务逻辑。

5. 处理合约执行结果:

– 如果合约执行成功且没有外部资产投入,则缔结全链智能合约互动完成。

– 如果 zEVM 合约执行失败(发生回滚),则创建一个 CCTX 以取消入站交易,即将相同数量的外来代币支付给用户(过去可能的费用)。

– 如果 `onCrossChainCall()` 有输出(例如,它触发了一些 ZRC20 的提款操作),则创建另一个 CCTX 来指导和跟踪将外部资产转移到外部链上用户指定的地址。这些提款通常是简单的代币转移。

Omnichain智能合约的显着特点是:

– 它只部署在 zEVM 上,所有逻辑和状态中心化在一个地方,使得应用的开发和更加简单。

– 它不需要在外部链上部署应用智能合约,因此能够支持像比特币这样的非智能合约链。

– 由于所有的撤销操作均由 ZetaChain 协议处理,应用约定撤销处理撤销逻辑。

一句话来描述的话,除了少量需求信息是ZetaCore和ZetaClient之间的内部通信外,其他跨链信息的处理规则都写入了Zetachain本身的智能合约里面。只要用户向目标链的指定地址发送一笔标记附加消息的枢纽,即可触发Zetachain本身智能合约内部的跨链操作。

更复杂的 dApp 可能更喜欢全链智能合约,因为逻辑和状态在一个地方,而在传统消息传递中,则必须在不同链上广播消息和状态同步,这可能会导致更多的攻击面和更多的Gas费用(每个消息都需要支付额外的Gas,需要发送的消息数量会增加以保持完全状态同步)。换句话说,对于开发人员来说,Omnichain智能合约的行为就希望所有资产都在一个链上(见下图)。

链抽象Omnichain就是把跨链规则写入智能合约?

Zetachain的签名机制授权

ZetaChain的签名授权机制依赖于先进的多方门限签名方案(Threshold Signature Scheme,TSS),该方案能够有效地解决单点故障问题,增强整个系统的安全性。

链抽象Omnichain就是把跨链规则写入智能合约?

1. 允许门限签名方案:ZetaChain使用基于多方计算(Multi-Party Computation,MPC)的TSS,这种方案多个验证者(validators)共同管理一个单一的ECDSA/EdDSA私钥,但又不会让任何实体或少数验证者完全掌握私钥。方式可以提供热钱包的便捷性和冷钱包级别的安全性。

2.密钥生成与分发:在ZetaChain中,私钥是通过消耗信任内的方式生成的,并在所有验证者之间分发。这意味着在任何时候没有任何单个验证者或外部行为者访问完整的私钥,从而保证了系统的安全性。

3.签名过程:ZetaChain采用的TSS是无主导的,即通过循环的方式进行密钥生成和签名,这样可以保证在密钥生成或签名过程中不泄露任何泄露信息。为了提高效率,ZetaChain还采用了批量签名和批量签名技术,以提高签名者的吞吐量。

4.智能合约与资产管理:由于拥有TSS密钥和地址,ZetaChain能够在连接的链上管理本地金库/资金矿池,包括比特币等非智能合约链。这实际上为比特币网络等添加了智能合约功能,使得用户可以把资产集合在一起,让智能合约根据预设规则管理这些资产,如自动化市场做市商(AMM)矿池或借贷矿池等。

5.支持非智能合约链:TSS使得ZetaChain能够支持如比特币、狗狗币这样的非智能合约链,以及验证按钮签名成本高昂的智能合约平台。

通过这种签名授权机制,ZetaChain不仅能够提供强大的跨链功能,还能保证交易的安全性和验证性的去中心化,从而成为支持广泛的数字资产管理和操作的困境平台。