A. 以太坊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:
一般的矿机与矿池通讯过程就如下所示:
B. 电脑挖矿对电脑有什么要求吗怎么挖的快
下载轻松矿工
注册以太钱包
复制钱包地址到挖矿软件 开始挖矿
挖到的币 拿到交易市场可以卖掉
就这么简单
C. 鱼池矿池怎么了
鱼池矿池不稳定,有可能会被关停。
1、鱼池,2013年4月在北京成立,是全球领先、中国最早的比特币矿场;鱼池已发展成为全球最大的比特币、莱特币、以太币、零币综合数字货币矿池;矿池技术持续保持领先,收益公开透明,采用独创架构,有效防范DDoS攻击。随着整个比特币网络的计算水平呈指数级上升,单个设备或少量算力无法在比特币网络上获得比特币网络提供的区块奖励。
2、在全网算力提升到一定程度后,获得奖励的低概率促使一些“比特币”上的极客开发了一种可以结合少量算力进行联合操作的方法。以这种方式建立的网站称为“矿池”。
拓展资料:
1)矿池是比特币挖矿的全网,统称为矿池。整个矿池分为很多矿池,鱼池就是其中之一。鱼池通过购买实体矿机接入矿池后,大家通过算力一起挖矿。挖出硬币后,将分发给每个人。付出多少算力才能得到相应数量的币;
矿池的存在,降低了比特币等虚拟数字货币的挖矿难度,降低了挖矿门槛,真正2)矿池实现了人人都可以参与的比特币挖矿理念。但它的弊端也非常明显,因为算力连接到矿池。作为一个矿池,它将掌握极其庞大的算力资源。在比特币的世界里,算力代表记账权,算力就是一切。如果单个矿池的算力达到50%以上,就很容易对比特币等类似的虚拟数字货币发起51%的攻击,后果非常可怕。
3)矿池可以让剩余49%算力的矿池失效,瞬间退出竞争,破产。矿池算力超过50%。如果发起51%的攻击,很容易占据全网所有有效算力。垄断记账权、双重支付等行为可以通过51%攻击进行,一笔钱可以多次使用,这将直接破坏比特币的信用体系,使其信用消失。垄断分配权,由于单个矿池(或多矿池联盟)通过51%攻击占据全网算力,可快速排挤剩余矿池,使其倒闭。由于没有竞争,矿池可以自行分配收入,向矿工收取高额手续费等高额税费。
D. 有谁了解矿池一般采用哪种收益模式不同收益模式的区别是什么
个人怎样选择矿池?
矿池费用
目前矿池的分配方式主要有:PPS、PPS+、FPPS、PPLNS以及SOLO模式。
在相应分配方式上,矿池以一定的费率收取矿工部分收益作为矿池费用。
PPS:收益稳定,只要矿机正常工作就有收益,收益和提交的工作量有关,和矿池幸运值、交易手续费无关。
PPS+ (Pay Per Share Plus) 结算方式是对传统 PPS 结算方式的一种改进,在传统的 PPS 结算方式基础上,增加了矿工费的分配。
FPPS:Full PPS(完全PPS),对包括交易费在内的全部区块收益进行分配。 相比传统的PPS结算模式(不分配交易费)可提升 10%-20% 左右收益。
PPLNS (Pay Per Last N Shares) 结算方式下,矿池每发现有效的区块, 根据过去 N 个难度周期中用户算力占矿池算力的比例进行分配。 这种方式下矿工的收益和矿池的出块相关,矿工收益不稳定,但长期平均收益更高。
SOLO 结算方式下,全部收益分配给挖出该块的矿工,其他矿工不参与分配,矿池收取极少手续费,用于矿池运营和维护。
个人如何选择矿池:
1.首先,考虑能连上的矿池;
2.其次,选择你的分配模式,追求稳定还是高收益。一般建议选择PPS或者大矿池的PPLNS;
3.最后,根据分配模式选择支持的矿池,从中选择连接速度快的,收益好的;
4.另外,选择1-2个备用矿池,以供不时之需。
E. 什么是矿池
矿池指的是:
由于比特币全网的运算水准在不断的呈指数级别上涨,单个设备或少量的算力都无法在比特币网络上获取到比特币网络提供的区块奖励。
在全网算力提升到了一定程度后,过低的获取奖励的概率,促使一些“bitcointalk”上的极客开发出一种可以将少量算力合并联合运作的方法,使用这种方式建立的网站便被称作“矿池”。
(5)矿池难度调整扩展阅读:
矿池的存在降低了比特币等虚拟数字货币开采的难度,降低了开采门槛,真正实现了人人皆可参与的比特币挖矿理念。
但其弊端也非常明显,因为算力接入矿池,作为矿池来说,将掌握极其庞大的算力资源,在比特币世界中,算力代表着记账权,算力即是一切,如果单家矿池算力达到50%以上,将可以轻易对比特币等类似的虚拟数字货币发动51%攻击,其后果是非常可怕的:
矿池可使掌握剩余49%算力的矿池颗粒无收,瞬间退出竞争并倒闭破产,矿池算力超过50%以上,如果发动51%攻击,将能轻易占据全网全部有效算力。
F. 如何计算挖矿每天所获得的收益
虽然每个人拥有的矿机数量不同,想算出自己的每日收益,其实很简单,优质的比特币站点都有相关的软件帮你计算出最终收益,但是你想知道收益的产出原理吗?
那么各位要先明白挖矿的基本信息:
区块·奖励(BlockReward): 每挖出一个新的区块,系统会给矿工的奖励比特币,目前区块的奖励是6.25比特币。
算力(Hashrate): 算力(也就是哈希值碰撞)是比特币网络处理能力的度量单位。即为矿机计算哈希函数输出的速度。比特币网络必须为了安全目的而进行密集的数学和加密相关操作。
例如,当网络达到10Th/s的哈希率时,意味着它可以每秒进行10万亿次计算。
难度(Difficulty): 比特币系统的难度是动态调整的,每挖2016个块便会做出一次调整,调整的依据是前面2016个块的出块时间,如果前一个周期平均出块时间小于10分钟,便会加大难度,大于10分钟,则减小难度,目的是为了保证系统稳定的每过10分钟产出一个块,所以难度调整的时间大概是2周(2016* 10 分钟)
比特币网络初始难度定义为1,即Difficulty=1,它所表示的意思是,比特币网络刚开始运行的时候,每进行2^48/(2^16-1)≈2^32次Hash计算,理论上能挖出一个区块。
随着挖矿算力的提升,比特币挖矿难度在不断提升,当挖矿难度为D时,理论上挖出一个新区块需要进行D*2^32次哈希运算。
矿工的算力为H(单位为hash/s),他每天(24小时)的币产出为P,挖矿难度为D,系统奖励为R,那么:
难度X6.25奖励(R)X时间=比特币产出
P=H×x6.25×(24×60×60)D×232
数学不好的小伙伴不要慌,可以直接通过相关网站查询到当天全网算力难度,编写此文章时当天难度为【16.95T】
假设矿工算力为1TH/s(即10^12H/s),
当前的难度=16.947.802.333.946(16.95T)
加上系统当前的区块奖励=6.25比特币,
计算可以得出1T每天(24小时)
可以获得收益=0.00000742BTC
当然,这只是一个最基础的PPS收益算法,除了区块奖励外,还有打包交易的旷工费,这部分的计算和矿池的结算方式有所相关。
矿池还有多种结算方式。以上介绍的是最为基础的结算方式PPS(PayPer Share)。根据矿工提交的有效工作量来结算收益。
目前比特币矿池主要的结算还有FPPS和PPS+等等,可以让你在基础上获得而外的奖励。
目前基本上收益方式多为选择PPS+结算的矿工,他们与矿池的关系相当于打工者与公司的关系,矿工的收益不受矿池幸运值波动的影响。不管矿池幸运值如何,PPS结算方式下,只要矿工算力、挖矿难度、系统奖励确定了,矿工的收益就是确定的,拿稳定的“工资”。
数学不太好的,实在看不懂的小伙伴。记得关注今日矿工,一起研究挖矿小乐趣。
G. 以太坊矿池有哪些
1. Ethpool(Ethermine)ETHpool.org是第一个官方的以太坊矿池。此前由于工作量超负荷,该矿池不接受新用户,只接受老客户。因此,许多新矿工被迫转向单独挖矿,因为那时还没有其他可替代的矿池。在Ethpool上挖矿,必须安装以太坊的C++ETH版本。? 市场占有率:23%? 当前矿池算力:399.1GH / s? 挖矿奖励结算模式:PPLNS? 费率:1.0%? 网址:https://ethpool.org/2. NanopoolNanopool虽然是新矿池,但已经是目前以太坊上最大的矿池之一。份额(Share)的复杂性是静态的,相当于50亿。在该矿池上进行挖矿的最低哈希率仅为5 Mhesh / s。此外,此矿池根据PPLNS方案计算挖矿奖励,其中N是最近10分钟内所有接受的份额。(注:PPLNS全称Pay Per Last N Shares,即根据最近的N个股份来支付收益。)Nanopool的服务器遍及全球,官网页面简洁直观。但是这个矿池的最低支付门槛相对较高,建议连接3个服务器,避免等待长时间的付款期。? 市场占有率:8%? 当前矿池算力:16,176.3GH / s? 挖矿奖励结算模式:PPLNS? 费用:1.0%? 网址:https://eth.nanopool.org/3. F2Pool(鱼池)F2Pool是2019年最受欢迎的矿池之一。F2pool的服务器主要位于中国、其他亚洲国家和美国。F2pool.com因其开放性,可访问性和易用性而备受矿工喜爱。矿工在F2Pool上注册后才可以挖矿。以太坊挖矿需要一个显卡矿机。 ? 市场占有率:10%? 当前矿池算力:19.38TH / s? 挖矿奖励结算模式:PPS+? 费率:2.5%? 网址:https://www.f2pool.com/4. Sparkpool(星火矿池)在ETH,GRIN和BEAM生态系统中,最强大的中国资源库是Sparkpool,它是与全球矿工合作的开放资源。在挖矿之前,你需要配置矿机。基于AMD GPU处理器的以太坊挖矿收益更高。它需要闪存改进的BIOS并调整MSI Afterburner或AMD驱动程序设置中的超频选项。 ? 市场占有率:29%? 当前矿池算力:56.96TH / s? 挖矿奖励结算模式:PPS +? 费用:1.0%? 网址:https://www.sparkpool.com/5. Dwarfpool在DwarfPool,矿工的信用等级分为RBPPS或HBPPS。使用RBPPS,只要有A值,你就可以获得对应奖励(死块除外)。HBPPS计提算法是基于时间的股份支付。每小时计算一次所有推广和发现的区块。该矿池具有经过优化的最佳挖矿引擎,拒绝率较低,透明且详细的统计信息。每小时进行一次支付结算,服务器遍布世界各地。? 市场占有率:6%? 当前矿池算力:2377109 MH / s? 挖矿奖励结算模式:HBPPS? 费用:1.0%? 网址:https://dwarfpool.com/6. MiningPoolHubMiningPoolHub允许矿工通过挖矿获利,并根据不同支付系统的汇率来交易数字货币。该矿池使用PPLNS算法确定用户奖励。提款手续费为0.9%。? 市场份额:3.7%? 当前矿池算力:7.05T / s? 挖矿奖励类型:PPLNS? 费用:1.0%?
H. 比特币普通电脑挖矿不要经过矿池要怎么挖
全网的算力以及出块情况可以到淘比特http://www.taobtc.net/看
1.首先作为节点矿池,矿池建设的本身需要添加节点文件,显示在比特币钱包下方的连接数,增加节点后连接数能达到几十个连接甚至更多,要看你添加的节点有多少,有效减少无效的share。
2.矿工需要固定挖矿设备的算力难度,要怎么做呢?在你的挖矿设备启动bat里面设置即可。
比如你的单个挖矿设备是10g,你就在bat文件里,用户名(既钱包地址)后面加/1000+10。比如我的bat里-/1000+10-p1,这是什么意思呢?意思就是说你的这个设备是10g算力,你在p2pool矿池挖矿使用固定难度10g的难度。如果你是1g的设备就在后面写/1000+1,这样难度就固定了,有效提高了设备效率。
I. 比特币矿池的协议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协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。
J. 现在比特币矿池收益一天比一天少是什么原因
因为在比特币总数量(2100万枚)固定的前提下,单台矿机挖矿收益和全行业挖矿的矿机数量成反比:全行业挖矿的矿机数量增加,全网算力(是行业内所有矿机算力的总和)增加,挖矿难度增大,挖矿速度变慢,单台矿机挖矿收益降低。
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生 。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。比特币的交易记录公开透明。点对点的传输意味着一个去中心化的支付系统。