比特币并不是从某个服务器文件当中直接生成出来的,而是矿工通过算力竞赛完成工作量证明,打包全网交易区块之后,由网络发放出来的加密奖励,整个挖矿过程本质上就是维护比特币分布式账本,同时完成新币发行的过程。很多新手会误以为挖矿就是在网上寻找隐藏的比特币文件,实际上挖矿产出新币只是这套记账机制附带产生的激励,保障全网转账安全、防止账本被篡改,才是挖矿最核心的作用。比特币总量永久锁定在2100万枚,不会无限增发,区块奖励每隔四年减半一次,随着奖励不断缩减,未来矿工的收益将会主要依靠用户转账支付的手续费来获取。

挖矿正式开始之前,全网用户发起的比特币转账交易会被广播至点对点网络,进入一个叫做内存池的等待队列当中,所有矿工节点都可以看到这些还没有确认的交易订单。矿工并不会随机挑选交易,出于收益最大化的考量,一般会优先选取手续费更高的转账记录,在区块存储空间上限之内尽可能多地打包交易。在打包交易的时候,矿工还要额外生成一笔特殊的Coinbase交易,这笔交易排在区块当中所有交易的第一位,作用就是把本次挖矿得到的比特币奖励,发送到矿工自己的钱包地址,没有成功算出区块的矿工,就没有资格生成这笔奖励交易。

交易挑选完毕后,矿工就要组装生成候选区块,区块可以简单分为区块头和区块主体两大部分。区块主体存放刚刚筛选出来的转账记录,区块头则保存着上一个区块的哈希值、所有交易生成的默克尔根、当前时间戳、全网难度目标以及一个可以不断改动的随机数Nonce。其中SHA‑256哈希运算是挖矿的核心技术,哈希算法拥有不可逆的特性,没有任何办法反向推算出目标结果,矿工唯一可行的解题方式就是不停更换随机数,一遍一遍重复计算区块头哈希值,直到运算结果的哈希字符开头拥有足够多数量的零,达到网络给出的难度标准,才算成功解开密码难题。
挖矿解题完全属于概率比拼,并不存在捷径,矿工每秒能够执行哈希运算的次数就是算力,算力越高,率先算出合格结果的概率也就越大。比特币网络拥有一套自动难度调节机制,每挖出2016个区块,大约两周时间,系统就会统计全网总算力,自动上调或者下调挖矿难度,以此严格保证不管参与挖矿的矿工数量如何变化,平均每10分钟产出一个新区块的节奏不会被打乱。早期普通家用电脑CPU就能够参与挖矿,而现在单台矿机算力已经远远不够和全网庞大算力竞争,绝大多数矿工都会选择加入矿池,把自身算力合并在一起共同挖矿,挖到区块之后再按照每个人贡献算力的比例瓜分奖励。

当一名矿工率先算出满足条件的哈希值之后,就会立刻把这个新区块向全世界比特币节点广播,全网其余矿工收到区块之后不会再重复进行漫长的哈希运算,而是几秒之内就可以快速校验这个区块是否合法。经过全网节点验证无误,新区块正式被添加到区块链账本末尾,这条账本就又延长了一节,成功打包区块的矿工即可收获对应的比特币奖励与区块内全部交易手续费,之后所有矿工就会立刻开启下一轮新区块的算力竞赛,新一轮挖矿循环就此启动。
