比特币核心 v31.0 里,节点收到区块或区块头时并不直接入库,还要先看调用方有没有做过反消耗战的工作量检查。本文拆解 min_pow_checked 参数的三种取值路径、GetAntiDoSWorkThreshold 留 144 个区块余量的算法,以及 too-little-chainwork 为什么不会连累你的对端被处罚。
比特币核心 v31.0 里,节点收到区块或区块头时并不直接入库,还要先看调用方有没有做过反消耗战的工作量检查。本文拆解 min_pow_checked 参数的三种取值路径、GetAntiDoSWorkThreshold 留 144 个区块余量的算法,以及 too-little-chainwork 为什么不会连累你的对端被处罚。
assumeUTXO 快照同步期间,比特币节点内部同时存在快照链与回填验证链两本账,getblockchaininfo 只汇报活动一条,getchainstates 会把全部链状态按工作量排列列出:各自的进度、难度、缓存拆分,以及标记快照血统的 snapshot_blockhash 和补课完成的 validated 布尔值。本文按 v31.1 源码给出双账阶段的监控判据。
读区块高度的 BIP 34 压入、挖池 extranonce、版本滚动,以前要把 verbosity 2 的整个交易数组拖回来,v31.0 起 getblock 在 verbosity 1 就返回 coinbase_tx 对象:version、locktime、第一个输入的 sequence、scriptSig 十六进制和单元素见证栈共五个字段。本文按 v31.1 源码逐字段拆解这张精简档案能查什么、不能查什么。
v29.0 起,比特币核心提供两段式历史对账:scanblocks 先圈出可能相关的区块,getdescriptoractivity 再把每个区块拆成 spend 与 receive 事件列表,带金额、出处 prevout、脚本和确认高度,未确认活动靠字段省略来标识。它不需要常驻索引,但帮助文本明说可能跑上几分钟。本文按 v31.1 源码拆解两组必填参数、返回结构与超时处理。
mempool.dat 记录的不只是交易,还有原节点的入场时间、费用加权值和未广播集合三本本地账。v26.0 新增的 importmempool RPC 让你不重启、不改数据目录就把别的节点的账本灌进内存池,但帮助文本警告:导入不受信文件的元数据是危险的。本文按 v31.1 源码拆解 use_current_time、apply_fee_delta_priority、apply_unbroadcast_set 三个开关的默认值与取舍。
v31.0 给比特币核心加了 -privatebroadcast:sendrawtransaction 提交的交易改走 Tor 或 I2P 上的短连接逐笔广播,还不先进本地内存池,接收方看不到来源 IP,两笔交易之间也失去了关联线索。v31.0 配套 getprivatebroadcastinfo 与 abortprivatebroadcast 两个观察与撤单 RPC,v31.1 又修掉一处会走明文网络的 IP 泄漏。本文拆解语义、副作用与边界。
签名缓存避免同一笔交易在入池和出块时被验两次签,脚本执行缓存记住反复出现的脚本结果,v31.1 中它们共用 -maxsigcachesize 这一个预算:默认 32 MiB,源码把字节数对半分给两块缓存。设成 0 不会关掉缓存,而是退化为两个条目的最小账本。本文拆解参数语义、默认值注释里的容量估算和低内存机器上的调整边界。
广播交易被拒却没有任何解释,是比特币网络的默认行为,来自主流实现对 BIP 61 reject 消息的主动拆除:v0.17 加开关、v0.18 宣布弃用、v0.19 默认关闭、v0.20 物理删除。这条回执本身没有密码学强度——对方可以寄假回执,也可以根本不寄。本文复盘四年拆除时间线,并给出今天查拒收原因的正确路径。
UTXO 集合只记录"还没被花",不记录"谁正在试图花"。比特币核心的 gettxspendingprevout 反着查:给一批 txid 加 vout,返回内存池里正在冲突的花费交易;v31.0 又配上 -txospenderindex 索引和 mempool_only、return_spending_tx 两个选项,连已确认的历史花费也能翻出来。本文按 v31.1 源码拆解参数、返回字段与修剪模式的互斥关系。
盯比特币节点的新块,与其每秒轮询高度,不如把等待交给节点自己:v31.1 的三个 waitfor 系 RPC 都接受毫秒超时参数,0 表示无限等待,超时则返回当前块而不是报错。帮助文本还提醒配套关闭 RPC 客户端超时。本文逐条拆解参数、返回结构、current_tip 的可靠性提示,以及与 blocknotify、ZMQ 的分工。