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一舉掃平餘額方案搬不走的兩座大山:數據庫肥碩和雙重支付問題。

UTXO的方案簡單到極致:只確認交易本身

使用UTXO產生的數據庫比使用餘額系統的數據庫小得多。比特幣運行八年多,全部交易記錄不過幾百G,一臺普通家用電腦就能裝下。

至於賬戶餘額嘛,你從上到下掃描一遍同一地址所有的進進出出,立等可取。你只要等上6個區塊的確認時間,就能確保不被雙重支付,因爲這筆交易得到了全網的確認。

中本聰在比特幣白皮書上說:

It should be noted that fan-out, where a transaction depends on several
transactions, and those transactions depend on many more, is not a problem
here. There is never the need to extract a complete standalone copy of a
transaction\’s history.

需要說明的是:當一筆交易基於之前的多筆交易時,這些交易又各自基於多筆交易,但這並不存在任何問題。因爲這個系統並不需要提取一份所有歷史交易的完整記錄。

中本聰的意思是:我根本不怕交易多,因爲我的工具和別人不一樣。

三、反直覺的UTXO

幾年前,如果不理解UTXO你甚至都不敢做交易。因爲你會經歷這樣的場景:

12月1日,你爸爸給你1個幣;

12月2日,你媽媽給你2個幣;

12月3日,你客戶給你5個幣;

現在你的地址上一共有8個幣。

如果你要花4個幣買餅喫,那麼你會看到交易記錄是這樣的:

從你地址上減5個幣。

可是,你明明只要花4個幣,爲什麼會扣5個?

因爲比特幣沒有餘額,只有UTXO。

你有三個未支付的交易輸出(UTXO),分別是1、2和5,這三個UTXO像三個硬幣一樣,沒辦法掰開來花,只能全部付出去,但系統會給你找零。

所以別擔心,看起來你多付了錢,但其中4個幣給賣餅的,另外1個幣會回到你地址上,而這一切都由系統自動完成。

原來這些都要我們自己動手編程做,所以我們不得不感謝現在的比特幣錢包,是它們讓我們即使不理解UTXO,也不影響使用。

UTXO的設計非常反直覺,得到專欄作家卓克曾經有篇文章介紹比特幣付款的過程:

他說他給奶茶妹妹5個比特幣,系統會在他的賬上扣5個幣,在奶茶妹妹賬上加5個幣,然後這筆交易全世界都幫他記入區塊中永久保存。

這篇文章非常精彩,但在這點上卓老闆徹底搞錯了。這種理解是完美的餘額系統定式思維,他一定沒讀過這篇文章,纔會犯下這樣的錯誤。

關於比特幣的一切都是公開的:賬本公開、白皮書公開、源代碼公開,但就是這麼一個完全公開的東西,大多數人沒有理解,這是比較好玩的。

結語

現在你一定明白:其實並沒有什麼比特幣,只有UTXO

如果比特幣價格一直漲,手握6位數比特幣的李笑來身價超過比爾·蓋茨也不會成爲世界首富,不是因爲他沒有餘額,而是因爲另一個人有7位數的比特幣,他就是比特幣之父中本聰(Satoshi
Nakamoto),我們都聽過他名字,卻不知道這名字背後對應的是誰。

但他一定是個高質量的思想者,所謂“高質量”,不是“什麼都想到”,而是儘可能做到“想到那些必要條件”,而UTXO就是其中之一。

於是,僅僅是設計思想的分岔,面對平庸和不朽兩條大道,比特幣頭也不回地向後者奔去。


熱門文章:

如何負成本“挖礦”賺YOYOW

  • 側鏈、閃電網絡、RSK、DAG、分片究竟是什麼

  • BM首次解釋DPOS+BFT【上】

  • BM首次解釋DPOS+BFT【下】

  • 趣味小動畫帶你秒懂區塊鏈

  • YOYOW:知乎給不了內容創作者回報,區塊鏈可以 | 初創公司

  • 幣探專訪 | YOYOW 創始人白菜: 創建基於區塊鏈的內容激勵網絡


來源鏈接:None