分享

UTXO

 yliu277 2022-05-08 发布于湖北省
UTXO 是 Unspent Transaction Output 的缩写,Transaction act发音简写为X。
也就是未被使用的交易输出。
UTXO是中本聪最早在比特币中采用的一个具体的技术方案。
本质上,就是只记录交易本身,而不记录交易的结果。
业内流行一句话:”其实并没有什么比特币,有的只是UTXO“---孟岩;
一般会认为 UTXO 是比特币区块链设计当中的一部分,但事实上 UTXO 和区块链没有必然的联系,
你可以完全照搬比特币区块链,但不使用 UTXO。

比特币使用前后链接的区块链记录所有交易记录,
每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。
一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
当之前的 UTXO 出现在后续交易的输入时,就表示这个 UTXO 已经花费掉了,不再是 UTXO 了。
如果从第一个区块开始逐步计算所有比特币地址中的余额,就可以计算出不同时间的各个比特币账户的余额了。

比特币交易遵守几个规则。
1. 所有交易始于coinbase(即始于挖矿奖励所得);
2. 除了 coinbase 交易之外,所有的资金来源都必须来自前面某一个或者几个交易的 UTXO。
3. 任何一笔交易的交易输入总量必须等于交易输出总量,等式两边必须配平。


花费与未花费
花费是什么概念,每一个Transaction Output都犹如现实中的一张纸币,他只有两种状态,属于你或者不属于你。
未花费就是该张纸币属于你,已花费就是该张纸币不属于你。
每一个 UTXO 和纸币一样,只可能有两种状态,要么是没有被花费的,要么就是已经被花费,所有权变成了其他人或者地址,成为其他地址的 UTXO。

找零
每个UTXO 都是一次性的,当用户A给用户B转账时,一定会碰到想转的数额和自己的UTXO数值不匹配的问题。
此时采用的方法是,用多个输出,有一些输出还给自己,例如:
输入(from x gas:10)
输出[0](to y gas:2)
输出[1](to x gas:8)
这个机制称为找零,其实并不只是找零,如果用兜里一把零碎utxo去转账,反而是找回一个整的。

输入输出都是由客户端自行决定的。 可以在一笔交易中产生大量的输出找给自己。

UTXO模型的好处是:
可扩展性 - 由于可以同时处理多个UTXO,因此可以实现并行事务并鼓励可伸缩性创新。
隐私 - 甚至比特币也不是一个完全匿名的系统,但只要用户为每笔交易使用新地址,UTXO就可以提供更高级别的隐私。

账户/余额模型的好处是:
简单性 - 以太坊选择了一种更直观的模式,以便为复杂智能合约的开发人员带来益处,尤其是那些需要国家信息或涉及多方的开发人员。
效率 - 除了简单之外,账户/余额模型更加高效,因为每笔交易只需要验证发送账户是否有足够的余额来支付交易。

账户/余额模型的一个缺点是暴露于双重支出攻击。

可以实施递增的随机数来抵消这种类型的攻击。

在以太坊中,每个帐户都有一个公共可见的随机数,每次进行交易时,随机数都会增加一个。

这可以防止相同的事务被多次提交。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多