03-UTXO和Account模型对比
0x-wen

在区块链中常见的两种记录模式:UTXO(Unspent Transaction Output,未花费的交易输出)模型Account(账户)模型

1.UTXO模型:区块链中的现金类比

在基于 UTXO 的区块链中,加密货币账户余额只是拥有的 UTXO 的总和,如实体钱包中拥有不同面额的钞票一样。

没有身份的概念,只有关联到不同钱包地址的 UTXO 或者说 “未花费的代币”。

比特币协议不追踪用户的余额,而是追踪 UTXO 以及这些 UTXO 分别属于哪些地址。

2.采用UTXO模型的交易步骤

  1. 确定交易金额:发送方确定要发送的加密货币金额。

  2. 选择UTXO:发送方的钱包查找足够覆盖交易金额的UTXO。这些UTXO是之前收到但尚未花费的交易输出。

  3. 创建交易:钱包创建一笔新的交易,这笔交易包含以下部分:

    • 输入(Inputs):选择的UTXO列表,这些将被用于支付交易金额。
    • 输出(Outputs):至少包含两个输出,一个是支付给接收方的金额,另一个是找零(如果原始UTXO的总和大于所需支付的金额)。
    • 交易费(Transaction Fee):为了激励矿工将交易纳入区块链,发送方需要支付一定的交易费。
  4. 签署交易:发送方使用与其钱包地址相关联的私钥对交易进行数字签名。这个签名证明了交易是由拥有私钥的用户发起的。

  5. 广播交易:签署后的交易被广播到区块链网络中,网络中的节点会接收这笔交易。

  6. 节点验证:网络中的节点接收到交易后,会进行验证,确保:

    • 交易格式正确。
    • 输入的UTXO是有效的,且未被花费过。
    • 签名与UTXO的公钥匹配。
    • 交易费用合理。
  7. 交易池(Mempool):验证通过的交易会被放入节点的交易池(mempool)中,等待被矿工打包进区块。

  8. 矿工打包交易:矿工从交易池中选择交易进行打包,创建一个新的区块。

  9. 区块链更新:当新区块被成功挖出并添加到区块链上时,交易被认为是确认的。此时,UTXO集会更新:

    • 交易中使用的输入UTXO从UTXO集中移除。
    • 新创建的输出成为新的UTXO,添加到UTXO集中。
  10. 交易确认:随着区块被添加到区块链上,交易得到网络的确认。

    通常需要多个后续区块(即几个确认)来增加交易的安全性。

    • 1个确认:交易已经被打包进最新的区块,但仍然存在被回滚(reorg)的风险,尤其是当矿工算力非常集中时。
    • 3个确认:交易被认为相对安全,因为它需要重新计算3个区块的工作量证明才能被更改。
    • 6个确认:这通常被认为是一个较高的安全标准,需要更多的时间和资源来回滚交易。

    在一些高价值交易或对安全性有更高要求的场景中,可能会等待更多的确认来确保交易不可逆。

  11. 接收方确认

    • 接收方或其钱包会检查区块链,确认交易已经被纳入区块并且有足够的确认。

3.UTXO模型优缺点

优点:

  1. 提高隐私性:由于每次交易都可以使用新的地址,UTXO模型提供了较高的隐私保护,使得追踪用户的资金流向更加困难。
  2. 支持并行处理:UTXO模型允许区块链网络并行处理交易,因为每个交易的验证不依赖于其他交易,这有助于提高交易吞吐量。
  3. 无状态性:UTXO模型是无状态的,意味着节点不需要维护一个全局的状态表,这使得系统更加简洁和易于维护。

缺点:

  1. 缺乏可编程性:UTXO模型本身不支持复杂的脚本和智能合约功能,限制了区块链的可编程性和灵活性。
  2. 交易灵活性降低:在UTXO模型中,每笔交易都需要精确地花费一个或多个UTXO,并产生找零,这增加了交易的复杂性。

4.Account模型:区块链中的银行账户类比

最初由以太坊采用,类似于传统银行账户的处理方式。在这种模型中,交易直接反映在用户账户的余额变化上。

在账户余额上做加减操作,由网络节点来维护用户余额的分布式账本,存在身份的概念通常于与账户或者地址关联

5.采用Account模型的交易步骤

  1. 创建交易:发送方决定交易的接收方地址和要发送的金额。
  2. 交易签名:发送方使用他们的私钥对交易进行签名,以证明身份并授权这笔交易。
  3. 交易广播:签名后的交易被发送到区块链网络中的节点。
  4. 交易验证:网络中的节点接收到交易后,会进行一系列验证,包括检查签名的有效性、确保发送方账户有足够的余额以及交易是否符合其他网络规则。
  5. 交易费用计算:根据交易的复杂性和大小,计算所需的交易费用。
  6. 交易池存储:验证通过的交易被存储在节点的交易池(mempool)中,等待被打包进区块。
  7. 区块打包:矿工或验证者从交易池中选择交易,并将其打包进新的区块。
  8. 共识机制:通过工作量证明(Proof of Work)或权益证明(Proof of Stake)等共识机制,新区块被添加到区块链中。
  9. 状态更新:当新区块被确认后,账户的状态(余额和非货币属性)会根据交易内容进行更新。
  10. 交易确认:交易被网络中的其他节点确认,并且随着区块的增加,交易的确认深度也会增加,从而提高交易的安全性。
  11. 交易完成:一旦交易被确认并且相应的状态变更被记录在区块链上,交易就被认为是完成的。

6.Account模型优缺点

优点:

  1. 易于理解:Account模型类似于传统的银行账户系统,用户容易理解账户余额和交易的概念。

  2. 可编程性:Account模型通常支持图灵完备的智能合约,允许开发者编写复杂的逻辑和去中心化应用。

  3. 简化的交易结构:交易通常只需要包含发送者、接收者、金额和数据,结构相对简单。

缺点:

  1. 状态存储需求:Account模型需要存储每个账户的状态,随着用户数量的增加,状态数据可能会迅速增长。
  2. 隐私性:由于账户地址与所有交易直接关联,可能更容易分析和追踪用户的行为模式。
  3. 网络拥堵:Account模型通常需要按顺序处理交易,这在高需求时可能导致网络拥堵。
由 Hexo 驱动 & 主题 Keep
总字数 41.7k