ANT:一文看懂比特币的UTXO模型

EOS,Solana这些大家所熟知的链都使用的是账户模型,甚至可以说?90%?以上的项目都使用的是账户模型,而只有一些老牌项目用的是UTXO模型,如,BTC,DOGE,LTC,当然也有一些比较新的项目也用的这个模型,如Layer?2中使用OP方案的FUEL。2.什么是账户模型

简单理解,就是银行账户那套系统,比如银行之间的转账,支付宝、微信的转账等等都属于账户模型。下面我举个栗子:

假如A有100?,B有100?

这时A给B转账50块钱

在系统中的表现形式就是?

A-50?,B?50?

所以他们的余额

A50?,B150?

这是一笔转账。

再假如,A还是有100?,他要给100个新开户的新人转账1元。

Coinbase以太坊L2网络Base招募Web3人才提供加密赏金解决方案:金色财经报道,Coinbase以太坊L2网络Base在社交媒体宣布正在寻找Web3人才以提供加密赏金解决方案,前50名解决其赏金问题的人可以获得价值250美元的ETH,前500名可以获得独家NFT,并有机会与Coinbase招聘人员进行交流。[2023/3/4 12:42:17]

这时需要A同时给100人转账1块钱

第1笔

A-1?,第1个人?1?

所以他们的余额

A99?,第1个人1?

第2笔

A-1?,第2个人?1?

所以他们的余额

A98?,第2个人1?

第3笔

A-1?,第3个人?1?

Canto新提案提议减少30%的CANTO代币增发量和流动性挖矿奖励:2月13日消息,据官方博客,Cosmos生态公链Canto的新提案提议减少CANTO代币的增发量和流动性挖矿奖励,以提高其项目的可持续性并使其利益相关者保持一致。减少通证增发的提案将于2月13日提交。减少流动性挖矿奖励的提案将于2月17日星期五提交。一旦新提案在链上通过并执行,新参数将立即生效。

与之前相比,CANTO增发将减少30%,每个区块的增发奖励为5.6枚CANTO。目前,50%的流通CANTO供应量已经质押,这处于40-50%的目标范围的高端,建议的调整旨在将质押比例维持在目标范围内,同时降低通胀率。

与上期相比,流动性挖矿奖励将面临全面削减,流动性挖矿奖励将降至每个区块37.6枚CANTO。流动性挖矿奖励在DEX和借贷市场池之间的分配将被调整。[2023/2/13 12:03:46]

所以他们的余额

木头姐预计美联储政策转向将在今年提振成长股:金色财经报道,ARK Investment Management创始人凯西·伍德(Cathie Wood)表示,通胀已经见顶,通胀率到2023年年中可能降至3%或更低,美联储很快将停止收紧金融环境,而此举将提振她的基金所青睐的成长股。在10月升至约4.3%的峰值后,10年期美国国债收益率已降至3.45%。伍德的旗舰基金ARK Innovation ETF(ARKK)今年以来累计上涨了11%,但过去一年仍下跌超过一半。[2023/1/21 11:24:48]

A97?,第3个人1?

以此类推

......

第100人

A-1?,第100个人?1?

所以他们的余额

A0?,第100个人1?

韩国游戏上市公司Com2uS二季度净亏损约2435万美元:8月11日消息,韩国游戏上市公司Com2uS第二季度净亏损317亿韩元(约合2435万美元),虽然未透露具体亏损的原因,但其透露了这包含Luna等加密资产的亏损。

此前,Com2uS与Terra区块链及投资公司Hashed合作开展Web 3.0业务,还基于Terra构建了C2X平台并发行其平台币C2X,并将C2X代币与Luna挂钩。Luna崩盘后,Com2uS曾于6月份宣布将在8月之前建立自己的C2X区块链平台主网。(TechM)[2022/8/11 12:17:38]

理论上要转账100次,而且下一次的转账都必须要先完成前一笔,不然账户余额就无法保证一致性,会混乱,有没有多转,余额够不够转出等。

理论上,随着交易笔数的增长,执行所需要的时间就越多。

货币DCEP也是基于UTXO模型做的,所以这个模型必然有它的独特之处。

Helium:Validator 1.10.8版本未能改善PoC接收问题,请更新到最新版本1.10.9:5月17日消息,去中心化无限通信网络Helium发推表示,团队发现Validator 1.10.8版本没有提供改善PoC接收问题的预期结果,1.10.9版本现在可以用来解决PoC组件中发现的Bug,并收集额外的数据。验证节点操作员请更新到最新版本1.10.9,并确保所配置的端口(默认8080)是打开的。[2022/5/17 3:21:20]

UTXO全称UnspentTransactionOutput,意思是“未花费交易输出”,他的模型简单说有点像日常生活中的现金体系,举个栗子:

A有一个钱包,里面有1元面值,?10元面值以及100元面值。

A要给B、C、D分别1块钱。

A有三种方式

第一种:拿出1元面值的钱给B

第二种:拿出10元面值的钱给C,找回9元

第三种:拿出100元面值的钱给D,找回99元

这三种方式都可以把这次交易完成。

再回到链上,想象一下这里每一个面值的钱其实就是一个链上UTXO,具体在使用过程中的UTXO并不是在转移的,而是在不断的销毁和重建,例如:

A用第二种方式给C转钱,?10元面值的UTXO会被销毁,系统会重新印出一张1元面值和一张9元面值的UTXO,?1元的给C,?9元的还给A。

第三种方式也同理,?100元的销毁,印出1张1元面值的和一张99元面值的UTXO,?1元的给D,?99元的还给A。

这是UTXO和账户模型转账方式的不同,更牛逼的是,UTXO模型可以并行转账,因为余额是通过分散的UTXO存在的,所以每个面值其实可以同时转账给不同的人,上面三种方式是可以在一笔交易中同时完成的,因为不会涉及到账户一致性问题,每个UTXO都是单独独立计算的。

我们在对比上面的账户模型,每一笔交易都必须依托于上一笔交易的完成,这其中的性能差距可想而知。这样就理解为什么央行数字货币使用的是UTXO模型了,不然深圳怎么给5万个钱包发送1000万数字人民币?

再说回上面那个例子:

A有100?,他要给100个新开户的新人转账1元。

面值100的UTXO可以拆分成100个面值1块钱的UTXO,然后在一笔交易中直接分给100个人,瞬间完成。

总之,把UTXO的面值想象成更加灵活的现金,在链上不断的销毁和重建。

想知道这个钱包地址到底有多少钱就需要统计底下有多少个余额的UTXO并求和。

4.账户模型和UTXO的优缺点

账户模型优点:

合约以代码形式保存在Account中,并且Account拥有自身状态。这种模型具有更好的可编程性,容易开发人员理解,场景更广泛。

批量交易的成本较低。设想矿池向矿工支付手续费,UTXO中因为每个Input和Out都需要单独Witnessscript或者Lockingscript,交易本身会非常大,签名验证和交易存储都需要消耗链上宝贵的资源。而Account模型可以通过合约的方式极大的降低成本。

账户模型缺点:

Account模型交易之间没有依赖性,需要解决重放问题。Ethereum?是怎么解决的,我们清楚?Ethereum?是采用的是唯一的?Nonce?值的方法,每个交易?Tx?中有一个?Nonce?字段,对于每个用户来说,这个?Nonce?都不能重复,从而避免了重放攻击。

对于实现闪电网络/雷电网络,Plasma等,用户举证需要更复杂的Proof证明机制,子链向主链进行状态迁移需要更复杂的协议。

UTXO优点:

计算是在链外的,交易本身既是结果也是证明。节点只做验证即可,不需要对交易进行额外的计算,也没有额外的状态存储。交易本身的输出UTXO的计算是在钱包完成的,这样交易的计算负担完全由钱包来承担,一定程度上减少了链的负担。

除Coinbase交易外,交易的Input始终是链接在某个UTXO后面。交易无法被重放,并且交易的先后顺序和依赖关系容易被验证,交易是否被消费也容易被举证。

UTXO模型是无状态的,更容易并发处理。

对于P?2?SH类型的交易,具有更好的隐私性。交易中的Input是互不相关联的,可以使用CoinJoin这样的技术,来增加一定的隐私性。

UTXO缺点:

无法实现一些比较复杂的逻辑,可编程性差。对于复杂逻辑,或者需要状态保存的合约,实现难度大,且状态空间利用率比较低。

当Input较多时,见证脚本也会增多。而签名本身是比较消耗CPU和存储空间的。

账户余额

账户模型:可以简单明了的看到账户底下有多少钱。

UTXO模型:统计该地址底下有多少个UTXO,把他们汇总起来的结果才是余额。

当交易笔数指数级上升时

账户模型:会越来越吃力。

UTXO模型:天然支持高并发。

从智能合约/开发者角度出发

账户模型符合开发者的逻辑习惯,相对容易写逻辑

UTXO脚本编程较为复杂

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:15ms0-0:717ms