上篇我们讲了密码学和数据结构这两块"建筑材料"。这一篇我们把它们组装起来,看看比特币这条链到底是怎么跑起来的。
任何数字货币系统,不管去不去中心化,都必须回答两个问题:
传统银行体系里,央行发行货币,银行数据库记录余额,双花问题由中心化账本解决——你转账后余额扣减,不可能再花一次。
在没有中心化账本的去中心化网络里,这两个问题怎么解决?比特币的答案是:用交易本身来追溯币的来源。
每笔交易必须声明"我这笔钱是从之前的哪笔交易来的":
这引出了比特币最核心的账本模型——UTXO。
UTXO = Unspent Transaction Output(未花费交易输出)。
比特币没有"账户余额"这个概念。你的"余额"实际上是所有属于你的 UTXO 的总和。
工作原理:
类比一下:UTXO 模型不是银行存折(随时加减余额),而是现金——你钱包里有几张钞票(UTXO),花一张就销毁一张,找零产生新钞票。你不能把一张100块的钞票"部分花掉",必须整张花掉然后收找零。
这种设计有几个精巧之处:
交易费 = 总输入 - 总输出。现在是矿工收益的重要补充,未来(当出块奖励趋近于零时)将是矿工的唯一收入来源,保障网络持续安全。
比特币交易不只是"A 转账给 B"这么简单。每笔交易输出里嵌了一段锁定脚本(ScriptPubKey),定义"满足什么条件才能花这笔钱"。
一个完整的交易验证过程:
这种设计让比特币支持多种花费条件,而不只是"支付到公钥"。
在一个去中心化的 P2P 网络里,节点之间可能互相作恶,网络延迟没有上限。分布式系统理论告诉我们一些悲观结论:
比特币的解决思路很"野蛮":不去追求确定性共识,而是用最长链概率性共识。
规则很简单:
H(block header) ≤ target),谁就获得本轮记账权最长合法链原则:如果出现分叉(两个矿工几乎同时挖出区块),网络暂时保留两个分支。哪个分支先找到下一个区块,就更长,全网就会切过去,短的那条被丢弃(orphaned)。
这就是概率性共识——不是"所有人立刻同意",而是"随着区块不断增加,被回滚的概率指数级下降"。
双花攻击的一种手法:攻击者在区块 N 里写入交易 A(给自己买东西),同时秘密挖一条不含交易 A 的分叉链。等商家看到交易 A 入块后发货,攻击者立即广播自己更长的分叉链,回滚掉交易 A。
六次确认是对抗这种攻击的经验法则:等待6个新区块覆盖在包含你交易的区块之上。攻击者要回滚你的交易,需要重新挖出6个以上的区块并超过当前主链——这在算力上需要全网 50% 以上的算力,成本极高。
矿工为什么要拼命挖矿?因为有出块奖励(Block Reward)。这是比特币唯一的货币发行方式——没有央行印钱,全靠矿工挖矿"铸造"出来。
出块奖励的设计:
210,000 × 50 × (1 + 1/2 + 1/4 + 1/8 + ...) = 210,000 × 50 × 2 = 2,100 万这是一个收敛的几何级数,比特币总量趋近于 2100 万。稀缺性是人为设计出来的,不是天然属性。
H(nonce || prev_hash || merkle_root || timestamp || target || version) ≤ target
矿工不断尝试不同的 nonce,做一次 SHA-256 哈希,看结果是否小于等于 target。target 越小(即要求哈希值以更多个 0 开头),难度越大。
比特币网络每 2016 个区块(约两周)自动调整一次 target,使得平均出块时间保持在 10 分钟。
每次 nonce 尝试是一个伯努利试验(Bernoulli Trial)——只有"成功"和"失败"两种结果。
连续多次尝试是一个伯努利过程(Bernoulli Process),具有无记忆性(Memoryless)——你挖了 9 分钟没出块,第 10 分钟出块的概率和刚挖第 1 分钟一样。过去的工作不会让你"更接近"成功。
这就是 Progress Free 性质:挖矿没有"进度条",每次尝试都是独立的。这对公平性很重要——大矿工和小矿工在每次尝试上的成功概率是平等的(与历史工作量无关)。
从连续时间角度看,出块事件是泊松过程(Poisson Process),相邻区块的时间间隔服从指数分布(Exponential Distribution)。假设你拥有全网 1% 的算力,平均每 100 个区块中就有 1 个是你挖出的,也就是大约每 1000 分钟出一个。
Bitcoin is secured by mining. 挖矿表面上"浪费电力",但这是保障去中心化网络安全性的代价。没有 PoW 提供的经济屏障,攻击网络的成本几乎为零。
比特币网络可以粗略分为两层:
交易和区块在 P2P 网络中通过 Gossip 协议(流行病协议) 传播:
每个节点随机选择若干邻居节点交换信息,通过多轮传播使全网节点最终同步。
类似于"人传人"的流行病传播模型——一个人告诉三个人,三个人再各自告诉三个人,信息指数级扩散。
比特币 P2P 网络中所有节点都是平等的,没有超级节点(master node)。但节点功能上有所区分:
当一笔交易被广播到网络,它不会立刻进入区块。节点首先验证交易是否有效(签名正确、UTXO 未被花费等),有效则放入Mempool(内存池)。
Mempool 的三个作用:
把两篇串联起来,比特币的完整图景是这样的:
区块链不是魔法,它是密码学、分布式系统、博弈论的精密组合。理解这些底层原理,你才能看清那些天花乱坠的"区块链项目"到底有没有实质内容。
本文整理自个人学习笔记,力求用通俗语言讲清核心概念。如有疏漏,欢迎指正。