比特币独立矿池搭建
转自: 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协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。
❷ 什么是矿池 矿场
比特币也是“挖”出来的,只不过它是由计算机我们一般称之为“矿机”)在虚拟网络世界中开采出来的。所以,要挖币,同样需要选择一片合适的区域,搭建起厂房,把成百上千台矿机连接起来一起挖矿,这就是矿场。
一个矿场的成本包括建设成本、设备成本、维护成本、网络成本等。其中维护成本包括电力成本和人力成本,这也是我们会把矿场选建在电费相对比较便宜的地方的原因。一台比特币矿机的回本周期,和政策、技术、币价、算力、维护状况等多种因素有关,一般需要200-300天回本。但随着市场波动,回本周期也会变化。
说完矿场,我们来说说矿池。由于现在挖矿的人越来越多,加入的矿机和矿场也起来越多、总算力越来越大。这种情况下,单个矿机挖到比特币的概率越来越小。于是,人们想出了个办法、既然矿机单枪匹马不行,那我们把矿机联合起来去和全球其他矿机竞争——这种矿机算力的集合就是所谓的矿池。这样就能大大增加挖到矿的概率,挖到比特币后,再根据每台矿机对总算力的贡献,给予其相应的奖励。
矿池的概念比矿场抽象。矿池可以是若干矿机的集合,也可以是若干矿场中矿机算力的集合。比如谈到现实中一个在中国的矿池,接入这个矿池的矿机既有中国矿机,也有来自国外的矿机,不分区域、大家按劳分配。
❸ 区块链中什么是矿池(区块链中什么是矿池的)
什么是矿池矿场?在全网算力提升到了一定程度后,单台机器挖到块的概率变得非常的低。这种现象的发展,促使一些“bitcointalk”上的极客开发出一种可以将少量算力合并联合运作的方法,使用这种方式建立的网站便被称作“矿池”(MiningPool)。
?
矿池的收益分配主要有:PPLNS、PPS、PROP三种形式。
?
所谓的比特币矿场就是建造一个工厂,将数十台、数千台采矿机器放在一起进行数学运算和挖掘比特币。这涉及电力消耗问题。一个矿场的成本包含:建设成本、设备成本、维护成本网络成本、还有其他成本。
矿场跟矿池有什么区别?矿场跟矿池都分不清楚,千万别进场挖矿,容易被宰。总的来说,矿场就是人们为了管理方便,选择一个电费比较低廉的地方,例如作为消纳区的四川,将许多矿机放在一起进行挖矿,这个地方就是矿场。而矿池的话,实际上就是一个网络平台,它是将不同空间的矿机的算力有机结合,然后进行挖矿,提高挖矿效率,届时挖矿得到的收益也会按一定的分配机制分配收益。要是还是不懂,那就找一个专门挖矿的矿企详细问问,世链矿业就不错,他们家在海外诸多地区都有矿场的,例如美国、俄罗斯等,网络了解清楚了再入场??
什么是矿池?矿池是一个组队挖矿的服务器。比特币每10分钟产生一个区块,会有千万人竞争,而这个区块最终只归1个人所有,其它人都颗粒无收。你也许要挖5年才能获得一个区块。组队挖矿就是,一旦队伍里任何人获得了一个区块,就将区块中的货币按大家的性能分给大家,这样大家就能很快地获得比特币。
比特币矿池:什么是比特币矿池矿池是比特币(数字货币)等P2P密码学虚拟货币开采所必须的基础设施,一般是对外开放的团队开采服务器,其存在意义为提升比特币开采稳定性,使矿工薪酬趋于稳定。目前全球算力较大的矿池有鱼池(F2Pool)、蚁池(AntPool)、币网(BWPool)、国池(BTCCPool)、BitFury。除了BitFury,其余都来自中国。
随着参与挖矿的人数越来越多,比特币全网的算力不断上涨,单个设备或少量的算力都很难再挖到比特币。这时候,矿池诞生了。
比特币矿池运作原理
矿池突破地理位置的限制,将分散在全球的矿工及矿场的算力进行联结,一起挖矿。
矿池负责信息打包,接入进来的矿场负责竞争记账权。
由于集合了很多矿工的算力,所以矿池的算力占比大,挖到比特币的概率更高。
举例
假设100万人参与比特币挖矿,全网400P算力,其中90%的矿工为1P(1000T)以下的算力,如果投入一台1T矿机,将占全网算力的40万分之1,理论上平均每40万个10分钟能挖到一个区块,也就是7.6年才能挖到一个区块然后一次性拿到50个比特币。
那么,假如我再找9个拥有1T算力矿机的矿工,达成协定,我们总共10个人,其中任何一个人挖到区块,都按照每人的算力占比来进行平分,那么我们就是一个整体,总共10T算力,那么平均0.76年即可挖到一个区块,然后算下来到我们手上的就是0.76年开采到5个比特币,如果组织100人、1000人、1万人甚至10万人呢?
如果是10万人,那么平均100分钟就能挖到1个区块,作为团队的一份子,我的收入将会趋于稳定。
这就是矿池的基本原理,即大家组队进行比特币开采,可以参考彩票中的合买。
当然,以上只是对矿池的基本原理和性质进行简单的描述,实际情况会非常复杂。
矿池是一个全自动的开采平台,即矿机接入矿池——提供算力——获得收益。
矿池挖矿所产生的比特币奖励会按照每个矿工贡献算力的占比进行分配。
相较单独挖矿,加入矿池可以获得更加稳定的收益。
希望这个回答对你有帮助
❹ 比特币矿池是什么意思币印矿池怎么样
比特币矿池是聚集网络上矿工的计算力共同挖掘比特币的一种抱团行为。它组成一个矿工团队,指挥大家一起挖,一旦团队里有任何人获得了一个区块,矿池就会按区块中获得的货币分配给大家。
比特币矿池的意义比特币矿池的出现,让矿工在多方面受益:
- 稳定产出:矿工每天都有相对稳定的产出。
- 降低风险:矿池除了规避独立挖矿长期没有收益的风险,还降低了收益的不确定性和波动性。
- 简化操作:接入矿池后,小矿工不用为挖矿运行全节点,只要执行矿池分配的计算任务,按要求提交计算结果就能得到挖矿奖励。
- 灵活选择:矿工可以选择不同矿场托管矿机,可以把自己的算力接入不同的矿池。
在众多的比特币矿池中,币印矿池是其中的一个。币印创办于2017年11月,由BTC.com原核心团队建立,其团队的产品及技术输出现正服务于全网大部分的比特币算力。币印矿池的特点如下:
- 专业性强:币印矿池是支持全主流币种挖矿的专业矿池,现支持币种包括BTC、BCH、BSV、ZEC、LTC、ETH、DCR、DASH、XMR等。
- 经验丰富:币印团队曾在两年内打造出了多个产品,跨越区块链浏览器、矿池、钱包等多个垂直领域,拥有丰富的行业经验和技术实力。
- 服务广泛:币印矿池的服务范围广泛,能够满足不同矿工的需求,为矿工提供稳定、高效的挖矿体验。
以下是一张关于比特币矿池的图片,展示了矿池的工作原理和矿工如何参与其中:
综上所述,比特币矿池是矿工为了提高挖矿效率和收益而采取的一种抱团行为。币印矿池作为其中的佼佼者,凭借其专业性、经验丰富和服务广泛等优势,在矿工中享有较高的声誉。然而,在选择矿池时,矿工仍需根据自身需求和实际情况进行综合考虑,以选择最适合自己的矿池。
❺ 鑷宸辨庝箞鏍峰仛姣旂壒甯佺熆
鑷宸辨庝箞鍋氭瘮鐗瑰竵鐭挎睜
鍒涘缓涓涓姣旂壒甯佺熆姹犻渶瑕佷互涓嬫ラわ細
1.鍑嗗囩熆姹犳湇鍔″櫒鍜岀熆鏈猴細鍒涘缓姣旂壒甯佺熆姹犻渶瑕佽嚦灏戜竴涓鐭挎睜鏈嶅姟鍣锛屽拰瓒冲熺殑鐭挎満鏉ュ弬涓庢寲鐭裤傜熆姹犳湇鍔″櫒搴旇ユ湁瓒冲熺殑澶勭悊鑳藉姏鍜屽瓨鍌ㄧ┖闂存潵澶勭悊鐭垮伐鐨勮繛鎺ュ拰鏁版嵁銆
2.閮ㄧ讲鐭挎睜杞浠讹細閫夋嫨涓娆鹃傚悎鐨勬瘮鐗瑰竵鐭挎睜杞浠讹紝濡侭itcoind锛孊FGMiner鎴朿gminer锛屽苟灏嗗叾閮ㄧ讲鍦ㄧ熆姹犳湇鍔″櫒涓娿傝剧疆鐭挎睜鐨勫弬鏁帮紝濡傝垂鐜囥侀毦搴︾洰鏍囧拰濂栧姳缁撴瀯绛夈
3.閰嶇疆鐭垮伐杩炴帴锛氱熆宸ラ渶瑕佽繛鎺ュ埌鐭挎睜鏈嶅姟鍣ㄦ墠鑳藉弬涓庢寲鐭裤備负浜嗘柟渚跨熆宸ヨ繛鎺ワ紝鍙浠ヤ娇鐢╓eb鍓嶇鍜孉PI鎺ュ彛鏉ョ$悊鍜岀洃鎺х熆宸ョ殑杩炴帴鍜屽伐浣溿
4.寮濮嬫寲鐭匡細涓鏃︾熆姹犻厤缃瀹屾垚骞惰繛鎺ュ埌姣旂壒甯佺綉缁滐紝鐭垮伐灏卞彲浠ュ紑濮嬫寲鐭裤傜熆姹犳湇鍔″櫒浼氫负鐭垮伐鎻愪緵宸ヤ綔浠诲姟锛岀熆宸ラ渶瑕佷娇鐢ㄤ粬浠鐨勭熆鏈鸿繘琛岃$畻锛屽苟灏嗗伐浣滅粨鏋滄彁浜ょ粰鐭挎睜鏈嶅姟鍣ㄣ
5.鍒嗛厤濂栧姳锛氬綋涓涓鐭垮伐鎻愪氦涓涓鏈夋晥鐨勫伐浣滅粨鏋滄椂锛岀熆姹犱細鍒嗛厤濂栧姳缁欒ョ熆宸ワ紝濂栧姳鍙浠ユ槸姣旂壒甯併佷氦鏄撹垂鐢ㄦ垨鍏朵粬浠e竵銆傜熆姹犻氬父浼氫娇鐢ㄤ竴绉嶅叕骞崇殑濂栧姳鍒嗛厤鏂规堬紝浠ョ‘淇濇瘡涓鐭垮伐鑾峰緱鍏姝g殑濂栧姳銆
6.绠$悊鍜岀洃鎺э細鍒涘缓姣旂壒甯佺熆姹犻渶瑕佷笉鏂鐩戞帶鍜岀$悊銆傛偍闇瑕佷笉鏂浼樺寲鐭挎睜鐨勫弬鏁板拰閰嶇疆锛岀‘淇濈熆宸ョ殑杩炴帴鍜屽伐浣滄e父杩愯岋紝浠ュ強鍙婃椂澶勭悊浠讳綍鐭挎睜鏁呴殰鎴栨敾鍑汇
❻ 如何建立一个完全独立的中心矿池
巴比特有一个帖子:利用bitcoind 及 eloipool( 支持 Stratum)架设比特币矿池,Eloipool 是基于 Python3的矿池服务器程序(支持Stratum)
❼ 如何建立矿池
要在全网算力提升到了一定程度后,过低的获取奖励的概率,促使一些“bitcointalk”上的极客开发出一种可以将少量算力合并联合运作的方法,使用这种方式建立网站。
在此机制中,不论个人矿工所能使用的运算力多寡,只要是透过加入矿池来参与挖矿活动,无论是否有成功挖掘出有效资料块,皆可经由对矿池的贡献来获得少量比特币奖励,亦即多人合作挖矿,获得的比特币奖励也由多人依照贡献度分享。
截止2019年1月,全球算力排名前五的比特币矿池有:BTC.com 、Poolin、AntPool、slush pool、、F2Pool,目前全球约70%的算力在中国矿工手中。
(7)比特币独立矿池搭建扩展阅读:
手续费:
比特币矿工会对大部分交易收取少量费用,其主要目的是防止有人大量发送无聊的小额交易,浪费网络资源。当前每笔交易的手续费大部分是฿ 0.0001/KB(0.0001btc/KB),实际上0.9.0以后的版本将默认手续费降为฿ 0.00001/KB(0.00001 btc/KB)。
因为大部分交易占用的数据量都小于1千字节,所以一般情况下฿ 0.00001(0.00001 btc/KB)的手续费就足够了。同时,在将来比特币区块奖励较少时,手续费将成为矿工收入的主要来源,比特币的手续费会与该交易占用的字节数相关。
目前比特币系统中手续费的计算标准并非强制性的,因此使用者也可以在交易进行时不给予任何手续费;
但大多数矿工在组建资料块时通常会优先考虑带有较高手续费的交易,以便在挖矿成功时能获得较高的报酬,因此无附带任何手续费的交易,可能会需要等待较长的时间才能被处理并纳入区块链中。
此外,现在因为区块容量上限1MB以及近期比特币交易量大增的因素,手续费大幅上涨,而且等待交易被确认的时间也变长了许多。
❽ 手机上怎么获取比特币 用手机怎么挖比特币
1、我们首先要找一个比特币的矿池,大家都公认为,SLUSH POOL,这是一个老牌矿池,据说总算力能够进入世界前十。而且也有中文,操作很方便,我们通过正常的注册步骤,开通一个自己的账户,接着再按照顺序建立【矿工】。
2、在以上顺序弄好后,我们就开始挖矿吧,第一件事就是在手机安装挖矿App,就选用最流行的ARM Miner。点击ARM Miner接着进入「SETTINGS」,然后输入刚才在矿场得来的URL连接,登陆你的账户开挖吧。
3、手机挖矿速度极其慢,而且对手机的损害也非常大,一个月也不一定能出一个比特币,如果有意愿进入这一行列还是建议购买专业的矿机进行挖矿,建议理智对待。