Braiins正在準(zhǔn)備發(fā)布第二代Stratum挖礦協(xié)議Stratum V2
與獨立挖礦相比,為了獲得更可靠的收入來源,今天大多數(shù)比特幣礦工通過選擇接入礦池進(jìn)行比特幣挖礦。而幾乎所有采礦池使用的開源“Stratum”比特幣挖礦協(xié)議,該礦池協(xié)議由Slush Pool設(shè)計,并在近七年前首次公布。
現(xiàn)在,Slush Pool背后的公司Braiins準(zhǔn)備發(fā)布Stratum V2:第二代Stratum挖礦協(xié)議。這家位于布拉格的礦業(yè)公司兩年前開始研究它,認(rèn)為它已經(jīng)在幾個關(guān)鍵方面改進(jìn)了第一個Stratum協(xié)議(現(xiàn)在稱為“Stratum V1”),使新版本明顯更好。
“它解決了歷史上的技術(shù)和安全問題,它通常效率更高,它允許一些高級用例,如工作狀態(tài)選擇或更方便的礦池管理,”Braiins聯(lián)合首席執(zhí)行官Pavel Moravec告訴比特幣雜志?!斑@真的應(yīng)該在幾年前就完成’’
傳統(tǒng)的Stratum V1協(xié)議
作為簡要回顧,Stratum V1是起初合并挖礦的工作方式。
首先,一個哈希用戶(礦池的用戶,有時也簡稱為“礦工”)將他們的礦機(jī)(通常是具有ASIC芯片的專用機(jī)器)連接到比特幣礦池。或者,更具體地說,他們將礦機(jī)連接到由礦池操作員操作的計算機(jī)。
然后,比特幣礦機(jī)從礦池池操作員請求部分“區(qū)塊模板”。這個部分區(qū)塊模板本質(zhì)上是一個不完整的比特幣塊,沒有使其具有有效的工作證明。重要的是,此區(qū)塊中的交易由礦池池操作員選擇。交易本身實際上并沒有發(fā)送給哈希運(yùn)算;事實上,所有交易都是只有Merkle路徑 生成了一系列哈希值。
最重要的是,礦池操作員可以選擇包含哪個“版本位”。這可能與激活軟叉協(xié)議升級有關(guān)。
然后,哈希計算者在部分區(qū)塊模板上開始散列計算,希望其中一個散列將產(chǎn)生有效的區(qū)塊頭,滿足比特幣網(wǎng)絡(luò)的工作量證明要求。如果哈希計算者找到了有效的區(qū)塊頭,則將其返回給礦池操作員,后者將其添加到塊的剩余部分并將其廣播到比特幣網(wǎng)絡(luò)。然后,礦池運(yùn)營商根據(jù)每個礦機(jī)的工作量,在池中的所有參與者之間分配塊獎勵。(這是通過讓哈希運(yùn)算者也發(fā)送“幾乎有效”的區(qū)塊頭來證明已經(jīng)執(zhí)行了的哈希工作。)
因此,Stratum V1為礦池操作員提供了相對強(qiáng)大的地位。他們不僅負(fù)責(zé)分發(fā)獎勵,還決定哪些交易包含在一個區(qū)塊中,以及包含哪個版本位。如果他們想要,礦池運(yùn)營商可以決定審查某些交易,或阻止某些協(xié)議升級。
Stratum V2協(xié)議的靈感來自BetterHash
靈感來自BetterHash,去年由Chaincode Labs工程師和比特幣核心貢獻(xiàn)者M(jìn)att Corallo提出的提案,Stratum V2可選擇將Stratum V1協(xié)議置于其區(qū)塊頭上。而不是讓礦池操作員向嵌套器發(fā)送(部分)區(qū)塊模板,而是可以選擇將區(qū)塊模板發(fā)送到礦池操作員。這種“工作選擇”允許哈希運(yùn)算者自己選擇交易并選擇區(qū)塊版本。
為了完成這項工作,Braiins(在Corallo的幫助下)必須解決一些BetterHash更實際的問題。最重要的是,礦工可能會在無效的區(qū)塊模板上進(jìn)行挖掘(例如,因為它包含無效的事務(wù))。即使礦工能夠找到有效的散列值,區(qū)塊本身仍然是無效的,因此,沒有幫助池 - 而相同的礦工仍將受益于其他礦工發(fā)現(xiàn)的有效區(qū)塊。
該問題的一個解決方案是礦池操作員在讓他進(jìn)入礦池之前首先檢查哈希區(qū)塊模板是否有效。但是在一個大型的公共池中,這一步也會遇到技術(shù)困難。
“想象一下,當(dāng)在比特幣網(wǎng)絡(luò)上找到一個新塊時,會發(fā)生什么,并且池中的每個礦工都想開始處理新的區(qū)塊模板,”Moravec解釋道。 “他們每個人都可以有一個稍微不同的內(nèi)存池版本[未經(jīng)證實的交易],并且可能有不同的交易選擇規(guī)則。..。..他們都希望立即開始挖礦。讓他們都將他們的區(qū)塊模板發(fā)送到礦池中以供批準(zhǔn),這基本上是在網(wǎng)絡(luò)爆塊之后的第第一秒DDOS服務(wù)。該機(jī)制需要擴(kuò)展才能在實踐中發(fā)揮作用?!?/p>
Braiins通過讓礦池操作員異步檢查新區(qū)塊模板的有效性來解決了這個問題。一旦哈希提交了一個區(qū)塊模板,他就可以立即開始哈希模板。在此期間,礦池操作員開始檢查所有區(qū)塊模板。
Moravec補(bǔ)充道,“如果后來發(fā)現(xiàn)阻止區(qū)塊模板無效,則可以相應(yīng)調(diào)整挖礦者的獎勵。因此,他有動力研究適當(dāng)?shù)膮^(qū)塊并及時提供所有數(shù)據(jù)。然而,他可以毫不拖延地繼續(xù)處理他的模板?!?/p>
新挖礦協(xié)議的安全性,效率和靈活性
除了交易選擇的變化,Stratum V2還將包含更多改進(jìn),其中一些可能至少對許多礦工來說同樣重要。
在Stratum V1中,沒有加密數(shù)據(jù)驗證,以確保礦機(jī)真正與礦池操作員的計算機(jī)以及池操作員的計算機(jī)單獨連接。這為中間人攻擊打開了大門:例如,攻擊者可以攔截礦機(jī)和礦池操作員之間的通信,并使其在攻擊者提供的區(qū)塊上工作。攻擊者可以將此區(qū)塊支付的塊獎勵發(fā)送到他們自己的地址之一,有效地“劫持”了礦機(jī)的哈希計算能力。
Stratum V2通過讓礦池操作員對部分區(qū)塊模板進(jìn)行加密簽名來對抗此攻擊。如果一個礦工知道挖礦池操作符的公鑰,他們可以檢查部分塊模板是否帶有有效簽名,因此實際上是由礦池操作員提供的。
Stratum V2也比它的前輩更有效。在通過JSON進(jìn)行Stratum V1通信的情況下,Stratum V2通信以二進(jìn)制代碼完成。 Moravec認(rèn)為,結(jié)合一些消除協(xié)議級別數(shù)據(jù)的數(shù)據(jù),這將把礦池操作員之間共享的數(shù)據(jù)減少一半到三分之二,從而使通信更快,更便宜。
此外,Stratum V2具有用于“多路復(fù)用”的內(nèi)置機(jī)制。這意味著礦工可以在同一連接上具有獨立的通信通道,允許其機(jī)器共享關(guān)于溫度,芯片電壓或其電源行為的數(shù)據(jù),例如。挖礦池可以根據(jù)此信息提供額外服務(wù),或者礦機(jī)可以與其他服務(wù)或服務(wù)器共享。
Stratum V2還允許礦池“猜測”下一個塊將是什么。每次找到新塊時,挖礦池需要花費一些時間來確定哪個交易包含在該塊中,因此哪些交易不能包含在下一個塊中。今天,許多礦池開始挖掘空塊:它們在幾秒鐘內(nèi)根本不包括任何交易,以確保它們不包括雙重花費(這會使區(qū)塊無效)。
使用Stratum V2,礦池操作員(或者如果他們是選擇交易的那些,則可以根據(jù)所有未經(jīng)證實的交易,對將包括哪些交易進(jìn)行有根據(jù)的猜測)。在開始的第一秒,他們可以開始挖掘他們認(rèn)為可能是有效的下一個區(qū)塊。特別是當(dāng)每個區(qū)塊交易補(bǔ)貼變成區(qū)塊獎勵的一小部分,當(dāng)最終被費用費用取代時,這種小的效率提升可能會使礦工受益。
未來的改進(jìn)
最后,Braiins團(tuán)隊表示還會有一些尚未公布的改進(jìn)措施。雖然該公司有一個運(yùn)行原型,但協(xié)議規(guī)范尚未最終確定。
“我們現(xiàn)在希望收集人們的反饋意見,以便在內(nèi)部完成提案,然后將發(fā)布比特幣挖礦協(xié)議改進(jìn)提案。我想這將引發(fā)另一輪討論。..。..與此同時,我們將把Stratum V2部署到Slush Pool,并將其作為Braiins OS測試版的一部分發(fā)布,以獲得真實的體驗,“Moravec說。 “我們正在盡快實施它,以便讓所有人盡快參與其中?!?/p>