不可逆性是指比特币交易一旦被某个区块收录(这就是"已确认"的含义),其设计目标是随着后续区块的不断叠加而变得越来越难以撤销。将这类交易称为"不可逆"或"无法撤销",其实是一种简化说法,描述的是一种设计机制,而非某种承诺:比特币协议的文档,也就是网络各方共同认可的规则,并未描述任何可以取消已确认交易的功能。
在比特币中,一个区块是一批交易的集合,而区块链则是所有区块的共享记录。
什么是比特币确认?交易是如何获得确认的?
一笔比特币交易从创建到获得确认,要经历4个步骤。
- 创建并签名。钱包,也就是用户用来发送BTC的软件,会构建一笔交易,并用发送方的私钥对其签名。
- 广播并等待。区块链节点,即连接到比特币网络的计算机,会将交易转发给其他节点,而该交易在此期间处于未确认状态,等待被收录。
- 收录进区块。挖矿运营商,即通过运行比特币矿机向区块链添加区块的个人或公司,将交易收录进某个区块,使其获得一个确认。
- 增加确认数。挖矿运营商不断添加新的区块,每在收录该交易的区块之后新增一个区块,该交易的确认数就增加一次。
私钥是只有发送方应当持有的秘密信息。用私钥生成的数字签名,是证明密钥持有者已授权该交易的密码学证明。交易会指明它所花费的输出,而输出是一笔交易分配给某个接收方的一定数量的BTC。输入则是新交易所花费的、此前某笔交易产生的输出。
每个维护内存池(mempool,即尚未被收录进区块、处于等待状态的交易池)的节点,只要根据自身的规则和策略认为某笔交易有效,就可以将其保留在内存池中。节点的策略是只有该节点自身才会应用的一套额外规则,因此不同节点之间可能存在差异。
在协议层面,交易的手续费归收录该交易的挖矿运营商所有。更高的费率(即相对于交易体积而言更高的手续费)会提高该交易被较早收录的可能性,但并不能保证任何具体的收录时间。
确认分数衡量的是:要删除或更改某笔交易,需要修改最长链(best chain)上多少个区块。最长链是指工作量(即工作量证明机制要求每个区块投入的计算努力)最多的那条链。确认分数达到1或以上的交易即视为已确认,该分数也被称为确认数。
为什么已确认的比特币交易被设计成难以撤销?
比特币的不可逆性首先依赖于哈希链接。哈希是一个函数根据数据计算出的固定长度数字。每个区块头(区块顶部的数据字段)都存储着前一个区块头的哈希值。一旦修改某笔交易,其所在区块的哈希值也会随之改变,导致下一个区块中存储的副本不再匹配,而这种不匹配会沿着之后所有区块一路传导下去。
工作量证明为这些哈希链接增加了成本。只有当区块头的哈希值(作为数字读取)等于或低于目标值——即网络规则为有效哈希设定的上限——该区块才被视为有效。找到这样的哈希值需要反复计算,而这种计算就是所谓的"工作量"。修改某笔交易,就意味着要为其所在区块以及之后的每一个区块重新完成这些工作量,而且随着新区块的不断增加,所需的工作量也会持续增长。
网络难度衡量的是找到一个有效区块的难度,网络每2016个区块会对其进行一次调整。截至2026年10月,难度值已超过140万亿。将难度值乘以约43亿(即2的32次方),可以估算出找到一个区块平均所需的哈希计算次数,按照当前难度,这一数字平均超过500万亿亿次哈希运算(1 sextillion等于10的21次方)。
截至2026年10月,一笔拥有3个确认的交易,需要修改3个区块才能被更改,因此平均而言,要更改它需要进行超过1.5千万亿亿次哈希运算(1 septillion等于10的24次方)。上述数字均已向下取整,即便难度下降约17%,结论依然成立。这些数字只是用来说明规模之大,并非攻击成本的估算,也不是等待时间的建议,更不能排除撤销的可能性。
比特币全节点增加了第三层保障,因为它们遵循工作量最多的链,并自行核验规则。节点被设计为只有在某条竞争链拥有更多工作量时才会切换过去,这一过程称为"重组"(reorganization),而被舍弃的区块则变成"孤块"(stale),意味着它们不再属于该节点认定的最长链。全节点会依据共识规则(决定某个区块或交易对整个网络而言是否有效的规则)对每个区块自行核验,因此即便某个区块背后有工作量支撑,只要它违反了规则,也会被设计为拒绝接受。
在比特币中,不可逆性的边界取决于谁掌控着算力,即比特币矿机每秒计算的哈希次数总和。掌握大部分算力的一方,理论上可以修改近期的区块,撤销其自身近期发出的付款,而无论确认数多高都无法消除这种可能性。这一特性的设计目的是让撤销变得更难,而不是从根本上杜绝撤销的可能。关于这一机制,可参阅"51%攻击与双花"词条;关于记录历史被设计为极难更改这一更广泛的特性,可参阅"不可篡改性"词条。
未确认的交易可以被替换或丢弃吗?
未确认的交易不受哈希链接或工作量证明的保护,因为还没有任何区块收录它,只要它还留在某个节点的内存池中,就仍有可能被替换或丢弃。手续费替换(Replace-By-Fee,RBF)是一种节点策略,在该策略下,发送方可以用一个支付更高手续费的新版本替换原本未确认的交易,节点可以接受这种替换。节点也可能在超过时限后或内存池已满时丢弃某笔交易,这两种情况都属于节点本地的设置。
当两笔交易花费同一个输出时,它们就构成冲突,其中一笔冲突交易可能会取代原本未确认的那笔。如果其中一笔已被确认,另一笔就不再有效,节点会将其移除。关于单笔交易层面的双花问题,可参阅"未花费交易输出(UTXO)"词条。
一笔交易如果在未被确认的情况下离开了某个节点的内存池,并不代表它已经被"撤销"。它本打算花费的那些输出,在区块链上仍未被真正花费,直到有某个区块收录了实际花费这些输出的交易为止,因此一笔被丢弃的交易可能让发送方的BTC仍然留在原处。
比特币交易一旦确认,还能被撤销吗?
在比特币中,已确认的交易被设计为难以撤销,协议文档也没有描述任何让发送方或节点取消它的方法。至于已确认的比特币交易在实践中是否可能被撤销,取决于完成撤销所需的工作量,以及谁掌控着算力。
在比特币中,退款本质上是一笔新的交易。任何能够满足某个输出花费条件(即该输出规定谁有权花费它的规则)的人,都可以花费该输出,因此退还BTC实际上是由接收方发起的一笔新交易。
因操作失误而发送的BTC付款——比如发错地址或金额有误——属于用户错误,协议本身并不会对此进行纠正。节点只会核验某笔交易是否符合规则:其输入必须是未花费状态,其输出总额不得超过输入总额,且每个输入都必须满足其所使用输出的花费条件。这些规则核验的是交易的有效性,而不是发送方本意要付给谁,因此一笔发往有效但错误地址的交易,依然可能被确认。
比特币地址可以包含校验和(checksum),这是一种专门用来捕捉输入错误的纠错代码,但如果地址本身格式有效却填错了,校验和同样会通过。由于协议文档并未描述任何撤销已确认交易的方法,发送方应当在签名之前仔细核对地址和金额。
介于用户与网络之间的服务方,可能有自己的一套退款或纠纷处理规则。这些规则属于该服务方自身,并不属于比特币协议的一部分。
在存在中介调解纠纷的支付体系中,付款可以通过该流程得以撤销,信用卡拒付(chargeback,即信用卡公司在某些情况下撤销一笔扣款)便是一个例子。而比特币协议文档中并未描述类似的流程。
在每个阶段,交易还可能发生哪些变化?
不可逆性并不意味着什么?
不可逆性并不意味着某笔交易是合法的,也不意味着某笔付款本身是正当的。协议只核验交易是否符合规则,而不关心交易背后的原因。服务方的退款规则、纠纷处理以及任何法律救济途径,都不在协议范畴之内,本文也未就资金是否能够追回作出任何说明。
不可逆性并不意味着网络不会遭到攻击。掌握大部分算力的一方有可能重写近期的区块,这正是"更难撤销"不等于"不可能撤销"的原因。
本文所描述的比特币设计,截至2026年10月为准。它不对其他网络作任何陈述,也不构成任何预测。
2025年11月27日









