
eUTXO(扩展未花费交易输出)提供了一种独特的方式来创建智能合约和在类似比特币的区块链上构建dApp。eUTXO模型在根本上与以太坊的基于账户模型以及许多其他智能合约链不同,并且具有各种优点和权衡。
什么是UTXO?
UTXO是未花费交易输出,或是交易的结果而未被接收地址花费的一块币。UTXO是比特币和类似区块链(包括Ergo)的一个重要概念。
在这样的系统中,地址的余额并不是作为单一值存储在区块链上。相反,它是从交易到地址的可花费“输出”集合的总和,每个输出代表一定数量的币。这些单独的输出就是UTXO。
UTXO是如何工作的?
UTXO是一种在区块链上跟踪余额的手段。当用户发起交易时,他们实际上是在花费他们在钱包中控制的一个或多个UTXO。交易的输出为接收者创建新的UTXO,并且如果发送者有剩余,则可能会有一个“找零”余额的UTXO币。
例如,Alice想要给Bob发送20 ERG。她的地址包含15、10、7、6和3 ERG的UTXO。她选择了15和6 ERG的UTXO(需要注意的是,这一步通常由加密钱包自动处理,但也可以手动完成),并将20 ERG发送给Bob。Bob现在在他的钱包中有一个20 ERG的UTXO,而Alice收到1 ERG的“找零”UTXO。
Alice可以组合任何数量的UTXO,总计至少20 ERG发送给Bob,但使用的UTXO越多,需要在区块链上存储的数据量就越大,交易费用也越高。
在交易中发送的UTXO在未来的交易中被使用之前被视为未花费。此时,它们成为新的UTXO的一部分。
因此,UTXO有点像装钱的信封。用户可以持有许多这样的信封,并可以在交易中将它们组合在一起。任何新产生的找零(超出交易金额的资金)将放入一个新信封,并由发送者保留。
用户还需向矿工支付小额交易费用,这只是总输入和总输出(包括找零)之间的差额。(在Ergo上,这通常是简单交易的0.0011 ERG。)
因此,区块链上的每个币都属于一个UTXO。任何币都可以通过之前的UTXO币块追溯回去,直到它首次存在的交易(即它被挖掘时)。
这就是类似比特币的区块链如何跟踪余额并确保交易的可靠性。每笔交易必须引用有效且未花费的UTXO才能被视为合法。UTXO模型提供了透明性,并允许任何人通过检查区块链独立验证比特币的所有权和有效性。
因此,UTXO代表了比特币类系统中所有权和交易的构建块。
什么是基于账户的模型?
UTXO模型的主要替代方案是基于账户的方法。这被许多区块链使用,包括以太坊。基于账户的模型在跟踪区块链状态方面与UTXO链的工作方式完全不同。
基于账户的模型是如何工作的?
在基于账户的区块链中,交易通过与地址关联的账户进行管理。每个用户都有一个账户,余额就像银行账户一样,交易涉及借记和贷记这些余额。
账本的状态在交易执行后更新,以反映账户余额的变化。该模型对用户余额提供了更细粒度的控制(因为不需要找零输出),但具有不同的属性,以及各种优缺点。
UTXO与账户:优缺点
像任何系统一样,使用UTXO模型或基于账户的方法都有优缺点。
UTXO模型的优点:
- 简化的状态跟踪:每个UTXO代表特定数量的加密货币及其所有权,使得跟踪区块链状态变得简单。
- 隐私:如果使用得当,UTXO模型可以增强隐私,因为单个交易不会直接与用户身份关联。
- 并行处理:UTXO可以并行处理,从而加快交易的验证和确认,可能有助于可扩展性。
- 清晰的所有权跟踪:追踪特定数量币的来源和当前持有者非常简单。
- 减少区块链膨胀:由于已花费的UTXO从UTXO集合中移除,使用UTXO模型可以帮助减少区块链膨胀,从而实现更高效的存储。
UTXO模型的缺点:
- 脚本挑战:由于UTXO模型的性质,脚本的操作方式与基于账户的平台不同,因此如果开发者习惯于更传统的方法,构建dApp可能会更困难。
- 较少的表达能力的智能合约:UTXO模型的简单性可能限制智能合约的复杂性,尽管有方法可以解决这个问题。
- 可扩展性:随着区块链上持有的UTXO数量的增加,可能会出现可扩展性挑战。
- 资源使用:UTXO模型可能导致资源使用效率较低,因为花费币涉及消耗整个UTXO,即使交易金额较低。
什么是eUTXO?
如上所述,在标准的UTXO模型(如比特币使用的)中,每笔交易都需要现有的UTXO作为输入,并创建新的UTXO作为输出。
扩展的UTXO或“eUTXO”模型通过允许UTXO包含额外信息(如复杂脚本或智能合约逻辑)来扩展这一概念。
这种方法的好处是用户仍然可以享受UTXO模型的好处,包括安全性和简单性,但平台也可以提供智能合约功能。Cardano是一个利用eUTXO模型在其网络上启用智能合约的知名区块链。Ergo也是另一个。
eUTXO是如何工作的?
eUTXO模型在两个方面扩展了标准的UTXO币模型:
- 地址可以在脚本中包含额外的逻辑,提供进一步的条件和信息。当交易被节点挖掘时,节点会检查并执行脚本,如果条件满足。
- 输出可以包含额外数据,允许更强大和灵活的脚本。
所有这些都允许复杂的逻辑,可以包含许多不同的条件和信息。这种任意逻辑由验证者应用于交易,并在交易被允许使用给定输入时进行处理。
eUTXO的优缺点
从上面的概述可以看出,使用UTXO作为智能合约基础有各种影响。其中一些提供了相对于基于账户的智能合约的显著优势,但在任何系统中都有权衡。
eUTXO模型的一个特征是,交易仅基于交易本身及其输入进行验证,而不需要区块链上的其他任何内容。这一有趣且有用的含义是,交易可以在链下检查有效性,然后再发送进行验证。在检查后,交易将被保证成功(只要在此期间没有其他交易消耗其输入)。因此,eUTXO比基于账户的智能合约交易更可预测和可靠,后者在处理时可能会失败。例如,在以太坊上,交易可能消耗大量gas但仍然失败,给用户带来损失而没有任何好处。
这种可靠性的另一个含义是,交易所需的所有费用也可以在提交交易之前计算。以太坊和其他基于账户的系统是非确定性的,这意味着交易不仅可能失败,即使成功,确切的成本也无法得知。使用eUTXO模型,费用是预先确定和可预测的。
隐私在eUTXO模型中往往更好,交易逻辑往往更简单,因为UTXO只能被消费一次(并且是全部)。它还提高了并行处理的可能性,因为多个UTXO可以并行处理(只要它们不试图使用相同的输入UTXO)。可能的结果范围远比基于账户的系统要有限得多,使得执行更可预测和安全。
与此相对,eUTXO模型与基于账户的模型有很大不同,而大多数开发者对此更为熟悉(因为以太坊采用了这种方法)。为以太坊和类似区块链创建的dApp不能轻易适应eUTXO平台。
eUTXO与UTXO与基于账户模型之间的关键区别
UTXO代表可以在新交易中使用的简单未花费输出。这是第一代区块链(比特币)使用的简单、安全的会计模型。
eUTXO扩展了这种方法并进行了概括,以便验证者可以根据广泛的条件决定UTXO是否被花费——使得能够构建广泛而富有表现力的智能合约,同时保留UTXO基础的简单性和安全性。
在基于账户的系统上执行智能合约可能更复杂且潜在不太安全,因为数据存储和更改的方式。
在eUTXO系统中,UTXO币要么被完全花费,要么不被花费。在基于账户的系统中,每个账户是可变的,智能合约可以在执行过程中修改其状态。这可能导致不同合约之间复杂且有时难以预测的交互。一个智能合约的状态变化可能会影响其他合约,因此可能需要考虑潜在的冲突。这在eUTXO模型中是不可能的。由于UTXO是独立的,它们是隔离的,智能合约的执行更具确定性和安全性——账本的一个部分的变化不会直接影响其他部分。花费条件清晰且易于验证。同样,gas计算是已知且可预测的。
与此相对,基于账户的区块链通常为复杂的智能合约和去中心化应用提供更大的灵活性,因为开发通常更简单,合约可以轻松访问和与其他合约交互——尽管这带来了更大的风险,并且可能无意中引入漏洞。在所有条件相同的情况下,eUTXO基础的方法通常更可取,适用于某些类型的dApp。
结论
eUTXO提供了一种根本不同的方式来处理智能合约和去中心化应用,与主流的基于账户模型相比。虽然在某些方面它可能看起来更有限,但eUTXO模型通常更安全和可预测,消除了与智能合约相关的一些最严重的漏洞。
Share post




















