mempool祖先与后代怎么查? 图 1
mempool祖先与后代怎么查? · 图 1

一笔未确认交易很少真正孤立存在。它可能花费另一笔尚未确认交易的输出,也可能已经被新的子交易继续花费。只查单笔费率,就会把一个相互依赖的交易包误看成若干独立对象。Bitcoin Core提供两个方向相反的RPC,正好可以把关系补全。

先把中心交易钉在本节点视图里

getmempoolancestors要求目标交易仍在本节点mempool中,非verbose模式返回所有未确认祖先txid。

调用前先用getmempoolentry确认目标txid仍然存在。若交易刚刚确认、被替换、被驱逐,或本节点从未接收它,查询失败并不等于交易无效。记录节点版本、查询时间、链高度与mempool序列,比只保存一张RPC截图更有价值。

祖先方向回答“中心交易依赖谁”:只要某个未确认交易的输出直接或间接成为目标输入,它就在祖先集合中。非verbose响应适合快速拿txid列表;需要评估包体量与费用时再启用verbose,避免批量巡检无谓放大响应。

后代方向是另一棵树

getmempooldescendants从目标交易向后返回所有仍在mempool的子孙交易,两个方向不能互换。

后代查询回答“谁依赖中心交易”。它沿着中心交易输出被花费的路径向后展开,不能拿祖先结果倒序替代。一个交易可以只有祖先没有后代,也可能自己是包根而拥有多层子孙;两边数量不对称是正常现象。

诊断问题使用方向首先保存不能直接推出
目标为什么无法单独确认ancestors祖先txid与层级某个祖先必然进下一块
加速子交易会影响哪些对象descendants后代txid与花费链所有后代都会一起确认
包是否接近策略边界两边verbosecount、size与fees其他节点采用相同策略
关系是否刚刚变化两次采样差异节点与时间戳差异一定由恶意造成

聚合字段要按方向读

verbose响应包含ancestorcount、ancestorsize、descendantcount、descendantsize以及聚合费用,费用受本节点fee delta影响。

ancestorcount与ancestorsize描述包含当前交易在内的祖先侧集合;descendantcount与descendantsize描述后代侧集合。排障程序应明确字段是否包含中心交易,避免把列表长度与聚合计数机械比较。费用字段也要保留原始单位,展示层再换算费率。

本地fee delta会影响聚合费用,因此两个节点即使看到相同txid集合,费用视图也可能不同。若要判断加速方案,至少同时保存基础费用、修改后费用、vsize和依赖关系,不应只截取一个“总费用”数字。

用双向地图定位卡点

从中心交易开始,把祖先画在左侧、后代画在右侧,每条边标注“哪个输入花费哪个输出”。随后给每个节点附上vsize、单笔费率、聚合费率与进入mempool的时间。这样能区分低费祖先拖累、后代加速、包体过大和单纯网络传播延迟。

若钱包采用CPFP,新增高费子交易通常位于后代侧;若采用RBF,原交易可能从本节点mempool消失并由新txid替代。自动化不能假设中心txid永久稳定,应把“查询不到后重新定位替代交易”设计为独立分支。

多节点对照不是投票判真

mempool是节点本地瞬时视图,另一节点可能看不到相同交易或依赖集合。

节点A看到完整父子包,节点B只看到父交易,可能只是广播路径、接收时间或策略不同。对照时应标明每个节点的mempoolminfee、增量中继费、版本与采样时间。不要把某个公共RPC的结果覆盖成本地钱包节点的状态。

对矿工选包的推断尤其要克制。交易包费率、区块空间和节点策略可以帮助解释概率,却无法由这两个RPC保证确认高度。面对用户,应分别表述“本节点已接收”“依赖关系完整”“当前费率相对位置”和“尚无确认承诺”。

一次可复现的排障记录

先保存目标交易原始数据;再同时查询祖先与后代的非verbose列表;集合规模合理时拉取verbose详情;随后获取getmempoolinfo的全局压力和getmempoolentry的中心交易字段;间隔固定时间复采一次。最终报告附节点、区块高度、时间、原始JSON哈希以及发生变化的边。

先画依赖图,再讨论确认顺序

祖先与后代RPC适合解释本节点此刻看到的交易包,却不能替矿工承诺选包。把集合、费用口径、采样节点和时间戳一起保存,排障结论才可复现。

mempool祖先与后代怎么查?的复查入口

为减少转述漂移,本页把Bitcoin Core 31 getmempoolancestors、Bitcoin Core 31 getmempooldescendants、Bitcoin Core 31 getmempoolentry作为主要证据链。

当前不能越过的事实边界是:节点策略、重广播时点与矿工选包规则会改变实际确认顺序,RPC不能承诺下一块纳入。

相关背景可继续查看getmempoolclustergetmempoolentrygetmempoolinfo。接口、客户端与网络状态会随时间变化,本文不构成投资、交易或收益建议。