ZetaChain的创新交易模型结合了UTXO的简单性和安全性以及基于账户的表达方式。这种混合设计使得跨链信息传递和原生的全能链智能合约成为可能,可以直接与外部链上的状态进行交互。

在我们广泛的区块链互操作性市场分析中,我们承认有一些区块链项目和建议旨在实现通用程序化。问题是,这些项目要么是不同程度的中心化,要么是利用有问题的信任模型。这在加密货币生态系统中留下了一个公共的、无权限的、去中心化的全链交互方法的重大空白。ZetaChain是第一个激励性公共区块链和通用跨链智能合约平台的先驱。这样一个大胆的说法引出了一些大问题,即区块链 "记账 "机制在支持跨链dApps方面的局限性和异步的挑战。在这篇文章中,我们将通过对ZetaChain的混合交易模型设计进行深入了解来解决这两个问题,该模型由Zeta虚拟机(ZVM)提供支持。

区块链交易模型

为了实现通用的全能链智能合约支持,你需要克服几个关键的挑战。首先是异构链之间的通信本质上是异步的。与以太坊虚拟机(EVM)等单一链上的智能合约不同,查询或改变另一条链的状态是由来自外部链的消息(观察)触发的。这种类型的跨链智能合约交易模型最好被视为一个有限状态机。

第二个挑战是区块链编程模型,它影响到智能合约如何传输消息、数据和价值。从历史上看,有两种主要的 "记账 "模式来记录和改变区块链上的状态。UTXO(未花费的交易输出),这是比特币、Ergo、Cardano等使用的,以及基于账户的,这是由EVM使用。下面是每个人的简单概述。

图1:UTXO与基于账户的模型:网络状态可视化

图1:UTXO与基于账户的模型:网络状态可视化

UTXO与基于账户的模型

这些模型之间的关键区别在于它们的表达能力。基于账户的模型的计算性质使其表达能力高于基于UTXO的脚本,可以认为它更像是一个验证模型。然而,基于UTXO的智能合约通常更简单,更稳定,在存储和计算方面更有效率,而且由于UTXO的限制,它们的攻击面更小。例如,在实践中,比特币脚本很少有意外的安全漏洞,而以太坊智能合约则以数百万美元的漏洞而闻名。另外,在比特币的情况下,UTXO对密钥不变性的隐性执行消除了双重花费问题:交易总输入金额=总输出金额。因此,虽然基于账户的编程的表现力允许轻松创建复杂的DApps(AMM,ICO等),但它的代价是较低的安全性。

混合交易模式的尝试

如果你要提出一个去中心化的、通用的跨链智能合约平台,那么你需要解决以下挑战:你如何扩展UTXO模型,使其具有足够的表现力来支持流行的dApps,如Uniswap风格的AMM DEX,同时仍然保持简单和安全?

有几个进步的项目试图解决这个难题。Ergo开创了扩展UTXO(eUTXO)模型,随后是Cardona。在这些eUTXO平台中,AMM DEXs可以在一定程度上通过在UTXO中保持AMM对的状态来实现,但这并非没有严重的问题。一个区块中只有一个交易可以成功,因为只有一个交易可以花费该UTXO并在一个区块中创建一个新的。其结果是UTXO拥堵,试图花费同一个UTXO的已完成交易将失败,必须等待一个区块并花费新的UTXO。这不是很理想。

ZetaChain的混合UTXO-账户设计

ZetaChain引入了一种混合UTXO和基于账户的方法,结合了各自的优势。从本质上讲,它使用UTXO来表示和跟踪外部区块链交易(被视为一个合成的UTXO),并使用基于账户的智能合约来逻辑和管理共享的全局状态。一个UTXO包括ZETA币的数量(已烧毁),另一个币的数量(例如,在比特币网络上不可能发行ZETA币的BTC),和一个脚本msg(大致相当于以太坊上的消息或函数调用)。合成的UTXO模型使ZetaChain能够体验到问责制、简单性和可扩展性的好处,同时避免了UTXO的关键限制,即其脚本的表现力,以及在某些重要应用中的尴尬(即AMM中每个区块的交易)。

让我们来看看ZetaChain的混合UTXO-账户流程(图2)。

  1. ZetaChain上的智能合约运行并生成一个事件,试图在ZetaChain上花费UTXO。
  2. 该事件随后被ZetaClient签名者接收,他们将签署一个交易到外部链。
  3. ZVM和ZetaClient将验证某些不变量,其中之一是输出ZETA必须等于UTXO中的输入ZETA。
  4. 在确认和观察出站交易后,UTXO被标记为已用,并从状态机中删除。如果出站交易失败(气体不足,等等),UTXO被标记为恢复,ZETA和/或相关硬币的退款将在源链上退还。当退款被确认后,UTXO被从状态机中删除。