我們研究了灰塵(dust)——發幣交易費大于余額的比特幣容器(UTXO)——的歷史和未來。
區塊鏈中的灰塵量由當前的UTXO集和交易費市場決定。在交易費高峰時期(約2017年12月),比特幣區塊鏈中25-50%的UTXO可以被稱為灰塵!與此同時,這些灰塵UTXO中包含的比特幣數量很少:只值數千萬美元。因此,根據你如何衡量,灰塵要么是一個巨大的問題,要么是一個微不足道的問題。無論如何,我們會討論最小化新灰塵和清理現有灰塵的可能解決方案。
在物質世界中,工作量證明強烈地錨定了比特幣,并使其受制于熱力學定律。礦機消耗的能量可以保護區塊鏈,但這項有用的工作伴隨著熵增和廢熱的產生。 如果比特幣區塊鏈是一個發動機,灰塵UTXO將成為它耗盡的廢熱的一部分。由于沒有發動機是完全有效的,比特幣永遠不會停止制造灰塵。
什么是灰塵,它來自哪里?
比特幣使用一種被稱為未花費交易輸出(UTXO)的會計結構。任何比特幣交易的輸出都是新的UTXO,輸入是現有的UTXO——它們被該交易完全消耗掉。在區塊鏈上,比特幣總是被“存儲”在這樣的UTXO中。
本圖顯示了錢包可能構建發送0.5 BTC的交易的兩種可能方式。第一筆交易消耗了兩個UTXO,因此費用更高。第二個交易只消耗一個UTXO,因此更便宜,但創造了一個非常低余額的找零輸出。雖然對未來的交易費市場將如何變化只有不完全的知識,但錢包軟件必須在今天平衡這些權衡。這是一個難題。
在錢包構建一筆交易時,它必須決定使用哪些UTXO來作為輸入。這可能聽起來簡單,但這確實是一個很難的優化問題。Jameson Lopp定義了錢包軟件作者必須追求的三個同時存在且相互沖突的目標 (https://medium.com/@lopp/the-challenges-of-optimizing-unspent-output-selection-a3e5d05d13ef):
1. 通過在錢包中保留許多可用UTXO來支持高交易量。
2. 通過變得非決定性并屏蔽哪些輸出發生了變化來保護隱私。
3. 無論現在還是以后,都盡量讓交易費最小化。
很明顯,這個問題沒有“一刀切”的解決方案,事實上,上面概述的三個寬泛的優化目標往往是直接對立的。——Jameson Lopp
此外,錢包軟件通常是通用的,意味著由許多不同類型的用戶共享。錢包作者并不知道一個給定用戶計劃在未來做什么交易,也不知道交易費市場將如何發展。
這意味著,錢包對有時會產生低余額灰塵UTXO無能為力。錢包的UTXO管理是一個困難的優化問題,沒有針對所有用戶的全局最優解決方案。這是灰塵的最終起源。
是什么產生了UTXO灰塵?
直觀地說,低余額的UTXO可能是灰塵。下圖顯示了UTXO余額隨時間的分布:
UTXO余額隨時間分布圖。冷色調顏色(藍色和綠色)代表低余額UTXO,暖色調(橙色和紅色)代表高余額UTXO。我們選擇繪制的百分位數突出顯示了分布的下端和上端。UTXO余額的范圍很廣:分布上端的UTXO包含數千個BTC,而在下端則包含少于100聰(11-12個數量級!)。[https://plot.ly/~unchained/41/utxo-balance-percentiles/#/]
該圖確實證實存在大量的低余額UTXO,但是我們能否更精確地定義哪些低余額UTXO是灰塵呢?
在一筆交易中花費一個UTXO需要引用該UTXO(通過提供創建它的交易ID以及它在該交易中作為輸出出現的順序)并使用所需的密鑰對其進行簽名。所有這些都需要一定數量的字節來表達,必須用交易費來向礦工補償字這些節數。
一筆交易會從其輸入UTXO中扣除其交易費。這通常不是問題,因為與它們正在消耗的所有UTXO余額總和相比,交易費通常較小。但是,如果一筆UTXO的余額非常低,或者交易費非常高,或者花費UTXO需要大量的字節,那么就有可能花費一筆輸出UTXO的成本會高于它所包含的幣。
我們將UTXO的價值密度(value density)定義為其余額除以花費它所需的字節數。
UTXO的價值密度衡量的是為了把幣發出去,每個字節所含的比特幣數量。
根據這個定義,將UTXO分類為灰塵需要比較兩件事:
·目前礦工接受的最低交易費
·UTXO的價值密度
兩個數量都具有聰/字節的單位,因此可以直接進行比較:如果一筆UTXO的價值密度低于礦工目前接受的最低交易費,那么該UTXO目前就是灰塵。隨著(通常不穩定的)交易費市場的變化,UTXO可以隨時間推移降到“灰塵線”以下,又在后來升到這條線以上。
花費UTXO需要多少字節?
把一筆UTXO列為灰塵需要知道花費它需要多少字節,但這個數字并沒有真正的明確定義:單筆交易中花費的UTXO越多,平均花費一筆UTXO所需的字節數就會減少,因為它們可以共享區塊頭或隔離見證信息。
無論如何,我們至少可以做出任意的選擇并詢問花費一筆UTXO所需的字節數——假設交易為單個輸入。答案取決于UTXO地址的類型。下表總結了這種關系:
地址類型與在該地址上花費一筆UTXO所需字節數之間的關系。復制自Pérez-Solà,Delgado-Segura,Navarro-Arribas,Herrera-Joancomart的表3。《另一種幣遭遇灰塵:基于UTXO的加密貨幣中的灰塵分析》(2018年) [https://eprint.iacr.org/2018/513.pdf]
上表對“簡單”地址類型(如P2PK和P2PKH)具有明確的大小。但對于尤其是P2SH地址,不可能先驗地計算從該地址花費UTXO所需的字節數。只能后驗,一旦在交易中顯示了該地址的兌換腳本,就可以知道從該地址需要花費多少字節。
盡管如此,大多數P2SH地址都是具有可預測結構的多簽地址(一旦知道它們是多簽地址)。而且,我們可以從區塊鏈歷史中的花費中推斷出許多P2SH地址:
根據歷史數據估算從每個給定地址類型中花費UTXO所需的字節數。復制自Pérez-Solà,Delgado-Segura,Navarro-Arribas,Herrera-Joancomart的表6。《另一種幣遭遇灰塵:基于UTXO的加密貨幣中的灰塵分析》(2018年) [https://eprint.iacr.org/2018/513.pdf]
有了地址類型中UTXO的分布,我們就可以使用上表中的估計來計算在任意時間花費一筆UTXO所需的平均字節數。下圖表總結了這些數據:
整個歷史的比特幣UTXO集地址類型分布圖。黑線顯示了在當時花費平均UTXO所需字節數的最佳估計值。主導地址已經從P2PK轉移到今天的P2PKH和P2SH。[https://www.unchained-capital.com/blog/dust-thermodynamics/]
根據上圖,我們估計花費平均UTXO需要172字節。
注意:通過建構,這個數字是被高估的。在比特幣的大部分歷史記錄中,不僅花費UTXO所需的平均字節數低于172字節,而智能批量交易可能會顯著降低此估計值。
存在多少灰塵?
從比特幣歷史中任何一個區塊的UTXO集,以及花費一個UTXO需172字節的估計值,我們可以通過將每個UTXO的余額除以花費它所需的字節數來構建UTXO價值密度分布:
彩色條帶顯示圖例所示的每個百分位數的價值密度。黑色虛線表示一段時間內的平均費用,黑色實線表示最低費用。價值密度低于最低費用的UTXO無法花費,低于平均費用的UTXO難以花費。該圖假定花費任何給定UTXO需要平均172字節數。[https://plot.ly/~unchained/39/utxo-value-density-percentiles/]
該圖非常類似于之前的UTXO余額分布圖——它只是根據花費每個UTXO所需的字節數(172)進行了重新調整。這個新分布的單位是聰/字節,所以我們可以直接將它與該區塊的轉賬費市場(黑線)進行比較,這是我們只靠UTXO余額無法做到的。
這個圖表明了什么?
存在很多灰塵!
在2017年末的高交易費市場中,所有UTXO中有15-20%的價值密度低于50-60聰/字節的最低費用,因此幾乎不可能花費。40%-50%的UTXO的價值密度低于600-700聰/字節的平均費用,這使得它們難以被使用。這是很多灰塵!
交易費市場在2018年大幅降溫。今天,10-15%UTXO的價值密度仍然低于20-30聰/字節的平均交易費,并且3-5%UTXO的價值密度低于1-2聰/字節的最低費用。灰塵少了得多,但仍然很多。
所有灰塵都不值錢!
讓我們換一個不同的視角:按個數計,許多UTXO可能是灰塵,但這些灰常UTXO包含多少比特幣?雖然它們數量很多,但根據定義它們的余額很低,所以總的來說它們并沒有太多。下圖顯示了低價值密度UTXO中包含的比特幣的比例:
彩色條帶表示給定價值密度的UTXO所包含的比特幣分數。由于大部分比特幣包含在高價值密度UTXO里,因此僅顯示低價值密度UTXO(可能是灰塵)的條帶。放大最近幾個月,看看近期低價值密度UTXO的減少情況。該圖假定花費任何給定UTXO需要平均172字節。[https://plot.ly/~unchained/33/utxo-value-densities-distribution-satsbyte]
雖然有很多UTXO價值密度很低,但上圖顯示在灰塵UTXO中包含的總比特幣非常小 。即使在交易費峰值,按價值算也只有0.01-0.02%的比特幣是灰塵。當時的市值約為225億美元,相當于2500萬至5000萬美元的灰塵。
今天的平均交易費遠低于2017年底。在今天的費用下,只有0.0005%的比特幣是灰塵。在今天低至650億美元的市值下,這表示只有30萬美元的灰塵!
陷在BTC灰塵里的價值已經從2017年底的5000萬美元萎縮到今天的30萬美元。
注意:這些數字是被高估的。智能批量交易可以減少花費UTXO所需的平均字節數,從而降低我們對灰塵UTXO數量和價值的估計。
我們可以減少灰塵嗎?
比特幣是一個沒有領袖的系統。這使得我們難以設計各種自上而下的方法來消除現有的灰塵并減少未來的灰塵產生。我們必須依靠對生態里的用戶、礦工和企業的激勵。存在這樣的激勵嗎?
交易所和其他企業
是的,他們會這樣做。雖然崩潰的價格和交易費市場是減少灰塵量的主要原因,但在2018年,交易所等大型企業(尤其是Coinbase)開展了積極的降低灰塵措施。下面的低價值密度UTXO所含余額圖直接顯示了這些有效措施的影響:
給定價值密度的UTXO所包含的比特幣分數圖的注釋版本。整個市場的作用是增加灰塵量,無論是緩慢(囤幣期)還是快速(反彈期)。單個行動者可以大幅增加(2015年的“壓力測試”)或減少(2018年的Coinbase)灰塵量。但灰塵的產生永遠不會停止;注意最近增加和持續清理。
像Coinbase這樣的企業已經制造了大量灰塵,并且在使用區塊空間方面效率低下,因為它們沒有充分地批量處理客戶交易。由于Coinbase等主要交易所在2017年的反彈期間大受歡迎,這種行為影響了比特幣網絡的其余部分,并且被許多人正確地抱怨 。
當交易費市場在2018年初回落時,Coinbase既有激勵也有能力去減少現有的灰塵足跡和未來的灰塵產生。批量交易能為Coinbase這樣的大體量公司節約交易費,也能減少灰塵產生。Antoine Le Calvez的雄文《比特幣灰塵落定時》(https://medium.com/@alcio/when-the-bitcoin-dust-settles-878f3431a71a)分析了這個“UTXO合并”期——一個UTXO集的大掃除。
比特幣生態系統中的其他陣營是否同樣具有減少灰塵的激勵和能力?
用戶
用戶不會直接受到灰塵的影響。由于他們使用的錢包軟件效率低下,他們可能會產生灰塵,但很少有個別比特幣用戶創造了大量灰塵。
用戶不喜歡高額交易費,但灰塵并不直接影響交易費市場。造成灰塵的低效UTXO管理,也導致更多的小額交易,這是交易費變多的一個更大原因。因此,只有適度的激勵去鼓勵用戶減少灰塵。
即使他們缺乏激勵,用戶是否有能力限制灰塵?畢竟,用戶在加密貨幣方面擁有很大的力量,因為2017年的UASF運動證明了這一點。但灰塵是一個共同的問題,是公地悲劇,因此需要一些協調的解決方案。用戶需要開發者和/或交易所和礦工的幫助來清除他們擁有的灰塵。
個人用戶可能愿意“捐贈”他們的灰塵,比特幣確實提供機制(例如ALL|ANYONECANPAY或NONE|ANYONECANPAY類型簽名)供用戶捐贈他們的灰塵。如果錢包支持它,那么社交協調的公共大掃除可能是一種有趣的方式,可以為各種用戶選擇的慈善機構或有利于比特幣生態系統的項目提供資金。
礦工
大多數礦工都不理會灰塵。
礦池中的礦工只是被付錢去做哈希運算的;礦池運營者需要管理UTXO集并處理它包含的任何膨脹,但他們也可以自由地從他們的內存池中刪除低價值密度的灰塵UTXO。無論如何,沒有用戶能把它們花掉!這將為清道夫礦池提供機會,并嘗試挖掘這些灰塵UTXO,但這仍然需要用戶采取行動來消費它們。用戶可能不會注意或關心。
關心灰塵的獨立礦工或礦池運營者可以選擇安排一個交易費假期——這些礦工將故意允許零費用交易,(只)花費低價值密度的UTXO,可能在大掃除期間完成。這將允許用戶清理他們的錢包,同時幫助礦工和節點操作員大幅減少他們的UTXO設置的內存占用。
分發選擇交易能力的BetterHash(https://github.com/TheBlueMatt/bips/blob/betterhash/bip-XXXX.mediawiki)等提案可能會鼓勵更多個體礦工離開傳統礦池(在這里礦池運營者確定要開采的區塊)并構建自己的區塊。那么,他們可能不得不更多地處理/關心灰塵。
理論上,礦工們也可以拒絕挖創造灰塵UTXO的交易。但他們真的愿意犧牲短期交易費收入來防止制造長期的灰塵嗎?鑒于礦池主導著挖礦,而這些礦池并不特別關心灰塵,這似乎不太可能。
全節點運營者
全節點運營者——那些備份區塊鏈,傳播和驗證交易但不挖礦的人——也對灰塵創建有一定的影響力。bitcoind軟件中的minRelayTxFee參數允許節點運營者設置最小價值密度,低于該密度,他們將忽略/刪除UTXO(以及創建它們的交易)。在某種程度上,這種設置已經阻止了極低價值密度UTXO的創建——如果從未實施此設置,今天可能會有更多的灰塵。
但很少有節點運營者將其配置設置調整到這種詳細程度。因為開發者選擇bitcoind軟件的默認設置,可能開發者會對全節點在真實環境下的運行方式產生更大的影響。
開發者
在許多方面,開發者最有能力限制灰塵的生產。
開發者編寫錢包軟件并為其撰寫文檔。面對困難的優化問題,他們的權衡(和失敗)是灰塵的根本原因。在用戶需求的推動下,從錢包到錢包的新策略和最佳實踐是減少未來灰塵生產的最佳方式。
開發者定義默認節點設置,這些設置通過全節點運營者、礦工、交易所和其他企業構成的網絡滲透出來。這提供了一種抵御灰塵的群體免疫力,從惡意或低效的錢包中過濾掉灰塵交易。
通過草根運動(就像UASF),開發者可以直接與用戶和礦工合作,建立安排和操作大掃除和交易費假期所需的社交軟件。
通過建立閃電網絡這樣的第二層,開發人員甚至可以希望完全超越灰塵問題。
灰塵是不可避免的
但是,沒有任何陣營或合作可以完全消除灰塵生產。盡管2017年對灰塵有了越來越多的認識,并且在2018年3月試圖對其進行清理,但灰塵仍在繼續產生:
· 價值密度《50聰/字節的UTXO呈現出持續生產的鋸齒曲線,然后是快速回調:有人積極制造灰塵——但至少他們自己正在清理。
· 價值密度《100聰/字節的UTXO已經增加了10%(以美元計)——這些UTXO今天不是灰塵,但如果費用市場再次像2017年那樣再次上漲,它將迅速變成灰塵。
灰塵的產生是比特幣所固有的低效率 。
灰塵只會影響比特幣嗎?
并非所有區塊鏈都使用UTXO模型進行交易。例如,以太坊使用了帳戶模型。
·從不同交易存入一個地址的ETH是混在一起的。
·交易費用由廣播交易的地址支付,而不是轉移ETH的地址。
這兩種差異都大大減少了灰塵的產生,但并沒有消除它們。以太坊開發者們也擔心以太坊區塊鏈中的灰塵(https://github.com/ethereum/EIPs/issues/168)及其造成的膨脹。
灰塵(更一般地定義為使用不經濟的代幣)的產生,似乎是區塊鏈中常見的低效率。
區塊鏈的熱力學?
灰塵UTXO和普通UTXO之間的區別是使用性上的區別。存放在一筆灰塵UTXO中的一聰比存放在普通UTXO中的同樣一聰難用。但它們在區塊鏈上是相同的。
礦工為了保護區塊鏈而下注的算力保護灰塵UTXO,和保護更有用的UTXO一樣。這使得在灰塵UTXO中的幾聰顯得更加無用,實際上是浪費能源。
對于比特幣而言,“浪費能量”可能是一個敏感的問題。有些人已經在哀嘆為了確保比特幣交易工作量證明所用的能量了。如果他們知道比特幣保護的大量資金不會被使用,他們的反對意見會更加聲勢浩大嗎?
比特幣的安全性能效是多少?
比特幣有能效的概念嗎?使用算力保護有用經濟資產的效率如何?人們可以通過將其視為加熱器來簡單地定義比特幣礦工的能效——但整個比特幣網絡的能效是否有更有趣的區塊鏈層面的定義?這個定義認識到由于灰塵的存在,比特幣的效率低于它原本應該的水平。
物理與經濟學
關于能效的問題可以用熱力學術語來說明,并因此可以用物理工具來回答。
近幾十年來,物理學家已經多次嘗試使用他們的工具來模擬經濟系統。有時候這些嘗試的簡單性和應用范圍都是驚人的:由Black-Scholes方程式(或類似于它)得出的模型管理著數十億美元,該方程式計算期權價格類似于熱量在物質中的擴散。
其他嘗試整合這些領域(“經濟物理學”)感覺就像奇怪而孤立的東拼西湊,被他們的母學科拒絕。
區塊鏈是否適用于物理學家的定量分析和理論模型?考慮:
·比特幣雖然市值仍然很小,但現在已有10年的歷史,已經足夠大,可以在用戶、投資、價格、體量和價值上展示出許多有趣的模式。
·區塊鏈也是分布式賬本,它們以匿名方式記錄其數據,但具有足夠的結構來精確分析大規模行為(參見我們的囤幣潮帖子 )。
·最有趣的是,通過使用大量的能量,比特幣錨定了物理世界。這為物理學家提供了考慮區塊鏈熱力學的手柄。
區塊鏈是結合經濟學和物理學洞見的前所未有的機會。
區塊鏈作為熱引擎
這些屬性的結合表明我們可能想要更加認真地對待“灰塵UTXO是浪費能源”的隨意聲明——事實上,更確切地說 :UTXO是一種能源“浪費”,因為它們沒有為任何人做任何有用的“功”。這降低了我們尋求衡量的效率。
物理學家為了理解熱量、功和廢物(熵)與機械發動機效率的關系,定義了一個簡單的框架:熱力學的經典理論。
像這樣的熱力學方程將輸入能量和發動機所做的功與其內部能量改變及其產生的熵量相關聯。這個特定的等式僅僅是暗示性的;目前尚不清楚如何為區塊鏈定義這些術語。
沒有經典引擎是完美的;有用功的提取總是伴隨著熵的增加,通常表現為系統中的廢熱:分布在反應室空氣和燃料分子里的焦耳能量比發動機熱排氣中隨機振動的分子里的相同焦耳能量更有用。發動機的效率是發動機避免產生廢熱的程度,有利于有用的機械功。
灰塵UTXO無用,但無論如何它們都是安全的,就像發動機排氣中的廢熱無用但無論如何都要生產一樣。正如工程師們設計出巧妙的系統來避免產生廢熱并迅速擺脫它,區塊鏈工程師正在開發更智能的錢包軟件,區塊鏈公司正在“冷卻”他們自己的灰塵,以提高鏈的效率(特別是,冷卻UTXO按照“粒度”的順序進行——企業在低價值密度之前清理更高價值密度的灰塵,如Antoine Le Calvez在《比特幣灰塵落定時》中所示 )。
灰塵和廢熱之間的更精確類比是一項挑戰。控制發動機的相同熱力學定律適用于任何系統——包括基于工作量證明的區塊鏈。困難在于應用它們的定義。什么是比特幣交易語境下的“功(work)”?如何衡量區塊鏈的“內部能量”?比特幣處于均衡狀態嗎?將系統視為一堆制造物理廢熱的計算機是對的,但無趣且過度精簡。比特幣的域數據(交易、UTXO、價格、體量、交易費等)是否可以被視為熱力學系統?
如果我們對工作量證明區塊鏈的熱力學有了更好的理論,我們或許可以回答這些問題,并為比特幣定義“能效”以及用能源使用、交易量、UTXO創建、價格數據、交易費市場等實際數據去計算它的方法論。
區塊鏈的熱力學理論將是經濟學和物理學的進步。回答“礦工投入為比特幣做哈希運算的能量去了哪里?”這個問題以一種幫助我們使用熱力學語言去理解比特幣經濟學的方式,可能是一個非常強大的理解世界的新框架。
評論
查看更多