比特币挖矿协议,比特币矿池的协议stratum

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

比特币挖矿协议,比特币矿池的协议stratum

一、比特币矿池的协议stratum

转自:

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协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。

二、挖矿比特币违法吗

法律分析:

目前没有任何明文规定说挖比特币是犯法的,所以它是不犯法的。只不过因为挖矿的成本大,耗电量多,因此我国出文不允许设立矿场挖矿而已,主要原因还是耗电量大,这样给社会环境造成了很大的压力,因此才会出此政策。比特币挖矿机就是用于赚取比特币的计算机。这类计算机一般有专业的挖矿芯片,多采用安装大量显卡的方式工作,耗电量较大。每张显卡额定功率大概250W,稍微超频大概300W,4张显卡1200W。主板、CPU、硬盘等等这些加起来不超过200w显示器,矿机是基本不要显示器的。总计功率在1400w左右。比特币挖矿机用于赚取比特币的计算机。这类计算机一般有专业的挖矿芯片,多采用安装大量显卡的方式工作,耗电量较大。计算机下载挖矿软件然后运行特定算法,与远方服务器通讯后可得到相应比特币,是获取比特币的方式之一。

法律依据:

《防范和处置非法集资条例》第十九条对本行政区域内的下列行为,涉嫌非法集资的,处置非法集资牵头部门应当及时组织有关行业主管部门、监管部门以及国务院金融管理部门分支机构、派出机构进行调查认定:(一)设立互联网企业、投资及投资咨询类企业、各类交易场所或者平台、农民专业合作社、资金互助组织以及其他组织吸收资金;(二)以发行或者转让股权、债权,募集基金,销售保险产品,或者以从事各类资产管理、虚拟货币、融资租赁业务等名义吸收资金;(三)在销售商品、提供服务、投资项目等商业活动中,以承诺给付货币、股权、实物等回报的形式吸收资金;(四)违反法律、行政法规或者国家有关规定,通过大众传播媒介、即时通信工具或者其他方式公开传播吸收资金信息;(五)其他涉嫌非法集资的行为。

衍生问题:

在国内挖矿是非法的吗?矿并不违法,刑法并没有明确规定挖矿是违法行为,但是国家并不提倡。比特币系统由用户(用户通过密钥控制钱包)、交易(交易都会被广播到整个比特币网络)和矿工(通过竞争计算生成在每个节点达成共识的区块链,区块链是一个分布式的公共权威账簿,包含了比特币网络发生的所有的交易)组成。

三、比特币挖矿是什么意思

挖矿是最原始获取数字货币的“勘探方式”,实质上是用计算机解决一项复杂的数学问题,如果将区块链比作一个大帐本,其中的区块是账本中的某一页,而所有的矿工则是记账员,挖矿的过程就是在记账,同时也是在维护整个网络正常运转。

以比特币为例,每10分钟,所有的矿工一起计算一道数学题,谁先算出答案,就相当于挖到了这个区块、作为奖励即可获得相应的比特币。挖矿的设备最早使用电脑就行,通过电脑CPU计算数学题挖矿、随着比特币价格走高,越来越多的人参与挖矿,CPU挖矿慢慢转变为专业显卡,到近几年已经变为特定的矿机了。

温馨提示:

①本信息不构成任何投资建议,投资者不应以该等信息取代其独立判断或仅根据该等信息做出决策。

②投资有风险,选择需谨慎。您在做任何投资之前,应确保自己完全明白该产品的投资性质和所涉及的风险,详细了解和谨慎评估产品后,再自身判断是否参与交易。

应答时间:2021-03-18,最新业务变化请以平安银行官网公布为准。

[平安银行我知道]想要知道更多?快来看“平安银行我知道”吧~

本文来自用户投稿,不代表币大牛资讯立场,如若转载,请注明出处:https://www.98xmw.com/zhis/8690.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年12月21日
下一篇 2024年12月21日

相关推荐

  • BTC最近跌,比特币暴跌是怎么回事

    一、比特币为什么会下跌比特币目前最成熟最经典的数字货币应用,它本身是一种基于区块链技术的数字资产,由于现在价格很高,总量稀有,它更像是一种互联网上的数字黄金,它既会上涨,也会下跌,是一种正常的市场波动。比特币,作为一种7*24小时不间断交易的市场交易性投资标的

    2025-06-16 02:40:01
    1 0
  • 比特币钱包电脑坏了,比特币钱包在电脑上占多大资源C盘都占满了,但找不到文件

    一、比特币钱包在电脑上占多大资源C盘都占满了,但找不到文件目前的比特币区块链数据容量是不断继续增长中的现在大概10G了,而很多朋友的安装系统的时候,C盘并没有设置的很大,你是否担心有一天C盘会爆炸呢。现在就和我学如何做数据迁移吧。(需先关闭Bitcoin客户端)1、找到

    2025-06-16 01:40:01
    3 0
  • 比特币钱包ios,十大最安全区块链钱包

    一、十大最安全区块链钱包随着区块链技术的兴起,各种数字货币如同雨后春笋般冒了出来。而在看到比特币大热之后,许多投资人也从股市、房市等地转战币圈。玩币、炒币都离不开区块链钱包,评价一个区块链钱包的好坏,首当其冲的就是安全性,没有什么比账户的安全更重要。十大最

    2025-06-16 00:40:01
    4 0
  • 比特币交易平台理财,比特币怎么理财

    一、手里的比特币可以用来做理财吗当然可以,就现阶段而言,投数字货币理财要比直接炒币好得多。原因是现阶段不确定因素太多了,导致炒币的风险性也比较高的,如果你时间多,又是一个炒币高手的话,那可以忽略我的多嘴,但如果你想跟我一样求稳的话,推荐你优先投资数字货币理

    2025-06-15 23:40:01
    2 0
  • 比特币大涨挖矿赚钱吗,比特币赚钱怎么样 至于挖矿一天能赚多少钱

    一、比特币赚钱怎么样 至于挖矿一天能赚多少钱比特币作为一种早期的加密货币,自2009年诞生以来,其价值经历了显著变化。最初,一美元仅能兑换1300个比特币,相对低廉。如今,比特币作为区块链和币圈的精神象征,其价格波动对市场信心有重大影响。关于挖矿的盈利情况,这取决

    2025-06-15 22:40:01
    3 0
  • 比特币钱包安装,比特币钱包是什么

    一、如何通过比特币钱包地址QR码存钱通过安全的加密技术存储数字货币,只需要有个合约地址就可以转币,这个钱包的作用,可以让你在不用币的时候,将币放在钱包里,比在交易所的安全系数要高些。钱包其实是作为一个地址协议,因为区块链上所有的交易都是全网记录的,每一枚比特

    2025-06-15 21:40:01
    4 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载