导航:首页 > 矿池算力 > stratum矿池通讯协议

stratum矿池通讯协议

发布时间:2025-10-19 04:36:14

1. 计算机stratum是什么意思

stratum协议是目前最常用的矿机矿池之间的TCP通讯协议。先简要说明挖矿的网络架构。

2. 挖矿协议stratum

Stratum 协议于2012年底开发,专为扩展支持矿池挖矿而设计,取代了过时的getwork协议。其最初在Slush's pool's网站公布,随后BTCGuild提供了备忘单形式的文档。

在Stratum挖矿过程中,矿机使用subscribe方法连接矿池。连接后,矿机记录矿池返回的数据,包括用于设置难度值、发送任务、Extranonce1和Extranonce2等信息。Extranonce1和Extranonce2用于增加搜索空间,是挖矿的关键元素。

矿机接着使用authorize方法向矿池授权,注册账号并添加矿工,矿池允许每个账号添加任意数量的矿工,并分配钱包地址用于收益分配。某些矿池如F2Pool允许直接使用钱包地址挖矿,此时授权时不需注册账号。

矿池通过notify方法分配任务给矿机。任务包括任务号ID、前一个区块的HASH值、coinbase、merkle_branch、区块版本号、当前难度、当前时间戳、以及一个清除工作标志。有了这些信息和之前的Extranonce1和Extranonce2_size,矿机就能开始挖矿。

矿机开始挖矿,构造coinbase信息,将Extranonce2与coinbase合并。构建merkleroot,利用coinbase和merkle_branch进行哈希运算得到最终结果。之后填充区块头的剩余字段,进行挖矿。矿机使用submit方法向矿池提交工作量,矿池验证难度和全网难度。

矿池使用set_difficulty方法调整矿机的难度值,以适应矿工的效率。难度值通过特定公式计算得出,表示任务难度相对于比特币难度单位的倍数。如果矿机在规定时间内未提交结果,矿池将重新发送任务,连续三次未提交任务后认为矿机断开连接,需要重新连接。

3. 轻松矿工能加密吗

可以。
第一步,点击矿池管理,第二步,滑条拉到最下面,点击添加,第三步,矿池名称可以随意填写,矿池地址请输入支持SSL协议的地址+stratum+ssl://,第四步,点击矿池选择我们刚刚添加的SSL加密线路。
到这里轻松矿工NBMiner内核开启SSL加密模式就好啦,然后点击挖矿就可以开始了。

4. 鲸准研究院丨矿池行业分析报告

矿池的行业现状与痛点:

矿池行业背景:挖矿有两种方式,Solo挖矿与矿池挖矿。矿池模式降低了矿工的技术门槛,通过聚集算力实现共享与协作挖矿。然而,Solo挖矿存在硬盘和带宽需求大、挖矿成功概率极低的问题。矿池的出现有效解决了这些问题,极大降低了门槛,使矿工只需提供算力即可参与挖矿,而无需关心复杂的挖矿技术细节。

市场格局:近三个月,矿池市场份额前六名占据总份额的79.2%,分别是BTC.com(25.5%)、蚂蚁矿池(14.5%)、SlushPool(11.0%)、ViaBTC(10.0%)、BTC.TOP(9.2%)与F2Pool(9.0%)。前六名中,五家来自中国,其中BTC.com、蚂蚁矿池、ViaBTC与比特大陆有直接关系。除这六家外,排名前十的矿池中仅有两家来自国外。

行业痛点:矿池面临DDoS攻击风险、资金安全问题、传播网络建设与优化、网络稳定性保障、数据结构复杂性管理以及确保充足的算力支持。

矿池经营模式介绍:

矿池协议与角色:矿池通过专用协议协调矿工,矿工通过账号连接矿池服务器,提供算力参与挖矿。常见协议包括Stratum与getBlockTemplate。矿池角色包括矿工(按贡献份额获得奖励)、矿池管理员(收取手续费)。

准入条件与奖励分配:矿池对所有矿工开放,奖励由整个矿池共享。矿池设置难度阈值,达标矿工可分享奖励。奖励分配方式多样,涉及固定结算(如PPS、PPS+)与滞后收益(如PPLNS)。

矿池分类:主要分为托管矿池与P2P矿池。托管矿池由公司或个人经营,收取管理费。P2P矿池则通过去中心化节点实现挖矿协作。

收益结算模式:矿池采用多种结算模式,包括PPS、PPLNS、PPS+、SOLO模式等,以适应不同矿工的收益需求。

领军企业一览:国际排名前六的矿池中,三家与比特大陆有直接关系,分别为BTC.COM、AntPool与ViaBTC。比特大陆系矿池凭借矿机价格优惠与快速获取优势,非比特大陆系矿池则通过差异化服务吸引用户。

矿池的未来展望:行业内部竞争加剧,矿池市场趋向集中化,小矿池面临退出。矿池生态建设需关注纵向深耕与横向钱包生态发展。未来,矿池可能转向采用PoS等共识机制,同时面临行业内部与外部竞争的双重压力。

5. 以太坊stratum协议原理

参照比特币的 stratum协议 和 NiceHash的stratum协议规范 编写了一版以太坊版本的stratum协议说明.

stratum协议是目前最常用的矿机和矿池之间的TCP通讯协议。

以太坊是一个去中心化的网络架构,通过安装Mist客户端的节点来转发新交易和新区块。而矿机、矿池也同时形成了另一个网络,我们称之为矿工网络。

矿工网络分成矿机、矿池、钱包等几个主要部分,有时矿池软件与钱包安装在一起,可合称为矿池。

矿机与矿池软件之间的通讯协议是 stratum ,而矿池软件与钱包之间的通讯是 bitcoinrpc 接口。

stratum是 JSON 为数据格式.

矿机启动,首先以 mining.subscribe 方法向矿池连接,用来订阅工作。

矿池以 mining.notify 返回订阅号、ExtraNonce1和ExtraNonce2_size。

Client:

Server:

其中:

是 订阅号 ;

080c是 extranonce ,Extranonce可能最大3字节;

矿机以 mining.authorize 方法,用某个帐号和密码登录到矿池,密码可空,矿池返回 true 登录成功。该方法必须是在初始化连接之后马上进行,否则矿机得不到矿池任务。

Client:

Server:

难度调整由矿池下发给矿机,以 mining.set_difficulty 方法调整难度, params 中是难度值。
Server:

矿机会在下一个任务时采用新难度,矿池有时会马上下发一个新任务并且把清理任务设为true,以便矿机马上以新难度工作。

该命令由矿池定期发给矿机,当矿机以 mining.subscribe 方法登记后,矿池应该马上以 mining.notify 返回该任务。

Server:

任务ID : bf0488aa ;

seedhash : 。每一个任务都发送一个seedhash来支持尽可能多的矿池,这可能会很快地在货币之间交换。

headerhash : 。

boolean cleanjobs : true 。如果设为true,那么矿工需要清理任务队列,并立即开始从事新提供的任务,因为所有旧的任务分享都将导致陈旧的分享错误。如果是 false 则等当前任务结束才开始新任务。

矿工使用seedhash识别DAG,然后带着headerhash,extranonce和自己的minernonce寻找低于目标的share(这是由提供的难度而产生的)。

矿机找到合法share时,就以” mining.submit “方法向矿池提交任务。矿池返回true即提交成功,如果失败则error中有具体原因。

Client:

任务ID : bf0488aa

minernonce : 6a909d9bbc0f 。注意minernonce是6个字节,因为提供的extranonce是2个字节。如果矿池提供3字节的extranonce,那么minernonce必须是5字节

Server:

一般的矿机与矿池通讯过程就如下所示:

6. 鱼池矿池地址

常用的国内的矿池地址: 1. f2pool (鱼池) eth.f2pool.com:6688 还可以使用以下备用地址: 中国区: stratum+tcp://eth.f2pool.com:6688 stratum+tcp://eth-backup.f2pool.com:6688 北美区: stratum+tcp://eth-na.f2pool.com:6688 stratum+tcp://eth-backup.f2pool.com:6688 欧洲区: stratum+tcp://eth-eu.f2pool.com:6688 stratum+tcp://eth-backup.f2pool.com:6688。
拓展资料
1.F2Pool鱼池的加入,在提升崛起币知名度和影响力的同时,将直接影响崛起币的挖矿难度和网络稳定性。 大矿池的加入,有助于提高崛起币挖矿难度和网络稳定性;并且随着挖矿难度的提高,崛起币区块链的数据注册成本特别是DPO防伪注册成本会进一步降低;这是继承自域名币并且在代码中决定的;DPO防伪注册成本的降低,为DPO防伪的商业应用扫清了成本障碍,有助于打开崛起币DPO防伪应用的市场,使之更具市场竞争力。
2.鱼池创始人沈宇表示,“出售价值40亿美元的比特币”是一种讽刺。有用户怀疑比特币价格下跌是由于f2pool的出售造成的。在过去的10天里(2020年1月12日至1月22日),这个鱼池已经流出了大约45000个比特币,总计约14亿美元。申玉回答说,目前鱼池开采和生产的比特币超过100万枚,由于历史悠久,这与大多数交易所地址都有关联。 针对这一事件,数据提供商和数据分析平台cryptoquant也在twitter上证实,f2pool本身并没有大量出售比特币,抛售潮来自于参与鱼池挖矿的巨鲸。最近鱼池比特币流出量的大规模增长,是由于隐量子将所有与鱼池挖矿奖励相关的地址标记为同一类型。
3.目前,cryptoquant正试图解决地址标记集的问题。 根据cryptoquant数据,它监控着与矿池相关的所有地址,其中大部分是矿工客户的地址,所以它的监控数据可能更能反映矿工客户的行为,而不是矿池运营商的行为。f2pool的内部工作人员Jessica告诉记者,我们只提供技术服务。矿机的集中和大量外流与f2pool无关。 oklink的业务总监蒋子龙向我们的记者解释说,准确地说,应该是矿池内的矿工买钱的情况。此外,根据cryptoquant的数据,出现大量“抛售”的日子是1月29日,最大的数量约为16000个btc,这并不是抛售。根据价格和数量,3月12日流出的btc将超过6000个,7月20日流出的btc将超过7000个。BTC流出对价格的影响不是很显著,这可以理解为一个完全的易手或主力军的信心没有受到矿池的很大影响。

7. 比特币矿池的协议stratum

转自: https://zhuanlan.hu.com/p/23558268
getblocktemplate协议诞生于2012年中叶,此时矿池已经出现。矿池采用getblocktemplate协议与节点客户端交互,采用stratum协议与矿工交互,这是最典型的矿池搭建模式。

与getwork相比,getblocktemplate协议最大的不同点是:getblocktemplate协议让矿工自行构造区块。如此一来,节点和挖矿完全分离。对于getwork来说,区块链是黑暗的,getwork对区块链一无所知,他只知道修改data字段的4个字节。对于getblocktemplate来说,整个区块链是透明的,getblocktemplate掌握区块链上与挖矿有关的所有信息,包括待确认交易池,getblocktemplate可以自己选择包含进区块的交易。

挖矿有两种方式,一种叫SOLO挖矿,另一种是去矿池挖矿。前文所述的在节点客户端直接启动CPU挖矿,以及依靠getwork+cgminer驱动显卡直接连接节点客户端挖矿,都是SOLO挖矿,SOLO好比自己独资买彩票,不轻易中奖,中奖则收益全部归自己所有。去矿池挖矿好比合买彩票,大家一起出钱,能买一堆彩票,中奖后按出资比率分配收益。理论上,矿机可以借助getblocktemplate协议链接节点客户端SOLO挖矿,但其实早已没有矿工会那么做,在写这篇文章时,比特币全网算力1600P+,而当前最先进的矿机算力10T左右,如此算来,单台矿机SOLO挖到一个块的概率不到16万分之一,矿工(人)投入真金白银购买矿机、交付电费,不会做风险那么高的投资,显然投入矿池抱团挖矿以降低风险,获得稳定收益更加适合。因此矿池的出现是必然,也不可消除,无论是否破坏系统的去中心化原则。

矿池的核心工作是给矿工分配任务,统计工作量并分发收益。矿池将区块难度分成很多难度更小的任务下发给矿工计算,矿工完成一个任务后将工作量提交给矿池,叫提交一个share。假如全网区块难度要求Hash运算结果的前70个比特位都是0,那么矿池给矿工分配的任务可能只要求前30位是0(根据矿工算力调节),矿工完成指定难度任务后上交share,矿池再检测在满足前30位为0的基础上,看看是否碰巧前70位都是0。

矿池会根据每个矿工的算力情况分配不同难度的任务,矿池是如何判断矿工算力大小以分配合适的任务难度呢?调节思路和比特币区块难度一样,矿池需要借助矿工的share率,矿池希望给每个矿工分配的任务都足够让矿工运算一定时间,比如说1秒,如果矿工在一秒之内完成了几次任务,说明矿池当前给到的难度低了,需要调高,反之。如此下来,经过一段时间调节,矿池能给矿工分配合理难度,并计算出矿工的算力。

矿池通过getblocktemplate协议与网络节点交互,以获得区块链的最新信息,通过stratum协议与矿工交互。此外,为了让之前用getwork协议挖矿的软件也可以连接到矿池挖矿,矿池一般也支持getwork协议,通过阶层挖矿代理机制实现(Stratum mining proxy)。须知在矿池刚出现时,显卡挖矿还是主力,getwork用起来非常方便,另外早期的FPGA矿机有些是用getwork实现的,stratum与矿池采用TCP方式通信,数据使用JSON封装格式。

先来说一下getblocktemplate遗留下来的几个问题:

矿工驱动:在getblocktemplate协议里,依然是由矿工主动通过HTTP方式调用RPC接口向节点申请挖矿数据,这就意味着,网络最新区块的变动无法及时告知矿工,造成算力损失。

数据负载:如上所述,如今正常的一次getblocktemplate调用节点都会反馈回1.5M左右的数据,其中主要数据是交易列表,矿工与矿池需频繁交互数据,显然不能每次分配工作都要给矿工附带那么多信息。再者巨大的内存需求将大大影响矿机性能,增加成本。

Stratum协议彻底解决了以上问题。

Stratum协议采用主动分配任务的方式,也就是说,矿池任何时候都可以给矿工指派新任务,对于矿工来说,如果收到矿池指派的新任务,应立即无条件转向新任务;矿工也可以主动跟矿池申请新任务。

现在最核心的问题是如何让矿工获得更大的搜索空间,如果参照getwork协议,仅仅给矿工可以改变nNonce和nTime字段,则交互的数据量很少,但这点搜索空间肯定是不够的。想增加搜索空间,只能在hashMerkleroot下功夫,如果让矿工自己构造coinbase,那么搜索空间的问题将迎刃而解,但代价是必要要把区块包含的所有交易都交给矿工,矿工才能构造交易列表的Merkleroot,这对于矿工来说压力更大,对于矿池带宽要求也更高。

Stratum协议巧妙解决了这个问题,成功实现既可以给矿工增加足够的搜索空间,又只需要交互很少的数据量,这也是Stratum协议最具创新的地方。

再来回顾一下区块头的6个字段80字节,这个很关键,nVersion,nBits,hashPrevBlock这3个字段是固定的,nNonce,nTime这两个字段是矿工现在就可以改变的。增加搜索空间只能从hashMerkleroot下手,这个绕不过去。Stratum协议让矿工自己构造coinbase交易,coinbase的scriptSig字段有很多字节可以让矿工自由填充,而coinbase的改动意味着hashMerkleroot的改变。从coinbase构造hashMerkleroot无需全部交易,

如上图所示,假如区块将包含13笔交易,矿池先对这13笔交易进行处理,最后只要把图中的4个黑点(Hash值)交付给矿工,同时将构造coinbase需要的信息交付给矿工,矿工就可以自己构造hashMerkleroot(图中的绿点都是矿工自行计算获得,两两合并Hash时,规定下一个黑点代表的hash值总是放在右边)

。按照这种方式,假如区块包含N笔交易,矿池可以浓缩成log2(N)个hash值交付给矿工,这大大降低了矿池和矿工交互的数据量。

Stratum协议严格规定了矿工和矿池交互的接口数据结构和交互逻辑,具体如下:

1. 矿工订阅任务

启动挖矿机器,使用mining.subscribe方法链接矿池

返回数据很重要,矿工需本地记录,在整个挖矿过程中都用到,其中:

Extranonce1,和 Extranonce2对于挖矿很重要,增加的搜索空间就在这里,现在,我们至少有了8个字节的搜索空间,即nNonce的4个字节,以及 Extranonce2的4个字节。

2. 矿池授权

在矿池注册一个账号 ,添加矿工,矿池允许每个账号任意添加矿工数,并取不同名字以区分。矿工使用mining.authorize方法申请授权,只有被矿池授权的矿工才能收到矿池指派任务。

3. 矿池分配任务

以上每个字段信息都是必不可少,其中:

有了以上信息,再加上之前拿到的Extranonce1 和Extranonce2_size,就可以挖矿了。

4. 挖矿

1) 构造coinbase交易

用到的信息包括Coinb1, Extranonce1, Extranonce2_size 以及Coinb2,构造很简单:

为啥可以这样,因为矿池帮矿工做了很多工作,矿池已经构建了coinbase交易,系列化后在指定位置分割成coinb1和coinb2,coinb1和coinb2包含指定信息,比如coinb1包含区块高度,coinb2包含了矿工的收益地址和收益额等信息,但是这些信息对于矿工来说无关紧要,矿工挖矿的地方只是Extranonce2 的4个字节。另外Extranonce1是矿池写入区块的指定信息,一般来说,每个矿池会写入自己矿池的信息,比如矿池名字或者域名,我们就是根据这个信息统计每个矿池在全网的算力比重。

2) 构建Merkleroot

利用coinbase和merkle_branch,按照上图方式构造hashMerkleroot字段。

3) 构建区块头

填充余下的5个字段,现在,矿池可以在nNonce和Extranonce2 里搜索进行挖矿,如果嫌搜索空间还不够,只要增加Extranonce2_size为多几个字节就可轻而易举解决。

5. 矿工提交工作量

当矿工找到一个符合难度的shares时,提交给矿池,提交的信息量很少,都是必不可少的字段:

矿池拿到以上5个字段后,首先根据任务号ID找出之前分配任务前存储的信息(主要是构建的coinbase交易以及包含的交易列表等),然后重构区块,再验证shares难度,对于符合难度要求的shares,再检测是否符合全网难度。

6. 矿池给矿工调节难度

矿池记录每个矿工的难度,并根据shares率不断调节以指定合适难度。矿池可以随时通过mining.set_difficulty方法给矿工发消息另其改变难度。

如上,Stratum协议核心理念基本解析清楚,在getblocktemplate协议和Stratum协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。

阅读全文

与stratum矿池通讯协议相关的资料

热点内容
amd4808g的挖矿算力 浏览:396
libra系的数字货币 浏览:239
stratum矿池通讯协议 浏览:614
矿工加入矿池一起挖币 浏览:549
最近几张成长最多的数字货币 浏览:949
微信里的钱算数字货币吗 浏览:644
那里还搞区块链 浏览:40
区块链产业上市 浏览:740
区块链大赛含金量 浏览:478
大家区块链互动百科 浏览:946
全世界区块链上市 浏览:439
恒银金融数字货币 浏览:679
沸点资本区块链 浏览:658
白话区块链公司 浏览:796
大连万达要出区块链 浏览:213
数字货币钱包哪个最好 浏览:444
区块链投资平台安全 浏览:979
区块链社群店 浏览:799
区块链书籍哪本最经典 浏览:257
数字货币lco 浏览:676