有了第二代 Stratum 協議,礦池運營者(或者是自己選擇交易的礦工)可根據所有未確認的交易,對將包括哪些交易進行有根據的猜測。在最初的幾秒鐘內,他們可開始挖他們認爲可能是有效的下一區塊的內容。尤其是當區塊補貼成爲區塊獎勵的一小部分,並最終被交易費用取代時,這種效率上的提升可能會使礦工獲益。

原文標題:《比特幣挖礦或迎 3.0 時代,Stratum V2 將權力歸還給礦工》(With Stratum V2, Braiins Plans Big Overhaul in Pooled Bitcoin Mining)
作者:Aaron van Wirdum
翻譯:灑脫喜

爲了獲得比 solo 挖礦更穩定和可靠的收入流,今天大多數比特幣礦工都選擇通過礦池挖礦。而這是通過開源「Stratum」挖礦協議實現的,目前幾乎所有的礦池都在使用這一協議,而其正是由 SlushPool 在七年前公佈的。

現在,Slush Pool 背後的 Braiins 公司,已公佈了第二代 Stratum 協議(Stratum V2)計劃。這家總部位於布拉格的礦業公司在兩年前就開始了這項研究工作,其認爲第二代協議在多個關鍵方面改進了第一代 Stratum 協議:

「它解決了歷史上的技術和安全問題,總體上效率會更高,並且允許一些高級的用例,如工作選擇或更容易的礦場管理,」 Brains 聯合首席執行官 Pavel Moravec 告訴 Bitcoin Magazine 說,「這應該在幾年前就應該完成了,真的。」

第一代 Stratum 挖礦協議的原理

作爲一個簡短的補充,我們先提下使用 Stratum V1 進行礦池挖礦的原理。

首先,礦池用戶(有時也簡稱爲礦工)將他們的挖礦計算機(通常是帶有 ASIC 芯片的專用機器)連接至礦池,或者更具體地說,他們將自己的計算機連接到由礦池運營者操作的計算機上。

然後,挖礦計算機從礦池運營者處請求一個部分「區塊模版」。此部分區塊模版本質上是一個不完整的比特幣區塊。

重要的是,此區塊中的交易是由礦池運營者選擇的。實際上,交易本身並沒有發送給礦工們,取而代之的,則是所有交易的默克爾路徑(一系列哈希)。

除此之外,礦池運營者還可選擇包含哪個「版本位」,這可能會與激活軟分叉協議升級有關。

然後,礦工開始對部分區塊模版進行哈希操作,希望其中一個哈希將產生有效的區塊頭,以滿足網絡的工作量證明要求。如果礦工哈希了一個有效的區塊頭,它將返回給礦池運營者,後者將其添加到區塊的其餘部分,並將其廣播到比特幣網絡。然後,礦池運營者會根據池中礦工投入的工作量佔比,分配各自獲得的區塊獎勵。(這是通過讓礦工發送幾乎有效的區塊頭來衡量的,這些區塊頭能夠證明礦工執行了工作)

因此,採用第一代的 Stratum 協議,會使礦池運營者擁有比礦工更多的權力,他們不僅負責分配獎勵,還可決定區塊中包含哪些交易,以及包含哪些版本位。如果他們願意,一個礦池運營者可決定審查某些交易,或者阻止某些協議升級。

第二代 Stratum 協議靈感來自 Betterhash

去年,Chaincode 實驗室工程師和 Bitcoin Core 開發者 Matt Corallo 提出了一項稱爲 BetterHash 的替代挖礦協議,而第二代 Stratum 協議,正是受到了 Betterhash 的啓發。相比讓礦池運營者向池中礦工發送(部分)區塊模版,通過第二代 Stratum 協議,礦工可選擇將區塊模板發送給礦池運營者。這個「工作選擇」允許礦工自行選擇交易及區塊版本。

爲了做到這一點,(獲得 Matt Corallo 幫助的) Braiins 公司,必須解決一些 BetterHash 所存在的實際問題。其中最重要的是,礦工有可能在一個無效的區塊模版上進行挖礦(例如,因爲它包含了一筆無效的交易)。即使礦工能夠找到有效的哈希,區塊本身仍然是無效的,而同一礦工仍可從其他礦工找到的有效區塊中獲益。

關於這個問題,其中一個解決方案是,礦池運營者首先檢查礦工的區塊模版是否有效,然後再將其放入池中。但在一個大型的公共礦池中,這一步驟也會遇到技術難題。

「想象一下,當比特幣網絡上發現一個新的數據塊,並且礦池中的每個礦工都想開始使用一個新的數據塊模板時,會發生什麼?」 Moravec 解釋說,「他們當中的每一個,都可以有稍微不同的 mempool (未確認交易)版本,並且可能有不同的交易選擇規則…他們都想立即開始挖礦。讓他們所有人都將自己的區塊模版發送至礦池以待批准,基本上就是在網絡發現區塊後的第一秒,就對服務發起拒絕服務攻擊。這一機制需要擴展,以便在實踐中發揮作用。」

Braiins 通過讓礦池運營者異步檢查新區塊模版的有效性來解決這一問題。礦工一提交區塊模版,就可立即開始哈希操作。同時,礦池運營者開始檢查所有區塊模版。

Moravec 補充道:

如果區塊模版後來被發現無效,那麼對應礦工的獎勵可相應地調整。因此,該礦工就有動力在適當的區塊上工作,並及時提供所有數據。而他可毫無延遲地繼續在他的模版上工作。

安全性、效率和靈活性的提升

除了交易選擇的變化之外,第二代 Stratum 協議還將包括更多的改進,而其中一些改進,對於很多礦工而言可能也是非常重要的。

例如,在第一代 Stratum 協議中,並沒有加密數據驗證來確保礦工計算機與礦池運營者計算機真正地相連,而這爲中間人攻擊打開了大門:比如,攻擊者可攔截礦工與礦池運營者之間的通信,並欺騙礦工在攻擊者提供的區塊上工作。攻擊者可將此區塊的區塊獎勵支付給自己的一個地址,從而有效地「劫持」礦工的算力。

而第二代 Stratum 協議,通過讓礦池運營者對部分區塊模版進行加密簽名來抵禦這種攻擊。如果礦工知道礦池運營者的公鑰,則可檢查部分區塊模版是否帶有有效的簽名,由此確定這些區塊模版是否確實由礦池運營者提供。

第二點,第二代 Stratum 協議的效率也會較第一代要更高。原因在於,第一代 Stratum 協議通信通過人類可讀文本(JSON)進行,而第二代 Stratum 協議通信則以二進制(計算機可讀代碼)進行。Moravec 表示,再加上協議層本身的一些數據消除,這將使礦池運營者之間共享的數據減少 1/2-2/3,從而使通信更快、更便宜。

第三,第二代 Stratum 協議有一個內置的「複用」(multiplexing)機制。這意味着礦工可在同一連接上有獨立的通信通道,允許他們的機器共享有關溫度、芯片電壓或電源如何工作的數據。礦池可基於此信息提供額外的服務,或者礦工可將其與其他服務或服務器共享。

第四,第二代 Stratum 協議還允許礦池「猜測」下一個區塊是什麼。每當找到一個新區塊時,礦池都需要一段時間來確定該區塊中包含了哪些交易,然後哪些交易不能包含在下一個區塊中。今天,很多礦池在挖下一個區塊時,會等待幾秒的時間,以確保沒有雙花交易被納入區塊(否則會導致區塊無效)。

而有了第二代 Stratum 協議,礦池運營者(或者是自己選擇交易的礦工)可根據所有未確認的交易,對將包括哪些交易進行有根據的猜測。在最初的幾秒鐘內,他們可開始挖他們認爲可能是有效的下一區塊的內容。尤其是當區塊補貼成爲區塊獎勵的一小部分,並最終被交易費用取代時,這種效率上的提升可能會使礦工獲益。

有待改進的地方

最後, Braiins 團隊表示,目前第二代 Stratum 協議還有一些未公佈改進,雖然該公司有一個正在運行的原型,但協議規範還沒有被最終確定。

「我們現在希望收集大家的反饋意見,先在內部完成提案,然後發佈一個比特幣改進提議(BIP)。我想這會引起另一輪討論…同時,我們會把第二代 Stratum 協議部署到 SlushPool,並將其作爲測試版本的 Brains OS 的一部分發布,我們正在儘可能快地實施它,以便讓每個人都能夠參與,」Moravec 表示。

來源鏈接:bitcoinmagazine.com