上期回顧:
幣姐開場
上一篇內容提到了,想要發起交易,首先要檢查一下你的UTXO是否足夠,不夠的話是無法交易的。
那麼UTXO是什麼鬼?中本聰為什麼要用UTXO而不用賬戶餘額的設計呢?
本文以比特幣的技術為案例,請注意:比特幣 ≠ 區塊鏈
作者 | 幣姐
UTXO是什麼鬼?
UTXO(unspenttransaction outputs)是未花費交易輸出。
UTXO跟銀行裡的賬戶餘額系統不同,跟紙幣的邏輯有些類似。看看下面2個例子就大概知道了。
假設幣姐要給老王轉80元。如果是通過銀行轉賬,那麼服務器只需要在幣姐的餘額裡-80元,在老王的餘額裡+80元就可以了。
而比特幣的轉賬跟現金更像,現金沒有80元的面額,所以只能給老王100元的現金,然後老王再找回來20元現金。
上面的例子也可以用UTXO來解釋:
幣姐有100元的UTXO,UTXO是不能細分的,就好像不能把現金撕開用是一個道理。所以只能先全部給到老王,然後老王再找零20元。
交易完成後產生了2個UTXO,一個是老王的80元,一個是找給幣姐的20元。
2個實際案例再看UTXO
下面,我們看2個實際的BTC交易案例:
如上圖案例1所示:發起方想給接收方10.5065BTC。
發出方將10.6BTC轉給了接收方。
10.6BTC消耗掉了,生成了2個新的UTXO,接收方收下10.5065 BTC,發出方收下0.0925 BTC算是找零。
接收方的10.5065 BTC目前已經使用過了,就不能叫UTXO了,而找零的0.0925 BTC到目前為止還沒有使用過,所以他還能稱作UTXO未花費的交易輸出。
我們再看另外一筆交易,如上圖案例2所示:發出方想給接收方392.101963 BTC。
在交易前
發出方的3個UTXO數額相加剛好392.101963 BTC。
交易後
3個UTXO直接消耗掉,只需要生成了一個新的UTXO給接收方就可以了,不再需要找零了。
案例2的過程就好像為了湊26元,需要將20元,5元,1元湊一起是一個道理。
幣姐說明
在上面2個案例中,有人可能發現,案例1中少了0.001 BTC,案例2中卻沒有少。
案例1中0.001 BTC就是礦工費,案例2中沒有支付礦工費。關於礦工費我們會在後面的內容裡詳細說明。這裡不展開。
UTXO有什麼特點?為什麼要用UTXO而不用餘額?
看了上面幾個案例之後,我們發現UTXO有幾個特點:
1.每個UTXO都是獨一無二的,就好像帶有編碼的鈔票一樣
2.相比鈔票來說,UTXO更靈活,並沒有固定面額的限制,任意數額都可以
3.UTXO是不能分割的,只能被消耗掉
4.在交易前後,UTXO的數量可能增多,也可能減少
5.每筆交易的輸入和輸出都是有關係的,可以通過UTXO不停往前追溯,直到挖礦
UTXO具備下面幾個優勢:
1.UTXO具備天然的匿名性
2.UTXO是獨立的數據結構,可以更好的並行處理。
3.長期來看,UTXO的數據佔用更小,而餘額系統會越來越臃腫。
4.UTXO的結構更不容易被篡改,每個UTXO都追根溯源,很難偽造。
總結
UTXO(unspenttransaction outputs)是未花費交易輸出。
他的邏輯跟鈔票有點像,他是不可分割的,如果UTXO大於交易金額,則接收方需要“找零”。
UTXO具有4個優勢:
1.匿名性更好
2.更好的並行性
3.數據佔用更小
4.不容易被篡改
下期預告:數字簽名是如何驗證交易的?
我們提過了,如果想發起交易,除了UTXO足夠,還需要驗證數字簽名,那麼數字簽名是如何工作的呢?我們下期詳解。
點擊閱讀往期幣姐解讀區塊鏈:
閱讀更多 幣姐 的文章