UTXO和账户/余额模型

目前在区块链网络中,两种记录模式非常流行,第一种是UTXO(未使用交易输出)模型,另外一种是账户/余额模型,UTXO在比特币网络和Hyperledger中使用,账户/余额模型在以太坊和其他区块链项目中应用较多,本文简单介绍一下两种模型的工作原理和优缺点。

在比特币中,每笔交易都会花费先前交易的产出,并产生新的产出,这些产出可能会在未来通过交易消耗。 所有未使用的事务都保存在每个完全同步的节点中,因此该模型被命名为“UTXO”。 用户的钱包跟踪与用户拥有的所有地址相关联的未使用交易的列表,并且钱包的余额被计算为这些未使用的交易的总和。

UTXO模型如何在比特币交易中工作的简单示例:

1.通过采矿,Alice获得了12.5个比特币。 Alice的钱包与一个12.5比特币的UTXO记录相关联。

2.爱丽丝想给鲍勃1比特币。 Alice的钱包首先解锁了她12.5比特币的UTXO,并使用这12.5比特币作为交易的输入。 该交易将1比特币发送到Bob的地址,并且将11.5比特币的提醒以新的UTXO的形式发回给Alice,以新创建的地址(由Alice拥有)。

3.假设在步骤2之前还有另一个与Bob相关的2个比特币的UTXO,Bob的钱包现在显示他的余额是3个比特币。 Bob的钱包现在跟踪两个UTXO:一个来自前一个,另一个来自第二步的交易。如果Bob希望花费他们,则需要解锁每个UTXO。

账户/余额模型会将每个账户的余额保持为全球状态。 检查帐户的余额以确保其大于或等于支出交易金额。

以下是这个模型在以太坊中的工作原理简图:

艾丽斯通过采矿获得5个醚。 在系统中记录爱丽丝有5个醚。

2.爱丽丝想给鲍勃1乙醚,所以系统将首先从爱丽丝的账户中扣除1乙醚,所以爱丽丝现在有9个乙醚。

3.系统然后将鲍勃的账户增加1乙醚。 系统知道鲍勃有2个醚,所以Bob的平衡增加到3个醚。

UTXO模型中的交易的一个比喻是纸币账单(纸币)。 每个账户通过累积钱包中的账单数量(与这个地址/钱包相关联)来记录它有多少钱。 当我们想花钱的时候,我们使用一个或多个账单(现有的UTXO),足以支付成本,并可能收到一些改变(新的UTXO)。 每张账单只能用一次,因为一旦用完,UTXO就从池中移出。

以太坊的记录保存就像银行一样。 类比是使用ATM /借记卡。 银行跟踪每张借记卡有多少钱,当我们需要花钱时,银行会在批准交易前检查记录以确保我们有足够的余额。

两种模式都达到了在共识系统中跟踪账户余额的同一目标。

UTXO模型的优点:

可扩展性 - 由于可以同时处理多个UTXO,因此可以实现并行事务并鼓励可伸缩性创新。

隐私 - 甚至比特币也不是一个完全匿名的系统,但只要用户为每笔交易使用新地址,UTXO就可以提供更高级别的隐私。 如果需要增强隐私性,可以考虑更复杂的方案,例如环签名。

余额/账户模型的优点:

简单性 - 以太坊选择了一种更直观的模式,以便为复杂智能合约的开发人员带来益处,尤其是那些需要国家信息或涉及多方的开发人员。 一个例子是一个智能合约,跟踪各国根据它们执行不同的任务。 UTXO的无状态模型会迫使交易包含状态信息,这不必要地使合约的设计复杂化。

效率 - 除了简单之外,账户/余额模型更加高效,因为每笔交易只需要验证发送账户是否有足够的余额来支付交易。

账户/余额模型的一个缺点是暴露于双重支出攻击。 可以实施递增的随机数来抵消这种类型的攻击。 在以太坊中,每个帐户都有一个公共可见的随机数,每次进行交易时,随机数都会增加一个。 这可以防止相同的事务被多次提交。

你可能感兴趣的:(UTXO和账户/余额模型)