区块链学习第七期

myBlog

挖矿日常理解

[toc] ---

挖矿初识

挖矿原理简介

比特币如此神奇,很多人都想知道除了直接用钱购买之外,还有没有其他方法可以获得比特币?答案是肯定的。比特币存在于互联网数字空间中,隐藏在特定算法里,所以只要利用联网的计算机就能挖掘出来。大家口中所说的“挖矿”就是通过计算机设备运算挖掘比特币,那些专门通过“挖矿”寻找比特币的人就是比特币矿工。

从表面上看,“挖矿”是一个非常简单的过程,只需要利用计算机下载比特币挖矿工具,然后让设备持续运行就能得到比特币,然后确定账户信息取得对比特币的拥有权。但是,比特币在设计之初已经制定好了规则,产生新比特币的算法难度会随着比特币产生速度的变化而变化。也就是说,矿工挖掘比特币的速度越快,算法难度就会越大;反之,难度越小。

根据比特币挖矿原理可知,计算机的运算能力是挖掘比特币的关键。对于大多数矿工来说,只要打开挖矿客户端,然后挂机就可以坐等比特币的产生。目前,常用的“挖矿”工具有UfasoftCoin、Guiminer等。由于越来越多的人涌入“挖矿”行列中,比特币的产生也随着算力的增大而变得缓慢。

影响比特币收益的四大因素

  1. 算法因素

    算法因素是比特币本身的特性,不会受到外部因素影响,但是会影响外部因素,包括算法难度调整周期、每区块收益等。

  2. 矿机硬件

    矿机硬件是矿工可以通过人力施加影响,从而提高收益的一个因素。一般来说,硬件因素在短期内几乎没有什么变化,而且可预见性、可操作性较高。例如,矿机速度、功耗、成本等,这些因素主要受上游芯片厂商、矿机组装厂商的影响。

  3. 矿场部署

    矿场指的是比特币矿工团队集体工作的环境。矿场部署是矿场和旷工可以通过人力施加影响,从而提高收益的另一个因素,同样受到上游芯片厂商、矿

    机组装厂商的影响,可预见性较高。矿场部署因素包括矿机部署时间、矿场电 费、运行保障能力等。

  4. 市场因素

    比起其他三大因素,市场因素的可预见性较低,但是对挖矿收益的影响非常大。比如,比特币的价格、全网算力增长率、难度增长率等。比特币的价格在短期内波动较小,但是在中长期内何时会出现暴涨暴跌是难以预测的。全网算力和难度增长率在短期内变化幅度会较大,中长期则是会增长趋势。

    在影响挖矿收益的四大因素中,算法因素是比特币自身特性,并制约着其他三种因素;矿机硬件的性能和功耗将随着技术升级不断优化;矿场部署的当前趋势是集中化和规模化,通过总量来降低挖矿成本,提升挖矿收益;市场因素受到宏观大环境影响,风险和机遇同时存在。

矿池

为什么要有矿池

激烈竞争的环境下,单个矿工(也被称为“个体矿工”)独立工作基本没有机会赢得竞争。他们通过挖矿弥补电力和硬件成本的可能性非常低,基本上就等同于参加一场赌博或者买彩票。即使最快的消费型ASIC挖矿系统,也无法赶上那些安装了成千上万芯片的商业系统,那些系统通常建在水电站附近的巨大机房里。矿工们一般联合起来组成矿池,他们将算力集中起来,而奖励也在成员间共享。通过加入矿池,矿工可以得到全部奖励的一小部分,但是这种方式削减了不确定性,矿工们几乎每天都能分到奖励。

假定一个矿工购买了一台矿机,其处理能力能达到6000G哈希每秒(GH/s),或者6TH/s。在2014年的8月份,这台设备的成本大概是1万美元。设备运行时的功率为3kW,每天72度(kWH)耗电,每天平均电力成本是7~8美元。在当前的比特币挖矿难度下,如果矿工单干的话,大概每155天或者5个月可以找到1个新区块。如果矿工在这个时间内真的找到了1个区块,那么他将得到25比特币的奖励,每个比特币兑换价格大概是600美元,总的奖励是1.5万美元。这笔钱扣除硬件和电力的全部成本后,大概还有3000美元的收益。但是,5个月内能否找到一个区块,完全凭矿工的运气。他可能5个月内找到2个区块,获得更多的收益;也有可能10个月也找不到1个区块,导致财务损失。更糟糕的是,比特币工作量证明的难度很可能在这段时间内已经显著提高了,以当前哈希算力的增长速度,矿工最多在6个月时间内必须达到收支平衡,否则硬件就将过时,需要被更强的挖矿硬件取代。如果矿工加入一个矿池,每周就能赚到500~700美元,而不用等待5个月一次的“横财”。矿池定期派发的奖励帮他摊销了硬件和电力成本,不再需要承担巨大的风险。硬件设备仍然会在6~9个月后过时,风险依然很高,但是至少在这个时间内的回报是定期发放,相对可靠的。

矿池的运行机制

矿池通过专门的矿池协议,将成百上千的矿工集合在一起。个体矿工在矿池中创建账号后,通过设置把挖矿设备与矿池服务器相连。在挖矿的过程中,挖矿硬件保持与矿池服务器相连,与其他矿工同时进行挖矿工作。这样,矿池中的矿工共享挖矿的努力,也共享收获的奖励。

P2P矿池介绍

P2P矿池通过将矿池服务器的功能去中心化,实现了一个平行的类似区块链的系统,叫作份额链(share chain)。份额链是一条相比比特币区块链具有较低难度的区块链。份额链允许矿工在去中心化的矿池中协同工作,它们以每30秒一个份额区块的速度在份额链上进行份额挖矿。份额链上的每个区块记录着参与贡献的矿工的奖励份额,并且继承了之前份额区块上的份额记录。当某个份额区块同时达到比特币网络的难度目标时,这个区块就会被传播出去,并入比特币区块链,而区块奖励则根据每个矿工之前对份额的贡献度进行发放。本质上,份额链采用一种类似比特币区块链的去中心化共识机制,让所有矿池中的矿工都能跟踪所有贡献份额的记录,而不像矿池服务器一样,由一个中心节点保存矿工的份额和奖励记录。

P2P矿池挖矿比托管矿池挖矿复杂得多,它要求矿工运行一台具有足够硬盘空间、内存和网络带宽的专用电脑,以支持完全节点和P2P矿池节点软件。P2P矿池矿工将他们的挖矿设备与本地的P2P矿池节点进行连接,P2P矿池节点通过向挖矿设备发送区块模板的方式,模拟矿池服务器的功能。在P2P矿池中,矿工构建他们自己的候选区块,归集交易,其行为与个体矿工很类似,但是P2P矿工是在份额链上合作挖矿。P2P矿池整合了个体矿工和矿池两者的优势,能够让个体矿工在支出上具有更加细粒度的优势,在控制层面,它不需要像托管矿池那样将控制权交给矿池管理人。

当前,矿池中集中的算力已接近可发起51%攻击的能力,出于对此的担忧,P2P矿池的矿工数量有了显著增长。P2P矿池协议进一步的发展有望移除对完全节点的依赖,从而使这种去中心化的挖矿更加易用。

为什么要有P2P矿池

托管矿池有可能引发矿池管理员的欺诈行为,他可能将矿池的算力引导至双重支付交易或者无效区块(参见“共识攻击”)。此外,中心化的矿池服务器也存在单点故障的隐患。如果矿池服务器宕机或者因拒绝服务攻击而放慢运行速度,矿池中的矿工就无法挖矿。在2011年,为解决这个中心化问题,引进了一个新的矿池挖矿协议:P2P矿池,它是一个点对点的矿池,不需要中心管理员

托管矿池

大多数矿池都是“托管矿池”,即公司或者个人运营着矿池服务器。矿池服务器的拥有者被称为矿池经营者,他按一定比例向加入矿池的矿工抽取奖励费用的佣金。

矿池服务器运行着专用的软件,根据矿池挖矿协议来协调矿工们的工作。矿池服务器同时与一个或多个完全比特币节点相连(比特币节点类型与角色),可以直接访问区块链数据库的完整复制。这使得矿池服务器可以代表矿工对区块和交易进行验证,使他们从运行完全节点的负担中解脱出来。对于矿池中的矿工而言,这是一个重要的考虑因素,因为一个完全节点需要一台专用的计算机,配置至少15G~20G的硬盘,至少2G的内存(RAM)。此外,运行在完全节点上的比特币软件还需要时不时地监控、维护、升级。任何因为缺少维护或者资源而导致的宕机,都会损害矿工的收益。对于很多矿工来说,不用维护完全节点即能参与挖矿是加入托管矿池的另一大好处

矿池服务器

矿池矿工利用挖矿协议,比如Stratum(STM)或GetBlockTemplate(GBT)与矿池服务器相连。曾经有个旧标准,被称为GetWork(GWK),到2012年年底基本上已经作废了,因为这个标准难以支撑哈希速度超过4GH/s的挖矿工作。不管是STM还是GBT协议,都会创建一个包含候选区块头的区块模板(templates)。矿池服务器通过归集交易,添加铸币交易(包括扩展随机数空间),计算默克尔根(参见默克尔树),加入连接到前序区块的哈希引用,从而创建一个新的区块。候选区块的区块头作为模板,发送给矿池中的所有矿工。每个矿工基于区块模板,在一个低于比特币网络难度值的目标下进行挖矿;一旦找到满足矿池难度值的区块,就将其发回矿池服务器,赢得奖励份额。