交易广播成功、RPC 却返回 null,是链上最常见的困惑之一。原因通常不在链上而在视角:交易只在部分节点的内存池里、被更高费用替换出局、或者你查询的节点还没收到。本文拆解广播与查询之间的心跳错位、内存池的局部性、替换与驱逐的两条出局路径,以及排查时该按什么顺序问哪台节点。
交易广播成功、RPC 却返回 null,是链上最常见的困惑之一。原因通常不在链上而在视角:交易只在部分节点的内存池里、被更高费用替换出局、或者你查询的节点还没收到。本文拆解广播与查询之间的心跳错位、内存池的局部性、替换与驱逐的两条出局路径,以及排查时该按什么顺序问哪台节点。
比特币付款不是从余额里扣数,而是挑一堆未花费输出凑够金额、多出来的部分变成找零。挑得好不好决定手续费、隐私和未来余额的健康度。本文拆 Bitcoin Core 钱包的找币策略:BnB 追求无找零、CoinGrinder 做确定性整理、兜底的蓄水池式选择,以及尘埃输出与 UTXO 整理背后的长期账。
Bitcoin Core 启动时会替用户改写部分未显式设置的参数并在日志自报。本文依据 v31.0 源码梳理 proxy、blocksonly、connect、whitebind 四类参数联动的触发条件、显式覆盖方法与排障姿势。
maxmempool 默认 300 MB、mempoolexpiry 默认 336 小时、blocksonly 下自动压到 5 MB,v31.0 把这三个默认值放进了内核头文件。本文拆解它们如何影响费用估算样本、低费交易滞留与钱包广播联动。
getwalletinfo 的 flags 对应 v31.0 源码中固定的字符串映射表,可变的只有 avoid_reuse 一项。本文逐项解读 disable_private_keys、blank、external_signer 等标志的含义、设置时机与不可逆边界。
validateaddress 与 getaddressinfo 在 0.18 版后分工明确:前者只判结构合法并给出 error_locations 纠错位置,后者才回答地址归不归本钱包。本文按 v31.0 RPC 文档梳理两者的字段边界与实操顺序。
v31.0 源码把区块未来时间上限写死为两小时,配合前序区块时间中位数构成时间戳的窄带约束。本文拆解 MAX_FUTURE_BLOCK_TIME 的两端逻辑,给出 timeoffset 异常与本机时钟漂移的定位顺序。
描述符钱包的 keypool 是每条描述符一千个条目的预生成窗口而非地址总数。本文以 v31.0 文档为准,讲清补池触发时机、Keypool ran out 报错处置、恢复时靠 range 导入找回扫描盲区的方法。
比特币核心的 RPC 端口先于子系统就绪开放,预热期所有命令统一返回负 28 号错误并附带实时初始化进度文本。本文按 v31.0 源码拆解 warmup 接线方式与监控脚本的正确等待姿势。
generateblock 与 generatetoaddress 在 v31.0 的注册表里被标为 hidden,却完整暴露了一个区块从 coinbase 到 nonce 的组装流程。本文按源码拆解指定交易入块、跳过内存池、process_new_block 导块三个能力的边界。