stratum协议挖矿
❶ 如何使用树莓派CPU挖矿
用cpu挖矿:
CPU 挖矿的命令是:minerd.exe -a scrypt -o stratum+tcp://60.190.233.166:9327 -u 钱包地址 -p X -t 8 -s 15pause其中 -t 8 为使用的核心数! 其它参数没必要改,对核心也没有那么多要求。
要是不需要用电脑, 只要改成比实际核心大就成了。不一定4核就一定得是4. 6 、8 一样能用。只是每个进程的速度下降而以。总体速度完全一样。
还有 这个参数改的是对系统的占用率而不是真的物理核心占用。 也就是说,是4核系统,要是改成2,并不是100%的占用2个核心,而是50%系统CPU资源占用;
顺便推荐一个正在挖的矿池地址 stratum+tcp://60.190.233.166:9327
一般的池子默认都是收2%,国内几个能找到的池子都收3-3.5%, 发现这个池子。
❷ 狗狗币DOGE怎么挖,买狗狗币未来可以上涨吗
狗狗币DOGE怎么挖,买狗狗币未来可以上涨吗?去年年底的时候出现了一种新的山寨币——狗币。目前狗币已经稳居山寨币第二位,仅次于莱特币。那么如果挖到狗币呢?今天小编就来给大家分享一下我的狗币挖矿经验。
下载狗币钱包,一般在狗币官方网站上面就有,下载好狗币钱包之后,安装狗币钱包,然后设置显示语言为中文。
下载狗币挖矿软件,具体挖矿软件大家可以在网络里面搜索“cudaminer-2014-02-09”,这个软件。具体针对的显卡不同,挖矿软件也不相同。而且还分 CPU 挖矿和 GPU 挖矿。由于我目前试用的是英伟达的显卡,所以我们这里用英伟达的显卡作为测试。
将你下载好的挖矿软件解压缩之后,根据你的电脑是64位还是32位选择不同的版本,然后将挖矿软件复制到如下目录:C:\Users\你的用户名\AppData\Roaming\DogeCoin文件夹中,具体如下图所示:
选择矿池,这里我们推荐使用 dogepool 矿池,进入下图中显示的地址,注册你的帐号,然后建立你的矿工。
注册成功之后,登录帐号,创建你的矿工。点击右上角你的用户名,然后在下拉菜单中选择“My Works”。在页面底部,找到“Add a New Worker”然后输入你要创建的矿工和密码。如下图所示:
注册好矿工之后,我们开始配置文件,打开C:\Users\你的用户名\AppData\Roaming\DogeCoin文件夹,然后在里面新建文本文档,添加如下内容:rpcuser=dogerpcpassword=wowaddnode=162.243.113.110addnode=146.185.181.114rpcport=22555server=1daemon=1然后保存文件为 Dogecoin.conf。
再新建一个文本文档,然后,添加如下内容:MineWithAMDGPU.bat./cgminer –scrypt -o stratum+tcp://dogepool.pw:3333 -u USERNAME.WORKER -p PASSWORDMineWithNvidiaGPU.batcudaminer.exe -o stratum+tcp://dogepool.pw:3333 -O USERNAME.WORKER:PASSWORDMineWithCPU.batminerd -a scrypt -t 4 -s 6 -o stratum+tcp://dogepool.pw:3333 -O USERNAME.WORKER:PASSWORD修改里面加粗的部分,其中 USERNAME.WORKER 为你在第五步里面注册的矿工,PASSWORD 为你的密码。保存上述文本为 miner.bat 文件。
开始挖矿。双击运行 miner.bat 文件,运行结果如下图的话,则说明你成功了。现在就享受你的狗币挖矿吧。
❸ 请教“stratum from pool 0 requested work restart”是什么意思
挖过矿的朋友都有这样的烦恼,挖机有时挖着挖着就停工了,非要人去启动一下,这可不能最大线度的发挥矿机的效率,本工具通过对显卡的监视来判断矿机是否工作,发现不工作自动重启挖机,实现无人值守的挖矿,具体配置如下。
一、下载文件:
二、挖矿狗的程序说明
1、挖矿狗有三个文件,proDogMine.exe、cgminer.bat、cmDeep.bat;其中 proDogMine.exe是挖矿狗主程序,两个批处理文件是挖矿批处理
2、下载矿机cgminer,挖矿狗只支持cgminer矿机不支持guiminer, 这是网上找的矿机地址:http://kuai.xunlei.com/d/LRRLYZZLTEXH
3、配置两个挖矿批处理,两个文件的配置过程一样,之所以放两个文件是考虑主备用矿池;用记事本打开cgminer.bat文件有三行如下:
------------------------------------------------------------------------------
cd F:\cgminer-2.11.3-win32
f:
cgminer -o http://btcguild.com:8332 -u xxxx -p xxxx
-------------------------------------------------------------------------------
1)把第一行cd后的路径改成自己电脑上,刚下载的矿机路径,注CD后要有一个空格(我的矿机放在F:\cgminer-2.11.3-win32)
2)第二行要输入矿机目录所在的盘(就是路径中的盘符),如我的矿机放在F盘就输入 F:
3)第三行是矿机的启动配置,如果你用的是 http://btcguild.com 矿池,只要修改xxxx处, -u 后的是用户名, -p 后而是密码,如果你是在 http://deepbit.net 注册的则要把 -o 后改成http://deepbit.net:8332,注:-o -u -p 后都要有空格分开。
4)cmDeep.bat 文件的配置可以和cgminer.bat一样,当然你也可以把他改成另一个矿池,比如一个用http://btcguild.com:8332一个用http://deepbit.net:8332,挖矿狗每次重启会调用不同的文件,这样如果是因为挖池引起不能挖矿就可以自动切换矿池。
4、启动矿狗监控程序:proDogMine.exe 界面如下图:
1)程序启动时如果提示“打开库正常”,说明显卡驱动加载没有问题可以使用(本程序只针对ati显卡其它显卡没测试)
2)判断间隔:单位是毫秒,默认是半分钟判断一次即30000,可以不设置
3)点“启动”挖矿狗会自动启动挖矿批处理来完成,如果挖矿停止半分钟后程序会重启挖矿
4)打开就启动:选择这个选项每次启动挖矿狗自动启动监控,该选项和开机自启动配合可以实现开机采矿的功能(把探矿狗的快捷键拉入Windows的启动组可实现开机自启动)。
如果程序给你有帮助不妨捐助一下小弟:
❹ 比特比怎样挖
步骤一、注册账号以及账号设置
1
首先,我们需要找一个操作方便产出稳定的比特币矿池,然后通过挖矿客户端软件连接到指定的服务器上挖矿。这里以“BTC Guild”网站为例,先打开这个网站,点击左边的用户注册。注册过程比较简单,输入英文用户名,密码和确认密码即可,如图所示
2
注册成功之后,我们会在网页上看到一条这样的信息“Your account has been successfully registered and logged in!”,意思是注册成功并已登录,如图所示
3
我们点击左上角的“Dashboard”按钮,可以看到账户的整个监控状态,如图所示
注:在这个监控仪表盘中我们最为关心的是“Total Earnings”,这就是我们当前账户所挣的比特币。以后只要我们打开网站,进入监控仪表盘就可以看到自己账户的相关信息了。
4
接下来请点击页面导航栏中的“Settings”。在设置页面中,我们可以设置电子邮件地,比特钱包地址,更改密码等,如图所示
5
如果在帐户中设置电子邮件地址,日后要是忘记密码或者被盗的情况下,可以通过设置的电子邮件来恢复密码。首先在“Email Address”一栏输入我们的常用的电子邮件地,然后点击“Change”按钮,如图所示
6
接下来页面中会显示一封确认邮件已经发送到我们之前设置的邮件中,如图所示
7
然后我们打开自己的电子邮箱,找到 BTC Guild 发送的邮件。点击确认链接即可,之后会在页面中显示我们的邮箱已经成功设置,如图所示
8
如果我们在帐户设置中设置了电子邮件的话,我们还可以对开采矿工的行为设置邮件通知。在设置页面上找到“Idle Warnings”一栏,点击下拉列表,选择想要发送邮件的时间,然后点击右边的“Change”按钮即可。当我们设置10分钟以后,如果有矿工停止开采,系统会在10分钟后自动向我们的邮件发送一封通知邮件。收到邮件以后,我们就知道具体是那个矿工罢工了。
9
另外在设置中,我们比较关心一个是“Bitcoin Wallet”即钱包地址。这个地址可以先不用设置,等我以后真正开采到了比特币是再填写也不迟。
10
帐户设置完成以后,接下来我们要对“Worker”进行设置。什么是 Worker 呢?就是我们之后在比特币开采客户端上要用到的登录矿工帐户名。系统会默认为我们创建一个矿工名,矿工名是以我们注册帐户名加一个下划线和数字组成。比如我们注册的帐户是XXX,那第一个矿工名就叫“XXX_1”,如图所示
11
如果我们要设置多个矿工名的话,在“Create Worker”一栏中输入一个数字如“2”,再点击“Create”按钮即可添加一个新矿工的帐户名,如图所示
12
在 Worker 设置页面里,我们还可以分别对矿式帐户的开采支付模式进行设置。Payment method,即开采支付方法。这里有二种类型可供选择,PPS和PPLNS,区别在于开采模式和手续费上。PPS的手续费为7.5%,而PPLNS的手续为3%。系统默认为采用 PPLNS,如果要更改,请点击 Payment method 下方的“change”按钮。
13
另外我们还可以对开采模式的难度进行选择,如果我们的电脑有多个显卡GPU,或者一些专用的机器的话,可以在 Minimum Difficulty 下对分别对矿工帐户名进行设置,如图所示
END
步骤二、下载挖矿客户端软件
1
当我们注册设置完成以后,接下来请点击页面导航菜单中的“Support”,我们会看到客户端的下载链接。
挖矿客户端软件有二种类型:
BFGMiner:命令行操作界面,可直接下载。
CGMiner: 也是命令行格式操作的,不过下载步骤过于复杂。
我们这里以下载 BFGMiner 为例,点击如图所示下载。
2
随后会跳转到挖矿工具的下载页面,挖矿工具有二种格式,一种是32位系统,另一种是64位系统。根据自己的系统位数,下载相应的工具版本,如图所示
3
挖矿工具客户端大小不足5M,是一个 ZIP 压缩文件。下载完成之后,找到并打开文件。点击鼠标右键,选择“复制”选项,如图所示
4
这里我以粘贴提取到桌面为例,如图所示
END
步骤三、挖矿客户端软件详细设置
1
打开挖矿目录以后,双击点击打开目录下的“bfgminer”文件,如图所示
2
接下来来看到 BFG minier 的窗口,在 URL 处输入矿池的地址。矿池地址可以在 BTC GUILD 的 support 页面中看到,如 stratum.btcguild.com:3333 ,按回车键,如图所示
3
然后在 Username 后输入自己先前在 BTC GUILD 网站上设置的矿工名,按回车键,如图所示
4
随后在 password 密码处,可任意输入,发图所示
5
最后就可以看到上面有很多数字在变化,表示正在挖矿了。值得注意的是如图标注的地方表示当前机器按钮的速率,如图所示
6
除了开采客户端软件上可以看当前开采的速度,我们还可以在 BTC Guild 网站上的 “Dashboard”页面中的“Active Worker Summary”列表中看到每上矿工开采的具体速度,如图所示
7
如果要关闭挖矿工具,直接 X 掉即可,也可以直接按 Q 键退出。如果想要多开几个的话,在 BFG miner 目录中再打开一个挖矿工具即可。
END
步骤四、CGminger命令行客户端软件
1
如果真要想挖矿的话,官方是推荐我们用“CGMiner”,也就是在命令提示符下运行的。在 BTC Guild 页面上点击“Support”,再点击“CGMiner”下载链接页面,选择对应系统的版本,如图所示
2
随后会跳转到 CGminer 的下载页面,点击如图标注的链接。
3
然后选择一个 CGminer 的版本,我这里下载一个 Windows 版本为例,如图所示
4
这里以 Windows 版的 CGMiner 为例,下载完成以后,解压到电脑中,如图所示
5
打开CGMiner的目录,找到“CGMiner ”,如图所示
6
用鼠标双击“CGMiner”会弹出一个命令行窗口,提示我们输入连接服务器的 URL 地址。输入“stratum.btcguild.com:3333”,按键盘上的回车键,如图所示
7
然后提示我们输入“Username”即矿工帐户名,按键盘上的回车键,如图所示
8
接着输入“password”密码,按键盘上的回车键,如图所示
9
稍等片刻,当客户端与服务在建立连接之后就会看到机器开始开采了,如图所示
10
若要退出开采,请在窗口上按键盘上的“Q”键。
❺ TIX彩币如何挖矿
矿池:http://tix.botpool.net/index.php?page=gettingstarted 1. 创建账户 注册 点这里, 或登陆(如果你已经有账户了) 添加 矿工 用于给挖矿程序登陆挖矿 2. 下载挖矿软件 【必须使用专用版CG】 TIX专用版CG下载链接1 TIX专用版CG下载链接2 3. 配置挖矿程序 使用Stratum (推荐): 矿池接口1: stratum+tcp://wk3.botpool.net:4833 矿池接口2: stratum+tcp://wk6.botpool.net:4833 矿工号: Weblogin.Worker 密码: Worker Password 如果您使用的命令行矿工: tixminer --scrypt -o stratum+tcp://wk3.botpool.net:4833 -u Weblogin.Worker -p Worker password多台机器,你还可以考虑创建多个矿工号, 点这里 4. 创建LotteryTicket 收款地址. 打开LotteryTicket 网站.下载 LotteryTicket 钱包客户端 生成一个新的钱包地址,并输入到您的帐户页面里。 5. cgminer设置 / FAQ Scrypt readme 详细教程(LTC教程)
❻ 鱼池矿池地址
常用的国内的矿池地址: 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流出对价格的影响不是很显著,这可以理解为一个完全的易手或主力军的信心没有受到矿池的很大影响。
❼ 以太坊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:
一般的矿机与矿池通讯过程就如下所示:
❽ 狗狗币挖矿 狗狗币怎么挖
一、下载cpu挖矿工具 地址https://sourceforge.net/projects/cpuminer/files/
四、运行start.bat
(8)stratum协议挖矿扩展阅读:
Dogecoin,有人称作“狗狗币/狗币”,诞生于2013年12月8日,基于Scrypt算法,是国际上用户数仅次于比特币的第二大虚拟货币。
数字货币是民间发起的全球通用货币,不属于某个国家,是属于全人类,具有全球转帐速度快的优点,如几秒内就可以把钱由国内汇到美国,且费用低廉,并且总量不会像法币一样随意增发,总量相对稳定。
矿机,就是用于赚取虚拟币的电脑,这类电脑一般有专业的挖矿晶元,多采用烧显卡的方式工作,耗电量较大。用户用个人电脑下载软体然后运行特定演算法,与远方伺服器通讯后可得到相应虚拟币,是获取比特币的方式之一。
虚拟币是指互联网上面的一种虚拟出来的金钱。即高科技中代替实体货币流通的信息流或数据流。在信息技术高速发展的今天,实体货币远远不能满足人们的资金流动需求了。
虚拟货币与支票和电汇不同,虚拟货币不能实现的价值,不能通过银行转账,目前只能流通于网络世界,虚拟货币是由各网络机构自行放行,没有形成统一的发行和管理规范。
❾ 比特币矿池的协议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是什么意思
stratum协议是目前最常用的矿机和矿池之间的TCP通讯协议。先简要说明挖矿的网络架构。