一、一个布尔参数,两种世界
getrawmempool 不带参数时只吐出一个交易编号数组,够数一数内存池里有多少笔单。带一个真值参数后,输出切换成以交易编号为键的详细对象,每笔未确认交易的账本细节一次摊开。排障、做费率研究、写小工具,绝大多数场景需要的是后者。值得逐项读的字段大致分四组:依赖关系、家族统计、费用口径和状态标志。

二、depends:先花爸爸才能花儿子
depends 列出这笔交易的未确认输入来自哪些父交易。它的实用价值在两个场景:一是你加了费想加急的子交易一直不动,查它的 depends,很可能发现父交易费率低得没人愿意打包,整条链一起沉底;二是判断广播完整性,内存池里出现孤儿交易本就异常,depends 非空而父交易不在表内,说明网络传播或本地策略出了问题。
三、祖先与后代:家族账本
ancestorcount 与 ancestorsize 把这笔交易连同它所有未确认祖先的笔数与虚拟字节数合并统计,descendantcount 与 descendantsize 反向把子孙一并算上。打包软件真正关心的是家族平均费率——单看一笔交易费率高不算数,背着低费祖先等于替全家拖后腿。理解这四个字段,也就理解了为什么钱包做费用加速时要么整族一起提、要么干脆从零重建。
四、wtxid 与费用四件套
wtxid 是含见证数据的序列化交易哈希,与 txid 分家,专门用来识别输入输出完全相同、只是见证不同的双胞胎交易,是防交易延展与查重时的正确钥匙。fees 对象里的四个口径各有用途:base 是本笔实际费用;modified 是计入费用增减量后的挖矿优先级口径;ancestor 与 descendant 把家族费用合并进来。另外每个条目还带 bip125-replaceable 标志,提示本笔或其未确认祖先是否声明可替换,不过该字段已被文档标注为弃用,更精细的判断要看替换策略本身。
五、unbroadcast:网络没听见的暗账
unbroadcast 为真,表示这笔交易还没有得到任何对端的确认回执——节点自己收了,却没能把它广播出去,常见于临时断网或连接全断之后。这个字段的价值在于把本地有单和网络有单分开记账:钱包显示已发送而内存池里 unbroadcast 为真,排障方向就应该是连接层而不是费率。
顺带一提,内存池整体状态用 getmempoolinfo 更省事,单笔细节用 getmempoolentry 更快,getrawmempool 全量表适合做快照对比。本文内容为节点工具科普,不构成投资建议。
六、把这页账拿去干三件事
第一项是费率研究。把详细模式的输出导成快照,按祖先平均费率排序,就能复现打包软件的优先级队列,看清自己那笔单子排在什么位置、被哪一族交易压住。第二项是排障:钱包报已发送、内存池里找不到,先跑一遍全量快照查 txid 与 wtxid 两个键,都找不到才去怀疑广播;找得到但 unbroadcast 为真,答案在连接层;找得到且 depends 指向一笔低费父交易,答案在费用策略。第三项是安全自查:内存池里若出现大量 wtxid 相同、txid 不同的条目,说明有人在测试双胞胎交易,这正是 WTXID 中继特性要处理的情形,节点日志与这两个键能帮你早点看到异常。第四项是理解自己的钱包。把 send 之后立刻跑一次详细模式,与自己那笔单子的条目对照,费率、依赖、体积一目了然,比任何第三方加速器都更能说明钱花在哪、排在谁后面。
所有这些用法都建立在同一个前提上:表里的每一项描述的都是这台节点此刻的视角。内存池本身是每台节点各自维护的本地状态,不同节点因连接拓扑与策略差异,看到的集合并不完全相同,所以对外结论要靠多台节点交叉验证,单机快照只能支撑本机排障。把这条边界记住,这张体检表才不会被读成全网真相。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。