什麼是比特幣找零機制?比特幣找零機制詳解

買賣虛擬貨幣

什麼是比特幣找零機制?比特幣的錢包是建立在 Hierarchical Deterministic(分級確定性)框架之上的,它具有生成不同地址和管理地址的方法。找零地址也是由助記詞加特定路徑生成的子地址,它本質上還是子地址。使用子地址能夠提供給使用者更佳的匿名性和隱私性。

比特幣的找零機制詳解

比特幣的找零機制一直讓人有些迷惑,明明只向一個地址傳送了比特幣為什麼鏈上的顯示的有時是1個地址對多個地址,有時是多個地址對1個地址,有時又顯示多個地址對多個地址?

為什麼比特幣資深使用者要提醒大家當比特幣錢包交易100次以上時再次交易後要重新備份錢包,恢復以前的錢包備份有可能會遭遇損失?

這一切都是因為比特幣的找零機制。下面詳細為大家解釋一下比特幣的找零機制是怎樣運作的。

維基百科上是這樣說的:將使用者有權使用的若干比特幣匯款地址上的之前交易的輸出金額作為一次交易的輸入,若干比特幣收款地址上增加的交易金額作為本次交易的輸出。輸入金額必須大於等於輸出金額,超出部分作為本次交易的手續費。手續費沒有輸出地址,獎勵給將本次交易記賬成功的礦工。

這也就是前天給大家說的UTXO,前天說的是在交易時多出來的部分將返回輸入方,那麼比特幣系統具體是操作的呢?

你每轉賬一次,客戶端會自動匹配你錢包裡大於等於轉賬金額的收款地址(一個地址的餘額不夠時,會匹配兩個、三個……直到這幾個地址的餘額之和滿足轉賬需要金額的最小值)然後把這筆錢一起傳送出去,扣除轉賬所需金額(可能包含少量的手續費,這取決於你的錢包手續費選項的設定和網路情況),然後就會給你把找零的錢發回你錢包裡的一個隱藏地址,這就是比特幣的找零機制。

舉個栗子,比如你想從商店買一塊錢的棒棒糖,你開啟你的錢包,發現裡面只有一張20元面值的人民幣。你能支付的最小金額是多少呢?當然不是1塊錢,你不能把這張20元錢的紙幣撕下二十分之一再交給營業員。你必須把這張20元面值的人民幣全部交給收銀員,然後因為你只需要支付1元錢,收銀員會找給你19元。

在比特幣的系統裡雖然沒有像人民幣這樣有固定的面額,但比特幣在每次交易時的輸入地址的比特幣總額卻是固定的。我們要保證每次交易的輸入金額必須大於等於輸出金額,想要每次都正好等於是不可能的,所以就必然要經過找零這個過程。

我們可以更形象的看待這個過程,在比特幣的系統中,任何一筆交易的輸入地址中的比特幣都看作被銷燬了,並在輸出地址中生成總和相等的比特幣。這樣就等於把輸入地址中的固定面額的比特幣,轉換成了若干個輸出地址中的任意麵額的比特幣(只要總和完全一樣就行)。

這就是比特幣的運作機制。與法定貨幣不同,我們習慣把這種方式稱之為交易單元的輸入和輸出。

當你“支付”比特幣,並建立一次交易時,你必須將你支付地址上可供支付的金額(來自該地址之前交易的輸出)作為新交易的輸入。這樣的地址可能不止一個,你的比特幣錢包會暗自尋找你錢包中所有可供支付的輸出金額(可能來自於不同地址),並把它們加在一起顯示為錢包可用餘額。

所以,當你的比特幣錢包說你有130個BTC時,它只是意味著你的所有地址上可供支付的交易輸出加在一起共有130個BTC。這和你的普通錢包中放著1張100元和3張10元人民幣差不多一個意思。

比特幣錢包檔案中包含了所有找零地址的私鑰,它們可以正常的接收或者傳送比特幣。但是,比特幣官方客戶端的介面上並不會把這些找零地址顯示在地址簿中,也許是為了匿名性的必要,也許是為了減少客戶的困惑,雖然這也造成很多人新的疑惑。

因為比特幣客戶端一開始只產生100個客戶專屬地址的私鑰(稱為私鑰池),在建立找零地址時會優先使用這100個地址中的某一個,但當這些地址都被使用之後,100個以外新的找零地址就會被建立。如果你只備份了一開始的100個地址的錢包,那麼在上面這種情況下恢復錢包將丟失新的找零地址。

找零機制是匿名性的需要,一筆錢從A地址花費出去後找零的幣會計入屬於你錢包的另一個地址B,但別人不知道這個找零地址B的主人也是你;也是讓比特幣無法憑空編造的需要,任何一個從區塊裡挖出來的幣,其每一次轉賬都會一直記錄下去,所以是可追溯的。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;