NONDUBITO

鑿構週期律 · 區塊鏈系列 02 / 21

從 CPU 到礦場

GPU、ASIC、礦池與預售礦機如何把人人可參與的計算,變成資本、能源與地理高度集中的產業。

一 一個君子協定

2009年12月12日,中本聰在論壇上回了一則帖子。

他說,大家最好有一個君子協定,盡量把 GPU 軍備競賽往後推一推。

理由他寫得很具體:當時普通人用 CPU 還能比較平等地參與,而一旦需要新加入的人去折騰顯卡驅動和兼容性,門檻就抬上去了。

這段話的時間點要擺正。

它不是在 ASIC 已經鋪開之後回頭懷念 CPU 時代。它寫在 GPU 大規模進入網絡之前,是一次預判。

第一篇裡那封寫給 laszlo 的私人郵件是 2010年5月,內容也是同一件事的顧慮。也就是說,同一個人在半年裡至少說過兩次。

接下來的五年,這件事按他擔心的方向走完了全程。

而餘項在這裡已經可以先點一次名。這套設計要通約的是算力:誰算得多,誰拿到新幣。這把尺子乾淨得幾乎不像人造的,它不問你是誰,不問你在哪一國,不問你有沒有人擔保。而它一開始轉就會把算得少的那些人往外推,而被推出去這件事,在這把尺子上不顯示為任何東西。

中本聰那句話擔心的正是它。

而他擔心的說法也要看准。他沒有說這會毀掉什麼,也沒有說要禁止誰。他用的詞是君子協定,也就是一件全靠自覺,沒有任何強制手段的事。一個把不需要信任寫進設計的人,在這件事上只能指望大家講道義。

而這一節要先立一個判斷,因為它決定後面七節怎麼讀:這個過程裡,幾乎每一步都是有人在做完全合理的事。

沒有一步需要誰存心為惡,也沒有哪一步是偷偷進行的。每一樣新東西都發在公開論壇上,附著實測數據,歡迎別人復現。

這一點後面會變得很要緊。這個域裡後來確實出過大量真正的欺詐,而挖礦工業化這一段基本不屬於那一類。它是一段幾乎全程公開,每一步都講得出道理的過程,而結果仍然是那樣。

還有一個說法要先拆掉。

CPU 到 GPU 到 FPGA 到 ASIC,這個四級跳適合做教學示意,不適合當史料。原始材料給出的是一段技術世代重疊的過程:GPU 已經存在的時候 CPU 還在礦池裡;FPGA 的單位算力購置成本早期並不一定比 GPU 低;Butterfly Labs 開始收 ASIC 訂單的時候 Avalon 還沒有公告;而 Avalon 真正交貨的時候,Butterfly Labs 的客戶仍然在等。

四個整齊的日期區間是後來整理出來的。當時的人是在幾條線同時往前走的中間做決定的。

這個糾正對整個系列有用。構走過的路被後人整理成階段,幾乎是必然的,因為不整理就講不清楚。而整理這個動作本身會抹掉一樣東西:當時的人並不知道自己站在哪一級上,也不知道下一級什麼時候來,更不知道自己剛買的機器會在幾個月後變成什麼。

二 兩個數量級

先看硬件本身,因為後面所有的事都壓在這幾個數上。

CPU 這一級有一件事容易被略過:一台 CPU 的算力從來就不是一個固定的硬件常數。2010年論壇上的實測表裡,AMD Phenom II X3 720 用一個常見的礦工程序大約 7.2 MH/s;而 Intel i7-980X 的記錄會隨程序,線程數和頻率變化,從不到 10 MH/s 到大約 25 MH/s 都有。

同一顆芯片,換個程序,差好幾倍。

這一點在後面幾節會一直有用。算力這個數看上去像一個物理量,像重量或者長度,而它其實是硬件,軟件和配置共同決定的。構在這裡量的第一樣東西,就已經不是一件純粹的自然事實。

GPU 這一級的分界線,可以定在 2010年秋天。

2010年9月的論壇材料已經明確寫著:ArtForz 用大約 12 張 Radeon HD 5770,個人算力超過 1 GH/s,而當時整個網絡估計只有 5 到 6 GH/s。

一個人,佔了全網五分之一上下。

而這個人用的是十幾張可以在任何一家電腦店買到的顯卡。

這一條要單獨擺出來,因為它推翻了一個很流行的時間感:礦場集中化不是到了 ASIC 才第一次出現。2010年9月就出現過一次,只不過當時這種集中還可以用消費級顯卡在自己家裡組裝出來。

兩件事要分開:門檻低,和不集中,不是同一件事。2010年9月的門檻低到任何人都可以去買顯卡,而集中已經發生了。集中的原因不是別人被擋在外面,是別人沒有想到,或者想到了不肯花那個錢。

這個分別在後面十九篇裡會反復出現,而且越來越難分。一樣東西所有人都可以參加,和所有人實際上都參加得起,中間隔著錢,隔著信息,隔著一個人肯不肯在一件還看不出用處的事情上先押一筆。

單卡的數字是這樣的:一張 Radeon HD 5870 論壇實測約 299 MH/s,上市定價約 379 美元,典型板卡功耗約 188 W。折下來大約 1.27 美元每 MH/s,0.63 W 每 MH/s。

相比前面那顆 7.2 MH/s 的 CPU,差了大約四十倍。

要說明的是,這裡的美元每 MH/s 只用於橫向比較,不是礦業財務意義上的成本覈算。顯卡是一件可以拿去打遊戲的通用設備,而後面那些專用礦機除了算哈希什麼也做不了。同一個數字,底下的東西不一樣。

FPGA 這一級最容易被講錯。

開源的 FPGA 礦工代碼至少可以追溯到 2011年5月20日。商業化的板卡隨後出現,ZTEX 的 USB-FPGA Module 1.15x 大約 190 MH/s,8.5 W,單板約 460 美元,五片價約 430 美元。

折下來大約 2.42 美元每 MH/s。

比 GPU 貴。

也就是說,FPGA 並不是在購買一單位算力要花多少錢這件事上壓倒 GPU。以發行價算,消費級顯卡反而更便宜。

它真正發生數量級變化的地方是電。8.5 W 對 190 MH/s,約 0.045 W 每 MH/s,而前面那張 5870 大約 0.63,相差約十四倍。

這一步比它看上去更要緊。

因為從這裡開始,礦業的優化目標換了。不再是有沒有足夠快的桌面硬件,而是每一瓦能生產多少哈希,同一個機架能塞進多少算力。ZTEX 自己的銷售帖就是直接用每瓦算力在討論競爭力的。

從個人愛好變成工業設施的那一步,發生在指標換掉的時候,不是發生在某個人決定要建廠的時候。

ASIC 這一級把這兩個方向同時推到了底。

Avalon 第二批的預售參數留下了一組很乾淨的工業化數字:大於 60 GH/s,6.6 到 6.7 W 每 GH/s,單價 1,500 美元,600 台,計劃 2013年3月6日到 4月5日發貨。

按 60 GH/s 保守算,資本成本不高於 25 美元每 GH/s,也就是 0.025 美元每 MH/s;整機電力約 396 到 402 W。

和 2010年那張 5870 比:硬件的單位算力成本下降了約五十倍,功耗從 0.63 W 每 MH/s 降到約 0.0066。

三年,兩個數量級。

而這兩個數量級不是同一件事的兩次改進。第一個數量級降的是買機器要花多少錢,第二個數量級降的是機器跑起來要燒多少電。前者決定誰買得起,後者決定誰開得起。到 ASIC 這一級,這兩個問題的答案開始指向同一批人。

三 同一台機器

難度這條曲線是全篇的樞紐。

先說口徑。下面的等效全網算力,是按難度乘以二的三十二次方再除以 600 秒算出來的,也就是難度對應的十分鐘穩態算力,不是某個網站按過去二十四小時實際出塊數估計的滾動值。後者會因為區塊到達的隨機性上下波動,兩者不要求完全一致。

幾個觀察點:

2010年5月中下旬那個難度週期,難度約 11.846,等效算力約 84.8 MH/s。

2011年6月15日,難度 876,954.493513,約 6.28 TH/s。

2012年11月28日,第一次減半,區塊 210,000,難度約 3,438,908.96,約 24.62 TH/s。

2013年12月下旬,難度約 1,180,923,195.26,約 8.45 PH/s。同一個十二月的月初難度還只有 707,408,283,一個月裡經歷了多次大幅調整。

2014年12月30日,難度約 40,640,955,016.58,約 290.92 PH/s。

四年半,從 84.8 MH/s 到 290.92 PH/s。

這中間還有一個細節:2013年那一整年,難度上調了三十次,只下調過一次。也就是說,那一年裡幾乎每兩周,所有已經在挖的人就被往後推一格。

往後推一格這個說法要落到具體的錢上。一台按 2013年3月的難度算得出回本週期的機器,買的時候算的是那個難度。而它到手之後每兩周被推一次,推到某一格上,回本週期就從幾個月變成永遠回不了。買它的人沒有做錯任何計算,他只是沒有辦法把兩周之後的難度算進去,因為那取決於別人買了多少機器。

而真正冷的不是這條曲線,是把同一台機器放上去看。

一台 66 GH/s 的 Avalon,2013年1月30日到手那天,佔全網約 0.31%,單獨挖平均 2.24 天能出一個區塊。當天論壇上有人用 66 GH/s 和難度 2,968,775.33208 估算,這台機器每天可以產出約 11 枚。

同一台機器,到 2013年12月下旬,佔全網約 0.00078%,平均 889 天一個區塊。

同一台機器,到 2014年底,佔全網約 0.0000227%,平均 30,610 天,大約 84 年。

機器一個零件都沒有換。

變的是別人。

一台機器的收益,取決於所有別的機器加起來有多少。這在別的行業裡也有,而很少有這樣純粹的:一個麵包師傅多開一家店,不會讓別家的烤箱變慢;而一台礦機接上電,確實會讓此前所有的礦機都變慢一點,而且是即時的,可計算的,精確到下一個難度週期。

構在這裡做的動作非常乾淨,乾淨到幾乎不像一個動作:它不淘汰任何人,它只是把標準往上抬,而抬的依據恰恰是所有人自己的努力。

每一個新加入的礦工,都讓所有已經在裡面的礦工挖得更慢,包括他自己。

這是這個域裡第一次出現的一種結構,而它後面還會以很多形式回來:一個人為自己做的最優選擇,同時是所有人處境變差的原因,而且包括他自己在內。沒有人可以靠不參加來避免它,因為不參加只意味著更快被推出去。

而這條曲線是協議自己寫的。每 2,016 個區塊調整一次,按十四天的目標耗時反算。中本聰 2010年2月解釋它的時候用的就是這個算法:一輪只花了 9.4 天,新難度就乘以十四除以 9.4。

沒有任何一個人可以決定它。也沒有任何一個人可以停下它。

這一句既是這套設計最漂亮的地方,也是它最難對付的地方。漂亮在於沒有人能操縱發行節奏,不會有誰半夜多印一批。難對付在於,當這條曲線開始傷人的時候,也沒有一個可以去找的人。第一篇裡說過構在這裡是自己執行的代碼,這就是第一個具體的例子。

方差是另一條要說的。

一台 299 MH/s 的顯卡,在 2011年6月那個難度下,平均約 146 天才能出一個區塊。按泊松分布算,一個月完全沒有區塊的概率大約是 81%。

一台 215 MH/s 的 FPGA,在 2012年減半那個難度下,平均約 795 天一個區塊。一整年一個區塊也沒有的概率大約是 63%。

這兩個概率只由難度和算力推出來,和礦工的技巧沒有任何關係。

一個人可以什麼都做對,買了當時最好的硬件,程序調到最優,機器一天二十四小時不停,然後一整年顆粒無收。

礦池就是從這個地方長出來的。

四 二萬人

商業模式的真實形狀,先從預售這一層看。

到了 FPGA 和 ASIC 階段,有一件事發生了變化,而這個變化比硬件本身更要緊:製造商可以在芯片還沒有流片成功之前,就收到全額預付款。

Butterfly Labs 是這條路上最完整的案例,因為它後來變成了一起聯邦執法案件,留下了法院材料。

按 FTC 後來提交的起訴書,BFL 從 2012年6月開始廣告 BitForce SC 系列,價格從 149 美元到 29,899 美元,告訴消費者產品已經進入最後開發階段,初始交付計劃是 2012年10月。所有訂單要求在下單時全額預付,可以用 PayPal,比特幣或者電匯。

2012年10月沒有交付。

截至 2013年4月1日,仍然沒有向客戶交付任何一台。

截至 2013年9月,超過 20,000 名已經全額付款的消費者還沒有收到機器。

FTC 的起訴邏輯值得看清楚,因為它不是泛泛地說消費者不滿意。

它把交付時間,難度,算力,功耗和投資回報放在同一條因果鏈上。BFL 自己推廣的收益計算器就要求輸入挖礦難度和交貨日期;而 FTC 指出,隨著礦工增多和硬件更新,舊設備會迅速接近淘汰,因此及時拿到最新設備對能不能回本至關重要;起訴書又稱,BFL 實際交付的設備在不少情形下已經過時,所挖到的比特幣只是按承諾時間交付本可挖到的一小部分。

把第三節那張表接上來,就知道這條因果鏈有多硬。

六個月到一年的延遲,在 2013年意味著的不是晚點收貨。它意味著同一台機器從兩天出一個區塊,變成八百多天出一個區塊。

2014年9月,FTC 取得法院臨時限制措施,BFL 業務受到法院控制。2016年雙方和解:對 BFL 和 Sonny Vleisides 有金額約 3,861 萬美元的判決安排,但在資產披露真實並支付規定的較小金額的條件下暫停執行;Darla Drake 的判決為 135,878 美元,通過交出包括用公司礦機獲得的比特幣在內的資產來滿足條件。命令還限制此後對產品可獲得性,盈利能力和新舊狀態作欺騙性陳述。

Avalon 是另一種情況,而且不能和 BFL 壓成一件事。

Avalon 的公開預售公告是 2012年9月17日,當時的保守計劃是 2013年1月到 2月完成生產,從 2月開始按訂單順序發貨。實際情況是 1月20日就公告開始發貨,第一台寄給了 Bitcoin Core 的開發者 Jeff Garzik;1月30日論壇上出現了收貨照片和運行驗證,實測約 68 GH/s。

也就是說,Batch #1 本身不能作為晚幾個月交貨的例子。

而 Batch #2 的預售帖裡有一句寫得非常直白:公司需要在週末之前拿到錢,去下零部件的訂單。

這一句把預售的性質說盡了。

買家付的不是貨款。買家付的是這家公司的營運資本。

而這件事在當時並不是秘密,帖子就那樣寫著。買家看得見,而且還是買了。原因也不難理解:排在前面的訂單先拿到機器,而先拿到機器意味著在難度漲上去之前多挖幾周。預付是在買一個位置。

現在把兩頭追一遍。

廠商這一頭拿到的是:無息的生產融資,零庫存風險,以及需求確認。

買家那一頭承擔的是:硬件最終性能的風險,交付時間的風險,以及在等待期間難度上漲的風險。

三樣風險全在一邊,而拿到錢的是另一邊。

這是這個系列裡第一次出現的不對稱,而它出現在第二篇。

要補一句公道話。預售這個安排本身不是騙局,它是硬件行業常見的做法,尤其在需要先流片的芯片上。沒有預付款,一家新公司根本做不出第一批芯片。問題不在於誰承擔風險,而在於承擔風險的那一方拿不到與風險相稱的補償:延遲發貨的損失全部由買家吃下,而按時發貨的好處並不額外歸買家。

還有一條界線要守住。

廠商是不是把最好的機器留下先挖,等收益下降了才發貨,這個說法在當時非常流行。證據強度要分層:FTC 已經證明的核心是延遲,未交付,以及設備到手時已經過時;和解材料顯示公司管理者確實曾用公司的機器取得過比特幣。而一位私人原告的訴狀裡提出過更直接的指控,說被告使用了本應屬於客戶的礦機挖礦。

訴狀裡的主張不是經過審理確認的普遍事實。

公司機器被用於挖礦,和所有遲交的客戶機器都被秘密挖過,是兩個不同的命題,而現有材料只支持前一個。

守住這條界線不是為了替誰開脫。是因為這個域後來會出現大量真正的欺詐,而如果把指控和認定混著寫,到了真正需要直書的那幾篇,句子就不值錢了。

五 誰承擔倒霉

礦池這一層,是這個系列裡少見的一處:風險的分配被公開定價,而且可以選。

Slush Pool 的原始帖子發在 2010年11月27日。發帖人 Marek Palatinus 的問題定義非常具體:GPU 已經讓別人的單獨挖礦變得困難,而他自己的三台 CPU 很長時間找不到一個區塊。

他在帖子裡舉的算術很樸素:如果一個礦工有 1,000 kH/s,而池子總算力 20,000 kH/s,池子平均兩天找到一個 50 枚的區塊,那麼這個礦工按算力佔比大約可以拿到 1.25 枚每天。他特別把這種小而連續的回報,和單獨挖礦可能等上幾周幾個月才一次拿到 50 枚做了對照。

這個池子挖出的第一個區塊是 2010年12月16日,區塊 97,834。

而原帖底下幾乎立刻就有人指出了一件要緊的事:兩台 1,000 kH/s 的機器和一台 2,000 kH/s 的機器,總的期望成功率是一樣的。

礦池不改變期望收益。

它改變的是收益分布的方差,和到賬的時間。

一個人一年顆粒無收的概率從 63% 變成接近零,而他一年的期望收入沒有變。他買到的是確定性,付出的是費率。

分配算法後來的演變,是被套利逼出來的,而這條線很能說明構的性質。

最初的做法接近按一輪裡提交的工作量比例分配。很快出現了 share 這個東西:礦工不必每次都提交真正達到全網難度的稀有哈希,只要提交滿足較低的池內難度的工作量證明就行,這些低難度的 share 用來統計每個人貢獻了多少計算量,而真正達到網絡目標的那一個哈希才產生區塊。

但簡單的按比例分配產生了新的問題。

Meni Rosenfeld 在 2011年的礦池收益分析裡指出:如果一輪已經持續很久,積累了很多 share,而區塊仍然沒有找到,那麼之後新提交的一份 share 在按比例方案下的預期價值會下降。於是礦工可以只在新一輪的開頭加入,等這一輪變老了就離開。

這就是 pool hopping。

Slush 因此轉向了按分數計的辦法:越新的 share 權重越大,舊的 share 分數隨時間衰減。

這裡要停一下,因為有一個流傳很廣的說法不對。

Slush 從一開始就是 PPLNS,這個說法不符合原帖。最初是按比例,然後是用低難度 share 衡量工作量,再往後才發展成最近的 share 權重更高的分數法。而分數法依賴的是 share 的年齡和時間,PPLNS 依賴的是最近 N 份 share,跨越一輪的邊界,不以當前這一輪已經進行了多久作為結算邊界。

把這些統稱為按份額,會丟掉 2011年那場關於 pool hopping 和獎勵設計的爭論。

而這一整套方案,拆開看其實是一張風險分配表:

按比例分配,這一輪很倒霉的風險由礦工承擔。

分數法和幾何法,風險仍主要在礦工一側,只是把套利的口子堵上。

PPLNS 不以區塊輪次作為結算邊界,付最近 N 份 share,可以通過調 N 來在方差和成熟期之間取捨。

PPS 是每一份有效的 share 立即按理論期望值買斷,和池子什麼時候真的找到區塊脫鈎。這意味著壞運氣和資金儲備的風險由運營者承擔,所以 PPS 通常收取高得多的風險費。

DGM 則通過雙重幾何權重,在運營者和礦工之間重新分配方差。

這張表是明碼標價的。礦工可以自己承擔方差,費率低;也可以讓運營者替他承擔,費率高。雙方都知道自己在換什麼。

把這一節和上一節並排讀,能看出很清楚的一件事。同樣是風險分配,預售那一層是不對稱的,礦池這一層是對稱的。差別不在於誰更有良心,在於礦池這一層的風險可以被算出來,可以被定價,而且礦工隨時可以換一家。

可算,可選,可退出。三樣齊了,風險分配就自己找到一個大致公道的位置。

這三樣在後面十九篇裡會一次一次地缺。有時候缺的是可算,因為沒有人知道那份資產究竟值多少;有時候缺的是可選,因為只剩下一家能用;有時候缺的是可退出,因為錢已經鎖在合約裡,而合約要等三十天。缺哪一樣,餘項就從哪一邊溢出來。

費率上,2011年的比較材料裡 Slush 的分數模式大約 2%。而到 2014年初,GHash.io 走的是另一條路:明確的 0% 池費,再把免費的礦池和 CEX.IO 的交易,雲算力等業務結合起來。GHash 自己在公告裡把 0% 費列為它能超過 40% 的重要原因之一。

雲算力又把機器本身從客戶視野裡拿掉了。

CEX.IO 在 2014年把 1 GHS 定義成 GHash.io 裡一份雲端算力,持有人可以在市場上交易這一份;而運營礦機的電力,維護和硬件更換成本,由持有人承擔。2014年5月公司公開的維護成本是每 GHS 每小時 0.00045 美元。

2015年1月,在幣價下降,難度上升之後,公司暫停了自動雲挖礦。當時公開引用的條款允許 CEX.IO 在維護成本超過區塊獎勵,或者挖礦被判斷為在經濟上不划算的時候,停止用持有人的 GHS 挖礦。公司同時說 GHS 仍然是持有人的資產,並允許自行選擇重新開啓。

這裡的糾紛結構和礦機沒發貨完全不同。

客戶買到的是一份算力的權利。而運營條款允許在不划算的時候,停止執行那份權利。

這一層的性質要看准:它不是違約。條款是公開的,寫在那裡,買之前可以讀。而它說明瞭一件事:把一樣東西做成可交易的份額,和把它做成一項確定的權利,不是同一回事。你手上那份 GHS 一直是你的,只是它在最需要它工作的時候可以合法地不工作。

六 39.99%

2014年6月那件事,通常被講成一個礦池突然逼近了 51%。原始材料給出的過程要長得多,而且更有意思。

2014年1月8日到 9日,Blockchain.info 的短期統計已經把 GHash.io 放在超過 42%。一天之後,隨著礦工主動轉池,報道中的佔比降到約 38%。

同一天,GHash.io 自己發了一份聲明,承認進入 2014年的時候總算力已經超過 40%,並宣佈暫時停止接受新的獨立礦場加入。

而那份自報公告裡最有價值的是另一句話:池內大約 45% 來自 BitFury 的 ASIC 系統,大約 55% 來自獨立礦工。

這一句要記住,後面第七節全靠它。

2014年6月12日到 13日前後,短期的區塊統計終於越過了那個象徵性的閾值。當時的報道把它列為在一個滾動觀察窗口中產出約 51% 的區塊;部分按更短窗口的二手報道給出約 55% 的峰值。

所以嚴格說,峰值到底是 51% 還是 55%,取決於採用什麼時間窗口,以及是否把觀察到的區塊份額直接等同於瞬時算力。可靠的共同部分是:它確實曾經在一個足夠受關注的短期窗口裡越過了 50%。

社區的反應不是協議層立刻分叉。是礦工遷出,公開呼籲分散算力,以及重新討論 P2Pool 這一類去中心化的池機制。此前一月份從 42% 降到 38%,已經展示過這種用腳投票的調整方式。

2014年7月,在行業會議和圓桌討論之後,GHash.io 公開承諾其未來算力不超過全網的 39.99%。

39.99 這個數本身值得看一眼。它不是四十,也不是三十五。它精確到小數點後兩位,而它要表達的其實只有一件事:我離那條線還差一點點,而且我知道那條線在哪兒。

這個承諾是一項自願的治理安排,不是協議強制的上限。

沒有任何一條共識規則會讓第 40 個百分點的 share 自動被拒絕。

而社區當時提出的技術回應有三類,它們針對的是完全不同的控制點。

第一類不動哈希函數,只改變組池的結構。P2Pool 把集中式的礦池協調者換成分布式的 share chain。到 2014年 GHash 事件的時候,Gavin Andresen 仍然在公開提這個方向。

第二類改變協議博弈本身。Eyal 與 Sirer 在 2013年的那篇論文證明,在他們的模型下,並不是只有絕對的 51% 才會出現策略性的挖礦優勢;他們並提出了一種協議修改,使得採用自私挖礦策略的聯合體在低於約四分之一資源的時候不能獲得那種優勢。

第三類最激進:更換工作量證明,做抗 ASIC 的設計。這一路在別的鏈上做過很多實驗,而比特幣主鏈並沒有用這種方式淘汰已經部署的 SHA-256 設備。

第三類為什麼沒有走通,原因值得單獨說。

一旦 Avalon,BFL,ASICMiner 這些廠商已經把錢投進流片和供應鏈,更換工作量證明就不再只是一次軟件優化。它會一次性讓已經存在的資本設備全部失效。

2013年之後關於更換哈希函數的討論,因此同時是一場關於既有礦業資本損失該由誰承擔的治理爭議。

而這三類回應的關鍵在於:它們不是同一個去中心化參數的三種寫法。

P2Pool 針對的是池的協調者。協議修改針對的是博弈結構。抗 ASIC 針對的是專用硬件優勢。GHash 那個 39.99% 針對的是池層面的自願約束。

四種辦法,四個不同的位置。

而沒有一種辦法能同時解決另外三個位置上的問題。社區在這幾年裡其實做了很多事,只是每一件都只夠得著一個地方。

這也是構最難對付的一種處境。它不是沒人管,恰恰相反,管的人很多,方案很多,而且每一個方案在自己那個位置上都是對的。問題在於餘項不待在任何一個位置上,它待在這些位置之間。

七 五把尺子

現在可以問那個真正的問題了:挖礦到底有沒有中心化。

答案取決於你用哪一把尺子,而尺子至少有五把。

按礦池統計最容易,因為每個區塊的 coinbase 都能識別歸屬。按這個口徑,2014年6月那次短暫越過 50% 就是一個清清楚楚的集中化事件;後來關於前五大礦池份額的研究也持續得到較高的集中度。

它的優點是直接對應一件確定的事:哪一套礦池基礎設施在發佈區塊模板並收到 coinbase。

它的缺點是會把成千上萬個可以隨時轉池的獨立礦工,都記在同一個標籤下面。

GHash 自己那份 45% 對 55% 的分解,就是這個缺點在同期留下的證據。

按實際機器所有人統計會得到一個不同的圖景,而且方向相反。

2019年有研究者分析了三家大型礦池的鏈上獎勵分配,發現每一個被分析的礦池裡,不超過約 20 個實際收款實體就拿走了超過一半的比特幣獎勵,而且有礦工同時在三個池裡活動。

按這個口徑,礦池餅圖不但沒有誇大集中度,反而可能低估了底層經濟主體的集中。

但地址聚類也有自己的假設:一個收款實體可能在代管多個客戶,一個企業也可能把自己拆成多個地址。

按芯片廠商統計測的是另一種權力:誰控制高效 ASIC 的設計,流片和供貨節奏。

這種集中不會顯示在區塊的 coinbase 裡,卻決定了誰能最先拿到下一代的能效。第四節裡那幾個月的延遲能把一個礦工的全網份額改變幾個數量級,說的就是這件事。

而私人廠商並不定期公開賣給外部多少,自留多少,客戶分別在哪裡。所以這個口徑比礦池數據更依賴估計。

按地理位置統計測的是電網,氣候和監管的共同故障風險。

而這裡有一個特別容易出錯的地方:把某個被歸類為中國礦池的區塊份額,當成中國境內的物理算力份額,是不嚴謹的。礦池服務器,公司註冊地,ASIC 廠商所在地,和客戶礦機的實際位置,可以完全不同。

有研究說 2015年3月到 2017年2月,按運營者標籤分類的中國礦池合計超過 51%。它測的是池的分類,不是逐台設備的位置。

按實際控制人統計最接近那個真正要緊的問題,也最難觀測。

一家公司可以同時擁有礦機,經營礦池,製造 ASIC,經營雲算力,並且托管別人的機器。反過來,同一個大礦工可以同時連接幾個彼此競爭的池。

廠商份額,礦池份額,托管的兆瓦數,和實際協調攻擊的能力之間,不存在一對一的轉換。

五個數,五種權力,而它們分布在不同的人手裡,誰也不掌握全部。這也是為什麼關於中心化的爭論一直吵不出結果:兩個人可以同時是對的,只要他們說的不是同一把尺子。

把這五把尺子擺在一起,真正要說的那件事就出來了。

這條鏈把每一樣東西都量得極准。難度精確到小數點後六位,每一個區塊的時間戳,每一筆 coinbase 的去向,每一次難度調整的幅度,十五年一個數也沒有錯過。

而它最要緊的那個性質,它到底有多分散,沒有一把公認的尺子。

一個構最要緊的那個性質,恰恰是它自己量不出來的。

這一條對整個系列有用,而且它不只對這條鏈成立。經濟系列裡那些構也各有一個自己量不准的東西:國民賬戶量不出它自己划在邊界外的那一大塊,評級量不出被寫進幾百份章程之後自己會觸發什麼,系統性風險那把尺子量不出一個不連著別人的人。

差別在於,這一次那樣東西恰好是這個構存在的全部理由。

這不是因為沒有人去量。它的原因更硬一點:要量這件事,得先回答一個協議答不出的問題。

什麼算一個獨立的人。

協議只認算力。它不問這些算力插在幾個交換機上,屬於幾個法人,由幾個人拿主意,也不問它們的電從幾張電網上來。

而它不問這些,不是設計上的疏忽。恰恰相反,不問正是它能成立的條件。一旦要問你是誰,就要有人來核,而有人來核就回到了原點。這套東西全部的力氣都花在了不必問這件事上,代價是它此後也永遠問不出來。

這就是這一段歷史裡的餘項。它不是被漏掉的,也不是被藏起來的,它每天都在鏈上以哈希的形式出現;它只是沒有辦法被這條鏈本身讀出來。

八 電和人

真實世界那一側,2014年初的美國報道已經把礦場寫成了一個典型的工業設施問題,而不是一個網絡問題。

MegaBigPower 的創辦人 Dave Carlson,從 2012年的業餘挖礦做起,2013年遷到華盛頓州中部的 Wenatchee 一帶。同期報道明確說原因是當地極其便宜的水電。

2014年4月記者到現場看到的,是由兩個倉庫改造成的數據中心,裡面是成千上萬塊板子,以及大量工業風機在持續抽走熱空氣。Carlson 當時還計劃再建一個規模約為原設施十倍的新礦場。

同一篇現場報道也說明瞭一件事:低電價和冷卻不是兩個分開的因素。算力設備一旦密集,所有輸入的電力最終基本上都會變成熱量,所以哪怕當地氣候本來就涼,設施仍然需要大規模通風。

HashPlex 也從西雅圖的臨時托管空間,向 Cascade 山脈東側的大型數據中心遷移。到 2014年,華盛頓中部已經同時出現了兩類礦場:運營者自己擁有大量礦機的,和替外部礦機所有者提供托管的。

歐洲同期的例子是瑞典的 Boden。KnCMiner 在 2014年2月開始建設一座約 10 MW 的礦業數據中心,選址在一座廢棄的瑞典陸軍直升機機庫,距北極圈約 50 英里。後來的行業材料把當地優勢概括為寒冷氣候,便宜電力,政治穩定和高度可靠的電網。

這四條裡有三條和計算完全無關。選一座廢棄的直升機機庫,靠的是有大跨度的空間和現成的電力接入;而距北極圈五十英里,靠的是不用花錢降溫。到這一步,決定一個人能不能挖到幣的因素裡,已經有一大半是地理和基建。

到這裡,這一節本來應該繼續往下走:這些礦場給當地帶來了多少就業,交了多少稅,當地的電價和電網因此發生了什麼變化。

而這一段寫不下去。

關於礦場給地方創造多少就業,多少稅收,2010年到 2014年這一段的同期可核查數字,明顯少於電力和資本支出的數字。

那篇 Wenatchee 的現場報道給了倉庫規模,設備數量級,擴建計劃,以及 Carlson 本人說的數百萬美元投資,數千萬美元回報。它沒有給員工人數,沒有給地方稅款,也沒有給電力公司的專門協議。Boden 那座 10 MW 的設施同樣如此:公開材料沒有給出它和電力公司的逐度合同價格。

這不是記者疏忽。

早期公開材料對礦場的描述,主要是兆瓦負荷,倉庫,冷卻,電價和設備投資。而如果沒有地方電力公司,稅務機關或者企業的工資表,就沒有辦法把兆瓦數換算成就業人數。

記電的是電力公司。記錢的是企業。而沒有哪一個機構的職責是記人。

於是這一段歷史留下來的,是一套非常精確的關於電和錢的記錄,和一段幾乎空白的關於人的記錄。

這也是餘項在這一節裡的形狀。它不是被誰划出去的,也不是量不准,是根本沒有人被派去量。一個數字要存在,先得有一個機構的職責是記下它;而這幾年裡,兆瓦有人記,美元有人記,而倉庫裡那些換風扇的人不歸任何人記。

而這個空白不會因為鏈是不可篡改的就被補上。鏈上記的是 coinbase 發到了哪個地址,不記那個地址背後的倉庫裡,有幾個人在換風扇。

這條限制在這個系列裡會一直在。鏈上的記錄極其完整,而它完整的是它定義得出來的那一部分。倉庫裡的人,和第一篇裡那段沒有保存下來的聊天記錄,是同一類東西:它們發生過,而它們不在這條鏈要記的範圍裡。

回到 2009年12月那個君子協定。

它當然沒有成立。

它也不可能成立,因為它要求所有人自願放棄一個對自己有利,而且完全合規的選擇。

而這五年裡的每一步,單獨拿出來看,都很難說誰做錯了。提高效率的人在提高效率,降低功耗的人在降低功耗,開礦池的人解決了小礦工幾個月挖不到一個區塊的真實困難,搬去便宜水電旁邊的人做的是任何工業項目都會做的選址。

甚至那兩萬個等不到機器的人,買的時候做的也是當時看起來最合理的決定:早付錢,早排隊,早拿機器,早開始挖。

這些完全合理的動作加起來,是 2014年6月那個 51%。

構不需要有人做錯事。它只需要每一個人在自己的位置上,做那件對自己合理的事。

2014年7月那個 39.99% 是一句承諾。沒有任何一行代碼執行它,沒有任何一條共識規則會在第 40 個百分點上把區塊退回來。

而那條鏈自始至終沒有察覺到 2014年6月發生過什麼。

它照常每十分鐘出一個區塊,照常每 2,016 個區塊調一次難度,照常把獎勵發給算出答案的那一個。

它算得出難度,精確到小數點後六位。

它算不出那些算出答案的機器裡,有多少插在同一個交換機上。

鏈還在結算,而結算什麼還沒有共識。

資料說明

本文依據公開協議文檔、鏈上記錄、法院文書、監管文件與同行評議研究寫成;文中的數字均保留其統計口徑。系列資料截至 2026 年 8 月。

Where next

沿著問題繼續讀