一座没有主人的时钟
想象一个本该每十分钟响一次的厨房计时器。麻烦在于:掌勺的人总在变。有时灶台前只有一个人,有时有一万个,而且手快的厨师每年都换上更利的刀。要是这计时器从不调整,一群手快的厨师就会让它每十秒响一次。比特币面对的正是这个问题。它想要新区块永远大约每十分钟出现一次——可争着产出区块的机器数量却剧烈起伏。它的答案,是一个自动旋钮,它会重新调校谜题,让这十分钟的节奏无论来的是谁都能保持住。
产出区块的这场比赛就是挖矿,它靠工作量证明运转:矿工一个数一个数地试,直到某个数让区块的哈希落到目标值之下。把目标值调低,谜题就更难;调高,就更容易。这十分钟的时钟,拧的正是这一个旋钮。
重定难度:自我调校的旋钮
比特币每 2016 个区块核对一次它的时钟——按每个十分钟算,这本该正好花两周。每一批结束后,网络会把这 2016 个区块实际花的时间,和那个两周的理想值作比较,然后按比例重设挖矿难度。如果这一批一周就出完,说明矿工跑得比预期快了一倍,于是谜题的难度翻倍。如果拖到了四周,难度就减半。每个人各自跑同一套算术,得出同一个新目标值——没有委员会,也不用投票。
every 2016 blocks: actual_time = timestamp(last) - timestamp(first) expected_time = 2016 * 10 minutes (= 2 weeks) new_target = old_target * (actual_time / expected_time) # blocks came too FAST -> actual < expected -> target shrinks -> harder # blocks came too SLOW -> actual > expected -> target grows -> easier
奖励,以及减半
为什么会有人烧着电去抢赢这场比赛?因为赢家有钱拿。找到有效区块的矿工,可以添加一笔特殊的交易,叫做 coinbase,它凭空铸出全新的比特币,付给矿工自己。这笔新铸出的金额就是区块补贴,世上每一枚比特币,最初都是这样进入世界的。
精彩之处在这里。补贴并非固定不变——它每 210000 个区块就减半一次,这个事件叫做减半。按一个区块十分钟算,210000 个区块大约要花四年。它在 2009 年从每个区块 50 枚比特币起步,降到 25,再到 12.5,再到 6.25,就这样一级一级往下走。由于这个时间表是写死的、每次又是按几何比例削减,将来会存在的总量收敛于一个硬性的上限:略低于 2100 万枚,大约在公元 2140 年达到。
halving every 210,000 blocks (~4 years) 2009 block subsidy = 50.0 BTC 2012 = 25.0 2016 = 12.5 2020 = 6.25 2024 = 3.125 ... -> 0, around year 2140 sum of all subsidies -> ~21,000,000 BTC (a hard cap)
从补贴到手续费:安全预算
矿工的全部奖励其实是两部分相加:区块补贴,加上这个区块里装的所有交易的手续费。用户给每笔交易附上一点手续费,去争抢有限的区块空间,胜出的矿工把这些手续费连同新铸出的币一并收入囊中。今天补贴是其中大得多的那一块——但每一次减半都让它缩水,终有一天它会归零。
这两个来源合在一起,构成了网络的安全预算——矿工争抢的总奖金,也就是守护这条链的真实世界努力的总量。这套设计深处押的是一场交接:随着补贴在未来一个世纪里慢慢趋近于零,手续费理应成长为主要奖励,把奖金维持得足够大,让诚实挖矿仍然值得,让改写历史依旧贵得离谱。
这一切的节奏与奖励都靠真实的电力运转,而那正是让比特币「攻击起来很贵」的字面意义上的代价。把时钟和减半讲清楚之后,后面的一篇会打开那 2100 万枚的固定上限本身——是什么让它可信,又为什么没人能悄悄越过它多铸出一枚币。