比特币运行流程
一、工作流程
1. 交易创建与广播
- 用户发起比特币交易,指定接收者地址和转账金额,并用私钥进行签名。
- 交易数据会被广播到比特币网络中的所有节点。
2. 交易验证
- 网络中的节点验证交易的合法性:
- 发送者的账户余额是否充足。
- 交易签名是否有效,确保交易未被篡改。
- 符合规则的交易被暂存到「内存池」(Mempool),等待矿工打包。
3. 交易打包(区块创建)
- 矿工节点从内存池中选择交易,将其打包到一个新的区块中。
- 每个区块包含:
- 交易列表
- 上一个区块的哈希值(保证区块链连续性)
- 一个随机数(Nonce)
4. 挖矿(工作量证明)
- 矿工通过计算哈希函数(SHA-256)寻找满足难度目标的哈希值(即「工作量证明」)。
- 计算符合条件的矿工获得记账权,并向区块链添加新区块。
5. 区块广播与共识
- 生成新区块后,矿工会将其广播到全网。
- 其他节点验证该区块的正确性,并将其添加到自己的区块链上。
- 比特币网络遵循「最长链原则」,即所有节点都会接受工作量最大的最长合法链。
6. 确认交易
- 交易被打包进区块后,用户可以查询其交易状态。
- 每当新区块被添加,该交易的「确认数」增加 1,确认数越多,交易越安全。
7. 比特币发行
- 挖矿的矿工会获得新区块的区块奖励(目前约 3.125 BTC),以及交易手续费。
- 比特币总供应量为 2100 万个,每 4 年减半一次(即「比特币减半」机制)。
整个比特币系统通过「去中心化」+「工作量证明」的方式,实现了无需可信第三方的点对点交易。
二、工作原理
比特币的工作原理基于区块链技术和 工作量证明(Proof of Work, PoW) 机制,实现去中心化的点对点交易。核心原理如下:
1. 交易与签名
比特币交易的本质是 UTXO(未花费交易输出) 转账:
- 创建交易:用户 A 想要向用户 B 发送比特币,需要提供自己的 UTXO(比特币余额)作为输入,并生成一个新的输出给 B(可能还有找零给自己)。
- 数字签名:A 使用自己的私钥对交易进行签名,以证明自己拥有这些比特币的支配权。
- 交易广播:交易数据被广播到全网,等待矿工确认。
2. 交易验证
比特币网络中的节点会通过 比特币脚本 验证交易的合法性:
- 交易输入是否对应有效的 UTXO(即比特币余额是否足够)。
- 交易签名是否有效,确保交易未被篡改。
- 交易未双重支付(Double Spending)。
验证通过后,交易被加入 内存池(Mempool),等待矿工打包。
3. 区块打包(矿工挖矿)
矿工从内存池中挑选交易,打包成一个新区块:
- 区块结构
- 上一个区块的哈希(保证链条连续性)
- 交易列表
- 时间戳
- 随机数(Nonce)
- 当前区块的目标难度(Difficulty Target)
4. 挖矿(工作量证明 PoW)
- 矿工需要寻找一个 满足难度要求的哈希值(SHA-256)。
- 计算公式:
Hash(上一区块哈希 + 交易列表 + 时间戳 + 随机数) < 目标值
1 - 矿工不断尝试不同的 Nonce,直到找到符合条件的哈希值(即小于目标难度)。
- 找到符合要求的矿工会将新区块广播到全网。
5. 区块共识(最长链原则)
- 其他节点验证新区块的合法性(检查哈希值、交易是否有效等)。
- 验证通过后,节点将新区块加入自己的区块链。
- 比特币网络采用 最长链原则:
- 如果出现分叉,所有矿工会继续在最长的合法链上挖矿。
- 短链上的交易可能会被抛弃,称为「孤块」。
6. 交易确认
- 交易被打包进区块后,用户可以查询交易状态。
- 交易的 确认数(Confirmations)= 交易所在区块与最新区块之间的距离。
- 确认数越多,交易越安全,通常认为 6 次确认 后交易不可逆。
7. 比特币发行机制
- 区块奖励:矿工成功挖出新区块,会获得比特币奖励(挖矿奖励)。
- 减半机制:每 210,000 个区块(约 4 年),比特币奖励减半:
- 2009 年:50 BTC
- 2012 年:25 BTC
- 2016 年:12.5 BTC
- 2020 年:6.25 BTC
- 2024 年(预计):3.125 BTC
- 总量限制:比特币总供应量为 2100 万枚,预计在 2140 年全部挖完。
8. 安全性与抗攻击机制
- 双重支付攻击:
- 通过工作量证明和最长链原则防止恶意用户重复使用同一笔比特币。
- 51% 攻击:
- 如果某个矿工或矿池控制了 51% 以上的算力,就可以修改交易记录。
- 但在现实中,这种攻击成本极高,难以实现。
- 抗审查性:
- 由于比特币是去中心化的,没有单一机构可以控制整个网络。
这一系列的流程及原理中,牵扯到很多重要的概念,如:
- 挖矿
- 工作量证明
- 最长链原则
- 比特币脚本
- 内存池
- 双重支付攻击
- 51% 攻击