创建交易
- 输入(Inputs):指定要花费的比特币来源(如之前收到的UTXO*)。
- 输出(Outputs):指定接收方的比特币地址和金额(可包含找零地址)。
- 手续费(Fee):用户自愿支付给矿工的激励费用(通常手续费越高,交易越快确认)。
*UTXO(未花费交易输出):比特币的最小可交易单位,类似“零钱”。
签名验证
- 私钥签名:发送方用私钥对交易进行数字签名,证明对比特币的所有权。
- 公钥验证:网络通过公钥验证签名合法性,确保交易未被篡改。
广播交易
- 交易被发送到比特币网络,由节点(矿工或全节点)接收并验证。
交易验证(矿工节点)
- 双重支付检查:确保同一UTXO未被重复使用。
- 格式合规性:检查交易结构是否符合协议规则。
- 脚本验证:执行比特币脚本(如P2PKH、P2SH等)确认交易有效性。
打包进区块
- 矿工将验证通过的交易放入内存池(Mempool),并竞争将交易打包到新区块中。
- 通过工作量证明(PoW)解决数学难题,获得记账权。
区块确认
- 首个确认:交易被包含在一个区块中(约10分钟)。
- 后续确认:后续区块不断叠加,通常6个确认(约1小时)后视为最终确认。
更新账本
- 全网节点同步新区块,更新UTXO集,标记已使用的UTXO,记录新生成的UTXO。
关键特点
- 去中心化:无银行等中介,依赖全网节点共识。
- 透明性:所有交易公开可查(通过区块链浏览器)。
- 不可逆性:确认后无法撤销(除非51%攻击,但极难实现)。
示例流程
- Alice向Bob转1 BTC:
Alice用私钥签名交易,输入为之前收到的1.2 BTC UTXO,输出为Bob的地址(1 BTC)和找零地址(0.19 BTC,手续费0.01 BTC)。
- 交易广播后,矿工验证并打包到区块#800000。
- 区块#800001~800006依次确认后,交易完成。
注意事项
- 手续费:影响交易速度,动态调整(如使用RBF*替换低手续费交易)。
- 交易延迟:网络拥堵时可能需要更长时间。
- 隐私性:地址不直接关联身份,但链上分析可能追踪行为。
*RBF(Replace-by-Fee):允许替换未确认交易并提高手续费。
通过这一流程,比特币实现了无需信任的点对点价值转移。