构建 Ergo:UTXO 与账户
2020年3月3日

Ergo 采用比特币最安全和最成熟的特性,并在其坚实的基础上实现了先进的新加密功能。本系列探讨了我们在创建 Ergo 时所做的选择,第一篇文章阐述了 UTXO 模型的优势。
在处理金融价值时,您不能冒险。加密货币平台中的每一个架构决策都有其影响。虽然有不同的方法来解决同一个问题,但有些解决方案经过更好的测试,更加可靠。
与比特币一样,Ergo 使用“UTXO”(未花费交易输出)模型,而不是像以太坊那样使用的账户模型。我们做出这个选择有很多原因,但首先值得解释一下 UTXO 或“盒子”模型是如何工作的。
大多数人认为账户的余额是一个简单的数字,当您发送或接收资金时会更新。这是解决问题的显而易见的方法;毕竟,这实际上就是现实世界中金钱的运作方式。您的银行账户有一个余额,当不同的转账进出时会增加或减少。这就是“账户”模型的运作方式:您在区块链上的余额通过进出账户的交易而改变。
多少钱?
UTXO 模型由比特币首创,截然不同。您可以把它想象成一个人手里拿着一系列面团。他们的余额是这些面团的总和,或 UTXO。面团可以在发送到新地址之前被分割或组合,但您始终知道它们来自哪里。例如:
爱丽丝有 100 克面团(100 ERG)。她撕下 75 克给了鲍勃,自己留了 25 克的“零钱”。
查理有 250 克面团。他撕下 150 克给了鲍勃,自己留了 100 克的零钱。
鲍勃从他从查理那里收到的 150 克面团中撕下 20 克,并将得到的 130 克与他从爱丽丝那里收到的 75 克组合在一起。他将总共 205 克给了戴夫,自己留了 20 克的零钱。
戴夫现在有 205 克面团,这曾属于查理。在查理拥有它之前,75 克曾属于爱丽丝,而 130 克曾属于鲍勃。
在 UTXO 模型中,“面团”可以组合和分割,但与面团不同,它们并不会混合在一起。您可以追溯资金的历史,直到这些硬币首次被挖掘的 coinbase 交易。这与账户模型非常不同,在账户模型中,每个账户的余额只是简单地改变。(当然,您可以检查区块链以确保账户显示的内容是正确的,但这并不像 UTXO 方法那样本质上必要。)
为什么选择 UTXO?
UTXO 模型有几个影响。首先,每个对象都是不可变的——硬币的“块”不能像交易时编辑账户余额那样被“编辑”。余额是从交易历史中计算的,追溯到这些硬币首次存在的时刻。
这使得安全性变得简单得多,因为 UTXO 要么以您期望的形式存在,要么根本不存在。使用账户模型,您需要仔细检查您正在处理的账户是否处于应有的状态(而开发人员通常不会正确执行此操作)。这也使得 UTXO 更加友好于链外协议,如侧链和闪电网络。
账户使得存储“状态”变得更容易,但简单并不总是意味着更好。通过 Ergo 的扩展 UTXO 模型,状态转换更加明确,因此更加清晰——没有意外的惊喜。处理起来可能会稍微繁琐一些,但在安全性方面,它要好得多,更加直接。
Share post




















