

Cardano 的 eUTXO(扩展未花费交易输出)模型解释了 Cardano 如何通过未花费输出来追踪价值并运行智能合约交易。与直接更改账户余额不同,交易会消耗现有的输出并创建新的输出。Plutus 脚本用于检查某个输出是否允许被花费。
Cardano 的扩展 UTXO(eUTXO)模型将脚本逻辑和可选数据附加到输出中。交易提供验证器所需的动作和上下文,然后花费符合条件的输入以创建新输出。不同的输出可以支持并行活动,但尝试花费同一输出的交易可能会发生冲突。
根据 Cardano Alonzo 升级文档,Cardano 于 2021 年 9 月通过 Alonzo 升级引入了 eUTXO,在支持多资产的同时启用了 Plutus 智能合约开发。该模型扩展了熟悉的 UTXO 方法,用于追踪未花费的交易输出。
价值存储在输出中: UTXO 是此前交易中尚未被花费的输出。Cardano 的 eUTXO 解释文档指出,每个 UTXO 必须被整体花费,且只能被消费一次。任何未使用的价值必须在新的输出中返回。 交易选择输入: 为了转移价值或与合约交互,交易会识别它将消费的输出。这些输入是显式的,而非对共享余额的隐形修改。 验证器检查花费: 脚本逻辑与输出地址相关联。如 Cardano eUTXO 文档所述,验证器会检查拟议的交易是否符合花费条件。 交易提供合约输入: Cardano 开发者文档描述了三个关键组件:Datum(与输出关联的状态)、Redeemer(提供花费动作或参数的数据)以及 Transaction Context(向验证器提供有关交易的信息)。这些要素共同帮助验证器做出判断。 新输出记录结果: 如果交易通过了所有必要检查并被纳入区块,它将消耗其输入并创建输出。这些剩余的输出可以代表未来交易的合约状态。 内联 Datum 使输出数据可直接获取。CIP-32 描述了将 Datum 数据存储在输出中,而不是要求花费交易单独提供完整的 Datum。具体应用细节取决于合约设计。合约验证器在输出被花费之前会检查交易数据。
此比较关注交易状态的表示和检查方式。这是一般性的技术对比,并非声称所有区块链或基于账户的应用程序工作方式完全相同。
| 状态表示 | 未花费的输出可以携带价值和关联数据。 | 交易通常引用并更新账户或共享合约状态。 | 交易花费对象 | 一个或多个指定的输出,每个输出仅被消费一次。 | 通常是账户余额或状态条目,具体取决于系统规则。 | 合约检查 | 验证器检查拟议的花费是否被允许。 | 合约逻辑检查请求的状态变更。 | 并发问题 | 使用不同 UTXO 的交易可能并行验证;争夺同一个 UTXO 会导致冲突。 | 涉及共享状态的交易可能需要协调,具体取决于实现方式。 |
Cardano 开发者指南指出,当交易花费不同的 UTXO 时,独立交易可以并行验证。但是,两笔交易不能同时消费同一个 UTXO。正如 Cardano eUTXO 开发者指南所解释的那样,开发者可以通过扇出(fan-out)、批处理或参考输入来管理竞争问题。
Cardano 的 eUTXO 模型并不意味着所有的合约交互都会同时发生。应用程序的设计至关重要:如果一个流行的单一输出成为瓶颈,而无关的输出仍可供其他交易使用,那么该单一输出就会限制整体吞吐量。
独立的 UTXO 允许单独的交易在不竞争相同输入的情况下进行。
开发工作随时间而变化。在 2026 年 9 月 18 的一份报告中,Input Output Global 表示已实施 Dijkstra 批处理验证,以便子事务的 Plutus 脚本运行,其执行预算计入区块和费用限制。Intersect 在 9 月 26 日的更新中表示,Node 11.2 预计将包含一种新的区块格式和 Plutus V4 上下文,同时指出这并非准备好硬分叉的版本。这些过时的更新描述了报告的开发状态,而非部署确认。
它是 Cardano 的扩展未花费交易输出会计模型。交易消耗现有输出并创建新输出,同时脚本检查输出是否允许被花费。
Datum 是与输出关联的数据,Redeemer 是为花费提供的动作或参数,交易上下文是验证器可以检查的有关交易的信息。它们共同帮助 Plutus 脚本决定拟议的花费是否符合其规则。
根据 Cardano 开发者文档,当它们花费不同的 UTXO 时,交易可以并行验证。依赖同一个 UTXO 的交易会竞争该输入,因此只有一笔交易可以消费它。
声明:文章不代表币圈网立场和观点,不构成本站任何投资建议。内容仅供参考!
免责声明:本站所有内容仅供用户学习和研究,不构成任何投资建议.不对任何信息而导致的任何损失负责.谨慎使用相关数据和内容,并自行承担所带来的一切风险.