testmempoolaccept 会让 Bitcoin Core 按当前节点的 mempool policy 预检原始交易,但不会广播。它适合在发送前发现手续费、冲突、脚本或链上输入问题;allowed:true 也不是未来一定上链的保证。
请求完整原始交易
{"jsonrpc":"2.0","id":"preflight","method":"testmempoolaccept","params":[["0200000001...00000000"],0.10]}
第一个参数是原始交易十六进制数组,可测试有依赖关系的一组交易;maxfeerate 是费用保险上限,单位按当前 Core 文档解释。不要传 txid,节点需要完整序列化交易;示例中的 0200000001…00000000 只是格式占位,不能直接提交。
读取允许和拒绝分支
[{"txid":"4a...","wtxid":"92...","allowed":false,"reject-reason":"min relay fee not met"}]
allowed:false 时先看 reject-reason。missing-inputs 要检查 UTXO 与父交易;txn-mempool-conflict 表示已有冲突花费;费用错误需重算 fee 与 vsize;脚本失败则回到签名和锁定条件。不要通过无限提高 maxfeerate 掩盖构造错误。
预检之后仍会变化
节点内存池、最低中继费率与祖先限制会变化,另一个节点也可能采用不同 policy。广播前在目标节点立即复测,并核对 effective-feerate 与本地计算一致。
对一组父子交易预检时,数组顺序必须让父交易先于依赖它的子交易,并同时检查每项结果和 package-error。allowed:true 的返回还可能包含 vsize 与 fees 等计算字段,客户端应与本地解码值比较;任一成员失败都不能只广播数组中的其余部分,除非业务明确允许拆包。
Bitcoin Core testmempoolaccept:把事实放回实际场景
- testmempoolaccept在不广播交易的情况下测试节点当前内存池策略,返回allowed以及拒绝原因、vsize和费用等信息。
- 策略接受不等于交易已经进入网络或一定确认;策略拒绝也应与共识无效区分,并保存reject-reason与package-error。
- 结果依赖节点当前UTXO、mempool、费用策略和版本,同一原始交易在另一节点或稍后时刻可能得到不同结果。(有限确认)
保存Bitcoin Core testmempoolaccept记录时别漏这些字段
保留对象标识、网络、版本、访问时间,以及预检请求、allowed结果树、策略与共识对照的原始输入输出。截图辅助说明,结构化字段用于重放。
Bitcoin Core testmempoolaccept:先确定本页覆盖什么
| 顺序 | 核心问题 | 可执行目标 |
|---|---|---|
| 1 | 预检请求 | 用预检请求直接回答搜索意图并形成可执行核验信息。 |
| 2 | allowed结果树 | 用allowed结果树直接回答搜索意图并形成可执行核验信息。 |
| 3 | 策略与共识对照 | 用策略与共识对照直接回答搜索意图并形成可执行核验信息。 |
| 4 | 时点差异 | 用时点差异直接回答搜索意图并形成可执行核验信息。 |
Bitcoin Core testmempoolaccept的证据出处
- Bitcoin Core testmempoolaccept的一级来源 1:Bitcoin Core Docs。用于正式字段、流程或产品说明
- Bitcoin Core testmempoolaccept的一级来源 2:Bitcoin Core 31.0。用于实现路径、比较基准或风险边界
与Bitcoin Core testmempoolaccept直接相邻的站内主题
- BIP-125替换交易要满足什么条件?:补充第1项相邻知识。
- 比特币vbytes和sat/vB怎么算?:补充第2项相邻知识。
Bitcoin Core testmempoolaccept的来源访问日为2026-07-21;环境不同需要重新验证。
Bitcoin Core testmempoolaccept:环境变化后的失效点
包处理上限和返回字段会随Bitcoin Core版本变化,自动化必须按节点版本解析而非固定截图。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。