搭建矿池教程
转自: 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协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。
B. 求大神教导如何挖莱特币 要详细的
第一步 下载莱特币客户端下载莱特币客户端可以 点击这里下载 ,读者可以找到适合自己操作系统的版本。
安装过程非常简单,只要等待数据块下载完毕就可以使用了。
对于CPU挖矿首先你需要下载pooler-cpuminer来进行CPU挖矿。下面的列表中有各个操作系统的版本下载。选择适合你的版本,下载并解压缩。
Windows 32 bits Version 2.23Windows 64 bitsVersion 2.22
Linux 32 bits Version 2.2.3
Linux 64 bits Version 2.2.3
Macintosh 32 bits Version 2.1.2Macintosh 64 bits Version 2.2.2对于网络状况不好的童鞋,可能还需要安装 Stratum mining proxy 。将下载好的mining_proxy放到pooler-cpuminer的压缩文件中
第三步 注册一个矿池账号。下面是一些著名的莱特币矿池,选择一个你喜欢的,注册一个账号。
C. 怎么样自己搭建矿
怎么自己搭建矿池
要自己搭建一个矿池,需要完成以下几个步骤:
选择一个适合的币种:首先要选择一个自己熟悉并且感兴趣的币种,可以根据市场需求和挖矿难度等因素进行选择。
选择一个合适的矿池软件:选择一款可靠的矿池软件,常见的有P2Pool、CKPool等。
部署矿池软件:将矿池软件部署在一台服务器上,并对其进行必要的配置。
设置钱包地址:在矿池软件中设置自己的钱包地址,以便于挖矿收益能够直接打入自己的钱包账户。
配置矿工程序:安装矿工程序,将其连接到矿池服务器,并设置相应的挖矿参数。
启动矿池:启动矿池服务器,并开始挖矿。
需要注意的是,在搭建矿池的过程中,需要对服务器进行必要的安全配置,以防止黑客攻击和数据泄露等问题。同时,要定期备份矿池数据,以避免数据丢失和恢复不及时等问题。另外,还要定期维护服务器和软件,保持其正常运行。
D. 实锤!K32或都将失效,Chia官方5月17号推出矿池
突发消息:Chia创始人:预计将于5月17日发布官方的矿池方案原型,之前P的K32文件不支持新的矿池,如果需要接入官方矿池,需要重新P图。
此消息一出,引发了矿工的骚动尤其是一些大玩家正在P盘的过程中尤其担心,是不是K32将无效了,花钱150元/T代P的文件是不是废品了?
1.官方是不是5月17日发布新的矿池?
实锤,官方将在5月17日开放自己合作的矿池。
2.老的plot文件可以继续用,但是无法加入17号推出的官方矿池?
是的,官方目前公布的信息明确指明,老的数据K32未来可以使用,不需要重新plot绘制,但是老的K32数据无法加入到新推出的矿池协议,但是可以继续在SOLO挖矿,只是不能加入官方矿池。
3.未来K32文件会不会失效?
会失效,官方是解释是未来K32的文件会随着技术的迭代而废掉,届时需要重新绘图,但是我们会提前3个月以上发布公告。
官方推特声明对于之前chia市场乱象 (现在许多自己搭建的矿池有复制粘贴算力产币等这对所有人是不公平的)
1、官方要更新迭代以后所有挖chia都会接入官方矿池爆块更稳定。
2、市场上目前p好盘的算力将来未必能接入到官方,有可能出现爆不了块的风险,这是官方发出的通知,通过奇亚创始人推特了解到了实际情况如果这时候不停止p盘,全部p完的话,一旦到时接入官方矿池可能面临重新买硬盘重新p盘的风险。
3、硬盘挖矿工特别提醒:挖矿是矿工长久且稳定的收益,我们建议待官方17号左右更新迭代后再开始p盘,同时取消自己矿池统一接到官方矿池更稳定的爆块产币!
4、现在所有还在p盘的矿产也慌的1批,据了解多家良心矿商,紧急叫停所有p盘等待官方更新结束重新开始!
E. 怎么样搭建zec矿
怎么搭建zec矿池
ZEC(Zcash)是一种加密货币,如果你想搭建ZEC矿池,你需要遵循以下步骤:
1.确定挖矿软件和矿池软件:在搭建矿池之前,你需要选择一款挖矿软件和矿池软件。目前市面上有许多可供选择的开源软件,如ClaymoreZcashMiner、EWBFsCUDAZcashMiner等。另外,你需要选择一种支持ZEC的矿池软件,例如CoiniumServ、NOMP等。
2.安装和配置挖矿软件:在安装挖矿软件之前,你需要确保你的计算机满足软件的要求,例如显卡型号、内存、操作系统等。然后,你需要按照软件提供的指导来安装和配置挖矿软件。
3.安装和配置矿池软件:在安装矿池软件之前,你需要确保你的计算机满足软件的要求,例如数据库、Web服务器等。然后,你需要按照软件提供的指导来安装和配置矿池软件。
4.配置矿工连接矿池:一旦你成功地安装和配置了挖矿软件和矿池软件,你需要为矿工配置连接矿池的信息,如矿池的IP地址、端口号、矿工的用户名和密码等。
5.启动矿池:最后,你需要启动矿池并监控其运行状况,以确保矿池正常运行,矿工能够连接到矿池并获得收益。
需要注意的是,在搭建ZEC矿池之前,你需要了解相关的法律法规和风险提示,以确保你的操作合法合规并具有一定的风险意识。同时,你还需要学习一些基本的网络和服务器知识,以便更好地理解和解决可能出现的问题。
F. 奇亚Chia挖矿价值分析|chia矿池搭建
随着区块链技术的普及,加密货币成为投资热点,挖矿作为进入区块链的一种方式,受到广泛关注。传统项目如以太坊挖矿竞争激烈,成本与收益不成正比。在此背景下,奇亚(Chia)项目逐渐引起关注,成为寻求新机会的选择之一。
奇亚(Chia)项目是绿色环保的典范,贴合当下社会需求,避免过度中心化问题,促进全民参与。奇亚挖矿与传统挖矿方式不同,它利用硬盘闲置磁盘空间进行空间证明(Pospace)运算,与时间证明(Potime)配合验证区块链,以资源量-存储空间量作为收益依据,对集中化的播种有抑制作用。
奇亚挖矿机制降低了参与门槛,减少了硬件、电力消耗,更加适合普通用户。与比特币等传统项目相比,奇亚的挖矿方式更加节能、环保。据数据表示,比特币挖矿消耗的电量与全球用电量相当,Chia的出现旨在利用闲置硬盘空间,减少能源浪费。
参与奇亚挖矿主要通过购买矿机或算力产品两种方式。奇亚矿机与传统矿机相比,存在本质区别,它与传统行业硬件设备之间存在粘连性,即使未来市场热度退散,矿机仍有较高的转售价值,折损成本低,风险小。
以ChiaFarm Miner 112T为例,每T算力每天产出0.04个XCH(奇亚代币),每匹算力等于1024T,每天产出40个XCH。假设某矿工以25W资金入场,可以购买大约9台矿机,每天产出40.32个XCH。按照当前场外价格,每枚XCH约20 USDT,矿工每天产出约806.4 USDT,折合人民币约5402元。
计算显示,扣除其他费用后,在两个月内理论上可以实现成本回收,并享受到后续的盈利空间。奇亚鼓励更多矿工参与,不仅带动了闲置存储硬件的二次使用,还符合其绿色环保的理念。
G. 什么是矿池 矿场
比特币也是“挖”出来的,只不过它是由计算机我们一般称之为“矿机”)在虚拟网络世界中开采出来的。所以,要挖币,同样需要选择一片合适的区域,搭建起厂房,把成百上千台矿机连接起来一起挖矿,这就是矿场。
一个矿场的成本包括建设成本、设备成本、维护成本、网络成本等。其中维护成本包括电力成本和人力成本,这也是我们会把矿场选建在电费相对比较便宜的地方的原因。一台比特币矿机的回本周期,和政策、技术、币价、算力、维护状况等多种因素有关,一般需要200-300天回本。但随着市场波动,回本周期也会变化。
说完矿场,我们来说说矿池。由于现在挖矿的人越来越多,加入的矿机和矿场也起来越多、总算力越来越大。这种情况下,单个矿机挖到比特币的概率越来越小。于是,人们想出了个办法、既然矿机单枪匹马不行,那我们把矿机联合起来去和全球其他矿机竞争——这种矿机算力的集合就是所谓的矿池。这样就能大大增加挖到矿的概率,挖到比特币后,再根据每台矿机对总算力的贡献,给予其相应的奖励。
矿池的概念比矿场抽象。矿池可以是若干矿机的集合,也可以是若干矿场中矿机算力的集合。比如谈到现实中一个在中国的矿池,接入这个矿池的矿机既有中国矿机,也有来自国外的矿机,不分区域、大家按劳分配。
H. 矿池排行
矿池排名:1.SparkPool(星火矿池)、2.Ethermine、3.F2Pool、4.FlexPool、5.Hiveon、6.Nanopoo
拓展资料:
①随着整个比特币网络的计算水平持续指数级提升,单个设备或少量计算能力都无法获得比特币网络在比特币网络上提供的区块奖励。全网算力提升到一定程度后,获奖概率较低,促使《比特币谈话》上的一些极客想办法将少量算力结合在一起,这样搭建的网站被称为《矿池》。 在这一机制中,无论个别矿工能够使用多少算力,只要通过加入矿池参与挖掘活动,无论是否成功挖掘出有效数据块,都可以通过贡献矿池获得少量比特币奖励,即多人合作挖掘,比特币奖励也由多人根据贡献分享。
②在中本聪论文中描述的比特币世界中,整个网络平均每10分钟产生一个区块,每个区块包含50个比特币(现在是12.5,比特币每四年左右减半),而一个区块只能被一些幸运的人挖走。直接拥有50个比特币(现在是12.5,比特币每四年左右减半),而其他人则一无所有。挖掘概率与矿工投入的设备计算能力成正比。这注定了,如果比特币挖掘参与者数量庞大且分散到一定程度,那么发现比特币的概率将无限接近于零,类似于中奖。也许一台矿机投入开采,开采一个区块需要5到10年的时间,这让比特币开采陷入尴尬境地,让普通人几乎无法参与。
③矿池的存在降低了比特币等虚拟数字货币的挖矿难度,降低了挖矿门槛,真正实现了人人可参与的比特币挖矿理念。但它的缺点也非常明显,因为连接到矿池的计算能力,作为一个矿池,将拥有极其巨大的计算资源。在比特币世界,算力代表记账权,算力就是一切。
④如果单个矿池的计算能力达到50%以上,就很容易对比特币等类似虚拟数字货币发起51%的攻击,后果非常可怕: 垄断矿业权,可以使矿池颗粒剩余49%的计算能力无人收获,瞬间退出竞争和破产,矿池计算能力超过50%,如果发动51%的攻击,将轻易占据全网所有有效计算能力。 垄断记账权,通过51%的攻击可以进行双重支付,一笔钱可以多次使用,会直接破坏比特币等信用体系,让其信用化为乌有。 垄断分配权,由于单个(或可能是多个)矿池通过51%的攻击占用全网计算能力,会迅速挤占剩余矿池,导致其关闭。由于没有竞争,矿池可以自行分配收入,并向矿工收取过高的手续费等过高的税款和杂税。