OP_RETURN 输出与超长脚本输出被 Bitcoin Core 的 IsUnspendable 判为不可花费:不进 UTXO 集合、不进统计与导出、断链回滚同判据、钱包默认拒绝代转超额烧毁金额。对照 v31.0 源码梳理这个函数在共识、账本、索引与钱包四层引发的连锁行为。
汇总与「比特币」相关的文章,帮助你系统了解该主题。
OP_RETURN 输出与超长脚本输出被 Bitcoin Core 的 IsUnspendable 判为不可花费:不进 UTXO 集合、不进统计与导出、断链回滚同判据、钱包默认拒绝代转超额烧毁金额。对照 v31.0 源码梳理这个函数在共识、账本、索引与钱包四层引发的连锁行为。
比特币核心的尘埃判定不是写死的聪数,而是 -dustrelayfee 这条费率折算出来的:先估花掉输出所需字节,再按费率折成费用与输出价值比大小。对照 v31.0 源码拆这条 DEBUG_ONLY 参数的默认值、判定路径、数量闸门与三层边界。
比特币核心用 -maxapsfee 给“为整组花零钱多付多少手续费”设了绝对费用预算:默认 0 意味着两案持平才选整组,-1 才彻底关闭,超过 0.0001 枚会触发启动警示。对照 v31.0 源码拆这条钱包参数的语义、单位陷阱与相邻概念边界。
比特币核心对带数据交易设了两道控制:-datacarriersize 管装多少,-datacarrier 管装不装。对照 v31.0 源码拆这个布尔开关如何把载数据预算清零、getmempoolinfo 里为什么显示 0、关掉后钱包广播与索引器的真实后果。
轻钱包递交的布隆过滤器受三条硬线约束:位图不超 36000 字节、哈希函数不超 50 个、filteradd 单根针不超 520 字节。对照 Bitcoin Core v31.0 源码拆超限后的记账断连路径、服务位检查与老钱包连不上节点的排障线索。
BIP324 加密通道跑起来后,Bitcoin Core v31.0 用三条常量护栏防内存滥用:握手垃圾不超 4095 字节、单包正文长度设天花板、接收缓冲相对已收字节最多预圈 256 KiB。对照 src/net.h 与 net.cpp 拆这套“对端数字不许指挥你分配内存”的设计。
bitcoind -help 只列精剪目录:带 DEBUG_ONLY 旗标的参数(dustrelayfee、peertimeout、checkblocks 等)要 -help-debug 才见得到,还有一族连调试页都不列。对照 v31.0 源码拆参数注册表的三档可见性与升级审计、脚本防呆三个用途。
今天比特币的脚本哈希地址来自 BIP-16 那条路线,但在 2012 年初,Luke Dashjr 的 BIP-17 一度是最被看好的实现:不新增指令语义,直接把闲置的 OP_NOP2 重定义为 OP_CHECKHASHVERIFY,花销时把真脚本塞进解锁脚本、用一个 OP_CODESEPARATOR 划出待哈希的边界。这份提案最终关闭未部署,但它留下的哈希边界思路、向后兼容处理和矿工字符串投票设计,都是理解比特币脚本升级史的重要切片。
BIP-18 是 2012 年 P2SH 路线之争里最特别的一份:它不新增操作码,而是宣布 scriptSig 与 scriptPubKey 过时,改用 dataSig、scriptCheck、hashScriptCheck 三件套重述同一件事,还顺手给签名操作定下了按前缀计数的防滥用规则。这份提案标记为 Complete,却没有以文本原样部署——最终上线的 BIP-16 在协议层与它内容几乎一致。这篇讲清它改了什么、账怎么记,以及为什么名字之争也值得写进历史。
2017 年春天,隔离见证明明已有超过七成算力在信号,却因为一套自设的 80% 门槛迟迟不锁定。BIP-149 给出用户侧的强制预案:用带超时锁定的 BIP8 在预定日期直接激活,不再等矿工点头。这份提案最终因隔离见证提前部署而无需上场,但「用户激活软分叉」由此成为比特币治理里一个被反复引用的工具,它的设计细节——超时即锁定、与矿工部署互斥的窗口衔接——至今仍是讨论模板。