比特幣資料科學(第3部分):灰塵與熱力學

買賣虛擬貨幣
本文是比特幣資料科學三部曲的第一篇,它分析了比特幣區塊鏈中存在多少“灰塵”——難以花費的UTXO。作者Dhruv Bansal是一位物理學家和連環創業者。我們研究了灰塵(dust)——發幣交易費大於餘額的比特幣容器(UTXO)——的歷史和未來。區塊鏈中的灰塵量由當前的UTXO集和交易費市場決定。在交易費高峰時期(約2017年12月),比特幣區塊鏈中25-50%的UTXO可以被稱為灰塵!與此同時,這些灰塵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建立、價格資料、交易費市場等實際資料去計算它的方法論。

區塊鏈的熱力學理論將是經濟學和物理學的進步。回答“礦工投入為比特幣做雜湊運算的能量去了哪裡?”這個問題以一種幫助我們使用熱力學語言去理解比特幣經濟學的方式,可能是一個非常強大的理解世界的新框架。


本文由幣信研究院原創編譯,原文連結: 
https://www.unchained-capital.com/blog/dust-thermodynamics/
本文版權歸原作者所有,僅代表作者本人觀點,不代表幣信或幣信研究院的觀點或立場。

免責聲明:

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

推荐阅读

;