专栏名称: Hi区块链
可能是最靠谱不忽悠的区块链资讯平台
目录
相关文章推荐
51好读  ›  专栏  ›  Hi区块链

李笑来的比特币账户并没有余额

Hi区块链  · 公众号  ·  · 2018-02-27 13:20

正文

Hi区块链

可能是 最靠谱 不忽悠 的区块链资讯平台


导读

这是汤强区块链系列文章之:比特币常识概念UTXO。 更多精彩干货,请关注公众号“汤强”。

首富账户之所以没有余额,不是因为没有币,而是比特币系统没有“账户”一说,只有“地址”的概念。“账户”对应“余额”;而“地址”只对应UTXO。

UTXO(Unspent Transaction Output)指未花费的交易输出。

每笔比特币交易都有输入和输出,别人付给你的钱是“交易输入”,你收到的钱是“交易输出”。


“比特币首富”是贴在李笑来额头上撕不下来的标签。


不管涨跌都只买不抛,据说他早已手握6位数的比特币,现价每个7万元,快追上一块上海车牌了,而去年今天只卖4千块。


按照这个速度,只要躺在家里睡两年,一觉醒来的他会超过身价900亿美金的比尔·盖茨,如果后者不买比特币的话。


可如果你惊讶于首富账户没余额这件事,那说明你还得巩固一个比特币世界的概念:UTXO。


一、什么是UTXO?


UTXO(Unspent Transaction Output)指未花费的交易输出。


每笔比特币交易都有输入和输出,别人付给你的钱是“交易输入”,你收到的钱是“交易输出”。

你一定会奇怪,你收到的钱明明放在账户里没动,为什么会被叫做“输出”?


对,这就是“输出”,只不过是“未花费的交易输出”。一旦你支付出去,就是真正的“交易输出”。


如果李笑来昨天转你1.5个比特币,交易是这样的:


绿箭头左右两侧,分别是李笑来和你的地址。


注意:地址看起来像账户,但它不是账户,因为账户的另一头对应你的姓名和密码,而地址的另一头却只有公钥和私钥。


换句话说,比特币系统根本不认识持币者是谁,它只认识私钥和公钥。


那么飘来一个问题:首富赐你1.5个比特币,你的地址收到币的一瞬间,余额是多少?


答案是:没有余额。


这1.5个比特币不是余额,而是你地址里的 未花费交易输出 (UTXO)。


首富账户之所以没有余额,不是因为没有币,而是比特币系统没有“账户”一说,只有“地址”的概念。“账户”对应“余额”;而“地址”只对应UTXO。


你一定会更奇怪,余额和UTXO都代表拥有的财富,不就是一回事么?


其实,看起来相似的东西,实际上可能完全不同。


二、UTXO和余额区别在哪?


回答这个问题前,我们首先一起思考:如果比特币和传统货币一样,使用账户系统,会有什么问题?


首先需要一个数据库,记录所有人的余额。


如果所有人的余额都像刻在石碑上一样,风吹雨打十年不变,那没问题。可实际上,我们的账户余额常常一天变十次。


记录余额不算个事,更新余额才折腾人。


如果全世界有10亿用户,每人每天交易10次,那么平均每秒余额变动将达11万次。按照这个速度生产余额表,几周之后,就能撑爆Google和支付宝两家店所有的服务器。


而且,如果每次支付都更新余额表,那么一定有信息冗余:如果你双十一那天什么都没买,但你的余额会随着全国人民被更新14.8亿次:



任何一笔交易发生后,所有人的余额即使没变也要更新,这又是为什么?


因为要避免双重支付。


比如这种情况:


有人给我1个比特币,我很高兴,但我转念一想:应该确认这笔钱别人有没有付给过其他人,否则我就会像收到空头支票一样。


于是,我打开余额表一看,发现别人确实有这笔钱,我更高兴了,一激动给别人发货。晚上噩耗传来:我被双重支付了,收到的那个比特币根本没法用,因为已经被支付给其他人了,而我查的那张余额表在当时还没更新。


都找不到衙门喊冤。


点对点系统没有中心的权威账本,达成共识需要经过大多数节点确认,如果信息传递有时间差,就不能同时确认所有账户余额,所以必然面临双重支付。


如果比特币被设计成这样,一定出师未捷身先死,而UTXO一举扫平余额方案搬不走的两座大山:数据库肥硕和双重支付问题。







请到「今天看啥」查看全文


推荐文章
懂懂日记  ·  尖酸刻薄?
7 年前
米宅米宅  ·  谁是中国第一CBD?
7 年前
摩拜单车上海  ·  [定制月卡赢周边] 10.29评选
7 年前