
比特币最重要的创新,不只是"数字货币",而是它在没有中央银行、没有商业银行清算系统、没有单一管理员的情况下,同时解决了两个核心问题:谁来发行货币 ,以及谁来验证交易是真的。
在传统金融体系中,这两个问题通常由中心化机构完成:
| 问题 | 传统金融中的解决者 | 比特币中的解决者 |
|---|---|---|
| 货币如何发行? | 中央银行、商业银行体系 | 协议规则 + 矿工竞争记账 |
| 交易如何验证? | 银行、清算机构、支付网络 | 全节点独立验证 + 工作量证明共识 |
比特币把"信任某个机构"改造成了"验证一套公开规则"。
本文是对前面两章的学习作一篇补充。
文章目录
-
- 一、问题一:比特币如何发行货币?
-
- [1. 不是某个人发行,而是协议发行](#1. 不是某个人发行,而是协议发行)
- [2. 工作量证明:让发行权变成公开竞争](#2. 工作量证明:让发行权变成公开竞争)
- [3. 区块奖励:发行数量被写死在规则中](#3. 区块奖励:发行数量被写死在规则中)
- [4. 难度调整:让发行节奏保持稳定](#4. 难度调整:让发行节奏保持稳定)
- 二、问题二:比特币如何验证交易?
- [三、交易的基础:UTXO 模型](#三、交易的基础:UTXO 模型)
- 四、数字签名:证明"我有权花这笔钱"
- 五、全节点:每个人都可以独立验证
- 六、区块链:把交易顺序固定下来
- 七、最长链/最多工作量链:解决网络分歧
- 八、发行与验证如何相互制衡?
- [九、一个完整例子:Alice 向 Bob 支付 BTC](#九、一个完整例子:Alice 向 Bob 支付 BTC)
- 十、为什么这套机制有效?
- 十一、比特币的核心设计哲学
一、问题一:比特币如何发行货币?
1. 不是某个人发行,而是协议发行
比特币没有中央银行,也没有管理员可以随意增发。新币的发行规则写在比特币协议里,由网络中的节点共同执行。
比特币的新币来自每个新区块中的一笔特殊交易,叫做 Coinbase 交易。这笔交易没有普通意义上的付款方,它是矿工成功打包新区块后,按照协议规则获得的区块奖励。
#mermaid-svg-R4HTY1bwO5SCWTmy{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-R4HTY1bwO5SCWTmy .error-icon{fill:#552222;}#mermaid-svg-R4HTY1bwO5SCWTmy .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-R4HTY1bwO5SCWTmy .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-R4HTY1bwO5SCWTmy .marker{fill:#333333;stroke:#333333;}#mermaid-svg-R4HTY1bwO5SCWTmy .marker.cross{stroke:#333333;}#mermaid-svg-R4HTY1bwO5SCWTmy svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-R4HTY1bwO5SCWTmy p{margin:0;}#mermaid-svg-R4HTY1bwO5SCWTmy .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy .cluster-label text{fill:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy .cluster-label span{color:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy .cluster-label span p{background-color:transparent;}#mermaid-svg-R4HTY1bwO5SCWTmy .label text,#mermaid-svg-R4HTY1bwO5SCWTmy span{fill:#333;color:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy .node rect,#mermaid-svg-R4HTY1bwO5SCWTmy .node circle,#mermaid-svg-R4HTY1bwO5SCWTmy .node ellipse,#mermaid-svg-R4HTY1bwO5SCWTmy .node polygon,#mermaid-svg-R4HTY1bwO5SCWTmy .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-R4HTY1bwO5SCWTmy .rough-node .label text,#mermaid-svg-R4HTY1bwO5SCWTmy .node .label text,#mermaid-svg-R4HTY1bwO5SCWTmy .image-shape .label,#mermaid-svg-R4HTY1bwO5SCWTmy .icon-shape .label{text-anchor:middle;}#mermaid-svg-R4HTY1bwO5SCWTmy .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-R4HTY1bwO5SCWTmy .rough-node .label,#mermaid-svg-R4HTY1bwO5SCWTmy .node .label,#mermaid-svg-R4HTY1bwO5SCWTmy .image-shape .label,#mermaid-svg-R4HTY1bwO5SCWTmy .icon-shape .label{text-align:center;}#mermaid-svg-R4HTY1bwO5SCWTmy .node.clickable{cursor:pointer;}#mermaid-svg-R4HTY1bwO5SCWTmy .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-R4HTY1bwO5SCWTmy .arrowheadPath{fill:#333333;}#mermaid-svg-R4HTY1bwO5SCWTmy .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-R4HTY1bwO5SCWTmy .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-R4HTY1bwO5SCWTmy .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-R4HTY1bwO5SCWTmy .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-R4HTY1bwO5SCWTmy .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-R4HTY1bwO5SCWTmy .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-R4HTY1bwO5SCWTmy .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-R4HTY1bwO5SCWTmy .cluster text{fill:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy .cluster span{color:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-R4HTY1bwO5SCWTmy .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-R4HTY1bwO5SCWTmy rect.text{fill:none;stroke-width:0;}#mermaid-svg-R4HTY1bwO5SCWTmy .icon-shape,#mermaid-svg-R4HTY1bwO5SCWTmy .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-R4HTY1bwO5SCWTmy .icon-shape p,#mermaid-svg-R4HTY1bwO5SCWTmy .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-R4HTY1bwO5SCWTmy .icon-shape .label rect,#mermaid-svg-R4HTY1bwO5SCWTmy .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-R4HTY1bwO5SCWTmy .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-R4HTY1bwO5SCWTmy .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-R4HTY1bwO5SCWTmy :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
矿工收集交易
构造候选区块
进行工作量证明 PoW
是否找到合格哈希?
广播新区块
全节点验证区块
区块被接受
矿工获得区块奖励和手续费
换句话说,比特币的发行不是"谁有权力谁发行",而是:
谁按照规则完成了记账竞争,谁就能获得本轮协议允许的新币奖励。
2. 工作量证明:让发行权变成公开竞争
比特币使用 工作量证明(Proof of Work, PoW) 来决定谁有资格写入下一个区块。
矿工需要不断改变区块中的随机数 nonce,反复计算区块头哈希,直到找到一个小于当前目标难度的结果。
text
区块头数据 + nonce → SHA-256 哈希 → 是否小于目标值?
可以把它想象成一场全球公开的彩票:
#mermaid-svg-ntozoIam896qRvxk{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ntozoIam896qRvxk .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ntozoIam896qRvxk .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ntozoIam896qRvxk .error-icon{fill:#552222;}#mermaid-svg-ntozoIam896qRvxk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ntozoIam896qRvxk .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ntozoIam896qRvxk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ntozoIam896qRvxk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ntozoIam896qRvxk .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ntozoIam896qRvxk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ntozoIam896qRvxk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ntozoIam896qRvxk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ntozoIam896qRvxk .marker.cross{stroke:#333333;}#mermaid-svg-ntozoIam896qRvxk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ntozoIam896qRvxk p{margin:0;}#mermaid-svg-ntozoIam896qRvxk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ntozoIam896qRvxk .cluster-label text{fill:#333;}#mermaid-svg-ntozoIam896qRvxk .cluster-label span{color:#333;}#mermaid-svg-ntozoIam896qRvxk .cluster-label span p{background-color:transparent;}#mermaid-svg-ntozoIam896qRvxk .label text,#mermaid-svg-ntozoIam896qRvxk span{fill:#333;color:#333;}#mermaid-svg-ntozoIam896qRvxk .node rect,#mermaid-svg-ntozoIam896qRvxk .node circle,#mermaid-svg-ntozoIam896qRvxk .node ellipse,#mermaid-svg-ntozoIam896qRvxk .node polygon,#mermaid-svg-ntozoIam896qRvxk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ntozoIam896qRvxk .rough-node .label text,#mermaid-svg-ntozoIam896qRvxk .node .label text,#mermaid-svg-ntozoIam896qRvxk .image-shape .label,#mermaid-svg-ntozoIam896qRvxk .icon-shape .label{text-anchor:middle;}#mermaid-svg-ntozoIam896qRvxk .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ntozoIam896qRvxk .rough-node .label,#mermaid-svg-ntozoIam896qRvxk .node .label,#mermaid-svg-ntozoIam896qRvxk .image-shape .label,#mermaid-svg-ntozoIam896qRvxk .icon-shape .label{text-align:center;}#mermaid-svg-ntozoIam896qRvxk .node.clickable{cursor:pointer;}#mermaid-svg-ntozoIam896qRvxk .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ntozoIam896qRvxk .arrowheadPath{fill:#333333;}#mermaid-svg-ntozoIam896qRvxk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ntozoIam896qRvxk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ntozoIam896qRvxk .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ntozoIam896qRvxk .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ntozoIam896qRvxk .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ntozoIam896qRvxk .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ntozoIam896qRvxk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ntozoIam896qRvxk .cluster text{fill:#333;}#mermaid-svg-ntozoIam896qRvxk .cluster span{color:#333;}#mermaid-svg-ntozoIam896qRvxk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ntozoIam896qRvxk .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ntozoIam896qRvxk rect.text{fill:none;stroke-width:0;}#mermaid-svg-ntozoIam896qRvxk .icon-shape,#mermaid-svg-ntozoIam896qRvxk .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ntozoIam896qRvxk .icon-shape p,#mermaid-svg-ntozoIam896qRvxk .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ntozoIam896qRvxk .icon-shape .label rect,#mermaid-svg-ntozoIam896qRvxk .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ntozoIam896qRvxk .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ntozoIam896qRvxk .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ntozoIam896qRvxk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 矿工竞争
是
否
矿工 A: 尝试 nonce
矿工 B: 尝试 nonce
矿工 C: 尝试 nonce
计算哈希
哈希是否满足难度目标?
获得记账权
新区块加入区块链
这种机制的意义在于:
- 任何人都可以参与竞争;
- 获胜概率与投入的算力相关;
- 伪造区块需要付出真实计算成本;
- 发行过程公开、可验证、不可凭空指定。
3. 区块奖励:发行数量被写死在规则中
比特币的新增发行主要来自区块奖励。最初每个区块奖励为 50 BTC,之后大约每 210,000 个区块减半一次。
#mermaid-svg-2xHUTPpK24U4acgs{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-2xHUTPpK24U4acgs .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-2xHUTPpK24U4acgs .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-2xHUTPpK24U4acgs .error-icon{fill:#552222;}#mermaid-svg-2xHUTPpK24U4acgs .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2xHUTPpK24U4acgs .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-2xHUTPpK24U4acgs .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2xHUTPpK24U4acgs .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2xHUTPpK24U4acgs .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-2xHUTPpK24U4acgs .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2xHUTPpK24U4acgs .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2xHUTPpK24U4acgs .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2xHUTPpK24U4acgs .marker.cross{stroke:#333333;}#mermaid-svg-2xHUTPpK24U4acgs svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2xHUTPpK24U4acgs p{margin:0;}#mermaid-svg-2xHUTPpK24U4acgs .edge{stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .section--1 rect,#mermaid-svg-2xHUTPpK24U4acgs .section--1 path,#mermaid-svg-2xHUTPpK24U4acgs .section--1 circle,#mermaid-svg-2xHUTPpK24U4acgs .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section--1 text{fill:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth--1{stroke-width:17;}#mermaid-svg-2xHUTPpK24U4acgs .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-0 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-0 path,#mermaid-svg-2xHUTPpK24U4acgs .section-0 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-2xHUTPpK24U4acgs .section-0 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-0{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-0{stroke-width:14;}#mermaid-svg-2xHUTPpK24U4acgs .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-1 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-1 path,#mermaid-svg-2xHUTPpK24U4acgs .section-1 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-1 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-1{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-1{stroke-width:11;}#mermaid-svg-2xHUTPpK24U4acgs .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-2 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-2 path,#mermaid-svg-2xHUTPpK24U4acgs .section-2 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-2 text{fill:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-2{stroke-width:8;}#mermaid-svg-2xHUTPpK24U4acgs .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-3 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-3 path,#mermaid-svg-2xHUTPpK24U4acgs .section-3 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-3 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-3{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-3{stroke-width:5;}#mermaid-svg-2xHUTPpK24U4acgs .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-4 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-4 path,#mermaid-svg-2xHUTPpK24U4acgs .section-4 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-4 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-4{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-4{stroke-width:2;}#mermaid-svg-2xHUTPpK24U4acgs .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-5 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-5 path,#mermaid-svg-2xHUTPpK24U4acgs .section-5 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-5 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-5{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-5{stroke-width:-1;}#mermaid-svg-2xHUTPpK24U4acgs .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-6 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-6 path,#mermaid-svg-2xHUTPpK24U4acgs .section-6 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-6 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-6{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-6{stroke-width:-4;}#mermaid-svg-2xHUTPpK24U4acgs .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-7 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-7 path,#mermaid-svg-2xHUTPpK24U4acgs .section-7 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-7 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-7{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-7{stroke-width:-7;}#mermaid-svg-2xHUTPpK24U4acgs .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-8 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-8 path,#mermaid-svg-2xHUTPpK24U4acgs .section-8 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-8 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-8{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-8{stroke-width:-10;}#mermaid-svg-2xHUTPpK24U4acgs .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-9 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-9 path,#mermaid-svg-2xHUTPpK24U4acgs .section-9 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-9 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-9{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-9{stroke-width:-13;}#mermaid-svg-2xHUTPpK24U4acgs .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-10 rect,#mermaid-svg-2xHUTPpK24U4acgs .section-10 path,#mermaid-svg-2xHUTPpK24U4acgs .section-10 circle,#mermaid-svg-2xHUTPpK24U4acgs .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-10 text{fill:black;}#mermaid-svg-2xHUTPpK24U4acgs .node-icon-10{font-size:40px;color:black;}#mermaid-svg-2xHUTPpK24U4acgs .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .edge-depth-10{stroke-width:-16;}#mermaid-svg-2xHUTPpK24U4acgs .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-2xHUTPpK24U4acgs .lineWrapper line{stroke:black;}#mermaid-svg-2xHUTPpK24U4acgs .disabled,#mermaid-svg-2xHUTPpK24U4acgs .disabled circle,#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:lightgray;}#mermaid-svg-2xHUTPpK24U4acgs .disabled text{fill:#efefef;}#mermaid-svg-2xHUTPpK24U4acgs .section-root rect,#mermaid-svg-2xHUTPpK24U4acgs .section-root path,#mermaid-svg-2xHUTPpK24U4acgs .section-root circle{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-2xHUTPpK24U4acgs .section-root text{fill:#ffffff;}#mermaid-svg-2xHUTPpK24U4acgs .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-2xHUTPpK24U4acgs .edge{fill:none;}#mermaid-svg-2xHUTPpK24U4acgs .eventWrapper{filter:brightness(120%);}#mermaid-svg-2xHUTPpK24U4acgs :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2009 50 BTC 2012 25 BTC 2016 12.5 BTC 2020 6.25 BTC 2024 3.125 BTC 比特币区块奖励减半路径
这种减半机制使比特币的发行速度越来越慢,最终总量趋近于 2100 万枚。
| 阶段 | 每区块奖励 | 发行特征 |
|---|---|---|
| 早期 | 50 BTC | 新币发行速度快 |
| 多次减半后 | 逐步下降 | 通胀率持续降低 |
| 长期 | 接近 0 | 矿工主要依赖手续费 |
比特币的发行曲线大致如下:
#mermaid-svg-bAUWLPW45IAyM1vE{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bAUWLPW45IAyM1vE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bAUWLPW45IAyM1vE .error-icon{fill:#552222;}#mermaid-svg-bAUWLPW45IAyM1vE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bAUWLPW45IAyM1vE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bAUWLPW45IAyM1vE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bAUWLPW45IAyM1vE .marker.cross{stroke:#333333;}#mermaid-svg-bAUWLPW45IAyM1vE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bAUWLPW45IAyM1vE p{margin:0;}#mermaid-svg-bAUWLPW45IAyM1vE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 比特币累计供应量趋势示意 2009 2012 2016 2020 2024 2028+ 远期 20 18 16 14 12 10 8 6 4 2 0 累计供应量(百万 BTC)
这套设计解决了传统数字货币系统中的一个关键问题:
如果数字货币可以被管理员随意增发,它就无法成为真正可信的稀缺资产。
4. 难度调整:让发行节奏保持稳定
如果全球算力上升,矿工更容易找到新区块,出块速度就会加快。为了避免发行速度失控,比特币大约每 2016 个区块 调整一次挖矿难度,使平均出块时间维持在约 10 分钟。
#mermaid-svg-2ZDehB9Wio9Xq3tr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-2ZDehB9Wio9Xq3tr .error-icon{fill:#552222;}#mermaid-svg-2ZDehB9Wio9Xq3tr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2ZDehB9Wio9Xq3tr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .marker.cross{stroke:#333333;}#mermaid-svg-2ZDehB9Wio9Xq3tr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2ZDehB9Wio9Xq3tr p{margin:0;}#mermaid-svg-2ZDehB9Wio9Xq3tr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .cluster-label text{fill:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .cluster-label span{color:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .cluster-label span p{background-color:transparent;}#mermaid-svg-2ZDehB9Wio9Xq3tr .label text,#mermaid-svg-2ZDehB9Wio9Xq3tr span{fill:#333;color:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .node rect,#mermaid-svg-2ZDehB9Wio9Xq3tr .node circle,#mermaid-svg-2ZDehB9Wio9Xq3tr .node ellipse,#mermaid-svg-2ZDehB9Wio9Xq3tr .node polygon,#mermaid-svg-2ZDehB9Wio9Xq3tr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .rough-node .label text,#mermaid-svg-2ZDehB9Wio9Xq3tr .node .label text,#mermaid-svg-2ZDehB9Wio9Xq3tr .image-shape .label,#mermaid-svg-2ZDehB9Wio9Xq3tr .icon-shape .label{text-anchor:middle;}#mermaid-svg-2ZDehB9Wio9Xq3tr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .rough-node .label,#mermaid-svg-2ZDehB9Wio9Xq3tr .node .label,#mermaid-svg-2ZDehB9Wio9Xq3tr .image-shape .label,#mermaid-svg-2ZDehB9Wio9Xq3tr .icon-shape .label{text-align:center;}#mermaid-svg-2ZDehB9Wio9Xq3tr .node.clickable{cursor:pointer;}#mermaid-svg-2ZDehB9Wio9Xq3tr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .arrowheadPath{fill:#333333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2ZDehB9Wio9Xq3tr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-2ZDehB9Wio9Xq3tr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2ZDehB9Wio9Xq3tr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-2ZDehB9Wio9Xq3tr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .cluster text{fill:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr .cluster span{color:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-2ZDehB9Wio9Xq3tr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-2ZDehB9Wio9Xq3tr rect.text{fill:none;stroke-width:0;}#mermaid-svg-2ZDehB9Wio9Xq3tr .icon-shape,#mermaid-svg-2ZDehB9Wio9Xq3tr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2ZDehB9Wio9Xq3tr .icon-shape p,#mermaid-svg-2ZDehB9Wio9Xq3tr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-2ZDehB9Wio9Xq3tr .icon-shape .label rect,#mermaid-svg-2ZDehB9Wio9Xq3tr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2ZDehB9Wio9Xq3tr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-2ZDehB9Wio9Xq3tr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-2ZDehB9Wio9Xq3tr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 全网算力上升
出块变快
难度上调
平均约10分钟出块
全网算力下降
出块变慢
难度下调
因此,比特币不是简单依赖"矿工自觉",而是通过算法动态调节难度,维持发行节奏。
二、问题二:比特币如何验证交易?
货币发行解决的是"新币从哪里来";交易验证解决的是"已有的币能不能被合法花掉"。
在数字世界里,最难的问题是 双花问题:
同一笔数字货币,能不能被复制后同时花给两个人?
传统系统依赖银行账户数据库防止双花;比特币则通过 UTXO 模型、数字签名、全节点验证和最长链共识 共同解决。
三、交易的基础:UTXO 模型
比特币并不像银行账户那样直接记录"张三余额 10 BTC"。它记录的是一组尚未被花费的交易输出 ,称为 UTXO(Unspent Transaction Output,未花费交易输出)。
可以把 UTXO 理解为一张张不同面额的现金纸币。
#mermaid-svg-KaSfROGlZh80qEUA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KaSfROGlZh80qEUA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KaSfROGlZh80qEUA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KaSfROGlZh80qEUA .error-icon{fill:#552222;}#mermaid-svg-KaSfROGlZh80qEUA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KaSfROGlZh80qEUA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KaSfROGlZh80qEUA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KaSfROGlZh80qEUA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KaSfROGlZh80qEUA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KaSfROGlZh80qEUA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KaSfROGlZh80qEUA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KaSfROGlZh80qEUA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KaSfROGlZh80qEUA .marker.cross{stroke:#333333;}#mermaid-svg-KaSfROGlZh80qEUA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KaSfROGlZh80qEUA p{margin:0;}#mermaid-svg-KaSfROGlZh80qEUA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KaSfROGlZh80qEUA .cluster-label text{fill:#333;}#mermaid-svg-KaSfROGlZh80qEUA .cluster-label span{color:#333;}#mermaid-svg-KaSfROGlZh80qEUA .cluster-label span p{background-color:transparent;}#mermaid-svg-KaSfROGlZh80qEUA .label text,#mermaid-svg-KaSfROGlZh80qEUA span{fill:#333;color:#333;}#mermaid-svg-KaSfROGlZh80qEUA .node rect,#mermaid-svg-KaSfROGlZh80qEUA .node circle,#mermaid-svg-KaSfROGlZh80qEUA .node ellipse,#mermaid-svg-KaSfROGlZh80qEUA .node polygon,#mermaid-svg-KaSfROGlZh80qEUA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KaSfROGlZh80qEUA .rough-node .label text,#mermaid-svg-KaSfROGlZh80qEUA .node .label text,#mermaid-svg-KaSfROGlZh80qEUA .image-shape .label,#mermaid-svg-KaSfROGlZh80qEUA .icon-shape .label{text-anchor:middle;}#mermaid-svg-KaSfROGlZh80qEUA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KaSfROGlZh80qEUA .rough-node .label,#mermaid-svg-KaSfROGlZh80qEUA .node .label,#mermaid-svg-KaSfROGlZh80qEUA .image-shape .label,#mermaid-svg-KaSfROGlZh80qEUA .icon-shape .label{text-align:center;}#mermaid-svg-KaSfROGlZh80qEUA .node.clickable{cursor:pointer;}#mermaid-svg-KaSfROGlZh80qEUA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KaSfROGlZh80qEUA .arrowheadPath{fill:#333333;}#mermaid-svg-KaSfROGlZh80qEUA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KaSfROGlZh80qEUA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KaSfROGlZh80qEUA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KaSfROGlZh80qEUA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KaSfROGlZh80qEUA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KaSfROGlZh80qEUA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KaSfROGlZh80qEUA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KaSfROGlZh80qEUA .cluster text{fill:#333;}#mermaid-svg-KaSfROGlZh80qEUA .cluster span{color:#333;}#mermaid-svg-KaSfROGlZh80qEUA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KaSfROGlZh80qEUA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KaSfROGlZh80qEUA rect.text{fill:none;stroke-width:0;}#mermaid-svg-KaSfROGlZh80qEUA .icon-shape,#mermaid-svg-KaSfROGlZh80qEUA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KaSfROGlZh80qEUA .icon-shape p,#mermaid-svg-KaSfROGlZh80qEUA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KaSfROGlZh80qEUA .icon-shape .label rect,#mermaid-svg-KaSfROGlZh80qEUA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KaSfROGlZh80qEUA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KaSfROGlZh80qEUA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KaSfROGlZh80qEUA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} UTXO: 0.8 BTC
新交易
UTXO: 0.5 BTC
收款人: 1.0 BTC
找零: 0.299 BTC
矿工手续费: 0.001 BTC
如果你要支付 1 BTC,你可能会拿出两个 UTXO:
- 一个 0.8 BTC;
- 一个 0.5 BTC。
总输入是 1.3 BTC,其中:
- 1.0 BTC 给收款人;
- 0.299 BTC 找零给自己;
- 0.001 BTC 作为手续费给矿工。
这类似于用两张纸币付款,然后拿回零钱。
四、数字签名:证明"我有权花这笔钱"
比特币中的每个 UTXO 通常都被锁定到某个地址。想花掉它,必须提供有效的数字签名,证明你掌握对应的私钥。
比特币节点 交易 用户钱包 比特币节点 交易 用户钱包 #mermaid-svg-Jfv0S1S9Uv430V0i{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Jfv0S1S9Uv430V0i .error-icon{fill:#552222;}#mermaid-svg-Jfv0S1S9Uv430V0i .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Jfv0S1S9Uv430V0i .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Jfv0S1S9Uv430V0i .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Jfv0S1S9Uv430V0i .marker.cross{stroke:#333333;}#mermaid-svg-Jfv0S1S9Uv430V0i svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Jfv0S1S9Uv430V0i p{margin:0;}#mermaid-svg-Jfv0S1S9Uv430V0i .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Jfv0S1S9Uv430V0i text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-Jfv0S1S9Uv430V0i .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-Jfv0S1S9Uv430V0i .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-Jfv0S1S9Uv430V0i #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-Jfv0S1S9Uv430V0i .sequenceNumber{fill:white;}#mermaid-svg-Jfv0S1S9Uv430V0i #sequencenumber{fill:#333;}#mermaid-svg-Jfv0S1S9Uv430V0i #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-Jfv0S1S9Uv430V0i .messageText{fill:#333;stroke:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Jfv0S1S9Uv430V0i .labelText,#mermaid-svg-Jfv0S1S9Uv430V0i .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .loopText,#mermaid-svg-Jfv0S1S9Uv430V0i .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-Jfv0S1S9Uv430V0i .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-Jfv0S1S9Uv430V0i .noteText,#mermaid-svg-Jfv0S1S9Uv430V0i .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-Jfv0S1S9Uv430V0i .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Jfv0S1S9Uv430V0i .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Jfv0S1S9Uv430V0i .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Jfv0S1S9Uv430V0i .actorPopupMenu{position:absolute;}#mermaid-svg-Jfv0S1S9Uv430V0i .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-Jfv0S1S9Uv430V0i .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Jfv0S1S9Uv430V0i .actor-man circle,#mermaid-svg-Jfv0S1S9Uv430V0i line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-Jfv0S1S9Uv430V0i :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用私钥签名 广播交易 验证签名是否匹配公钥/地址 签名有效则继续验证
这里有两个关键点:
- 私钥不需要公开:用户只公开签名和公钥相关信息。
- 签名可以被任何节点验证:节点不需要信任用户,只需要验证数学关系是否成立。
这解决了"谁有权花钱"的问题。
五、全节点:每个人都可以独立验证
比特币网络中的全节点会独立检查每一笔交易和每一个区块。它们不会因为某个矿工说"这是真的"就接受,而是逐条验证规则。
一笔交易通常需要满足:
| 验证项 | 含义 |
|---|---|
| 输入引用的 UTXO 存在 | 这笔钱确实还没被花掉 |
| 数字签名有效 | 花钱者确实拥有私钥 |
| 输入金额 ≥ 输出金额 | 不能凭空创造新币 |
| 手续费非负 | 差额作为矿工手续费 |
| 脚本执行成功 | 满足锁定条件 |
| 交易格式合法 | 数据结构符合协议 |
区块也要经过验证:
| 验证项 | 含义 |
|---|---|
| 区块哈希满足难度目标 | 矿工确实完成了工作量证明 |
| 区块连接到已有链上 | 区块引用的前一区块存在 |
| Coinbase 奖励不超额 | 矿工不能多发币 |
| 区块内交易都合法 | 每笔交易都必须通过检查 |
| 没有重复花费 | 同一个 UTXO 不能被用两次 |
#mermaid-svg-eINv3iqaCI6ZQMO1{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-eINv3iqaCI6ZQMO1 .error-icon{fill:#552222;}#mermaid-svg-eINv3iqaCI6ZQMO1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-eINv3iqaCI6ZQMO1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .marker.cross{stroke:#333333;}#mermaid-svg-eINv3iqaCI6ZQMO1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-eINv3iqaCI6ZQMO1 p{margin:0;}#mermaid-svg-eINv3iqaCI6ZQMO1 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .cluster-label text{fill:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .cluster-label span{color:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .cluster-label span p{background-color:transparent;}#mermaid-svg-eINv3iqaCI6ZQMO1 .label text,#mermaid-svg-eINv3iqaCI6ZQMO1 span{fill:#333;color:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .node rect,#mermaid-svg-eINv3iqaCI6ZQMO1 .node circle,#mermaid-svg-eINv3iqaCI6ZQMO1 .node ellipse,#mermaid-svg-eINv3iqaCI6ZQMO1 .node polygon,#mermaid-svg-eINv3iqaCI6ZQMO1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .rough-node .label text,#mermaid-svg-eINv3iqaCI6ZQMO1 .node .label text,#mermaid-svg-eINv3iqaCI6ZQMO1 .image-shape .label,#mermaid-svg-eINv3iqaCI6ZQMO1 .icon-shape .label{text-anchor:middle;}#mermaid-svg-eINv3iqaCI6ZQMO1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .rough-node .label,#mermaid-svg-eINv3iqaCI6ZQMO1 .node .label,#mermaid-svg-eINv3iqaCI6ZQMO1 .image-shape .label,#mermaid-svg-eINv3iqaCI6ZQMO1 .icon-shape .label{text-align:center;}#mermaid-svg-eINv3iqaCI6ZQMO1 .node.clickable{cursor:pointer;}#mermaid-svg-eINv3iqaCI6ZQMO1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .arrowheadPath{fill:#333333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-eINv3iqaCI6ZQMO1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-eINv3iqaCI6ZQMO1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-eINv3iqaCI6ZQMO1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-eINv3iqaCI6ZQMO1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .cluster text{fill:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 .cluster span{color:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-eINv3iqaCI6ZQMO1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-eINv3iqaCI6ZQMO1 rect.text{fill:none;stroke-width:0;}#mermaid-svg-eINv3iqaCI6ZQMO1 .icon-shape,#mermaid-svg-eINv3iqaCI6ZQMO1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-eINv3iqaCI6ZQMO1 .icon-shape p,#mermaid-svg-eINv3iqaCI6ZQMO1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-eINv3iqaCI6ZQMO1 .icon-shape .label rect,#mermaid-svg-eINv3iqaCI6ZQMO1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-eINv3iqaCI6ZQMO1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-eINv3iqaCI6ZQMO1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-eINv3iqaCI6ZQMO1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
是
否
否
是
否
是
收到新区块
PoW 是否有效?
拒绝区块
Coinbase 奖励是否超额?
所有交易是否合法?
是否连接到有效链?
接受并更新本地账本
这就是比特币验证机制的核心:
矿工负责提议区块,全节点负责审查区块。
矿工不能随便改规则,因为全节点会拒绝无效区块。
六、区块链:把交易顺序固定下来
仅有签名还不够,因为攻击者可能签署两笔互相冲突的交易:
- 交易 A:把同一个 UTXO 支付给商家;
- 交易 B:把同一个 UTXO 转回自己。
比特币通过区块链给交易排序。先被有效区块确认,并被后续区块继续叠加的交易,会获得越来越强的确认。
#mermaid-svg-xQTmfT7E5jDUBeQZ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-xQTmfT7E5jDUBeQZ .error-icon{fill:#552222;}#mermaid-svg-xQTmfT7E5jDUBeQZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xQTmfT7E5jDUBeQZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .marker.cross{stroke:#333333;}#mermaid-svg-xQTmfT7E5jDUBeQZ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xQTmfT7E5jDUBeQZ p{margin:0;}#mermaid-svg-xQTmfT7E5jDUBeQZ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .cluster-label text{fill:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .cluster-label span{color:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .cluster-label span p{background-color:transparent;}#mermaid-svg-xQTmfT7E5jDUBeQZ .label text,#mermaid-svg-xQTmfT7E5jDUBeQZ span{fill:#333;color:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .node rect,#mermaid-svg-xQTmfT7E5jDUBeQZ .node circle,#mermaid-svg-xQTmfT7E5jDUBeQZ .node ellipse,#mermaid-svg-xQTmfT7E5jDUBeQZ .node polygon,#mermaid-svg-xQTmfT7E5jDUBeQZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .rough-node .label text,#mermaid-svg-xQTmfT7E5jDUBeQZ .node .label text,#mermaid-svg-xQTmfT7E5jDUBeQZ .image-shape .label,#mermaid-svg-xQTmfT7E5jDUBeQZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-xQTmfT7E5jDUBeQZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .rough-node .label,#mermaid-svg-xQTmfT7E5jDUBeQZ .node .label,#mermaid-svg-xQTmfT7E5jDUBeQZ .image-shape .label,#mermaid-svg-xQTmfT7E5jDUBeQZ .icon-shape .label{text-align:center;}#mermaid-svg-xQTmfT7E5jDUBeQZ .node.clickable{cursor:pointer;}#mermaid-svg-xQTmfT7E5jDUBeQZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .arrowheadPath{fill:#333333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xQTmfT7E5jDUBeQZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-xQTmfT7E5jDUBeQZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xQTmfT7E5jDUBeQZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-xQTmfT7E5jDUBeQZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .cluster text{fill:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ .cluster span{color:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xQTmfT7E5jDUBeQZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-xQTmfT7E5jDUBeQZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-xQTmfT7E5jDUBeQZ .icon-shape,#mermaid-svg-xQTmfT7E5jDUBeQZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xQTmfT7E5jDUBeQZ .icon-shape p,#mermaid-svg-xQTmfT7E5jDUBeQZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-xQTmfT7E5jDUBeQZ .icon-shape .label rect,#mermaid-svg-xQTmfT7E5jDUBeQZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xQTmfT7E5jDUBeQZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-xQTmfT7E5jDUBeQZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-xQTmfT7E5jDUBeQZ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 无法再花同一UTXO
区块 100
区块 101
区块 102: 包含交易 A
区块 103
区块 104
区块 105
冲突交易 B
当交易 A 已经进入区块 102 后,冲突交易 B 再想花同一个 UTXO,就会被节点识别为双花并拒绝。
七、最长链/最多工作量链:解决网络分歧
在分布式网络中,不同节点可能暂时看到不同的区块。例如两个矿工几乎同时挖出新区块,网络会出现短暂分叉。
#mermaid-svg-tpc6znuef2wsb4QA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-tpc6znuef2wsb4QA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-tpc6znuef2wsb4QA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-tpc6znuef2wsb4QA .error-icon{fill:#552222;}#mermaid-svg-tpc6znuef2wsb4QA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-tpc6znuef2wsb4QA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-tpc6znuef2wsb4QA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-tpc6znuef2wsb4QA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-tpc6znuef2wsb4QA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-tpc6znuef2wsb4QA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-tpc6znuef2wsb4QA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-tpc6znuef2wsb4QA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-tpc6znuef2wsb4QA .marker.cross{stroke:#333333;}#mermaid-svg-tpc6znuef2wsb4QA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-tpc6znuef2wsb4QA p{margin:0;}#mermaid-svg-tpc6znuef2wsb4QA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-tpc6znuef2wsb4QA .cluster-label text{fill:#333;}#mermaid-svg-tpc6znuef2wsb4QA .cluster-label span{color:#333;}#mermaid-svg-tpc6znuef2wsb4QA .cluster-label span p{background-color:transparent;}#mermaid-svg-tpc6znuef2wsb4QA .label text,#mermaid-svg-tpc6znuef2wsb4QA span{fill:#333;color:#333;}#mermaid-svg-tpc6znuef2wsb4QA .node rect,#mermaid-svg-tpc6znuef2wsb4QA .node circle,#mermaid-svg-tpc6znuef2wsb4QA .node ellipse,#mermaid-svg-tpc6znuef2wsb4QA .node polygon,#mermaid-svg-tpc6znuef2wsb4QA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-tpc6znuef2wsb4QA .rough-node .label text,#mermaid-svg-tpc6znuef2wsb4QA .node .label text,#mermaid-svg-tpc6znuef2wsb4QA .image-shape .label,#mermaid-svg-tpc6znuef2wsb4QA .icon-shape .label{text-anchor:middle;}#mermaid-svg-tpc6znuef2wsb4QA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-tpc6znuef2wsb4QA .rough-node .label,#mermaid-svg-tpc6znuef2wsb4QA .node .label,#mermaid-svg-tpc6znuef2wsb4QA .image-shape .label,#mermaid-svg-tpc6znuef2wsb4QA .icon-shape .label{text-align:center;}#mermaid-svg-tpc6znuef2wsb4QA .node.clickable{cursor:pointer;}#mermaid-svg-tpc6znuef2wsb4QA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-tpc6znuef2wsb4QA .arrowheadPath{fill:#333333;}#mermaid-svg-tpc6znuef2wsb4QA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-tpc6znuef2wsb4QA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-tpc6znuef2wsb4QA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tpc6znuef2wsb4QA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-tpc6znuef2wsb4QA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tpc6znuef2wsb4QA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-tpc6znuef2wsb4QA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-tpc6znuef2wsb4QA .cluster text{fill:#333;}#mermaid-svg-tpc6znuef2wsb4QA .cluster span{color:#333;}#mermaid-svg-tpc6znuef2wsb4QA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-tpc6znuef2wsb4QA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-tpc6znuef2wsb4QA rect.text{fill:none;stroke-width:0;}#mermaid-svg-tpc6znuef2wsb4QA .icon-shape,#mermaid-svg-tpc6znuef2wsb4QA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tpc6znuef2wsb4QA .icon-shape p,#mermaid-svg-tpc6znuef2wsb4QA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-tpc6znuef2wsb4QA .icon-shape .label rect,#mermaid-svg-tpc6znuef2wsb4QA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tpc6znuef2wsb4QA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-tpc6znuef2wsb4QA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-tpc6znuef2wsb4QA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 被放弃
区块 N
区块 N+1A
区块 N+1B
区块 N+2A
区块 N+3A
孤块方向
比特币节点会选择累计工作量最多的有效链。随着后续区块不断增加,其中一条链会领先,另一条链会被放弃。
这不是简单比较"区块数量",更准确地说是比较 累计工作量。通常情况下,最长链也是累计工作量最多的链。
八、发行与验证如何相互制衡?
比特币系统巧妙之处在于,发行和验证并不是彼此独立的模块,而是互相制衡:
#mermaid-svg-bpE2xvUV3xJg77xn{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bpE2xvUV3xJg77xn .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bpE2xvUV3xJg77xn .error-icon{fill:#552222;}#mermaid-svg-bpE2xvUV3xJg77xn .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bpE2xvUV3xJg77xn .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bpE2xvUV3xJg77xn .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bpE2xvUV3xJg77xn .marker.cross{stroke:#333333;}#mermaid-svg-bpE2xvUV3xJg77xn svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bpE2xvUV3xJg77xn p{margin:0;}#mermaid-svg-bpE2xvUV3xJg77xn .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bpE2xvUV3xJg77xn .cluster-label text{fill:#333;}#mermaid-svg-bpE2xvUV3xJg77xn .cluster-label span{color:#333;}#mermaid-svg-bpE2xvUV3xJg77xn .cluster-label span p{background-color:transparent;}#mermaid-svg-bpE2xvUV3xJg77xn .label text,#mermaid-svg-bpE2xvUV3xJg77xn span{fill:#333;color:#333;}#mermaid-svg-bpE2xvUV3xJg77xn .node rect,#mermaid-svg-bpE2xvUV3xJg77xn .node circle,#mermaid-svg-bpE2xvUV3xJg77xn .node ellipse,#mermaid-svg-bpE2xvUV3xJg77xn .node polygon,#mermaid-svg-bpE2xvUV3xJg77xn .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bpE2xvUV3xJg77xn .rough-node .label text,#mermaid-svg-bpE2xvUV3xJg77xn .node .label text,#mermaid-svg-bpE2xvUV3xJg77xn .image-shape .label,#mermaid-svg-bpE2xvUV3xJg77xn .icon-shape .label{text-anchor:middle;}#mermaid-svg-bpE2xvUV3xJg77xn .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bpE2xvUV3xJg77xn .rough-node .label,#mermaid-svg-bpE2xvUV3xJg77xn .node .label,#mermaid-svg-bpE2xvUV3xJg77xn .image-shape .label,#mermaid-svg-bpE2xvUV3xJg77xn .icon-shape .label{text-align:center;}#mermaid-svg-bpE2xvUV3xJg77xn .node.clickable{cursor:pointer;}#mermaid-svg-bpE2xvUV3xJg77xn .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bpE2xvUV3xJg77xn .arrowheadPath{fill:#333333;}#mermaid-svg-bpE2xvUV3xJg77xn .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bpE2xvUV3xJg77xn .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bpE2xvUV3xJg77xn .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bpE2xvUV3xJg77xn .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bpE2xvUV3xJg77xn .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bpE2xvUV3xJg77xn .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bpE2xvUV3xJg77xn .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bpE2xvUV3xJg77xn .cluster text{fill:#333;}#mermaid-svg-bpE2xvUV3xJg77xn .cluster span{color:#333;}#mermaid-svg-bpE2xvUV3xJg77xn div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bpE2xvUV3xJg77xn .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bpE2xvUV3xJg77xn rect.text{fill:none;stroke-width:0;}#mermaid-svg-bpE2xvUV3xJg77xn .icon-shape,#mermaid-svg-bpE2xvUV3xJg77xn .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bpE2xvUV3xJg77xn .icon-shape p,#mermaid-svg-bpE2xvUV3xJg77xn .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bpE2xvUV3xJg77xn .icon-shape .label rect,#mermaid-svg-bpE2xvUV3xJg77xn .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bpE2xvUV3xJg77xn .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bpE2xvUV3xJg77xn .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bpE2xvUV3xJg77xn :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 投入算力
包含 Coinbase 和交易
验证奖励是否合规
验证交易是否合规
无效则拒绝
有效则接受
协议规则
规定发行上限和区块奖励
规定交易和区块验证规则
矿工
产生新区块
全节点
无效区块无法成为账本
更新区块链账本
矿工有动力诚实记账,因为:
- 挖矿需要真实成本;
- 无效区块会被全节点拒绝;
- 被拒绝的区块奖励无法兑现;
- 诚实挖矿比伪造账本更有经济收益。
全节点有能力约束矿工,因为:
- 它们独立运行协议规则;
- 它们不需要相信矿工;
- 它们会拒绝超发、双花、无效签名等违规行为;
- 用户、交易所、钱包服务等通过全节点识别有效链。
九、一个完整例子:Alice 向 Bob 支付 BTC
假设 Alice 要向 Bob 支付 0.1 BTC。
Bob 全节点 矿工 P2P 网络 Alice 钱包 Bob 全节点 矿工 P2P 网络 Alice 钱包 #mermaid-svg-tMjJRRyjujQYUPf1{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-tMjJRRyjujQYUPf1 .error-icon{fill:#552222;}#mermaid-svg-tMjJRRyjujQYUPf1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-tMjJRRyjujQYUPf1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-tMjJRRyjujQYUPf1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-tMjJRRyjujQYUPf1 .marker.cross{stroke:#333333;}#mermaid-svg-tMjJRRyjujQYUPf1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-tMjJRRyjujQYUPf1 p{margin:0;}#mermaid-svg-tMjJRRyjujQYUPf1 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-tMjJRRyjujQYUPf1 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-tMjJRRyjujQYUPf1 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-tMjJRRyjujQYUPf1 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-tMjJRRyjujQYUPf1 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-tMjJRRyjujQYUPf1 .sequenceNumber{fill:white;}#mermaid-svg-tMjJRRyjujQYUPf1 #sequencenumber{fill:#333;}#mermaid-svg-tMjJRRyjujQYUPf1 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-tMjJRRyjujQYUPf1 .messageText{fill:#333;stroke:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-tMjJRRyjujQYUPf1 .labelText,#mermaid-svg-tMjJRRyjujQYUPf1 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .loopText,#mermaid-svg-tMjJRRyjujQYUPf1 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-tMjJRRyjujQYUPf1 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-tMjJRRyjujQYUPf1 .noteText,#mermaid-svg-tMjJRRyjujQYUPf1 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-tMjJRRyjujQYUPf1 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-tMjJRRyjujQYUPf1 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-tMjJRRyjujQYUPf1 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-tMjJRRyjujQYUPf1 .actorPopupMenu{position:absolute;}#mermaid-svg-tMjJRRyjujQYUPf1 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-tMjJRRyjujQYUPf1 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-tMjJRRyjujQYUPf1 .actor-man circle,#mermaid-svg-tMjJRRyjujQYUPf1 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-tMjJRRyjujQYUPf1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 选择可用 UTXO 构造交易并签名 广播交易 节点验证交易 合法交易继续传播 将交易放入候选区块 进行 PoW 挖矿 广播新区块 全节点验证区块 Bob 看到交易获得确认
这笔交易从产生到确认,大致经历了五层验证:
- 钱包选择 Alice 未花费的 UTXO;
- Alice 用私钥生成签名;
- 节点验证签名和 UTXO 状态;
- 矿工把交易写入新区块;
- 全节点验证新区块并更新账本。
十、为什么这套机制有效?
比特币解决货币发行与验证问题,依赖的是一套组合机制,而不是单一技术。
| 机制 | 解决的问题 |
|---|---|
| 固定发行规则 | 防止任意增发 |
| Coinbase 交易 | 定义新币来源 |
| 区块奖励减半 | 控制长期供应量 |
| 工作量证明 | 竞争记账权并增加攻击成本 |
| 难度调整 | 稳定出块和发行节奏 |
| UTXO 模型 | 明确哪些币还没被花 |
| 数字签名 | 证明花费权限 |
| 全节点验证 | 拒绝无效交易和区块 |
| 累计工作量最长链 | 在分布式网络中形成共识 |
可以总结成一句话:
比特币用协议规则控制发行,用密码学证明所有权,用工作量证明排序交易,用全节点验证约束所有参与者。
十一、比特币的核心设计哲学
传统货币系统的逻辑是:
text
相信机构 → 机构记账 → 用户接受结果
比特币的逻辑是:
text
公开规则 → 节点验证 → 网络形成共识
它并不是让"所有人都互相信任",而是让每个人都可以在不信任对方的情况下,独立验证同一套账本。
这也是比特币白皮书标题中"点对点电子现金系统"的真正含义:货币发行和交易验证不再依赖中心化中介,而是由公开协议、经济激励和密码学验证共同完成。