7.BTC-挖矿

挖矿过程的转变

第一阶段:CPU挖矿时代(2009年 - 2010年中)

  • 技术与工具:在这个阶段,矿工就是比特币的创造者中本聪和一小撮早期的密码学爱好者。他们使用的工具就是我们日常使用的个人电脑的中央处理器(CPU)。中本聪发布的第一个比特币客户端就内置了CPU挖矿的功能。
  • 算力规模:极低。刚开始只有中本聪一台电脑在挖,算力仅为几 KH/s(每秒千次哈希)。随着更多爱好者加入,逐渐增长到 MH/s(每秒百万次哈希)级别。
  • 时代特征
    • 高度去中心化:任何拥有普通电脑的人都可以下载软件,点击“开始挖矿”,并有实际的机会挖到区块。
    • 公平的起点:这是一个充满理想主义色彩的时期,参与者主要是出于对技术的兴趣和支持。
    • 终结:2010年,开发者们发现,用计算机的显卡来挖矿,效率远高于CPU。CPU挖矿的时代就此迅速走向终结。

第二阶段:GPU挖矿时代(2010年中 - 2012年)

  • 技术与工具:开发者发现,用于处理图形和复杂数学运算的图形处理器(GPU,即显卡),其内部拥有成百上千个并行处理核心,非常适合进行SHA-256这种高度重复性的哈希计算。其效率是CPU的几十倍甚至上百倍。
  • 算力规模:全网算力从 MH/s 迅速跃升至 GH/s(每秒十亿次哈希),并最终迈向 TH/s(每秒万亿次哈希)的门槛。
  • 时代特征
    • “矿工”形象诞生:人们开始组装由多张高性能显卡组成的“矿机”(Mining Rig)。“挖矿”从一个后台程序,变成了一个需要专门硬件投入的、看得见的产业。
    • 个人参与门槛提高:普通笔记本电脑的算力在专业矿机面前已经微不足道。
    • 终结:为了追求极致的效率,更专门化的芯片被开发出来。

第三阶段:FPGA挖矿时代(2011年末 - 2013年)

  • 技术与工具:**现场可编程门阵列(FPGA)**是一种可以被用户重新配置电路的半定制芯片。开发者可以为其编写专门针对SHA-256算法的程序,使其在性能和能耗上都优于通用的GPU。
  • 算力规模:全网算力稳步进入 TH/s 时代。
  • 时代特征
    • 专业化加深:FPGA的开发和使用门槛远高于GPU,挖矿进一步向拥有专业电子工程知识的群体集中。
    • 昙花一现:FPGA虽然高效,但它只是一个过渡。因为一个终极武器即将登场,它将彻底改变整个挖矿行业的格局。

第四阶段:ASIC挖矿时代(2013年至今)

  • 技术与工具专用集成电路(ASIC) 是这场竞赛的终局。ASIC是一种为了单一、特定目的而从头设计的芯片。用于比特币挖矿的ASIC,其内部电路被永久性地固化,唯一能做也只会做的事情就是SHA-256哈希运算
  • 算力规模:ASIC的出现带来了算力的爆炸式增长。全网算力在短时间内从 TH/s 跨越到 PH/s(每秒千万亿次哈希),并最终进入了今天的 EH/s(每秒百京亿次哈希)时代。1 EH/s = 1000 PH/s = 100万 TH/s。
  • 时代特征
    • 旧时代终结:ASIC矿机一经问世,其效率比FPGA高出数个数量级。CPU、GPU、FPGA挖矿瞬间变得毫无利润,被彻底淘汰出局。
    • 资本密集型产业:ASIC芯片的设计和制造需要巨额的研发投入和资本。挖矿从极客的爱好,彻底转变为一个由少数几家矿机制造商(如比特大陆、嘉楠耘智)和拥有巨量资本、能够获得廉价电力的专业矿场主导的工业化资本密集型产业。
    • 持续的效率竞赛:ASIC时代并未终结竞争,而是将竞争转移到了能效比(J/T,即每万亿次哈希消耗多少焦耳的能量)上。芯片制程从几十纳米一路缩减到如今的5纳米、3纳米,不断追求在消耗更少电力的同时提供更多算力。

替代性挖矿谜题 (Alternative Mining Puzzle)

比特币PoW机制有一些问题:

  • 巨大的能源消耗:被认为是“无意义”的哈希计算消耗了海量电力。
  • ASIC导致的中心化:专业的ASIC矿机使得挖矿变成了一个资本密集型产业,导致算力向少数硬件制造商和大型矿场集中。
  • “无用的工作”:除了保障网络安全,挖矿计算本身没有产生任何其他有价值的副产品。

因此,各种“替代性挖矿谜题”被设计出来,它们各自有不同的目标和实现路径。主要可以分为以下几大类:

1. 目标:抵抗ASIC,促进去中心化

这类谜题的目标是让普通用户也能用通用硬件(如CPU或GPU)参与挖矿,从而抵抗被专业ASIC矿机垄断的中心化趋势。它们的核心技术是内存困难型” (Memory-Hard) 算法

  • 设计思路:ASIC芯片擅长的是进行纯粹的、重复的计算。而“内存困难型”算法在计算过程中,不仅需要计算能力,还需要大量、快速的内存(RAM)访问。由于在芯片上集成大规模高速内存的成本极高且技术复杂,这就大大增加了制造ASIC的难度和成本,从而保护了通用硬件(如GPU,其拥有高带宽的显存)的挖矿优势。
  • 典型例子
    • Scrypt算法
      • 使用者:莱特币 (Litecoin, LTC)
      • 原理:它在计算过程中,需要生成一个巨大的伪随机数据集,并需要频繁地从中读取数据。这使得计算速度的瓶颈从纯粹的CPU计算能力,转移到了内存的访问速度上。
    • Ethash / ProgPoW算法
      • 使用者:以太坊经典 (Ethereum Classic, ETC) 和曾经的以太坊。
      • 原理:挖矿时需要读取一个叫做DAG的、不断增大的巨大数据集。这个数据集必须被加载到显存中,使得拥有大显存的GPU成为最高效的挖矿工具。

2. 目标:追求能源效率,摆脱工作量证明

这类方案认为,任何形式的PoW“谜题”都是能源上的浪费。它们干脆放弃了“挖矿竞赛”的模式,转而采用基于经济博弈的共识机制。

  • 设计思路:不再通过消耗能源来换取记账权,而是通过质押经济资源(代币)来获得记账权,并用经济惩罚来约束行为。
  • 典型例子
    • 权益证明 (Proof-of-Stake, PoS)
      • 使用者:以太坊 (Ethereum), Cardano (ADA) 等。
      • 原理:节点的记账权是通过其持有并“质押”(Staking)的代币数量来随机分配的。你质押的币越多,被选中创建新区块的概率就越大。如果你作恶(比如试图双花),你质押的代币将被系统罚没(Slash)。安全性来自于作恶的经济成本,而非能源成本。据估计,能耗仅为PoW的0.05%甚至更低。

3. 目标:让工作变得“有用” (Proof-of-Useful-Work)

这类谜题试图将用于挖矿的巨大算力,引导到对人类有益的科学或商业计算上。

  • 设计思路:用一个有实际价值的、可验证的计算问题,来替代无意义的哈希碰撞。
  • 典型例子
    • Primecoin (素数币):其工作量证明就是寻找一种特殊的、被称为“坎宁安链”的素数链。这为基础数学理论的研究贡献了数据。
    • Folding@home:一些小型项目尝试将挖矿算力与斯坦福大学的Folding@home项目结合,用于模拟蛋白质折叠,以帮助研究癌症、阿尔兹海默症等疾病。
  • 挑战:设计一个好的“有用工作证明”非常困难。这个“谜题”必须同时满足多个条件:1) 答案能被快速验证;2) 难度可以轻松调整;3) 不容易被作弊;4) 能够被分割成无数个小任务。这些条件与许多科学计算问题的性质是相悖的。

矿池 (Mining Pool)

随着挖矿难度越来越高,单个矿工挖到区块的概率变得微乎其微,其收入变得极不稳定,挖矿行为从一种投资变成了纯粹的赌博。在比特币的最初几年(CPU/GPU挖矿时代),网络总算力很低,挖矿难度也相应较低。一个拥有不错显卡的个人爱好者,通过自己的设备独立挖矿(Solo Mining),在合理的时间内(比如几周或几个月)是有可能幸运地挖到一个区块,从而获得全部的区块奖励(当时是50或25个BTC)。这就像在一个小村庄里买彩票,中奖的机会还算可观。然而,随着ASIC专业矿机的出现,全网总算力呈指数级爆炸式增长,挖矿难度也随之飙升。这就导致了个人矿工面临的困境:

  • 极低的成功概率
    • 在今天的网络环境下,一台顶级的ASIC矿机独立挖矿,平均需要几十年才可能找到一个区块。
  • 极高的收益方差 (High Variance)
    • 这意味着一个个人矿工的收入模式是 {0, 0, 0, ..., 0, 0},可能在数十年后突然出现一个 +3.125 BTC
    • 但与此同时,他每天都在支付真实的、持续不断的电费成本
    • 这种“要么一无所有,要么一夜暴富(但可能永远不会发生)”的模式,对于任何理性的经济参与者来说都是不可接受的。它无法形成一个可持续的商业模式。

面对这种情况,个人矿工们迫切需要一种方法来平滑他们的收入,降低不确定性,将不可预测的巨额奖励,转化为稳定、持续的每日收入。

矿池是一个开放的、协调性的网络服务。它允许来自世界各地的无数个小型矿工,通过网络将他们各自的、微不足道的算力连接在一起,共同组成一个巨大的、虚拟的“超级矿工”,然后以这个整体的名义去参与挖矿竞赛。

矿池的具体结构如下:

  • 任务分配:矿池的运营者会运行一个服务器,它会从网络中获取区块模板,然后将稍微不同的计算任务(比如分配不同的ExtraNonce范围)分发给池内的每一个矿工。这确保了大家不会做重复的无用功。
  • 提交“有效份额” (Share)
    • 这是矿池运作的核心。单个矿工的算力要找到符合比特币网络难度目标的解(中大奖)依然很难。
    • 因此,矿池会设定一个远低于网络难度的、内部的“小目标”
    • 当一个矿工的计算结果恰好满足了这个“小目标”时,虽然它不足以构成一个有效的区块,但它依然是一个有价值的计算结果。这个结果被称为**份额”(Share)****。
    • 矿工会把这个“份额”提交给矿池。“份额”本身没有奖励,但它向矿池证明了“我没有偷懒,我确实在贡献我的算力”。
  • 发现区块与奖励分配
    • 池内成千上万的矿工每秒都在提交海量的“份额”。
    • 迟早有一次,某个矿工提交的一个“份额”会足够幸运,它不仅满足了矿池的“小目标”,同时也恰好满足了比特币网络的那个极高的难度目标。
    • 矿池就成功挖出了一个区块。
    • 区块奖励(例如 3.125 BTC + 手续费)会直接发送到矿池运营者的地址。
    • 矿池运营者在扣除少量服务费(通常是1-4%)后,会根据一套公平的分配算法(如PPS, PPLNS等),按照每个矿工在这一轮挖矿中提交的“份额”数量,将奖励按比例分配给所有做出贡献的矿工。

矿池架构

1. 中心化矿池 (Centralized Pools)

这是我们通常意义上所说的“矿池”,例如 Foundry USA, AntPool 等。

  • 组织方式:客户端-服务器架构 (Client-Server)
    • 存在一个强大、可信的中心化运营方(矿池运营者)
    • 运营方运行着一个高性能的服务器集群和比特币全节点。
    • 全世界的矿工,作为“客户端”,将自己的矿机连接到这个中心服务器上。
  • 工作流程:
    1. 模板创建:由矿池运营者决定要挖哪个区块,以及这个区块里应该包含哪些交易。他创建好“区块模板”。
    2. 任务分配:运营者将不同的计算任务(例如,不同的ExtraNonce范围)分配给成千上万的矿工客户端。
    3. 份额提交:矿工们进行哈希计算,并将找到的有效**份额”(Share)**提交给中心服务器。
    4. 中心化记账:中心服务器负责验证所有矿工提交的份额,并记录下每个矿工的贡献度。
    5. 奖励分配:当某个矿工幸运地找到了一个真正的区块时,区块奖励会先打到矿池运营者的地址。然后,运营者在扣除服务费后,根据自己记录的贡献度账本,将奖励按比例分配给所有矿工。
  • 优点:
    • 简单易用:对矿工来说,只需简单的配置,连接上服务器地址即可,无需运行全节点。
    • 收益稳定:由于汇集了巨大的算力,大型中心化矿池几乎每天都能挖到很多区块,因此可以为矿工提供非常稳定、可预测的每日收益。
  • 缺点:
    • 权力中心化:矿池运营者拥有巨大的权力。他可以决定打包哪些交易(可能审查特定交易)、如何分配奖励,甚至在极端情况下(如果与其他大矿池串通)可以利用算力作恶。
    • 单点故障:如果矿池的中心服务器因为技术故障或被攻击而宕机,所有连接于此的矿工都会立刻停止工作。
    • 信任要求:矿工必须信任运营者不会卷款跑路或克扣奖励。

2. 去中心化矿池 (Decentralized Pools / P2P Pools)

为了解决中心化矿池的弊端,社区发展出了一种去中心化的替代方案,其中最著名的是 P2Pool

  • 组织方式:点对点网络 (Peer-to-Peer)
    • 没有中心服务器,没有运营方。
    • 所有参与的矿工直接相互连接,形成一个独立的P2P网络。
  • 工作流程:
    1. 去中心化模板:所有矿工节点共同协作,去中心化地构建区块模板。
    2. 共享链 (Sharechain):P2Pool创建了一条独立的、难度远低于比特币主链的“共享区块链”。矿工们共同挖这条“共享链”,他们挖出的每一个“共享区块”就相当于向整个矿池提交了一个“份额”。
    3. 去中心化记账:每个矿工的贡献度(挖出了多少共享区块)被公开、透明地记录在这条共享链上,所有参与者共同见证和验证。
    4. 去中心化奖励:当某一个“共享区块”的哈希值足够幸运,同时也满足了比特币主网的难度要求时,一个真正的比特币区块就被找到了。这个区块的Coinbase交易被预先设计成一个复杂的多方支付交易,它会直接将区块奖励按照共享链上的贡献度,自动地、无需通过中间人地分配给所有做出贡献的矿工
  • 优点:
    • 高度去中心化:消除了中心运营方,杜绝了单点故障和运营者作恶的风险。
    • 抗审查:由于交易打包是集体决策,任何单一实体都无法审查交易。
    • 无需信任:奖励分配由协议自动执行,无需信任第三方。
  • 缺点:
    • 技术复杂:对于矿工来说,设置和维护比中心化矿池要复杂,通常需要自己运行一个全节点。
    • 收益波动可能更大:由于P2P矿池的总算力通常远小于顶级中心化矿池,其挖到区块的频率可能较低,导致短期收益不如大矿池稳定。
    • 市场接受度低:由于上述原因,P2P矿池在历史上一直难以吸引大量算力,规模效应不如中心化矿池。

矿池中的攻击

在矿池中,矿工可以“挖到区块后故意扔掉”,这是一种成本高昂的攻击手段。攻击者的目的不再是自身的直接盈利,而是破坏和伤害

A. 攻击特定矿池 (破坏竞争对手)

一个怀有恶意的实体(比如一个竞争对手的矿池)可以采用这种策略来攻击一个特定的目标矿池。

  • 攻击方式
    1. 攻击者将自己掌握的巨大算力接入目标矿池A
    2. 他像正常矿工一样工作,并利用其强大算力,率先找到了一个属于矿池A的有效区块。
    3. 关键一步:他并把这个区块提交给矿池A,而是直接将其丢弃。
    4. 与此同时,网络中的另一个诚实矿池B,挖出了下一个区块并成功广播。
  • 攻击造成的结果
    • 对矿池A而言:它本应获得一次区块奖励,但因为攻击者的破坏而错失了。它的总收入减少了,其“幸运值”(Luck,衡量实际出块与理论出块比例的指标)会显得非常低。
    • 对池内其他诚实矿工而言:他们也因为这次攻击而失去了一次分享奖励的机会,他们的挖矿收益也随之降低。
  • 攻击者的目的:通过这种“只出力,不出块”的破坏,让目标矿池A看起来“运气很差”、“收益率低”,从而打击池内其他矿工的信心,诱使他们离开矿池A,转投到别的矿池(甚至可能就是攻击者自己的矿池)。这是一种商业上的“企业破坏”行为。

B. 攻击整个比特币网络 (网络稳定性攻击)

如果一个实体拥有全网相当大比例的算力(例如20%-40%),但又不足以发动51%攻击,他可以采取这种方式来伤害整个网络。

  • 攻击方式:该实体正常挖矿,但只要挖到区块,就立即全部丢弃
  • 攻击造成的结果
    • 有效算力降低:这相当于将他所掌握的全部算力从网络中“凭空抹掉”了。
    • 出块时间延长:全网的总有效算力突然下降,但在下一次难度调整之前,挖矿难度不变,这将导致网络的平均出块时间显著延长。
    • 网络拥堵:出块变慢意味着交易处理能力下降,会导致网络拥堵和手续费上涨。
  • 攻击者的目的:这种攻击不会给攻击者带来任何直接的经济收益,反而会消耗他巨额的电费。其唯一的目的就是破坏比特币网络的稳定性、降低其可用性,从而打击人们对整个系统的信心。这是一种成本极高的、损人不利己的攻击。

51%攻击

拥有51%算力的本质是:攻击者生成新区块的平均速度,超过了网络中所有其他诚实矿工的总和。 这使得他有能力“重写”近期的交易历史。

1. 双重支付攻击 (Double-Spending Attack)

这是51%攻击最主要,也是最直接的获利方式。

  • 攻击流程
    1. 准备阶段:攻击者(我们称之为“恶意矿池”)控制着51%的算力。
    2. 公开交易 (Tx1):攻击者向一个接收方(比如一个大型加密货币交易所)发送一笔大额比特币,例如1000 BTC。
    3. 秘密挖矿:在广播Tx1的同时,攻击者并不会在包含了Tx1的公开主链上继续挖矿。相反,他会从Tx1发生前的那个区块开始,利用自己的强大算力,秘密地挖一条“分叉链”。在这条私有的分叉链上,他创建了一笔冲突交易 (Tx2),将同样的1000 BTC发送回他自己的另一个钱包地址。
    4. 等待与“赛跑”:攻击者耐心等待,让交易所看到公开主链上的Tx1,并获得足够多的确认(比如6次确认)。一旦交易所确认收款,攻击者就会立刻将在交易所的资产(兑换成法币或其他币种)提走。
    5. 发布“欺诈链”:由于攻击者拥有超过50%的算力,他的私有链增长速度在概率上会超过公开的诚实链。一旦他的私有链变得比诚实链更长,他就会立刻将这条链广播到全网。
    6. 网络“被骗”:根据比特币的“最长链规则”**,所有诚实的节点在接收到这条更长的链后,会认为它才是“真正”的历史。它们会抛弃原来那条较短的诚实链,转而接受攻击者的链。
  • 最终结果
    • 原来包含Tx1的那些区块被作废,Tx1从历史记录中消失了。
    • 包含了Tx2的欺诈链成为了新的共识。
    • 交易所的1000 BTC充值记录被逆转,但攻击者已经提走了资产。攻击者成功地将同一笔钱花了两次,而交易所则蒙受了巨大损失。

2. 交易审查与封锁 (Transaction Censorship / Blocking)

由于攻击者控制了大部分区块的生产权,他可以实施交易审查。

  • 具体行为:攻击者可以选择永远不将某些特定的交易(例如,来自某个他不喜欢的人的地址,或者发往某个特定组织的地址)打包进他自己挖出的区块中。
  • 后果:虽然网络中其余49%的诚实矿工仍然可能会打包这些交易,但由于攻击者出块的速度更快,他可以持续地“孤立”掉那些包含了他想审查的交易的诚实区块。这将导致被审查的交易极难获得确认,甚至在事实上被永久封锁,无法使用。

3. 破坏其他矿工的收益

攻击者可以利用自己的算力优势,来系统性地作废其他所有诚实矿工挖出的区块。

  • 具体行为:每当一个诚实的、小矿池幸运地挖出一个区块并广播时,51%的攻击者可以立即挖一个属于自己的区块,并利用自己的算力优势构建一个更长的链,使得那个诚实矿工的区块变成“孤块”(Orphan Block)。
  • 后果:这将导致网络中除了攻击者自己,其他所有矿工都无法获得任何区块奖励。这会摧毁挖矿的经济生态,迫使诚实矿工关闭矿机,从而让攻击者的算力占比进一步提高,巩固其垄断地位。

同时,51%攻击不能:

  • 凭空创造比特币:他不能修改每个区块固定的区块奖励数量。任何不符合共识规则的区块都会被全网所有节点拒绝。
  • 偷走别人的钱:他不能伪造别人的签名,去花费一个不属于他的地址上的比特币。数字签名是由私钥生成的,与算力无关。
  • 撤销非常古老的交易:攻击的成本随着交易历史的深度呈指数级增长。要篡改一个几周、几个月甚至几年前的交易,需要重新计算那之后所有的工作量,这在经济和时间上都是完全不可能的。51%攻击主要对近期的、确认数较少的交易构成威胁。