作者:Braiins
來源:https://braiins.com/blog/past-and-future-of-bitcoin-mining-protocols-stratum-v2-overview
在這篇博文中,我們將瞭解比特幣礦池網絡連接協議的歷史沿革,以理解為了 Stratum V2 正在塑造比特幣挖礦的未來。“Stratum V2” 是下一代的礦池協議,它產生自當前的 Stratum V2 和 Betterhash 協議。它提高了安全性,讓數據傳輸更為高效,也降低了挖礦基礎設施的門檻。此外,它讓加入礦池的礦工可以自己選擇要挖掘的交易,從而提升了挖礦的去中心化。

礦池和挖礦協議的歷史
最初,礦工必須通過運行全節點來連接到比特幣協議並與之交互。
為了標準化礦工與比特幣協議之間的溝通,一種開源的 “getwork” 協議被用作快速且簡單的解決方案,幫助彼此獨立的礦工開始挖礦。Getwork 協議使用 HTTP 協議作為跟比特幣協議連接的方法。但是,HTTP 一般用在網頁上,對於協調對等節點來挖掘比特幣並不理想。因此,隨著挖礦變得更加流行,其低效之處也即逐漸暴露出來。
到了 2012 年,隨著挖礦行業發生了巨大變化、網絡哈希率迅速增長,getwork 的低效率已經成了大問題。它讓可觀數量的網絡帶寬發生在礦工之間,而且,服務端(也即礦池)為了支持日漸增多的礦工,要花費數量高不可攀的帶寬。
這時候,事情已經很顯然了:getwrok 協議不是一個能夠擴容的解決方案。
入池挖礦越來越流行,getwork 協議的侷限性也就越來越明顯。這讓 Marek “Slush” Palatinus —— 他在 2010 年創建了 Slush 礦池 —— 開發了 stratum 協議(Stratum V1)用於礦池和礦工的溝通。從此,Stratum V1 就一直是礦池挖礦的標準協議,儘管比特幣網絡和挖礦行業產生了巨大的增長( ~ 10 TH/s 增長到 600 EH/s)。(譯者注:這裡的 “H/s” 是 “每秒哈希次數” 的意思,是度量挖礦算力(哈希率)的單位。)
礦池協議的現狀
Stratum (V1) 以及對它的批評
Stratum V1 被批評一開始是秘密開發的,然後才擺到檯面上,因為沒有用正式的 BIP 來描述其實現。但是,可以說 Stratum V1 跟比特幣的協議和實現都無關 —— 它只是一個定製化的池化挖礦插件,所以不應該要求一個正式的 BIP 。
另一個爭議的源頭是,就在 Stratum V1 開發期間,社區花了幾個月時間來開發一種叫做 “getblocktemplate(BIP22)” 的開源協議,以取代 getwork 協議。就在 Stratum V1 發佈的幾乎同一時間,getblocktemplate 協議的直接採用開始停滯。不過,應該指出的是,Stratum 的服務端在背後也使用了 getblocktemplate 協議,只是圍繞它添加了許多的優化。
不幸的是,使用 getblocktemplate 協議有一個重大的缺點,就是礦工會失去構造自己的區塊模板(也即在自己挖掘的區塊中選擇包含哪些交易)的能力。雖然這完全不影響礦工的經濟激勵,因為礦工總是被激勵在自己的區塊中打包手續費最高的交易,但它確實帶來了一個漏洞 —— 礦池運營者可能被劫持。這就是為什麼我們要在 Stratum V2 中重新引入礦工構造自己的區塊的能力。
Slush 在 2012 年發佈了 Stratum 協議,只需簡單瀏覽帖子,你會發現很多這樣的批評。
最後,還有安全性問題。正如 Ruben Recabarren 在自己的論文《Stratum:比特幣礦池協議及其加強》中指出的,Stratum V1 無法抵禦可能的中間人攻擊。雖然沒有 “哈希率劫持” 的顯著案例曝出,在不為人知的地方,依然有可能發生,因此,比特幣挖礦行業遷移到更加安全的協議就變得更加重要。防範哈希率劫持是 Stratum V2 的另一個關鍵特性。Stratum V1 在自己的實現中做了出色的工作,但比特幣網絡還在持續增長,新的開發也一直在社區中湧現。
Matt Corallo 的 BetterHash 提議
在比特幣歷史上的絕大部分時間,礦池運營者都控制著在他們挖掘的區塊中要包含哪些交易。礦池給礦工提供任務(分發任務),而礦工提交符合要求的工作量證明。這讓礦工在一定程度上依賴於礦池的誠實和公平。
為了解決礦池中心化問題,Chaincode Labs 的工程師(現在供職於 Spiral)Matt Corallo 提出了一種新的挖礦協議。Matt 在 2018 年提出 Betterhash,作為更新挖礦協議的嘗試。
- Matt Corallo 因為 Stratum V2 和 BetterHash 而知名。他也曾在 Blockstream、Chaincode Labs 和 Square 擔任開發工作。 -
BetterHash 挖礦協議取代了 getblocktemplate 協議,併為礦工帶來了一系列的品質改進。最大的改進之一是,礦工可以構造自己的區塊模板、礦池可以採用這樣的模板來分發任務。
BetterHash 的初衷是,通過讓礦工自己挑選交易、而不是隻能接受來自礦池的區塊模板,將權力還給礦工。通過提醒礦工,礦池可能會在不經濟的區塊構造中審查交易,這提供流去中心化。
但是,BetterHash 有一些故障,使得礦池很難實現它,所以最終也沒有邁過規範階段。
對比挖礦協議:Stratum V1、BetterHash、Stratum V2
Stratum V2 是 BetterHash 和 Stratum V1 的改進版,主要在效率、安全性和礦工自主性上有所改進。它減少了帶寬用量,加速了挖礦溝通,並引入了更健壯的安全性來防範中間人攻擊。此外,它給了礦工更大的交易挑選控制權,這是在 Stratum V1 有限、在 BetterHash 中得到一定程度提升的東西。這些強化讓 Stratum V2 成為了更優化、更安全也更去中心化的挖礦解決方案
Stratum V2 | Stratum V1 | BetterHash | |
---|---|---|---|
礦工低開銷 | :white_check_mark: | :white_check_mark: | |
礦池低開銷 | :white_check_mark: | ||
協議容易更新 | :white_check_mark: | :white_check_mark: | |
容易延展 | :white_check_mark: | :white_check_mark: | |
哈希率劫持防範 | :white_check_mark: | :white_check_mark: | |
自定義任務選擇 | :white_check_mark: | :white_check_mark: | |
專設任務挑選協議 | :white_check_mark: | ||
帶有固件實現 | :white_check_mark: | :white_check_mark: | |
空塊消除 | :white_check_mark: | ||
瞬時後端切換 | :white_check_mark: |
Stratum V2 :礦池協議的最終勝出者
SV2 有利於礦工、礦池和其他所有人
Stratum V2 由 Braiions 的創始人 Pavel Moravec 和 Jan Čapek 在 2019 年推出,也結合了 Matt Corallo 和其他行業專家的努力。
它既是最初的用於比特幣挖礦的 Stratum 協議的升級版本,也是 BetterHash 的進化。
這套新協議提供了多種好處:它讓挖礦變得更加安全、讓數據可以更高效率地收發,還降低了對高負載的挖礦設備的需要。此外,Stratum V2 還給了礦工選擇要在自己挖掘的區塊中打包哪些交易的權力,幫助分散決策權和比特幣挖礦的去中心化。
得益於這些升級,Stratum V2 簡化了挖礦作業,提高了安全性,並鼓勵一個更加分散、去中心化的挖礦業態。
SV2 開源參考實現
一些礦池,比如 Braiins Pool,正在積極使用這一協議來優化挖礦體驗,並且,Stratum V2 的開發在近年也一直在繼續。在 2024 年 3 月,一群開發者發佈了正式的 SRI(Stratum V2 參考實現)v1.0 版本,這推動了協議上的開發工作,並增加了額外的特性,使之超越了 Braiins 的創始人和 Matt Corallo 所制定的規範。
我們相信,SV2 擁有光明的未來,並且有潛能引領挖礦行業的革新。敬請期待下一篇博客!
**貢獻和實現 Stratum V2 **
SV2 運動日益壯大,幾家知名的公司也加入了。詳情請看這個網頁:https://stratumprotocol.org/
(完)