就在一年多以前,Braiins OS(slush pool)啟動了第一個用于比特幣挖礦的開源軟件項目:Braiins OS miner。隨著2017年隱蔽運行的AsicBoost慘
就在一年多以前,Braiins OS(slush pool)啟動了第一個用于比特幣挖礦的開源軟件項目:Braiins OS miner。隨著2017年隱蔽運行的AsicBoost慘敗,針對ASIC礦機的開源操作系統(tǒng)的必要性變得顯而易見了,但無論發(fā)生什么事件,這一點都將很重要。由于只有極少數(shù)競爭性硬件制造商為比特幣構(gòu)建ASIC專用礦機,因此提供透明的替代工廠固件的方法可能會分散整個挖礦行業(yè)中最集中的部分。
但是,Braiins OS只是整個比特幣挖礦堆棧的一個組件。當我們開始這個項目時,我們的更大抱負是使整個堆棧開源,標準化,高效和安全。這意味著要處理堆棧的其他組件:CGminer和分層協(xié)議。我們將在以后的文章中分享有關(guān)后者的最新信息,但現(xiàn)在,我們將專注于我們開發(fā)的替代CGminer的替代品,我們將其稱為bOSminer。
CGminer的背景
CGminer最初是任何人都可以運行的開源CPU礦工程序。隨著2010年底GPU挖礦的引入,我們開始看到礦機的某些開源部分正在消失。每個GPU變體都有正在開發(fā)的GPU內(nèi)核的特殊部分,并且只有其中一部分是立即開源的。整個社區(qū)都無法使用任何可用的東西。
FPGA是數(shù)字貨幣挖礦硬件的下一個發(fā)展時期,但就此CGminer組件而言,變化不大。有些人將他們的代碼開源,而其他人則沒有。
然后,在2012年末,ASIC進入市場,并迅速開始主導(dǎo)SHA-256算法。ASIC是嵌入式設(shè)備,這意味著它們包含一個特殊的(而不是通用的)目的計算系統(tǒng)。典型的ASIC體系結(jié)構(gòu)包括以下內(nèi)容:
通常,您有一個控制板,上面帶有一個FPGA和一個運行某種形式的Linux的CPU,然后還有一些帶有挖礦芯片的哈希算力版,這些芯片可以執(zhí)行實際的比特幣挖礦工作。控制板在此體系結(jié)構(gòu)中的作用是連續(xù)向芯片提供適量的新挖礦工作。最初,CGminer用于此目的。但是,隨著時間的流逝,制造商將邏輯從CGminer轉(zhuǎn)移到控制板上的FPGA。
最有名的例子就是我們上面提到的:Antminer S9發(fā)生的AsicBoost事件,其中FPGA位于CPU和哈希算力板之間,暗中啟用了AsicBoost功能。制造商實質(zhì)上禁止使用AsicBoost,因為控制器中的代碼是有意的錯誤,并且沒有記錄在案??梢允褂靡恍〤Gminer源代碼,但是它只會產(chǎn)生不好的解決方案,幾乎沒有用。
目前,我們需要一個FPGA和一個微控制器來驅(qū)動哈希算力板。CGminer實質(zhì)上已成為FPGA的雜亂無章且嚴格受限的前端。實際上,它甚至達到了創(chuàng)建它的工程師Con Kolivas都必須停止支持它的地步。
同時,由于ASIC架構(gòu)如此之大,CGminer本身還不足以運行整個系統(tǒng),因為它運行的是某些Linux。因此,您需要驅(qū)動程序,引導(dǎo)加載程序等才能實際運行它-它們通常也是封閉源代碼。即使制造商說他們遵守通用公共許可證(GPL),還是要由個人來嘗試收集所有軟件,然后以某種方式將它們修補在一起以運行完整的系統(tǒng)映像。簡而言之,那就是一團糟。
如今的挖礦行業(yè)缺乏通用開源的礦機操作系統(tǒng)
如今,整個比特幣生態(tài)系統(tǒng)中開發(fā)了許多令人興奮的開源項目,但不幸的是挖礦行業(yè)的核心部分一直落后??紤]到類似Antbleed礦機后門和隱蔽啟動AsicBoost之類的事件,我們認為現(xiàn)在是該采取行動的時候了。顯然,這很復(fù)雜,因為存在各種類型的挖掘設(shè)備,而且不同的制造商通常不會發(fā)布對CGminer代碼庫的修改(違反GPL)。
因此,我們開始為挖礦設(shè)備開發(fā)Braiins固件。與此相關(guān)的更有趣的事情之一是,我們決定用Rust編程語言編寫軟件,這實際上是一個具有挑戰(zhàn)性但非常有益于比特幣挖礦行業(yè)的決定。
為什么我們選擇Rust
即便擁有豐富的嵌入式開發(fā)經(jīng)驗,我們知道無論選擇哪種語言,這都是一個嚴峻的挑戰(zhàn)。話雖如此,Rust是一種現(xiàn)代編程語言,具有一些特性,使其非常適合此類應(yīng)用程序:
1)記憶安全
編譯時,Rust會執(zhí)行大部分安全檢查和內(nèi)存管理決策。因此,在訪問內(nèi)存時,相對于非內(nèi)存安全語言,可以更好地保護它免受軟件錯誤和其他安全漏洞的侵害。
2)適用于嵌入式設(shè)備
沒有其他著名的編程語言可以編譯和強類型化,也沒有運行時。Rust沒有運行時,沒有虛擬機來處理內(nèi)存管理-所有內(nèi)容都是靜態(tài)編譯的。而且比C ++輕巧得多。所有這些使它非常適合于ASIC等嵌入式設(shè)備。
3)代碼可重用性
與大多數(shù)其他語言不同,使用Rust,我們知道,如果為設(shè)備編譯了某些內(nèi)容,則很有可能在服務(wù)器端重用相同的代碼組件。太好了,因為它允許使用一次為主機和嵌入式設(shè)備共享代碼庫,從而簡化了測試和生產(chǎn)。
4)包裝系統(tǒng)
Rust非常獨特,因為它允許您同時使用同一代碼包的不同版本。換句話說,我們可以在編譯映像中運行同一庫的兩個版本,例如,如果我們使用C或C ++,這實際上是不可能的。
5)內(nèi)置測試線束
一般來說,開發(fā)人員不喜歡編寫測試。您會在CGminer上看到這一點,那里沒有制造商提供測試用例。Rust附帶了一個不錯的測試工具,因此您可以簡單地運行“測試”并檢查代碼中是否沒有回歸。
6)美好的未來
對于Microsoft,Amazon和其他許多公司正在大力投資Rust的進一步發(fā)展的事實,可以說一句話。選擇具有光明前景的技術(shù)是有意義的。另外,這意味著應(yīng)該有更多可重用的代碼,這可以為我們節(jié)省大量的未來開發(fā)時間。
從CGminer遷移到bOSminer和Stratum V2的時間表
我們一直在并行開發(fā)比特幣挖礦堆棧中的兩個重要部分,即bOSminer和Stratum V2。這樣做的一個很好的附帶影響是,我們已經(jīng)能夠在發(fā)布給開發(fā)人員測試的bOSminer原型中包含Stratum V2模擬器。接下來的議程是添加一個V2代理(用Rust編寫),以便我們可以模擬各種可能的部署方案。
同時,我們將在接下來的幾個月中收集開發(fā)人員的反饋意見,并對bOSminer進行改進,以便于12月發(fā)布Alpha版本,最終在2020年3月左右正式發(fā)布。您可以在下面的時間表中查看更多詳細信息。
正式發(fā)布的bOSminer一旦發(fā)布,將使我們將來增加對不同ASIC機器(例如最新的Whatsminer M20S和Antminer S17)的支持變得更加容易??紤]到這一點,我們目前正在盡最大的努力和資源來使bOSminer在上述時間范圍內(nèi)成為現(xiàn)實。
如果您想了解比特挖礦堆棧中的最新動態(tài),請務(wù)必在Medium上關(guān)注我們。我們還通過@slush_pool和@braiins_systems在Twitter上活躍。(rui)