比特币交易从广播到被网络确认,中间隔着一个等待区。理解确认数和最终性的关系,能帮助判断一笔转账在什么阶段可以被视为已经完成。
确认是什么:交易被写入区块
一笔比特币交易在广播后进入节点的内存池,等待矿工挑选打包。矿工把交易放进候选区块,并通过工作量证明竞争记账权。当包含这笔交易的区块被网络接受,交易就获得了第一次确认。此后每产生一个新区块,确认数就加一。
根据公开资料,比特币平均约十分钟产生一个新区块,但这是概率性平均值。两个区块可能相隔一分多钟,也可能相隔几十分钟。因此,一笔交易从广播到第一次确认,通常需要等待十分钟到一小时左右,具体时间无法精确预测。
最终性是概率性的,不是开关
比特币协议没有规定“达到某个确认数就绝对不可逆转”。实际发生的情况是:当两名矿工几乎同时找到区块时,网络会短暂出现两条竞争链,下一块建在哪条链上,哪条链胜出,另一条链中的交易会回到内存池等待重新确认。这被称为区块链重组。
重组几乎总是只影响最近一两个区块,深层重组极为罕见,因为要重写历史需要重新完成大量工作量证明。每多一次确认,交易被回滚的概率就呈指数级下降。所以最终性是一个随确认数增加而提高的概率,而不是某个固定数字触发的确定状态。
六次确认是行业惯例,不是协议规则
比特币软件本身不强制要求六次确认。六次确认之所以成为常见标准,是因为它在可接受的等待时间内提供了足够的安全余量,交易所和商户各自采纳后逐渐形成惯例。
不同场景对确认数的要求并不统一。小额、双方互相信任的日常支付,一次确认甚至零确认在双方自愿承担风险时也可能被接受;中等金额的支付,一些交易所的入金门槛设在三次确认左右;大额转账则通常等待六次确认。这些数字是服务方自行设定的风控选择,不是比特币网络的统一规定。
未确认交易为什么可以被替换
未确认的交易只是内存池中的一项提议,不是已经结算的结果。如果手续费率低于矿工当前愿意接受的水平,交易可能长时间不被打包。此时,发送方或钱包可以广播一笔花费相同币、手续费更高的替代交易,把原交易从内存池中替换掉。
根据公开资料,比特币核心28.0版本起,完全按手续费替换成为默认的内存池策略,发送方不再需要事先把交易标记为可替换。这意味着任何未确认的比特币交易,无论当初如何构建,都可能被手续费更高的版本取代。对收款方来说,零确认到账的付款在确认之前不应视为最终结算。
如果交易一直卡住,常见结果有三种:网络拥堵缓解后最终被确认;被更高手续费的替代交易替换;在大约两周后从节点内存池中被移除,届时被锁定的币重新可用。直接取消一笔已广播的交易并不可行,能做的只是用另一笔花费相同币的交易来替换它。
手续费买的是区块空间
比特币手续费按交易的数据大小计算,单位是每虚拟字节多少聪(sat/vB),与转账金额无关。一笔标准原生隔离见证支付大约占用141个虚拟字节,一笔Taproot支付约111个虚拟字节。在费率相同的情况下,转50美元和转500万美元的手续费可以一样。
决定交易大小的主要因素是输入数量。如果一笔支付由二十笔小额收款拼成,它需要花费二十个输入,体积远大于由一笔大额收款构成的支付,手续费也更高。地址类型同样影响大小:旧式P2PKH地址最大,原生隔离见证和Taproot地址更小。
因此,判断一笔交易为什么慢,应该看费率而不是总手续费。总手续费高但交易体积更大时,费率可能仍然偏低。
实际判断:什么时候可以认为交易完成了
对普通读者来说,可以按以下思路理解确认数的意义。零确认意味着交易只在内存池中,存在被替换的可能,适合双方都接受该风险的场景。一次确认意味着交易已进入区块,但最近区块仍可能因重组回到内存池,适合小额且双方有一定信任基础的情况。三次确认和六次确认则分别对应中等金额和大额转账中更常见的等待标准。
需要强调的是,这些数字是行业实践中的参考,不是协议保证。收款方是否接受某个确认数,取决于其自身风控规则和对重组风险的判断。对于无法承受回滚风险的交易,等待更多确认是更稳妥的做法。
结论
比特币交易的确认是一个逐步累积概率的过程。第一次确认代表交易被写入区块,后续每个区块增加一重保障。六次确认是交易所和商户广泛采用的惯例,而非比特币协议强制规定的最终性门槛。未确认交易可以被更高手续费的版本替换,因此零确认到账不等于最终结算。理解确认数与概率的关系,比记住某个固定数字更能帮助判断一笔比特币转账处于什么状态。