UTXO与普通账户模型
作者:Crypto White trustless创始人
来源:https://biquanlibai.notion.site/fffb0783e68e4ae898cd980ce8e9f37b
模型基础
区块链的tx分为两种模型,分别是比特币为代表的UTXO(Unspent Transaction Output)模型,和以太坊为代表的Account模型。前者适用于货币记账,后者适用于链上应用。
UTXO模型
类似于现金的交易模型
比特币的tx结构(Github)
一个tx包含一个或多个输入(Input)、一个或多个输出(Output)。以币安热钱包地址为例:
每个Output包含了转账的目标Address和Value,拥有这个Address的私钥即可花费这个Output
每个Input通过(txid, index)指向了之前一笔tx的一个Output,通过Output私钥签名将这个Output花费掉
未被花费的Output称作UTXO,一个UTXO只能被花费一次
一笔tx的Input金额之和会略大于Output金额之和,差值是付给矿工的Fee
Fee的多少和tx的size正相关
4.支付流程:用户A支付金额n给用户B
用户A会维护自己所拥有的UTXO集合(比如币安热钱包地址的UTXO集合)
遍历链上的历史tx得到
用户A从集合中选取一个或多个UTXO作为tx的Input
这些UTXO的金额之和为m,m大于n
用户A为tx设置两个Output
一个Output支付给B的地址,金额是n
另一个Output支付给A的一个找零地址,金额为
m-n-fee
5.UTXO模型的特点
隐私性强
用户的钱包由多个地址组成:默认找零给新地址,默认每个地址只用一次
并发容易
支持一对多转账
一个地址的两个UTXO可以独立花费
结论
UTXO模型是符合“去中心化账本”需求的最简设计
简洁意味着安全,比特币运行十余年未出过问题
UTXO的设计和钱包里的一堆coin相似,印证了Bitcoin的起名
例子回顾:双花攻击(Double-spending Attack)
最后更新于