By clicking “Accept”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.
联系我们
抱歉,此页面尚未翻译成中文
矿池挖矿协议

阶层Stratum V1协议

Stratum V1 Mining Protocol

a
b
c

关键点

  • 于2012年推出,解决了比特币挖矿行业的一些成长之痛

  • 基于getwork协议之上演变而来

  • 帮助比特币矿池以更高的算力服务更多的用户

  • First implemented on Bitcoin.cz Mining Pool which is now called Braiins Pool

在2012年,Marek "Slush" Palatinus在getwork协议的基础上推出了阶层Stratum协议。阶层Stratum V1协议解决了比特币挖矿刚流行时遇到的一些成长之痛

Getwork协议的局限

矿工在比特币挖矿早期,与比特币协议本身的连接和交互需要全节点的运行。 

为规范矿工和比特币协议之间的通信,开源的"getwork"协议成为了矿工开始单机挖矿的快速简便快速简便解决方案。getwork协议使用HTTP作为与比特币协议的连接方法。但是,HTTP通常用于网页,对多节点协同开采比特币来说,它并不理想。因此,随着挖矿越来越流行,也显现出了其许多效率低下的问题。 

到了2012年,随着挖矿行业的巨变,网络算力呈指数倍增长,getwork协议的低效成了非常棘手的问题。它要求矿工要有相当大的网络带宽,而要服务器(即矿池)方面也有能满足所有矿工的带宽增长并不现实。 

在这点上,getwork协议很明显不是一个可持续的解决方案。 

推广矿池挖矿 

大约在2010年底,随着越来越多矿工加入网络,挖矿也因此发生了巨变。在10分钟的区块时间里,有数千矿工在竞争区块,许多矿工的收入也不再稳定,无法继续挖矿。 

解决方案是让矿工把他们的算力集中起来,这样出块更稳定。矿工因此也能定期收到一部分的区块奖励,从而能稳定现金流,平滑收益。 

但是,随着矿池挖矿的普及,getwork协议的局限性日渐明显。因此,Slush Pool矿池的创始人Marek"Slush"Palatinus在2010年开发了专用于矿工和矿池之间通信的阶层协议(Stratum V1)。 

阶层Stratum V1协议的主要改进

在过去的7-8年,阶层Stratum V1协议一直是矿池挖矿的标准协议,在此期间,比特币全网算力也从约20 TH/s增加到130 EH/s。

毋庸置疑,它取得了巨大的成功。但归根结底,阶层Stratum V1协议为什么能得到广泛采用和长期使用,是得益于它实现了2个主要的可扩展性改进:

长轮询(Long-Polling)

参考信息:https://zh.braiins.com/stratum-v1/docs  

在getwork协议下,矿工会不断向比特币守护进程deamon(bitcoind)发送挖矿工作请求;矿池挖矿兴起后,矿池服务器的作用是向矿工发送工作,这个机制就反而让挖矿变得麻烦。矿工们面临着两个选择,要么是用短的轮询间隔,最大限度地减少过期率(Stale ratio);要么与矿池服务器建立单独连接进行长轮询,最大限度地减少网络负荷。

长轮询则是更好的解决方案,但它在矿池后端的负载平衡方面又产生了一些问题。阶层Stratum V1协议建立在矿工无需通过和矿池的HTTP连接从守护进程请求信息之上,矿池可以在任何时候驱动负载并向矿工广播信息,无须虚耗HTTP或走长轮询的其他变通解决方案。这对矿工和矿池运营商来说都是一个很大的进步。 

额外随机数轮询(Extranonce Rolling) 

在阶层Stratum V1协议引入额外随机数轮询前,矿工要寻找区块的解,只能修改区块头中的两个字段(nonce和ntime)并对这两个字段进行哈希处理。一旦矿工用尽新的可能组合,他们就需要向矿池(或直接从bitcoind)提出更多工作的请求,效率相当低下。 

阶层Stratum V1协议通过引入额外随机数轮询字段,扩大了矿工分配到工作时能迭代的独特哈希组合。通过将编辑区块头的任务由矿池交给矿工,矿池挖矿的整体效率得到了大大提高。

其他好处

阶层Stratum V1协议的成功,除上述重大技术改进以外, 最终还归功于它发送的JSON负载人类可读,并已被比特币挖矿客户端广泛支持。JSON具有一定的虚耗(为此我们在阶层Stratum V2协议中改用二进制,大大降低了虚耗),但在当时它很适合行业需求。 

对阶层Stratum V1协议的批评声 

阶层Stratum V1协议曾被批评其背后的开发有不可告人的秘密,因为没有相应的比特币改进提案(BIP)描述它的应用实施。但是,也有人认为阶层协议与比特币的协议和应用无关——它只是一种关于矿池挖矿的自定义拓展,没必要有正式的比特币改进提案。

另一个引起争议的原因是,在开发阶层Stratum V1协议的同时,比特币社群花了几个月时间开发名为"getblocktemplate"(BIP22)的开源协议,该协议本该取代"getwork"协议。但随着阶层Stratum V1协议的几乎同时发布,getblocktemplate协议的直接采用受到影响。不过,需要指明的是,阶层协议的服务器其实也使用了getblocktemplate协议的机制,并在其之上做了不少改进。 

很不巧,使用getblocktemplate解决方案的一个重要缺点则是,矿工会失去自行构建区块模板(即选择在他们开采的区块中打包哪些交易)的能力。虽然这对挖矿的经济动机毫无影响,矿工无论如何都会优先打包手续费高的交易,但如果矿池运营商受到攻击,这将是一个漏洞。这就是我们为何要在阶层Stratum V2协议中重新引入矿工自行构建区块模板的能力。

最后,关于安全问题。正如Ruben Recabarren在他的论文《Hardening Stratum, the Bitcoin Pool Mining Protocol》(巩固“阶层”,这一比特币矿池协议)中指出,阶层Stratum V1协议容易受到可能的中间人攻击。虽然目前还未听闻有大型的"算力劫持"案例,但在暗地里仍有可能发生,这就使得比特币挖矿行业迈向更安全的协议变得更加重要。防范算力劫持则是阶层Stratum V2协议的另一个关键功能。

在阶层Stratum V1协议之上

综上,阶层Stratum V1协议作为全世界矿圈都在用的矿池协议,作出了巨大贡献。虽然如此,它仍有改进的空间,这就是我们(Jan Capek和Pavel Moravec)和Matt Corallo一起推出阶层Stratum V2协议的原因。

"它(V2协议)解决了历史上的技术和安全难题,它的效率一般也要高得多,而且它还能允许一些高级用例,例如工作选择或更得心应手的矿场管理,"首脑-Braiins联合CEO Pavel Moravec向比特币杂志(Bitcoin Magazine)说到。"我们早几年就应该做完它了,真的。"

但是,自2012年老阶层Stratum协议发布以来,矿圈发生了天翻地覆的变化。在今天,只要一台ASIC矿机的算力就能和当年的全网算力(约20 TH/s)比肩。比特币挖矿行业要想持续发展,阶层Stratum V2协议则是解决方案。

了解阶层STRATUM V2协议