加密币挖矿小记

一、本文目的仅在于分享我个人学习与测试挖矿相关的技术与流程,不负责对任何因模仿本文而造成的经济或其他损失;
二、本文的时效性非常强,如果你现在看到这篇文章,可能其中的方法与结论已经无效了;
三、挖矿需谨慎,不仅是经济上可能的损失,甚至会触犯本地的相关法律,在做之前最好先了解本地的法律或政策;

此文有更新,见我这条推文系列: https://twitter.com/madawei2699/status/1391410996644769796

股市是人性的放大器,币圈是人性的修罗场

今年狗币在马斯克的营销下暴涨了 140 多倍,最近 12 个月涨了快 300 倍。根据 coinmarketcap 按市值的排名,目前狗币已成第四大加密币。

我在 2017 年也就是比特币暴涨过 10000 美刀时跟风买了一点比特币(BTC)和以太坊(ETH),之后一路下跌了到 4000 美刀之下,这两年又暴涨到近 60000 美刀了。由于买的非常少,我几乎没有关注这些币,直到看到当初买的币已经翻了 4 倍后才后知后觉,当周围充斥着赚钱暴富的声音时,我才意识到加密币已经没法被忽视了。

现在参与进去买币肯定是当韭菜被割,但是我又按耐不住想要参与的心,思来想去只能选择挖矿这种不赚钱的方式来间接参与币圈的狂欢。

什么是挖矿

如果你对加密货币还不了解,可以看看李永乐老师的这个科普小视频 比特币和区块链啥原理?矿机挖矿咋回事?李永乐老师讲比特币

挖矿简单的理解就是一种通过特定的挖矿软件,利用计算机的 CPU 或 GPU 的计算能力,给加密币生态提供算力来获得一些加密币作为报酬的行为。就像矿工去矿山里挖矿一样,你用你的计算机做矿工去挖加密币。

早期如十年前挖矿还是很容易的,利用普通的电脑 CPU 就可以挖出比特币来,但是随着加密币市场的蓬勃发展,现在普通电脑的 CPU 已经很难挖出比特币和以太坊了。

要理解这个事情需要先了解下加密币的工作原理,比特币在创立之处设定了 2100 万枚,这些初始的币就像一座金山需要由矿工来挖,矿工就是一堆参与其中的计算机。这么多矿工挖币就需要一种分发激励机制,比特币的设计者中本聪在 比特币:一种点对点电子货币系统 的论文中提到:

我们约定,区块中的第一笔交易是区块创建者开启一枚属于他的新货币的特殊的交易。这就增加了对支持网络的节点的激励,并提供了一种分发货币到流通领域的方法,因为这里没有中央机构来发行货币。新货币按固定量稳定地增加就像金矿矿工消耗资源并增加黄金到流通领域一样。对我们而言,消耗的是 CPU 时间和电力。

按上述设计,矿工通过一些计算可以获得区块创建打包的权利,作为奖励可以给这个矿工分发一些币,而这些币自然就流通到市场中了,相当于央行通过各大银行分发新发的货币。而创建区块的行为也相当于记账了,可以记录各种交易行为,这在银行体系里可以理解为完成支付与清算的过程。

这么多矿工都想要获得创建新区块的权利,如何选出拥有创建区块的权利?比特币的设计是采取工作量(PoW)证明机制,这个机制简单的理解就是比特币系统会出一道很难计算但是验证又很简单的题目,比如解一个用 SHA256 算法运算过的前面带 1 个或 N 个0的哈希值运算。当某矿工算出这个随机散列值,并向全网广播,就拥有了区块的记帐权,从而获得比特币奖励。

计算哈希值不仅需要很高的计算能力,还需要运气好。现代挖矿都不是单打独斗,而是参与到一个矿池中去。根据这篇 什么是矿池/矿池收益结算模式 文章:

矿池将区块难度分成很多难度更小的任务下发给矿工计算,矿工完成一个任务后将结果提交给矿池,叫提交一个 share 。假设全网难度要求 n 的值为 100,即前 100 个比特位为 0,矿池可能会给矿工分配一个任务,要求前 30 位为 0,然后再从所有提交的任务中,寻找有没有凑巧前 100 位为 0 的目标值。

矿池主要的收益分配模式有 PPS 与 PPLNS。PPS就是打工模式,你把算力卖给了矿池去获得固定收益,矿池自负盈亏;PPLNS更接近真实组队模式,成功挖到区块后,大家根据自己贡献的股份数量来分配收益。

比特币挖矿已经从早期的CPU、GPU发展到专用的 ASIC 芯片构建的矿池挖矿。这里简单说下 CPU 和 GPU 的区别,如下图:

CPU 可以理解为拥有数量稀少(普通电脑的一般有 4 到 8 个核心)可以执行各种复杂运算的计算单元,GPU 是拥有一堆(上千个)可以执行简单运算的计算单元。比特币的工作量证明的难题其实所需的运算很简单,只是需要大量的计算。因为这种原因在挖矿方面 CPU 显然是比不过 GPU 的。

当然一些币如门罗币(XMR)采用了 randomx 的工作量证明算法,该算法更适合 CPU 去做计算,所以挖矿采用 CPU 更合适。

怎么挖矿

了解了一些背景知识后我们就可以开始挖币了。比特币因为用 GPU 太难挖了,而以太坊还比较好挖,所以我这次是用 GPU 挖以太坊,用 CPU 挖门罗币。因为我没有英伟达的高端显卡,现在也不好买,所以只能用 AWS 的深度学习 GPU 服务器来挖矿了。

我参考了这篇 Mining Bitcoin and other cryptos on AWS 文章并加入了利用 CPU 挖门罗币的配置,这是我的 AWS CloudFormation 模版。所以只要在 AWS CloudFormation 上传了这个模版并配置了你的钱包地址就可以自动开始挖矿了。

需要注意的是 GPU 服务器是稀缺资源,所以 AWS 给每个账号分配的配额并不多。我的配额一开始是 0,所以需要在 AWS Service Quotas 中申请将 All G Spot Instance RequestsRunning On-Demand G instances 的配额调高。这个过程可能需要几天,因为是人工审核的,他们需要审查你的历史账单是否满足一定的需求。

我是开了 5 台 g4dn.xlarge 的服务器,每台竞价不超过 $0.16/h,目前的价格是 $0.1578/h,由于是 spot 实例,每天跑不满 24 小时,晚上价格高的时候是买不到服务器的。不过由于是自动竞价的,人工并不需要干预。

由于同时用 GPU 挖以太坊,用 CPU 挖门罗币,服务器的 GPU 和 CPU 都已经满负荷运转了。但是内存还有 12 GB,显存有 6 GB 空闲。

挖矿能赚钱吗

目前五台服务器满负荷运行一天的费用是 $0.1578 * 24 * 5 = $18.936,实际一天跑不满 24 小时,总费用比这个低一些。

我能赚多少钱呢?

这是以太坊的矿池监控页面,五台矿工一天能挖 0.00464 个以太坊,以目前的价格一天能赚 $17.54。

这是门罗币的矿池监控页面,五台矿工一天能挖 0.002 个,以目前的价格一天能赚 $0.92。

一天总成本 $18.936,总盈利 $18.46,基本达到无损挖矿了。经过半个月的挖矿,我也收到了以太坊矿池第一笔收益:

从上述截图看交易费用非常的便宜,可能是因为矿池自己打包区块所以交易费很便宜。最神奇的是当时收到这笔收益还价值 $92,在写这篇文章的时候这部分币已经价值 $106 了。

从我这半个月的挖矿经历看,由于加密币处于大牛市的行情,虽然挖矿的算力困难度已经达历史巅峰:

但是采用 AWS 的 spot 服务器实例,竟然达到了无损挖矿甚至略有收益的程度。再考虑到 AWS 账单是用美元结算,月底出账单用信用卡支付,之后真正还款已经是两个月之久了。相当于挖矿有两个月的免息期。只要你的服务器配额足够多,用这种方式参与加密币的交易也是一种可行的方式。

相比直接在交易所入金,可能面临交易所的各种骚操作、国内银行的监管、高昂的交易手续费等一系列问题,用服务器挖矿相比还是很简单的,适合小赌怡情,甚至可以理解为一种参与币圈一级市场的定投行为。

进阶阅读

这篇文章写完之际,因马斯克的言论狗币又大跌了。

更新时间: 21个月前 版本: 8171f612c