| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 比特币UTXO模型和找零机制分享 -> 正文阅读 |
|
[区块链]比特币UTXO模型和找零机制分享 |
几种情形,几张大图,给大家描述比特币UTXO的存储模型 理想状态下,一个UTXO大致长这样 你可以暂时理解UTXO为一条记在账本上的一条完整的入账出账记录,这条记录记录了你某个时间段的资金流动,具体为:A转个你10个BTC,B转给你20个BTC,然后你转给C15个BTC,自己剩下5个BTC。这一整个记录,就叫做UTXO。记住,只有在你还有剩余BTC的前提下,才叫UTXO 比特币的交易跟以太坊的账户模式差别很大,比特币的每一笔交易,可以认为是给你一张整钱,不管是转了多少个BTC给你,都是一张整钱。比如:A转给你10.102034BTC,就相当于给了你一张面额10.102034的BTC,一张不多不少刚好10.102034的BTC,转给你3.5BTC,就相当于给了一张面额3.5的BTC(这也就形成了比特币找零的一种特性)。 看这个例子:
? 这个交易表示:A给B转了0.001个BTC。 交易流程: (1)A本身有0.00313395个BTC (2)A给B转了0.00313395个BTC (3)B给A退了0.00211985个BTC (4)同时转账收了0.00101410 个BTC 这就很奇怪了,明明是0.00313395个BTC,为什么不直接转0.001个BTC,非得这么来回操作? 这就是我们刚才提到的面额问题,BTC的每一次转账都是转整额,这笔转账的来回操作,说明A账户中的0.00313395个BTC,是之前的交易中,其他地址给A转了一笔刚好为0.00313395BTC的账,这个0.00313395,是一个整额,拆不开的整额BTC。往前追溯我们可以看出 是一个bc1q958开头的地址给A转了一笔刚好0.00313395BTC的账。 ? OK,此时,因为B给A退了0.00211985个BTC,所以此时A的账户是一张0.00211985整额的BTC,试想此时如果A给C转了0.001个BTC会发生什么,看交易记录: ?没错,A先给C转了所有的0.00211985个BTC,然后C给A退了0.00010575个BTC,整个交易手续费为0.00201410BTC 以上是UTXO的第一个特性:找零机制。 继续往前查找交易: ?原来是某个时间,qqq地址往q95地址转了三笔BTC。为什么同一个地址转了三笔?因为qqq地址的btc也是从其他的三个地址或者叫三个UTXO转进来的整额BTC。 那么问题来了,为什么明明是三笔整额BTC,最后却成为了一个0.00313395整额的BTC呢? 这是UTXO的第二个特性:UTXO合并 前面我们提到,只有有余额剩余的地址的交易记录,才叫UTXO。当一个UTXO余额花完时,该UTXO会被删除,删除的部分跟使得该UTXO被删除的UTXO合并。也就是说,qqq地址转了三笔钱后,一毛钱都没有了,这个UTXO记录就被删除了,而q95地址的UTXO就可以把这些零钱合并为一个整钱。 看到这里,我们可以想象出,其实本质上行的UTXO是这样的: ? 每个地址都有N个交易(UTXO),每个UTXO都会有不同的输入(转入BTC)和输入(转出BTC),当一个UTXO的余额花完时,该UTXO被删除。所以一个地址有多个UTXO,即多条交易记录。 跟eth不一样,以太坊一般只支持单对单的转账和支付,在btc的设计中,每个“用户”可以有N个地址的使用权,找零的钱以及UTXO的钱都可以存放在各个地址,汇款的时候可以一对多款,多对一付款,多对多付款,付款的对象的是一个“用户”(可以理解为一个人),用户下可以拥有多个地址(可以理解为各个行的银行卡)。 以上是关于UTXO和找零机制的一些分享 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:43:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |