Bitcoin

区块链如何记录交易?比特币区块结构、哈希算法和工作量证明详解(2026)

CoinTrailHub
2026-08-04
1 阅读
12 分钟阅读
区块链如何记录交易?比特币区块结构、哈希算法和工作量证明详解(2026)
本文目录

上一篇文章讲了比特币的去中心化网络、分布式账本和共识机制的整体逻辑。

现在我们来拆得更细一点:一个区块里面到底存了什么?矿工到底在"算"什么?为什么说一笔交易被确认 6 次之后就很难被推翻?

这三个问题,是理解比特币区块链运行机制的关键。

本文会把比特币区块的"内部构造"拆开来看,用生活化的类比讲清楚哈希算法、Merkle Tree 和工作量证明。不讲密码学数学推导,只讲概念和逻辑。

读完你将理解:

  1. 比特币区块的内部结构——区块头里藏着什么信息;
  2. UTXO 模型——为什么比特币不记录"余额",而是记录"未花费的输出";
  3. Merkle Tree 是什么,为什么要用它来组织交易;
  4. SHA-256 哈希如何构成比特币的安全基石;
  5. 工作量证明(PoW)的"数学题"到底是什么;
  6. 为什么一笔交易被确认越多越安全。

本文是技术原理科普,不构成任何投资建议。

建议先阅读前一篇 比特币怎么运行?新手一次看懂去中心化网络、分布式账本和链上共识(2026),再读这篇会更顺畅。

文章目录

  • 一个比特币区块里有什么
  • 区块头详解:80 字节的安全基石
  • 重要前置概念:比特币不记录"余额",只记录 UTXO
  • 哈希算法是什么,为什么比特币用它
  • Merkle Tree:怎么高效验证一笔交易
  • 工作量证明:矿工到底在"算"什么
  • 最长链原则:出现分叉怎么办
  • 51% 攻击的成本到底有多高
  • 一张表总结:比特币区块链的关键参数
  • 常见问题 FAQ
  • 总结

一个比特币区块里有什么

一个比特币区块,可以分成两部分:区块头交易列表

区块头(Block Header)

只有 80 字节,非常小,但包含了验证整个区块所需的全部核心信息:

字段 大小 存的是什么 作用
版本号 4 字节 区块格式版本 兼容性标记
前一区块哈希 32 字节 上一个区块的 SHA-256 哈希值 把区块串成链的关键
Merkle Root 32 字节 所有交易的"汇总指纹" 高效验证交易是否存在
时间戳 4 字节 区块生成的大致时间 配合难度调整
难度目标 4 字节 当前网络要求的难度值 控制出块速度
随机数(Nonce) 4 字节 矿工不断改的这个数字 PoW 挖矿的核心

比特币区块结构:区块头和交易列表

交易列表(Transaction List)

区块头下面是交易列表——就是这个区块打包的所有比特币转账记录。

一个区块通常包含几百到几千笔交易。

简单理解:

区块头 = 这页账本的"页眉"(页码、上一页摘要、本页内容指纹)

交易列表 = 这页账本的"正文"(实际转账记录)

区块头详解:80 字节如何支撑整个网络

区块头虽然只有 80 字节,但它的设计非常精妙。这六个字段各司其职:

前一区块哈希:链式结构的灵魂

这个字段里存的是上一个区块的区块头经过两次 SHA-256 哈希计算后的结果

意义在于:如果有人改了 100 个区块之前的一笔交易,那个区块的哈希就变了 → 下一个区块里存的"前一区块哈希"就对不上了 → 再下一个也对不上 → 整整 100 个区块全部作废,需要重新计算。

这就是"链"的本质——用哈希指针把历史记录锁死。

Merkle Root:交易的"集体指纹"

Merkle Root 是把当前区块里所有交易"压缩"成一个 32 字节哈希值的结果。

它的作用不是防篡改,而是让任何人都能快速验证"某笔交易是否在这个区块里",不需要下载整个区块。

具体原理后面细讲。

难度目标:控制出块节奏

难度目标(bits)是一个压缩格式的数字,决定了矿工要找到的哈希值必须小于什么范围。

难度不是固定的——比特币网络每 2016 个区块(约两周)自动调整一次,目标是让平均出块时间稳定在 10 分钟左右

如果过去 2016 个区块只用了 9 天就挖完了(算力太强),难度会自动上调。如果用了 15 天(算力变弱),难度下调。

这是一个完全自动化、不依赖任何人判断的自调节系统——打开 Mempool.space 这类区块浏览器,就能看到当前难度值和全网算力在根据最新出块情况实时跳动。

Nonce:矿工竞赛的"答案"

Nonce 是一个 32 位的整数(0 到约 42 亿)。矿工的工作就是不断换 nonce 的值,把区块头丢进 SHA-256 算两次,看结果是否小于难度目标。

由于 SHA-256 的输出看起来完全随机,矿工只能暴力枚举——试运气。

4 字节的 nonce 空间(约 42.9 亿种可能)对现代 ASIC 矿机来说瞬间就能遍历完。因此矿工不会只改 nonce——他们还会修改 coinbase 交易中的 extraNonce 字段、调整交易顺序、或微调时间戳,这些操作都会改变 Merkle Root,从而获得全新的搜索空间,相当于把"彩票号码池"扩展到了几乎无限大。

重要前置概念:比特币不记录"余额",只记录 UTXO

在继续讲哈希和 Merkle Tree 之前,有一个关键概念必须先厘清——很多新人以为比特币像银行一样,给每个地址维护一个"账户余额":

错误理解:
Alice 账户: 10 BTC → 转出 2 BTC → 余额 8 BTC
Bob 账户:   0 BTC  → 收到 2 BTC → 余额 2 BTC

比特币不是这样工作的。 比特币没有"账户余额",只有 UTXO(未花费交易输出,Unspent Transaction Output)

UTXO 是什么

把 UTXO 理解成"纸币"最直观:

  • 你钱包里不是"一个数字余额",而是若干张不同面额的纸币
  • 每张纸币(UTXO)来自之前某笔转账,面额固定
  • 你要支付 2 BTC 时,需要拿出一张或多张总额 ≥ 2 BTC 的纸币
  • 如果拿出了一张 5 BTC 的 UTXO,支付 2 BTC 后,剩下的 3 BTC 会以找零 UTXO 的形式回到你的地址

比特币 UTXO 找零示意图

一个具体例子

Alice 拥有两个 UTXO:
  UTXO-A: 3 BTC(来自上个月的一笔转账)
  UTXO-B: 1 BTC(来自上周的一笔转账)

Alice 想给 Bob 转 2.5 BTC:

→ 交易输入:
  消费 UTXO-A(3 BTC)
  消费 UTXO-B(1 BTC)
  合计输入:4 BTC

→ 交易输出:
  输出1:2.5 BTC → Bob 的地址(支付)
  输出2:1.4 BTC → Alice 的找零地址(4 - 2.5 - 0.1 手续费)
  合计输出:3.9 BTC(0.1 BTC 是矿工手续费)

UTXO-A 和 UTXO-B 在这笔交易中被完全花掉(销毁),同时创建了两个新的 UTXO——一个给 Bob,一个找零给 Alice。旧的 UTXO 从此不存在了。

为什么用 UTXO 而不是账户余额模型

对比维度 UTXO 模型(比特币) 账户余额模型(以太坊)
记录方式 记录未花费的"纸币"集合 记录每个地址的余额数字
验证方式 只需检查输入 UTXO 是否未被花费 需要检查余额是否足够
并行处理 天然支持——不同 UTXO 互不冲突 同一地址的交易需排队
隐私性 更高——每次可用不同地址找零 所有操作围绕同一个地址余额

UTXO 模型是比特币区别于以太坊的根本设计差异之一。理解了 UTXO,你才能理解为什么比特币的交易验证不需要"查余额"——只需要确认引用的 UTXO 还没被花掉就行。

这也解释了为什么区块里的"交易列表"不是"Alice 余额 -10,Bob 余额 +10",而是引用哪些 UTXO 作为输入、创建哪些新 UTXO 作为输出

哈希算法是什么,为什么比特币用它

先理解哈希是什么

哈希算法(Hash Function)的作用是:输入任意长度的数据,输出一个固定长度的"指纹"。

比如把"Hello"扔进 SHA-256,会得到一团 64 位的十六进制字符串。把整本《红楼梦》扔进去,同样得到 64 位字符串。

SHA-256 有三个关键特性:

特性 什么意思 对比特币的意义
单向性 有哈希值,推不出原始输入 没人能从区块哈希反推区块内容或 nonce
雪崩效应 输入改一点点(哪怕一个标点),输出面目全非 篡改一笔交易 → Merkle Root 完全不同 → 区块哈希完全不同 → 链断了
抗碰撞 极难找到两个不同输入,产生相同输出 没有人能伪造一笔"看起来有效"的假交易来替代真交易

SHA-256 哈希算法三大特性示意图

比特币为什么要做"两次 SHA-256"

比特币的哈希计算几乎全是double SHA-256——把数据先 SHA-256 算一次,再把结果 SHA-256 算第二次。

这个设计是中本聪加的额外安全层。双重 SHA-256 不仅增加了一层安全隔离,也规避了单次哈希在 Merkle-Damgård 结构下可能面临的长度扩展攻击(length extension attack)等潜在问题。

一个生活类比理解哈希:

哈希就像榨果汁——苹果、橙子、西瓜扔进榨汁机,出来都是一杯液体。你没法从这个液体倒推出原水果长什么样,但只要你有一片怀疑的苹果,再榨一次,如果出来的液体颜色一样,那这片苹果就"被验证"了。

Merkle Tree:怎么高效验证一笔交易

没有 Merkle Tree 的世界

假设一个区块里有 2000 笔交易。你要验证"地址 A 给地址 B 转了 0.5 BTC"这笔交易在不在这个区块里。

最笨的方法:下载整个区块,逐笔核对 2000 条记录。

在网络带宽有限、有些节点是轻钱包(手机钱包)的情况下,这不现实。

有了 Merkle Tree 之后

Merkle Tree 的思路是逐层哈希、两两配对

  1. 把每笔交易的数据分别做一次哈希,得到 2000 个"叶节点哈希";
  2. 把相邻的两个叶节点哈希拼接,再做哈希,得到 1000 个"第二层哈希";
  3. 继续两两拼接 + 哈希,直到最后只剩一个哈希值——这就是 Merkle Root

比特币 Merkle Tree 结构示意图

验证某笔交易时,你不需要整个区块。你只需要:

  • 那笔交易本身的数据;
  • 从它到 Merkle Root 这条"路径"上的几个哈希值(称为 Merkle Proof)。

对于 2000 笔交易的区块,你只需要约 log₂(2000) ≈ 11 个哈希值,就能完成验证。

这就是 SPV(简易支付验证)的核心原理——手机钱包不需要下载完整的比特币区块链(几百 GB),也能验证交易。

关于钱包的工作原理和类型,推荐阅读 什么是加密货币钱包?新手一次看懂钱包地址、助记词和资产安全(2026)

工作量证明:矿工到底在"算"什么

很多人说"矿工在解数学题",这个说法不太准确。

矿工不是在解一个有唯一答案的方程,而是在做一件事:反复猜 nonce(和一个扩展字段),直到区块头的 double SHA-256 结果小于难度目标。

比特币工作量证明(PoW)挖矿流程示意图

具体过程

  1. 矿工从内存池(mempool)里挑选交易,构建候选区块。
  2. 填好区块头的五个字段(版本、前哈希、Merkle Root、时间戳、难度目标)。
  3. 从 nonce = 0 开始,计算 SHA256(SHA256(区块头))
  4. 如果结果 ≥ 难度目标 → nonce + 1,再来一次。
  5. 如果结果 < 难度目标 → 恭喜,挖到了! 立刻广播给全网。

为什么这道"题"没有捷径

SHA-256 的输出看起来完全随机。你没办法根据目标值"推导"出哪个 nonce 能命中——只能一个个试。

这就像买彩票:每改一次 nonce 就是刮一张彩票,想中奖只能多刮。算力越大 = 刮得越快 = 中奖概率越高。这套用算力竞争记账权的机制,最早由中本聪在 比特币白皮书 第 3-4 节中完整阐述。

难度有多高

截至 2026 年,比特币网络的难度目标极高——合法区块哈希的实际判断标准是哈希值是否小于目标值(target),而不是固定数量的前导零。以当前难度来看,合法区块哈希通常会包含大量前导零(约 20 个),这让"前导零"成了一个便于理解的近似说法,但协议层并不数零。

找到一个满足条件的 nonce 的概率,大约是 1/2²⁰⁰ ——这个数字大到什么程度?大概相当于你连续抛一枚公平硬币,连续 200 次都是正面的概率。

全网的 ASIC 矿机加在一起,平均要花约 10 分钟才能找到一个合法的 nonce。

如果你想更深入理解区块链技术,推荐阅读 什么是区块链?新手一次看懂原理、用途和风险(2026)

最长链原则:出现分叉怎么办

如果两个矿工几乎同时挖出了合法区块,网络会出现短暂的"分叉"——一部分节点先收到了区块 A,另一部分先收到了区块 B。

比特币网络的处理方式非常朴素:认最长的链。

后续矿工选择在其中一条链上继续挖。当下一个区块被挖出并加到其中一条链上时,那条链就更长了——全网节点和矿工都会切换到最长链。

这带来的两个后果

  1. 孤块(Orphan Block):被放弃的短链上的区块成为"孤块",这个矿工拿不到区块奖励。这是矿工的运营风险之一。
  2. 交易确认不是即时的:一笔交易被打包进区块后,如果这个区块所在的链后来被废弃,交易需要重新排队等待打包。这就是为什么交易所通常要求 2-6 个确认才计入余额。

"6 个确认"的安全性

每多一个确认,意味着你的交易在链上"埋"得更深了一层。攻击者要从你的交易所在区块开始,连续重算多个区块才能在最长链上超过诚实网络。中本聪在 白皮书第 11 节 中用概率模型证明:随着确认数增加,攻击成功的概率呈指数级下降——即使攻击者掌握可观的算力,在 6 个确认之后,双花成功的概率也已经低到可以忽略不计。

6 确认不是魔法数字,而是安全性和等待时间之间的经验平衡。对于绝大多数日常转账,2-3 个确认就已经足够安全了。

51% 攻击的成本到底有多高

51% 攻击(多数算力攻击)是比特币最常被讨论的极端情况。下面的分析帮你理解为什么它"理论上可能,现实中极难"。

攻击者能做什么

如果控制了全网超过 50% 的算力,攻击者可以:

  • 把自己刚花掉的币"拿回来"(双花攻击)——重算包含自己交易的那个区块及之后所有区块
  • 阻止特定交易被确认——故意不打包某些地址的交易
  • 偷别人的币——没有别人的私钥,改不了别人的签名
  • 凭空创造比特币——违反发行规则,全节点直接拒绝
  • 修改历史区块里的交易——需要重算从攻击目标区块到最新区块的全部内容,算力需求极高

成本估算

截至 2026 年,比特币全网算力在数百 EH/s 级别(1 EH/s = 每秒 100 亿亿次哈希),且持续增长中。实时数据可通过公开区块浏览器查询。

租用或购买达到 50% 以上算力所需的 ASIC 矿机,硬件成本在数十亿美元级别,还需要对应的电力基础设施。加上攻击一旦被察觉,比特币价格可能暴跌——攻击者手里的 BTC 和矿机都会大幅贬值。

攻击的净收益极大概率是负的。 这就是为什么比特币主网运行了十几年,至今没有出现过成功的大规模 51% 攻击案例。

关于加密货币安全的更多内容,推荐阅读 新手钱包安全指南:助记词、错链转账和授权风险一次讲清(2026)

一张表总结:比特币区块链的关键参数

参数 数值 说明
区块头大小 80 字节 固定大小,不随交易数量变化
平均区块大小 ~1.5 MB 含交易数据,SegWit 后实际可达 ~2-3 MB
平均出块时间 ~10 分钟 由难度自动调整维持
初始区块奖励 50 BTC 2009 年
当前区块奖励 3.125 BTC 2024 年减半后,持续至 ~2028 年
最终总量 ~2100 万枚 约在 2140 年达到
哈希算法 SHA-256 × 2 Double SHA-256
难度调整周期 每 2016 个区块 约 2 周
全网算力(2026) 数百 EH/s 级别 实时变化,可通过区块浏览器查询

常见问题 FAQ

矿工除了区块奖励,还能赚什么?

矿工每打包一个区块,获得两部分收入:① 区块奖励(目前 3.125 BTC,由网络规则发行);② 交易手续费(区块内所有交易的手续费总和)。随着区块奖励每四年减半,手续费将逐渐成为矿工的主要收入来源。

如果矿工打包了一笔无效交易,会发生什么?

全节点在收到新区块后,会独立验证区块内的每一笔交易。如果发现无效交易(比如签名不对、double spend、凭空造币),全节点直接拒绝整个区块,不会把它加到链上。矿工投入的算力就白费了——拿不到区块奖励。所以理性的矿工不会冒这个险。

比特币的难度只能升不能降吗?

可以降。难度调整是双向的——如果过去 2016 个区块的实际出块时间超过两周(算力减少),难度会自动下调。历史上发生过多次难度下调,通常在矿工大量关机或中国禁止挖矿等算力骤降事件之后。

为什么全节点要存储几百 GB 的数据?

全节点存储的是从创世区块(2009 年第一个区块)到最新区块的完整账本。截至目前,比特币区块链总大小约 500-600 GB。全节点需要完整数据来独立验证每一笔历史交易。但你可以运行"裁剪模式"(pruned mode),只保留最近的区块数据 + 所有 UTXO 集合,这样可以缩减到几个 GB。

比特币的区块会不会"满"?

会,而且这是一个持续的社区讨论。比特币主链的吞吐量受区块大小(~1-3 MB)和出块时间(~10 分钟)限制,大约每秒 3-7 笔交易。当交易需求高时,mempool 会拥堵,手续费上涨。扩容方案包括闪电网络(链下支付通道)、侧链和未来的软分叉升级,这仍然是一个活跃的技术演进方向。

比特币区块大小是多少?为什么不能直接扩容?

比特币区块大小被限制在 1 MB(SegWit 升级后实际可达约 2-3 MB)。这个限制是中本聪早期为防止垃圾交易攻击而设置的。扩容方案一直在社区讨论中:主链保持去中心化(任何人都能运行全节点),高频小额支付走闪电网络(Lightning Network)等二层方案。这是一个"安全去中心化 vs 吞吐量"的经典权衡。

比特币为什么不能修改历史交易?

因为每个区块都包含了上一个区块的哈希值——改了任何一笔历史交易,那个区块的哈希就变了,它后面所有区块的"前一区块哈希"全部对不上,整条链从修改点开始全部断裂。攻击者必须重算从被修改区块到最新区块的所有 PoW,而诚实矿工还在不断延长最新链——追上来的概率随确认数增加而指数级下降。这就是"链"这个词的真正含义。

私钥和比特币网络运行有什么关系?

比特币网络的运行不依赖任何人的私钥。但发起交易需要私钥签名——私钥是你的"数字签名笔",证明你有权动用某个地址里的 BTC。私钥不需要联网,甚至可以写在纸上。关于私钥的保管,推荐阅读 什么是助记词?为什么丢了没人能帮你找回资产(2026)

总结

比特币区块链的运行机制,核心就是下面这些环环相扣的设计:

  1. UTXO 模型 → 比特币不记录"余额",只记录未花费的交易输出,像纸币一样流转;
  2. 区块 + 链式哈希 → 让历史记录很难被篡改(改一笔 = 改全链);
  3. Merkle Tree → 让任何人能高效验证交易,不需要下载整个区块;
  4. SHA-256 → 单向、雪崩、抗碰撞,构成密码学安全基础;
  5. 工作量证明(PoW) → 用算力竞争替代中心化投票,让"谁说了算"有经济代价;
  6. 最长链原则 → 用最简单的规则解决分叉冲突,全网自动收敛到同一状态。

这些设计组合在一起,让一个没有中心服务器、没有公司运营、没有 CEO 的网络,在全球数万个节点上协调运行了十几年。

对新手来说,不需要记住每个字段的字节数。记住一件事就够了:比特币的安全不是靠"没有人攻击",而是靠"攻击的成本远高于收益"。

下一步建议了解比特币的交易全流程——一笔 BTC 转账从发起、广播、进入 mempool 到被打包进区块、获得 6 个确认,经历了什么。推荐继续阅读本专题的后续文章。

相关推荐

数据来源与内容说明

本文参考以下公开资料整理:

内容基于 2026 年 8 月公开信息整理。全网算力、难度等实时参数会随时间变化,以上数据为截止撰文时的近似值。

本文由 CoinTrailHub 编辑团队根据 Bitcoin Whitepaper、Bitcoin Core 开发文档及公开资料整理,仅供技术原理科普参考。

免责声明

本文仅用于比特币和区块链技术原理科普,不构成任何投资建议、理财建议或交易建议。

加密资产价格波动较大,相关服务可能存在平台风险、市场风险、网络安全风险和操作风险。用户应根据自身风险承受能力谨慎判断,并以所在地法律法规为准。

C
CoinTrailHub LinkedIn 编辑团队

CoinTrailHub 编辑团队,专注加密货币新手教育、交易所安全与 C2C 交易风险研究。本文基于实测操作与公开资料整理,内容经人工审核,力求准确但不构成投资建议。

最后更新:2026-08-04 · 内容经人工审核 · 了解更多