区块链如何记录交易?比特币区块结构、哈希算法和工作量证明详解(2026)
本文目录
上一篇文章讲了比特币的去中心化网络、分布式账本和共识机制的整体逻辑。
现在我们来拆得更细一点:一个区块里面到底存了什么?矿工到底在"算"什么?为什么说一笔交易被确认 6 次之后就很难被推翻?
这三个问题,是理解比特币区块链运行机制的关键。
本文会把比特币区块的"内部构造"拆开来看,用生活化的类比讲清楚哈希算法、Merkle Tree 和工作量证明。不讲密码学数学推导,只讲概念和逻辑。
读完你将理解:
- 比特币区块的内部结构——区块头里藏着什么信息;
- UTXO 模型——为什么比特币不记录"余额",而是记录"未花费的输出";
- Merkle Tree 是什么,为什么要用它来组织交易;
- SHA-256 哈希如何构成比特币的安全基石;
- 工作量证明(PoW)的"数学题"到底是什么;
- 为什么一笔交易被确认越多越安全。
本文是技术原理科普,不构成任何投资建议。
建议先阅读前一篇 比特币怎么运行?新手一次看懂去中心化网络、分布式账本和链上共识(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 的形式回到你的地址

一个具体例子
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"
比特币的哈希计算几乎全是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 的思路是逐层哈希、两两配对:
- 把每笔交易的数据分别做一次哈希,得到 2000 个"叶节点哈希";
- 把相邻的两个叶节点哈希拼接,再做哈希,得到 1000 个"第二层哈希";
- 继续两两拼接 + 哈希,直到最后只剩一个哈希值——这就是 Merkle Root。

验证某笔交易时,你不需要整个区块。你只需要:
- 那笔交易本身的数据;
- 从它到 Merkle Root 这条"路径"上的几个哈希值(称为 Merkle Proof)。
对于 2000 笔交易的区块,你只需要约 log₂(2000) ≈ 11 个哈希值,就能完成验证。
这就是 SPV(简易支付验证)的核心原理——手机钱包不需要下载完整的比特币区块链(几百 GB),也能验证交易。
关于钱包的工作原理和类型,推荐阅读 什么是加密货币钱包?新手一次看懂钱包地址、助记词和资产安全(2026)。
工作量证明:矿工到底在"算"什么
很多人说"矿工在解数学题",这个说法不太准确。
矿工不是在解一个有唯一答案的方程,而是在做一件事:反复猜 nonce(和一个扩展字段),直到区块头的 double SHA-256 结果小于难度目标。

具体过程
- 矿工从内存池(mempool)里挑选交易,构建候选区块。
- 填好区块头的五个字段(版本、前哈希、Merkle Root、时间戳、难度目标)。
- 从 nonce = 0 开始,计算
SHA256(SHA256(区块头))。 - 如果结果 ≥ 难度目标 → nonce + 1,再来一次。
- 如果结果 < 难度目标 → 恭喜,挖到了! 立刻广播给全网。
为什么这道"题"没有捷径
SHA-256 的输出看起来完全随机。你没办法根据目标值"推导"出哪个 nonce 能命中——只能一个个试。
这就像买彩票:每改一次 nonce 就是刮一张彩票,想中奖只能多刮。算力越大 = 刮得越快 = 中奖概率越高。这套用算力竞争记账权的机制,最早由中本聪在 比特币白皮书 第 3-4 节中完整阐述。
难度有多高
截至 2026 年,比特币网络的难度目标极高——合法区块哈希的实际判断标准是哈希值是否小于目标值(target),而不是固定数量的前导零。以当前难度来看,合法区块哈希通常会包含大量前导零(约 20 个),这让"前导零"成了一个便于理解的近似说法,但协议层并不数零。
找到一个满足条件的 nonce 的概率,大约是 1/2²⁰⁰ ——这个数字大到什么程度?大概相当于你连续抛一枚公平硬币,连续 200 次都是正面的概率。
全网的 ASIC 矿机加在一起,平均要花约 10 分钟才能找到一个合法的 nonce。
如果你想更深入理解区块链技术,推荐阅读 什么是区块链?新手一次看懂原理、用途和风险(2026)。
最长链原则:出现分叉怎么办
如果两个矿工几乎同时挖出了合法区块,网络会出现短暂的"分叉"——一部分节点先收到了区块 A,另一部分先收到了区块 B。
比特币网络的处理方式非常朴素:认最长的链。
后续矿工选择在其中一条链上继续挖。当下一个区块被挖出并加到其中一条链上时,那条链就更长了——全网节点和矿工都会切换到最长链。
这带来的两个后果
- 孤块(Orphan Block):被放弃的短链上的区块成为"孤块",这个矿工拿不到区块奖励。这是矿工的运营风险之一。
- 交易确认不是即时的:一笔交易被打包进区块后,如果这个区块所在的链后来被废弃,交易需要重新排队等待打包。这就是为什么交易所通常要求 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)。
总结
比特币区块链的运行机制,核心就是下面这些环环相扣的设计:
- UTXO 模型 → 比特币不记录"余额",只记录未花费的交易输出,像纸币一样流转;
- 区块 + 链式哈希 → 让历史记录很难被篡改(改一笔 = 改全链);
- Merkle Tree → 让任何人能高效验证交易,不需要下载整个区块;
- SHA-256 → 单向、雪崩、抗碰撞,构成密码学安全基础;
- 工作量证明(PoW) → 用算力竞争替代中心化投票,让"谁说了算"有经济代价;
- 最长链原则 → 用最简单的规则解决分叉冲突,全网自动收敛到同一状态。
这些设计组合在一起,让一个没有中心服务器、没有公司运营、没有 CEO 的网络,在全球数万个节点上协调运行了十几年。
对新手来说,不需要记住每个字段的字节数。记住一件事就够了:比特币的安全不是靠"没有人攻击",而是靠"攻击的成本远高于收益"。
下一步建议了解比特币的交易全流程——一笔 BTC 转账从发起、广播、进入 mempool 到被打包进区块、获得 6 个确认,经历了什么。推荐继续阅读本专题的后续文章。
相关推荐
- 比特币怎么运行?新手一次看懂去中心化网络、分布式账本和链上共识(2026) —— 本系列第一篇
- 什么是比特币(BTC)?新手一次看懂原理、价值和风险(2026) —— BTC 基础入门
- 什么是区块链?新手一次看懂原理、用途和风险(2026) —— 区块链全景科普
- 新手钱包安全指南:助记词、错链转账和授权风险一次讲清(2026) —— 资产安全
- 什么是加密货币钱包?新手一次看懂钱包地址、助记词和资产安全(2026) —— 钱包基础
数据来源与内容说明
本文参考以下公开资料整理:
- Bitcoin Whitepaper — Satoshi Nakamoto
- Bitcoin.org — Developer Documentation
- Blockchain.com Explorer
- Mempool.space — Bitcoin Block Explorer
- Bitnodes.io
内容基于 2026 年 8 月公开信息整理。全网算力、难度等实时参数会随时间变化,以上数据为截止撰文时的近似值。
本文由 CoinTrailHub 编辑团队根据 Bitcoin Whitepaper、Bitcoin Core 开发文档及公开资料整理,仅供技术原理科普参考。
免责声明
本文仅用于比特币和区块链技术原理科普,不构成任何投资建议、理财建议或交易建议。
加密资产价格波动较大,相关服务可能存在平台风险、市场风险、网络安全风险和操作风险。用户应根据自身风险承受能力谨慎判断,并以所在地法律法规为准。