親愛的們,男神駕到。
每天一個新觀點,帶你啃透區塊鏈。
今天我們來看一個概念,UTXO。
可能很多朋友已經瞭解了比特幣的交易機制,對 UTXO 也比較熟悉了,不過我相信應該還有不少朋友懵懵懂懂,只是聽說過這個東西,但是一看拗口的字面翻譯,未花費的交易輸出,可能就直接被這個名詞嚇壞了。
這個概念對理解比特幣確實蠻有幫助,所以大家一起再來學習理解一下。
首先,UTXO 是一種全新的記賬方式,是比特幣交易生成和驗證的核心。
貨幣的本質是一種記賬方式。那我們先來看一下傳統方式是如何記賬的。
在傳統的記賬方法下,比如銀行系統,如果甲要給乙轉賬 100 塊錢,銀行並不是真的把 100 塊錢從甲的賬戶挪到了乙的賬戶。實際的步驟是,先檢查甲的餘額是否足夠,不夠就不執行轉賬,如果餘額足夠,就直接從甲的賬戶餘額中減去 100 元,然後在乙的賬戶中加上 100 元。這種系統是基於賬戶的設計,由關聯式資料庫支撐。
瞭解了傳統的記賬方式,那 UTXO 方式是如何記賬的呢?
比特幣交易中,每一筆交易都被分為輸入和輸出兩項。就是幣的來源和去向。每筆交易的輸入和輸出必須相等。裡面的這筆輸出就是 UTXO,就是未花費過的交易輸出。
每一筆比特幣交易,其輸入必須來自於之前的某一筆或者幾筆交易的未花費的輸出,透過這樣的方式一環套一環,從而形成一個鏈條,鏈條的源頭就追溯到了比特幣產生的那一刻,也就是挖礦的獎勵。
我們舉例來看,一個礦工新挖出了比特幣,獲得了 12.5 個幣的獎勵,這筆交易的輸入就是寫挖礦所得,輸出是礦工的收幣地址和金額 12.5 個。這個時候這筆新幣就是 UTXO,還沒有花費的交易輸出。
如果礦工要給另一個朋友傳送一個比特幣,這筆交易的輸入就是上一筆交易的 那個輸出 UTXO,就是挖礦獎勵的那 12.5 個比特幣。這時系統把這 12.5 個比特幣全部傳送出去,支付給朋友 1 個並簽名,然後找回給礦工剩餘的 11.5 個,也要進行簽名。
所以,在輸出一欄記錄裡就是,朋友的收幣地址和交易金額以及礦工自己的地址和剩餘的金額。這兩個輸出也又成為了 UTXO,就是未花費的交易輸出。
就是無論向誰支付,資金來源必須是之前沒有花費的輸出。其實這也很好很理解。這樣,不需要第三方機構,比特幣透過不斷地分割與組合,所有的交易構成了一個鏈條,整個網路上的節點透過 UTXO 和簽名演算法來驗證新交易的合法性。也就是一句話,比特幣裡並沒有餘額的概念,餘額是透過所有交易的輸入和輸出推匯出來的。
為什麼要這麼做呢?我們就來看一下 UTXO 記賬方式的好處:
保證了去中心化,不再需要一箇中心化的資料庫來儲存和驗證所有的交易資訊,分散式的節點就可以驗證。
增強了匿名性,一個人可以生成很多很多個賬戶,每交易一次就有一個新的找零地址。
實時對賬,降低錯誤率,銀行或者現在的其他金融支付系統,賬目出錯的時候一般無法立刻發現,需要在稽覈的時候才會發現問題。一旦發現問題,就需要不斷往回溯源,直到找出錯誤。比特幣透過 UTXO 這種方式能夠實時進行對賬,避免了這種問題。
UTXO 相比賬戶系統,看似麻煩,實則實現了去中心化和安全,大家可以進一步瞭解,好,今天就是這樣,拜拜。
幣圈四年場外交易老司機,一個有深度的男人,帶你看懂不一樣的區塊鏈世界。 ——風華三毛