一笔未确认交易很少真正孤立存在。它可能花费另一笔尚未确认交易的输出,也可能已经被新的子交易继续花费。只查单笔费率,就会把一个相互依赖的交易包误看成若干独立对象。Bitcoin Core提供两个方向相反的RPC,正好可以把关系补全。
先把中心交易钉在本节点视图里
getmempoolancestors要求目标交易仍在本节点mempool中,非verbose模式返回所有未确认祖先txid。
调用前先用getmempoolentry确认目标txid仍然存在。若交易刚刚确认、被替换、被驱逐,或本节点从未接收它,查询失败并不等于交易无效。记录节点版本、查询时间、链高度与mempool序列,比只保存一张RPC截图更有价值。
祖先方向回答“中心交易依赖谁”:只要某个未确认交易的输出直接或间接成为目标输入,它就在祖先集合中。非verbose响应适合快速拿txid列表;需要评估包体量与费用时再启用verbose,避免批量巡检无谓放大响应。
后代方向是另一棵树
getmempooldescendants从目标交易向后返回所有仍在mempool的子孙交易,两个方向不能互换。
后代查询回答“谁依赖中心交易”。它沿着中心交易输出被花费的路径向后展开,不能拿祖先结果倒序替代。一个交易可以只有祖先没有后代,也可能自己是包根而拥有多层子孙;两边数量不对称是正常现象。
| 诊断问题 | 使用方向 | 首先保存 | 不能直接推出 |
|---|---|---|---|
| 目标为什么无法单独确认 | ancestors | 祖先txid与层级 | 某个祖先必然进下一块 |
| 加速子交易会影响哪些对象 | descendants | 后代txid与花费链 | 所有后代都会一起确认 |
| 包是否接近策略边界 | 两边verbose | count、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不能承诺下一块纳入。
相关背景可继续查看getmempoolcluster、getmempoolentry、getmempoolinfo。接口、客户端与网络状态会随时间变化,本文不构成投资、交易或收益建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。