比特币矿池的协议stratum
时尚男装品牌大全⽐特币矿池的协议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秒,如果矿⼯在⼀秒之内完成了⼏次任务,说明矿池当前给到的难度低了,需要调⾼,反之。如此下来,经过⼀段时间调节,矿池能给矿⼯分配合理难度,并计算出矿⼯的算⼒。
映的拼音STRATUM
矿池通过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⽆需全部交易,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。