Braiins OS将专注开发bOSminer 已成为FPGA严格受限的前端

2019-10-03 11:18:13 来源: 彩云比特

就在一年多以前,Braiins OS(slush pool)启动了第一个用于比特币挖矿的开源软件项目:Braiins OS miner。随着2017年隐蔽运行的AsicBoost惨败,针对ASIC矿机的开源操作系统的必要性变得显而易见了,但无论发生什么事件,这一点都将很重要。由于只有极少数竞争性硬件制造商为比特币构建ASIC专用矿机,因此提供透明的替代工厂固件的方法可能会分散整个挖矿行业中最集中的部分。

但是,Braiins OS只是整个比特币挖矿堆栈的一个组件。当我们开始这个项目时,我们的更大抱负是使整个堆栈开源,标准化,高效和安全。这意味着要处理堆栈的其他组件:CGminer和分层协议。我们将在以后的文章中分享有关后者的最新信息,但现在,我们将专注于我们开发的替代CGminer的替代品,我们将其称为bOSminer。

CGminer的背景

CGminer最初是任何人都可以运行的开源CPU矿工程序。随着2010年底GPU挖矿的引入,我们开始看到矿机的某些开源部分正在消失。每个GPU变体都有正在开发的GPU内核的特殊部分,并且只有其中一部分是立即开源的。整个社区都无法使用任何可用的东西。

FPGA是数字货币挖矿硬件的下一个发展时期,但就此CGminer组件而言,变化不大。有些人将他们的代码开源,而其他人则没有。

然后,在2012年末,ASIC进入市场,并迅速开始主导SHA-256算法。ASIC是嵌入式设备,这意味着它们包含一个特殊的(而不是通用的)目的计算系统。典型的ASIC体系结构包括以下内容:

通常,您有一个控制板,上面带有一个FPGA和一个运行某种形式的Linux的CPU,然后还有一些带有挖矿芯片的哈希算力版,这些芯片可以执行实际的比特币挖矿工作。控制板在此体系结构中的作用是连续向芯片提供适量的新挖矿工作。最初,CGminer用于此目的。但是,随着时间的流逝,制造商将逻辑从CGminer转移到控制板上的FPGA。

最有名的例子就是我们上面提到的:Antminer S9发生的AsicBoost事件,其中FPGA位于CPU和哈希算力板之间,暗中启用了AsicBoost功能。制造商实质上禁止使用AsicBoost,因为控制器中的代码是有意的错误,并且没有记录在案。可以使用一些CGminer源代码,但是它只会产生不好的解决方案,几乎没有用。

目前,我们需要一个FPGA和一个微控制器来驱动哈希算力板。CGminer实质上已成为FPGA的杂乱无章且严格受限的前端。实际上,它甚至达到了创建它的工程师Con Kolivas都必须停止支持它的地步。

同时,由于ASIC架构如此之大,CGminer本身还不足以运行整个系统,因为它运行的是某些Linux。因此,您需要驱动程序,引导加载程序等才能实际运行它-它们通常也是封闭源代码。即使制造商说他们遵守通用公共许可证(GPL),还是要由个人来尝试收集所有软件,然后以某种方式将它们修补在一起以运行完整的系统映像。简而言之,那就是一团糟。

如今的挖矿行业缺乏通用开源的矿机操作系统

如今,整个比特币生态系统中开发了许多令人兴奋的开源项目,但不幸的是挖矿行业的核心部分一直落后。考虑到类似Antbleed矿机后门和隐蔽启动AsicBoost之类的事件,我们认为现在是该采取行动的时候了。显然,这很复杂,因为存在各种类型的挖掘设备,而且不同的制造商通常不会发布对CGminer代码库的修改(违反GPL)。

因此,我们开始为挖矿设备开发Braiins固件。与此相关的更有趣的事情之一是,我们决定用Rust编程语言编写软件,这实际上是一个具有挑战性但非常有益于比特币挖矿行业的决定。

为什么我们选择Rust

即便拥有丰富的嵌入式开发经验,我们知道无论选择哪种语言,这都是一个严峻的挑战。话虽如此,Rust是一种现代编程语言,具有一些特性,使其非常适合此类应用程序:

1)记忆安全

编译时,Rust会执行大部分安全检查和内存管理决策。因此,在访问内存时,相对于非内存安全语言,可以更好地保护它免受软件错误和其他安全漏洞的侵害。

2)适用于嵌入式设备

没有其他著名的编程语言可以编译和强类型化,也没有运行时。Rust没有运行时,没有虚拟机来处理内存管理-所有内容都是静态编译的。而且比C ++轻巧得多。所有这些使它非常适合于ASIC等嵌入式设备。

3)代码可重用性

与大多数其他语言不同,使用Rust,我们知道,如果为设备编译了某些内容,则很有可能在服务器端重用相同的代码组件。太好了,因为它允许使用一次为主机和嵌入式设备共享代码库,从而简化了测试和生产。

4)包装系统

Rust非常独特,因为它允许您同时使用同一代码包的不同版本。换句话说,我们可以在编译映像中运行同一库的两个版本,例如,如果我们使用C或C ++,这实际上是不可能的。

5)内置测试线束

一般来说,开发人员不喜欢编写测试。您会在CGminer上看到这一点,那里没有制造商提供测试用例。Rust附带了一个不错的测试工具,因此您可以简单地运行“测试”并检查代码中是否没有回归。

6)美好的未来

对于Microsoft,Amazon和其他许多公司正在大力投资Rust的进一步发展的事实,可以说一句话。选择具有光明前景的技术是有意义的。另外,这意味着应该有更多可重用的代码,这可以为我们节省大量的未来开发时间。

从CGminer迁移到bOSminer和Stratum V2的时间表

我们一直在并行开发比特币挖矿堆栈中的两个重要部分,即bOSminer和Stratum V2。这样做的一个很好的附带影响是,我们已经能够在发布给开发人员测试的bOSminer原型中包含Stratum V2模拟器。接下来的议程是添加一个V2代理(用Rust编写),以便我们可以模拟各种可能的部署方案。

同时,我们将在接下来的几个月中收集开发人员的反馈意见,并对bOSminer进行改进,以便于12月发布Alpha版本,最终在2020年3月左右正式发布。您可以在下面的时间表中查看更多详细信息。

正式发布的bOSminer一旦发布,将使我们将来增加对不同ASIC机器(例如最新的Whatsminer M20S和Antminer S17)的支持变得更加容易。考虑到这一点,我们目前正在尽最大的努力和资源来使bOSminer在上述时间范围内成为现实。

如果您想了解比特挖矿堆栈中的最新动态,请务必在Medium上关注我们。我们还通过@slush_pool和@braiins_systems在Twitter上活跃。(rui)

每日热点