比特币转账已经发送,但钱包却始终显示未确认。款项究竟在哪里?
在交易被收进区块之前,它可能先存在于节点的Mempool,也就是用来保存未确认交易的交易池。不过,这不是全网共用、先到先处理的伫列,进入其中也不代表一定会在下一个区块确认。
本文以Bitcoin 为主,说明交易池如何运作、手续费与等待时间有什么关系,以及交易卡住时可以查看哪些资讯。
Mempool 是Memory Pool 的简称,在Bitcoin 情境下,通常指节点保存已接受、尚未被目前有效链确认之交易的本地资料集合。
可以把它理解为节点眼中的「候选交易集合」:交易经过接收与检查,等待被区块生产者选用,也可能因替换、冲突或节点政策而离开。
Mempool 本身不是区块链,也不保管另一份BTC。资产并不是先存进一个共同资金池,再由矿工把币拿出来。
不一样。Bitcoin(比特币)透过点对点网路交换交易与区块,节点收到资料的时间、连线对象、设定及接受政策可能不同。
因此,同一笔交易可能出现在某个服务的交易池,却暂时未被另一个服务看到。不同网站显示的未确认交易数量,也未必完全相同。
某节点拒收交易,不一定代表该交易违反共识规则。交易是否符合区块有效性规则,与节点是否愿意储存、转发它,属于不同层次。
以下是常见的公开传播流程,不代表所有交易都必须先出现在每个节点的交易池。
一般付款的资金来源,是引用先前的UTXO 未花费交易输出。若这笔付款又使用尚未确认交易产生的输出,便会有前后依赖关系。
「钱包按下送出」「某个节点已接受」「交易已确认」是三个不同状态,不能只凭送出成功就判定款项已完成结算。
不是。等待较久的交易,不保证优先被打包。
矿工建构区块时,通常会考虑费用收益与区块容量限制,也要处理交易之间的依赖关系。不能只按广播时间,或只看一笔交易的总手续费排序。
例如,一笔高费率交易如果需要先确认较低费率的父交易,矿工可能要一起评估相关交易组合。矿工也可能使用不同选择策略,并非全网强制采用同一份排序名单。
PoW 工作量证明负责区块生产与链选择的重要部分;Mempool 则提供候选交易。进入交易池本身没有取得区块确认。
当等待交易对区块空间的需求增加,希望较快确认的使用者可能愿意支付更高费率。若新交易持续进来,较低费率的交易便可能等待更久。
但不能只看未确认「笔数」。每笔交易的大小、费率分布与依赖关系不同,相同笔数可能代表完全不同的空间需求。
sat/vB 表示每个虚拟位元组支付多少satoshi。总手续费的简化估算为:
交易虚拟大小× 费率=总手续费。
B 的总费用较高,但单位空间费率只有A 的一半。因此,「我付得比较多」不代表更容易优先确认。上述为假设算例,不是目前建议费率。
钱包或浏览器提供的费率建议,是根据观察资料及估算方式产生的参考。之后新增交易、出块间隔与矿工选择都可能改变结果。
「预估下一个区块确认」不等于固定几分钟后必定到帐;Bitcoin 约十分钟出块是长期平均,而不是每笔交易的倒数计时器。
Mempool 主要解释链上交易尚未确认的阶段。若交易已取得足够确认,交易所却尚未入帐,还要查看平台维护、地址辨识及内部处理,不能一律归因于交易池壅塞。
RBF(Replace-by-Fee)可透过另一笔交易替换尚未确认的交易,常用于提高费用。可否操作,取决于钱包能力、原交易及节点接受条件。
例如Bitcoin Core 的bumpfee 可建立费用更高的替代交易,必要时调整找零或加入输入。一般用户可先查看钱包是否提供「提高费用」功能,不需要自行执行程式指令。
替换后应追踪新的TxID、实际收款内容及费用,不能只持续查询原ID。也不能把旧版BIP 125 的信号要求,直接当成所有节点目前唯一的替换政策。
CPFP(Child Pays For Parent)会花费一笔未确认交易的输出,建立较高费率的子交易。因为子交易成立需要父交易,矿工可能一起评估并收录两者。
可由控制适合输出的一方操作,例如掌握找零的付款人,或能花费收款输出的收款人;仍须符合钱包与节点政策。
两者都需要额外评估费用,不保证某个区块一定确认。若由交易所代为提币,应透过平台提供的处理方式确认,不能假设自己有权替换平台签出的交易。
不一定。交易可能因被确认、替换、冲突,或节点的容量与保留政策而离开特定交易池。
从某节点消失,不代表所有节点同步忘记,也不代表原交易从此不可能被重新广播或确认。钱包显示「放弃」也不能当成全网撤销指令。
因此,不要只因查询不到交易,就立即另外支付一次。应先核对钱包状态、有效链结果与可能的替代交易,避免重复付款。
若冲突交易改变原收款结果,则可能涉及双重支付;但正常提高手续费并保留付款,也可能只是交易加速。
以区块浏览器查询时,可先核对以下资料:
自行运行节点者,可使用Bitcoin Core 的getmempoolinfo 查看该节点的交易池状态。文件中的交易笔数、虚拟大小合计与实际记忆体用量,是不同指标,不应全部称作同一个「交易池大小」。
RPC 的部分费率栏位使用BTC/kvB,与网站常见的sat/vB 不同;比较时必须先确认单位。本文不提供需要输入私钥或助记词的查询方式,查一般交易状态只需公开交易资料。
Mempool 表示本地节点接受的候选交易;确认数描述交易所在区块在目前有效链中的深度;Finality 最终确认则涉及该链对历史稳定性的保障。
若发生Reorg 区块重组,原先已确认交易可能需要重新判断状态。它可能再次等待确认,也可能因新历史中的冲突而不再有效,不能保证每笔都自动回到每个节点的Mempool。
通常称为交易池或记忆体池;本文指Bitcoin 节点保存未确认交易的集合。
不是。各节点有自己的观察与接受政策,内容可能不同。
不等于已确认,也不保证一定被打包。仍须查看有效区块与接收平台规则。
不是。要区分总费用与费率,也要考虑父子交易依赖、矿工策略及后续竞争。
不是。出块时间有变动,交易也可能尚未被选入区块;平台入帐另有条件。
不能直接这样推论。可能只是该观察节点没有保存候选交易,或部分交易已被移除。
没有所有节点通用、能保证全网取消的天数。保留、移除及重新广播方式依软体与设定而异。
不需要。查看公开链上状态可使用TxID,不应向查询或加速服务提供助记词及私钥。