前文提到,比特币没有账户,比特币使用UTXO。
UTXO就是找零
UTXO(Unspent Transaction Output):指未花费的交易输出。
比特币和基于比特币的许多协议,都使用UTXO(未花费的交易输出)来存储交易和计算出用户余额数据。
每笔比特币交易都有输入和输出。
输入可以是一笔或者多笔。输出也可以是输出给几个地址。
同时,矿工从交易中获得的费用——交易费。交易费取决于输入和输出交之间的差额。
公式如下:
输入总额 – 交易费 = 输出总额。
举个栗子:2019年,爱莉莎要需要花0.8BTC买辆车(往低了想,夏利?往高了想,特斯拉?),如下图:
左边是输入:0.5 + 0.2 + 0.2 = 0.9 BTC,你从几个地址,凑了0.9BTC
右边是输出:0.8 + 0.05 = 0.85BTC,其中0.8BTC转给了4S店,0.05BTC转入爱莉莎的地址1。
交易费: 总输入 – 总输出 = 0.9 – 0.85 = 0.05 BTC
输出到爱莉莎地址1,未被花费的交易输出,就是爱莉莎地址1的——UTXO。
再举个栗子,比如比特币地址:18gN18dr8hiREYHNHYgfSzQ5HLttDyEzKd
打开网址:
https://blockchain.info/address/18gN18dr8hiREYHNHYgfSzQ5HLttDyEzKd
然后网页上方显示,账户余额是:8笔交易,输入输出后,UTXO为0,即无未花费的交易输出。
找零UTXO,像纸币,也是不可分割的。就像咱不能把100元撕成两半,变成2张50元那样。
但是,UTXO的面额,可以随意(当然,比特币的最小单位是聪,UTXO面额只能是聪的整数倍),不像纸币,只有固定的面额。
用法币买东西,店家可能会找给你几张钱,用比特币交易,区块链会给你一个UTXO。
UTXO,分散到一笔笔交易中,分散到一个个区块链中。
比特币没有帐户余额,只有被该地址所有者锁住的分散的UTXO。
全网扫描,该地址的UTXO总和,就是改地址的比特币总额。
比特币钱包里存的是什么?
钱包,是比特币生态系统中,一个非常重要的组成部分,主要执行三项重要任务。
1)持有你的私钥
2)获得账户余额
3)确定交易费用
比特币钱包,拥有你的私钥,并使用它们签署要发送的交易。
比特币钱包,比特币钱包查看所有UTXO(未使用的交易输出), 通过计算UTXOs,得到钱包中比特币的当前“余额”。
比特币钱包,还计算你在交易时,向比特币网络支付的交易费。
所以,比特币钱包,不是存的比特币,而是存的私钥。
钱包可以分为:
热钱包:就是连着网生成私钥,或者连着网运行的钱包。如果你的计算机中了恶意病毒,病毒能截屏或者获取键盘输入,那么热钱包非常不安全。
冷钱包:就是不联网的钱包。因为不联网,所以,冷钱包大大降低了被黑客盗取的概率,相对安全。
通常建议,大数目存在冷钱包,小数目存热钱包。