聲明:本文由內容合作伙伴巴比特授權發布。
比特幣(Bitcoin)的白皮書最近剛滿 11 歲,其內容非常簡潔,而論文中關于供應量的內容只是略帶提及:
“一旦預定數量的比特幣進入流通,激勵機制就可完全轉變為交易費用,并且完全沒有通貨膨脹?!?/blockquote>而深入研究比特幣最早的代碼備份之后,我們可發現中本聰設置的區塊獎勵的傳奇公式,這些簡單的代碼,有效地將比特幣的總供應量設置為 2100 萬BTC:
然而, 很多人不知道的是,比特幣的代碼庫并不包含任何“BTC的供應量不超過 2100 萬”的檢查,相反,軟件會檢查每個區塊聲明的數量不超過規定的數量。
應用供給公式計算 2019 年 10 月 19 日第600, 000 個區塊時的供給值,我們可得出 1800 萬BTC的值:
“210,000 區塊 * 50 BTC + 210,000 區塊 * 25 BTC + 180,000 區塊 * 12.5 BTC =1800 萬BTC”這一區塊的誕生,被社區譽為是比特幣通脹進程接近尾聲的里程碑。然而,精明的觀察人士卻在那時評論說,比特幣的供應量在區塊高度達到600, 000 時并沒有達到 1800 萬BTC的里程碑。
據Bitcoin Core開發者Peter Wuille表示,截至600, 002 個區塊,比特幣實際供應量應該是17,999,854.82192702 BTC 。
那么,這到底是怎么一回事呢?
在這篇文章中,我們會深入研究比特幣的供應量為何會低于預期,并計算有多少比特幣永久丟失了。此外,我們分析了這些幣丟失的確切原因,并解釋了發生在它們身上的事情。我們首先檢查可證明已丟失的幣,然后分析假設丟失但可能最終被發現的幣。
一、可證明永久丟失的比特幣
1、創始區塊比特幣
比特幣的賬本由一組“未使用的輸出”(UTXO)組成,總結這些輸出的BTC值,我們可得到全節點所看到的比特幣供應量。
比特幣的第一個區塊(賬本的起源),包含了一筆鑄造50 BTC的交易。但是,這筆交易的50 BTC輸出并不包含在比特幣的UTXO集中?,F在還不清楚這是中本聰的一個疏忽還是故意為之。
其結果是,這50 BTC 不存在于比特幣的賬本中,即使它們在主鏈中是可見的。
2、重復的Coinbase交易
比特幣設計者的另一個疏忽是重復交易的處理。雖然乍一看,它們似乎不可能發生(因為它們包含數字簽名和對以前交易的引用,這使得它們是唯一的),但仍然有可能創建重復的交易。
最容易復制的交易是coinbase交易,這是每個區塊的第一筆交易,允許礦工認領其區塊獎勵(數字資產交易所 Coinbase就是以此而命名的),因為它們不包含數字簽名或對以前交易的引用。如果一名礦工創建了一筆coinbase交易,將相同數量的BTC支付給相同的地址,并使用相同的額外nonce,那么該交易將是相同的。
這在比特幣早期歷史上發生過兩次:
- 交易d5d2.. 8599 是區塊 91812 和區塊 91842 的coinbase輸出;
- 交易e3bf…b468 是區塊 91722 和區塊 91880 的coinbase輸出;
在每種情況下,第二次包含交易時,它的輸出都會覆蓋掉前面的輸出。
結果是兩個被覆蓋的輸出沒有在UTXO集中。也就是說,這100 BTC并沒有在比特幣的賬本當中。
雖然這看起來是一種無害的疏忽,Russell O’Connor 依舊在 2012 年時將其視為一種攻擊媒介。利用重復的交易,攻擊者可從賬本中刪除其它用戶過去的交易。
針對這一點,開發者在 2012 年引入了BIP-30,以禁止在舊交易的輸出全部用完之前包含新的重復交易。
2012 年晚些時候,BIP-34的引入還使得復制coinbase變得更加困難,因為它們現在必須包括它們所屬的區塊高度。
3、未領取的獎勵
另一組可證明丟失的幣,與通過全節點驗證 coinbase交易有關。
比特幣的協議規定,一個有效區塊的礦工,可領取到協議規定的報酬加上該區塊中包含的交易費用,每個全節點都會檢查礦工不會試圖索取超過允許的數量,不過,全節點并不在乎礦工領取的金額是否低于其應得的數額。
顯然,部分領取的情況對于礦工而言是非常不理性的,但歷史上卻發生了很多次。第一次發生在 2011 年 5 月份的第124, 724 個區塊,最后一次則發生在 2019 年 2 月下旬第564, 959 個區塊。
下表列出了最值得注意的例子:
大體上,這種行為發生在 3 個不同的階段,共出現了 1221 次異常。下圖顯示了未申請全額獎勵的區塊數量:
在區塊高度162, 000 附近,我們可以看到出現了很多未申請全額獎勵的事件,另一個階段是發生在180,000 到230, 000 個區塊之間,最后一個階段則發生在第530, 000 個區塊附近。
據Bitcointalk用戶midnightmagic表示,第一次出現未申請全額獎勵的事件是為了向中本聰致敬。對于其他情況,考慮到一些礦工損失的金額,它們有可能是因為挖礦軟件中的錯誤造成的。
4、OP_RETURN輸出
有一種特殊類型的比特幣交易輸出叫
OP_RETURN
,它們允許用戶在區塊鏈中嵌入數據(目前每個輸出最多 80 字節),而不會使UTXO集膨脹(這些輸出不會被添加到UTXO集——它們被認為是無法忍受的)。雖然絕大多數此類輸出都是用0 聰值創建的,但有些輸出則不是。截至第600, 000 個區塊,共有3.723039BTC 發送到了
OP_RETURN
輸出,使得它們永遠無法被使用,也就是說,它們不再是比特幣供應的一部分。5、小結
總的來說,我們可以計算比特幣在600,000 個區塊時的實際供應量,方法是從預期的 1800 萬 BTC中減去可證明丟失的幣。
截至第600,000 個區塊,比特幣的實際顯示供應應該是17,999,817 BTC,這是技術上的確切值,這一結果,我們可通過查詢全節點得到。然而,我們還可以做得更好,讓我們看看更多比特幣“黑洞”的情況。
二、假設丟失的比特幣
1、 虛假地址
在
OP_RETURN
輸出標準化出現之前,我們并沒有一種容易獲得、可證明的方式來燒掉比特幣。結果,有些用戶就使用了“虛假地址”,即沒有已知私鑰的地址。在創建比特幣地址時,我們通常從一個已知的私鑰開始,然后對其進行轉換以獲得其對應的公鑰地址。這個過程使得生成自定義的“虛榮前綴”(即虛榮公鑰)變得非常困難。
然而,在虛假地址的情況下,沒有人知道地址的私鑰是什么。因此,虛假地址可以任何前綴開頭(如果可以使用Base58 字母表寫入)。但是,最后的字符將是隨機的(根據設計,地址的最后一個字符是一個校驗和,以防止輸入錯誤)。
雖然不可能起草一份完整的虛假地址清單,但我們可列出一些值得注意的虛假地址:
僅這 3 個地址就丟失了2213.19538012 BTC。
理論上,這些幣并不是永遠丟失的 (有人可以為它們找到一把私鑰)。然而,只給出一個地址就可找到私鑰的唯一已知方法,就是隨機猜測,直到找到正確的組合。實際上,在我們的宇宙生命中發生這種事情的可能性是很小的。
2、漏洞
在錢包漂亮的外表下,有一些關鍵的代碼負責制作、簽署和向比特幣網絡廣播我們的交易。如今,我們很少能在它們身上發現讓人崩潰的漏洞,但情況并非總是如此。
2011 年 11 月,MtGox在其錢包軟件中遭遇了一個漏洞。他們把2609.36304319 BTC發送到一個虛假腳本中,卻不知道如何使用它。這個虛假腳本,就好比是如果你試圖將錢發送到一個“空”的公鑰,而軟件沒有編程來檢測這是不可取的。
其他資產中也有類似的漏洞,使得幣無法被使用,最著名的例子就是以太坊Parity(丟失了513000 ETH)。
3、“僵尸幣”
丟失幣的另一個來源是多年沒移動過的幣。由于不可能知道它們的主人是否還掌握私鑰,所以這些幣通常被稱為“僵尸幣”,即處于不死不活的狀態。有了這一類,我們就離開了幣是否真的丟失的準確定性領域。
為了保守估計,我們將只統計 2010 年 7 月前未移動過的幣。理由很簡單:由于(當時)比特幣的感知價值非常低,因此人們沒有多少動力去備份錢包。
截至第600, 000 個區塊,全網 2010 年 7 月之前未曾移動過的幣共有1,496,907.88000 BTC。根據各種估計,中本聰擁有這些幣的一半以上,因為在比特幣的早期歷史中,其是主要的挖礦者。
2010 年 7 月之前的老幣當中發生的最近一次移動,是在 2019 年 7 月份,當時移動的幣為150 BTC。
總體而言,自 2013 年牛市以來,這些上古時代的幣很少被使用。鑒于比特幣從 2013 年到現在經歷的價格暴漲,這些幣的擁有者要么是非常長期的持有者,要么他們無法獲得這些幣。
4、有負擔的幣
最后一類幣可能會被認為處于丟失狀態,或者至少暫時不流通:已知被盜的幣。直到更好的混幣解決方案的出現,它們將很難再進入流通,特別是非常大的量。
在比特幣的歷史上,曾發生過很多重大的黑客和盜竊事件,而其中有兩起被認為是“不流通”的事件, 2011 年,MtGox被盜的 8 萬 BTC,以及 2016 年Bitfinex被盜的 12 萬 BTC。
2011 年 3 月,黑客從MtGox的錢包中盜走了79,956 BTC,至今其未觸碰這些比特幣,而到今天,這一地址已成為了全網第 6 富有的地址。
Jeb McCaleb和Mark Karpelès在盜竊案發生后的談話
為什么這次盜竊的資金(被盜時價值7. 3 萬美元,當前價值 7 億美元)從未被移動過呢,背后的原因暫不得而知,很可能是竊賊也無法訪問這些比特幣的私鑰了。
2016 年 8 月,Bitfinex因黑客攻擊丟失了119,756 BTC,直到今天,這些被盜的幣很少被移動,只有22 BTC 被找到。截至第600, 000 個區塊,黑客地址中仍有117,091.31922097 BTC。
三、總結
我們常說比特幣的總量只有 2100 萬 BTC,這種說法其實并不準確,隨著時間的推移,怪事、錯誤以及其他事件會影響到比特幣真實的存在量。
這種分析只是評估比特幣真實供應量的眾多方法之一。根據需要,我們可以考慮、忽略或擴大不同的類別。它還使用自頂向下的方法,從最大可能的供應開始,并移除各種類型丟失的幣。另一種估算比特幣供應量的方法,是按上次活動的時間將比特幣分解,然后預計多年未動的比特幣可能會丟失。我們將繼續監控丟失的比特幣,并在未來更新我們的發現。