2015 年扩容争论早期的 BIP-100 提案想把写死的一兆字节区块上限改造成一台会呼吸的调节器:矿工的 coinbase 投票每 2016 块重算一次硬上限,四分之三分位数定方向,单步涨幅被钳在百分之五以内。这份由 Jeff Garzik 等人起草、最终状态为 Closed 的提案,把动态区块大小做成了可以照着写代码的算法。本文按原文拆解它的投票编码、计票规则、护栏与部署史。
汇总与「比特币」相关的文章,帮助你系统了解该主题。
2015 年扩容争论早期的 BIP-100 提案想把写死的一兆字节区块上限改造成一台会呼吸的调节器:矿工的 coinbase 投票每 2016 块重算一次硬上限,四分之三分位数定方向,单步涨幅被钳在百分之五以内。这份由 Jeff Garzik 等人起草、最终状态为 Closed 的提案,把动态区块大小做成了可以照着写代码的算法。本文按原文拆解它的投票编码、计票规则、护栏与部署史。
bitcoind -help 只列精剪目录:带 DEBUG_ONLY 旗标的参数(dustrelayfee、peertimeout、checkblocks 等)要 -help-debug 才见得到,还有一族连调试页都不列。对照 v31.0 源码拆参数注册表的三档可见性与升级审计、脚本防呆三个用途。
BIP324 加密通道跑起来后,Bitcoin Core v31.0 用三条常量护栏防内存滥用:握手垃圾不超 4095 字节、单包正文长度设天花板、接收缓冲相对已收字节最多预圈 256 KiB。对照 src/net.h 与 net.cpp 拆这套“对端数字不许指挥你分配内存”的设计。
轻钱包递交的布隆过滤器受三条硬线约束:位图不超 36000 字节、哈希函数不超 50 个、filteradd 单根针不超 520 字节。对照 Bitcoin Core v31.0 源码拆超限后的记账断连路径、服务位检查与老钱包连不上节点的排障线索。
比特币核心对带数据交易设了两道控制:-datacarriersize 管装多少,-datacarrier 管装不装。对照 v31.0 源码拆这个布尔开关如何把载数据预算清零、getmempoolinfo 里为什么显示 0、关掉后钱包广播与索引器的真实后果。
比特币核心用 -maxapsfee 给“为整组花零钱多付多少手续费”设了绝对费用预算:默认 0 意味着两案持平才选整组,-1 才彻底关闭,超过 0.0001 枚会触发启动警示。对照 v31.0 源码拆这条钱包参数的语义、单位陷阱与相邻概念边界。
比特币核心的尘埃判定不是写死的聪数,而是 -dustrelayfee 这条费率折算出来的:先估花掉输出所需字节,再按费率折成费用与输出价值比大小。对照 v31.0 源码拆这条 DEBUG_ONLY 参数的默认值、判定路径、数量闸门与三层边界。
OP_RETURN 输出与超长脚本输出被 Bitcoin Core 的 IsUnspendable 判为不可花费:不进 UTXO 集合、不进统计与导出、断链回滚同判据、钱包默认拒绝代转超额烧毁金额。对照 v31.0 源码梳理这个函数在共识、账本、索引与钱包四层引发的连锁行为。
Bitcoin Core 的调试参数 -fastprune 把区块文件上限从 128 MiB 缩到 64 KiB、把修剪高度地板从十万降到一百,让剪枝逻辑在几百个区块内就能真实触发。对照 v31.0 源码拆解两处改动的实现、超大区块装不下文件的动态兜底,以及它适合测试教学而不适合生产省磁盘的原因。