By George Z. September 2, 2021
2. 理解扩展的UTXO模型(Etended UTXO Model)
卡尔达诺(如比特币)是一种基于未花费交易输出(UTXO)的区块链,它使用不同于其他基于账户的区块链(如以太坊)的账本会计模型。 Cardano 实施了创新的扩展未花费交易输出 (EUTXO) 模型,该模型由 Alonzo 升级引入,以支持多资产和智能合约。
2.1 概述
在 UTXO 模型中,交易有输入和输出,其中输入是先前交易的未花费输出。资产存储在分类帐中的未花费输出中,而不是帐户中。一旦输出被用作交易中的输入,它就会被花费并且永远无法再次使用。输出由地址(公钥或公钥哈希)和值(由 ada 金额和任何可选的附加本机令牌金额组成)指定。输出的地址决定了允许哪些交易“解锁”输出并将其用作输入。交易必须由地址对应的私钥的所有者签署。将地址视为“锁”,只能通过正确的“钥匙”(正确的签名)“解锁”。这些输出中的每一个都指定了存储在其中的资产数量及其地址。未花费的输出是不可变的,因此交易可能会消耗整个输出,但不能更改它。总之,交易消耗之前交易的未花费输出,并产生可用作未来交易输入的新输出。用户的钱包管理这些 UTXO 并发起涉及用户拥有的 UTXO 的交易。 每个区块链节点始终维护所有 UTXO 子集的记录。 这称为 UTXO 集。 从技术上讲,这就是链状态,它存储在每个节点的数据目录中。 当一个新块被添加到链中时,链状态会相应地更新。 这个新区块包含最新交易的列表(当然,包括已用 UTXO 的记录,以及自上次更新链状态以来创建的新交易)。 每个节点都维护着链状态的精确副本。
figure-2
2.2 Cardano 的扩展 UTXO 模型
EUTXO 模型从两个方面扩展了 UTXO 模型:
-
它通过使用锁和钥匙的类比概括了“地址”的概念。 EUTXO 模型中的地址可以包含脚本形式的任意逻辑,而不是将锁定限制为公钥和签名密钥。例如,当节点验证交易时,节点会确定是否允许交易使用某个输出作为输入。交易将查找输出地址提供的脚本,如果交易可以使用输出作为输入,则将执行脚本。
-
UTXO 和 EUTXO 之间的第二个区别是,除了地址和值之外,输出还可以携带(几乎)任意数据。通过允许脚本携带状态信息,这使得脚本更加强大。
此外,EUTXO 通过允许输出地址包含复杂逻辑来决定哪些交易可以解锁它们,以及通过向所有输出添加自定义数据来扩展 UTXO 模型。在验证地址时,脚本将访问输出携带的数据、正在验证的交易以及一些称为赎回者的附加数据,交易为每个输入提供这些数据。通过查找所有这些信息,脚本有足够的上下文来在高度复杂的情况和用例中给出“是”或“否”的答案。EUTXO 以脚本的形式启用任意逻辑。这种任意逻辑检查交易和数据,以决定是否允许交易使用输入。具有图结构的 UTXO 模型与一些现有的启用智能合约的区块链使用的基于帐户的模型有着根本的不同。因此,适用于基于账户的区块链上的 DApp 的设计模式不会直接转化为卡尔达诺。因为数据的底层表示不同,所以需要新的设计模式。EUTXO 继承了 UTXO(比特币)模型的每个分支设计,其中一个分支根据定义是一系列需要一系列验证的交易。为了将逻辑拆分到不同的分支并实施更多的并行性,必须使用多个 UTXO 构建 DApp 和其他解决方案。这在扩展方面提供了好处,就像开发比特币服务先决条件将一个钱包分成子钱包一样。
2.3 EUTXO 的优势
卡尔达诺的 EUTXO 模型提供了一个安全且通用的环境来处理多个操作而不会出现系统故障。该模型提供了更好的可扩展性和隐私性,以及更简化的交易逻辑,因为每个 UTXO 只能作为一个整体消费一次,这使得交易验证变得更加简单。EUTXO 模型与其他会计模型相比具有独特的优势。交易验证的成功或失败仅取决于交易本身及其输入,而不取决于区块链上的任何其他内容。因此,在将交易发送到区块链之前,可以在链下检查交易的有效性。如果某个其他事务同时消耗了该事务期望的输入,则该事务仍然可能会失败,但如果所有输入仍然存在,则该事务肯定会成功。这与基于账户的模型(以太坊使用的)形成对比,在这种模型中,交易可能会在脚本执行中失败。这在 EUTXO 中永远不会发生。由于交易验证的“本地”性质,高度并行是可能的。原则上,如果交易不尝试使用相同的输入,节点可以并行验证交易。这对于效率和推理来说都非常有用,可以简化对可能结果的分析,并证明“不会有什么坏事”发生。您可以深入了解 EUTXO 模型博客文章。EUTXO 模型的一个强大功能是,可以在发布之前准确预测有效交易所需的费用。这是基于帐户的模型中没有的独特功能。基于账户的区块链,如以太坊,是不确定的,这意味着它们不能保证交易在链上的效果。这种不确定性带来了金钱损失、意外高额费用以及对抗行为的额外机会的风险。总而言之,EUTXO 提供了更高的安全性、智能合约执行成本的可预测性(没有令人不快的意外)和更强大的并行化。