元宇宙非小号金色财经交流群社区官网

一文看懂比特币的UTXO模型

Time:2023-02-27 Click:92


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

2.什么是账户模型

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

假如 A 有 100 ,B 有 100 

这时 A 给 B 转账 50 块钱

在系统中的表现形式就是 

A -50 ,B  50 

所以他们的余额

A 50 , B 150 

这是一笔转账。

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

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

第 1 笔

A -1 ,第 1 个人  1 

所以他们的余额

A 99 ,第 1 个人 1 

第 2 笔

A -1 ,第 2 个人  1 

所以他们的余额

A 98 ,第 2 个人 1 

第 3 笔

A -1 ,第 3 个人  1 

所以他们的余额

A 97 ,第 3 个人 1 

以此类推

......

第 100 人

A -1 ,第 100 个人  1 

所以他们的余额

A 0 ,第 100 个人 1 

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

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

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

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

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 都需要单独 Witness script 或者 Locking script,交易本身会非常大,签名验证和交易存储都需要消耗链上宝贵的资源。而 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 脚本编程较为复杂

    标签:比特币

    • 比特币在世界范围内流通,越拒绝比特币越有利比特币走势

      比特币在世界范围内流通,越拒绝比特币越有利比特币走势

      T:

      几乎不可能被主流国家全面禁止。国与国之间有竞争和矛盾,比特币在世界范围内流通,越拒绝比特币,其他国家利用比特币就越有利。拒绝比特币国富外流,欢迎比特币国富外流。如果中国禁止采矿,整个网络的计算能力会下降,进一步降低采矿难度,使外国更容...

    • 比特币的真信仰者,从讽刺比特币到押注比特币

      比特币的真信仰者,从讽刺比特币到押注比特币

      T:

      很多人都很好奇:微策略项目投资比特币盈利是盈利了,但塞勒确实信念比特币吗?从一次次真金白银的赌局及其从线上与线下的比特币布道看来,没有人比塞勒更信念比特币了。 《时代》先前曾访谈塞勒,新闻记者做好了课程,开场就问了个学术研...

    • 比特币矿机论坛 成立八年后,比特币论坛r/比特币用户突破

      比特币矿机论坛 成立八年后,比特币论坛r/比特币用户突破

      T:

      比特币社区似乎没有什么可庆祝的,但有一个不可否认的发展领域:r/Bitcoin 。r/Bitcoin 是比特币最著名的在线社区之一,成立于 2010年 9月,即比特币白皮书发布两年后。 在其介绍中提到,他们致力于比特币 – 互联网货币。比特...

    本站分享的区块链、Web3.0元宇宙、NFT、数字藏品最新消息等相关数藏知识快讯NFR资讯新闻,与金色财经非小号巴比特星球前线Btc中国官网无关,本站资讯观点不作为投资依据,市场有风险,投资需谨慎!不提供社区论坛BBS微博微信交流群等相关币圈信息发布!
    本站内容来源于互联网,如存在侵权及违规内容投诉邮箱( zztaobao@vip.qq.com )