你有没有好奇过:为什么比特币这么多年了,还没人能随便印钱乱花?

一笔比特币从你手机点“发送”开始,到真正进对方钱包,中间到底经历了啥?

今天咱们就来把这套机制掰开揉碎讲清楚,像剥洋葱一样一层一层扒。

比特币不像银行账户那样有个“余额”数字到处加减。它用的是UTXO模型——Unspent Transaction Output,未花费交易输出。简单说,你的“钱”不是存在一个账户里,而是一堆之前交易留下的“收据”,每张收据上写着金额和锁(谁能花)。

这些收据就是UTXO。

花钱的时候,你不是扣余额,而是把旧收据撕掉(作为输入),然后开新收据(作为输出)给别人,还得给自己开找零收据。

先来一张图:一笔比特币交易的完整流程(文字版流程图)

比特币交易流程图。展示了从手机发送 0.5 BTC,选择 UTXO 作为输入,构建包含输入、输出和手续费的交易结构,签名并广播到网络,最后由矿工打包上链并生成新 UTXO 的全过程。

1.你想给朋友转0.5 BTC

→ 你钱包里现在有3个UTXO:0.3 BTC + 0.4 BTC + 0.8 BTC(总1.5 BTC)

2.钱包挑选输入(通常选刚好够或最少的组合,避免浪费)

→ 选0.4 BTC + 0.3 BTC = 0.7 BTC作为输入

3.构建交易结构

•   输入(Inputs):引用上面两个UTXO的交易ID + 输出索引 + 解锁脚本(你的签名证明你是主人)

•   输出(Outputs)

    •    给朋友:0.5 BTC(锁到朋友的公钥哈希地址)

    •    找零给自己:0.18 BTC(锁到你自己的地址,扣掉手续费0.02 BTC)

•   手续费:隐含在输入总和 - 输出总和 = 0.02 BTC(矿工拿走)

4.签名:用你的私钥对整个交易签名(防止别人改金额)

5.广播到网络:发给附近节点,节点验证 → 放进内存池(mempool)

6.矿工看到这笔交易 → 打包进候选区块

7.矿工挖矿成功 → 区块上链 → 你的旧UTXO被标记“已花费” → 新UTXO产生(朋友的0.5 + 你的找零0.18)

8.确认:后续区块越多,越安全(通常6个确认算稳)
 

整个过程像扔雪球:旧的UTXO被“消耗”,新的UTXO诞生。比特币总量永远不变,就是在这些UTXO之间来回转移。

交易结构长啥样?(核心字段拆解)
 

比特币交易不是简单“我给你多少钱”,它是个数据结构,大概这些部分:

•   版本号(4字节):目前大多是2,信号软分叉用

•   输入数量(可变):几个UTXO被花

•   每个输入

    •   前一个交易的哈希(32字节

    •   输出索引(4字节,告诉是第几个输出)

    •   脚本签名长度

    •    解锁脚本(ScriptSig):你的签名 + 公钥

    •   输出数量

•   每个输出

    •   金额(8字节,单位sat,1 BTC = 1亿sat)

    •   锁定脚本长度

    •   锁定脚本(ScriptPubKey):最常见是P2PKH(Pay to Public Key Hash):OP_DUP OP_HASH160 [20字节pubkey hash] OP_EQUALVERIFY OP_CHECKSIG

•   锁定时间(4字节):通常0,意思马上生效

重点来了:脚本语言

比特币的脚本是图灵不完备的(故意设计简单),但超级强大。

它像个小虚拟机,只回答一个问题:“这笔钱现在能花吗?”

常见锁定脚本例子:

  • P2PKH(最常见):锁到地址(公钥哈希),解锁需要提供签名+公钥,验证签名匹配公钥,公钥哈希匹配地址。
  • P2SH:更灵活,能玩多签、时间锁等。
  • Taproot(2021升级后主流):用Schnorr签名,更隐私、更便宜的多签。

脚本让比特币可编程,但又不会像以太坊那样容易出大bug。安全第一。

挖矿:谁来打包这些交易?

比特币挖矿和内存池的插图。一群机器人矿工围着一个充满未确认交易(带有不同手续费标签)的“内存池”。他们用网捞取高手续费的交易放入自己的区块,并同时进行“哈希难题(Nonce)”的计算。其中一个矿工成功找到区块,方块发光并显示“BLOCK FOUND!”。

矿工就是网络的“会计+保安”。

他们干的事:

1.收集内存池里手续费最高的交易(优先打包高费的)

2.构建区块:

•   区块头(80字节,超级重要):

    •   版本

    •   上一个区块哈希(链起来)

    •    Merkle Root(所有交易的指纹树根)

    •    时间戳

    •   难度目标(Bits字段)

    •    Nonce(随机数,矿工狂改这个)

•   交易列表:coinbase交易(矿工奖励)在最前面 + 普通交易

3.算Nonce:让整个区块头的双SHA256哈希 < 当前难度目标(前面有很多0)比如目标是00000000ffff...,你就得不停试Nonce,直到哈希开头够多0。

4.谁先算出来 → 广播区块 → 其他节点验证 → 接受 → 继续挖下一个

5.奖励:当前3.125 BTC(2024减半后) + 所有打包交易的手续费

挖矿本质是彩票:全网算力越高,中奖越难。但难度会自动调(后面讲)。

区块结构:一目了然

区块 = 区块头 + 交易体

区块头字段:

  • 版本 (4B)
  • Prev Hash (32B)
  • Merkle Root (32B)
  • Timestamp (4B)
  • Bits (难度编码,4B)
  • Nonce (4B)

交易体:

  • 交易计数
  • coinbase交易(矿工发给自己奖励+任意消息,比如中本聪创世块写“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”)
  • 普通交易

Merkle树超级聪明:几千笔交易也能用一个32字节根哈希概括,改任何一笔交易根就变,验证超快。

难度调整:比特币的“自动油门”

比特币要保持平均10分钟出一个块。

不管全网算力暴涨(新矿机上线)还是暴跌(中国禁矿),都得尽量稳在10分钟。

怎么调?

  • 每2016个块(大概两周)算一次实际用时。
  • 目标时间:2016 × 10分钟 = 20160分钟。
  • 如果实际用了更短时间(比如算力猛增),难度↑(目标哈希更小,前导0更多)。
  • 如果用了更长时间,难度↓。
  • 调整公式:新难度 = 旧难度 × (20160分钟 / 实际时间)
  • 但有上下限:单次调整最多不能超过4倍(防止极端震荡)。

这机制天才在哪?

它让比特币发行节奏像钟表一样准。

不管人类科技多猛,21百万上限和减半节奏都不会乱。

这也是比特币“数字黄金”信仰的基石之一。

为什么这些设计让比特币这么稳?

  • UTXO:防双花超级简单(一个UTXO只能花一次,已花就删)。
  • 脚本:可编程但受限,安全。
  • PoW + 难度调整:用真实电力成本保护网络,51%攻击贵到离谱。
  • 最长链规则:全网默认认可工作量最大的链(最难伪造)。

一笔交易从发起到确认,背后是全球几万节点、矿工在实时博弈、验证、竞争。

现在你应该能跟朋友吹牛了:

“比特币不是账户余额,它是一堆UTXO在链上跳舞。矿工用烧电的方式投票决定哪笔交易先上历史书。难度每两周自动校准,保证节奏不乱。”

想再深挖?比如SegWit怎么省空间、Taproot怎么让多签便宜、闪电网络怎么秒转?

或者你来告诉我,你最搞不懂哪部分,我继续给你掰扯~

 

推荐全球Top3加密交易所:

大而全选币安、专业玩法选OKX、炒山寨选Gate!速开享终身手续费减免~