比特币挖矿如何让历史交易难以篡改
比特币挖矿,简单说就是矿工把待确认交易打包成区块、反复计算区块头哈希以满足网络难度目标的过程。按比特币开发者文档的口径,区块链是“带时间戳、有顺序的交易记录”,用于防止双重支付和修改既往交易记录。挖矿之所以能保护历史交易,关键在于链式哈希把每个区块锁进前一个区块的历史,而工作量证明让改写这段历史需要持续付出算力代价。
先看链式结构。每个区块的区块头都保存前一区块头的哈希值,从而把区块首尾相连。文档明确指出,这种安排“确保交易不能被修改,除非同时修改记录它的区块以及之后的所有区块”。原因很直接:改动一笔旧交易会改变该区块的默克尔根,进而改变区块头哈希;区块头一变,下一个区块里保存的“前一区块头哈希”就对不上,篡改必须一路向后重算。
交易本身也被串起来。钱包软件看起来是“地址之间转账”,但比特币实际是从一笔交易流向下一笔交易:每笔交易的输入,花费的是更早交易的输出。某个交易的每个输出在链上只能被当作输入使用一次,再次引用就是被禁止的双重支付。输出与已签名交易的哈希(TXID)绑定,因此要伪造一笔“历史支出”,不仅要改交易内容,还要让后续引用它的交易全部自洽。
挖矿在这套结构上加了工作量证明。矿工要找到一个区块头哈希,使其低于网络设定的目标值,这需要大量试算(通用原理);找到后,区块才被广播,其他完整节点按共识规则独立验证并决定是否接受。文档说明,每个完整节点各自保存一条只包含其验证过的区块的链;当多个节点拥有相同区块时,它们处于共识之中。篡改者若想改写历史,不仅要重算被改区块及其后所有区块的哈希,还要在算力竞争中让网络多数节点接受这条新链,成本随确认深度增加而上升(通用原理)。
这一机制也有明确边界。它保护的是已被后续区块充分确认的记录,而非刚刚广播、尚未打包的交易;它依赖多数算力不联合作弊这一假设(通用原理)。文档所述的完整节点独立验证、共识规则等条件,适用于运行相应共识规则的比特币完整节点网络。理解这一点,就能明白挖矿防篡改不是某个机构的承诺,而是链式哈希、交易引用关系与工作量证明共同构成的验证结构。