
Bitcoin Core 28.3 发布技术解读默认费率系统下探、重组期 TRUC 规则与构建测试链改进【免费下载链接】bitcoinBitcoin Core integration/staging tree项目地址: https://gitcode.com/GitHub_Trending/bi/bitcoinBitcoin Core 28.3 是面向网络运营者与开发者的维护型版本核心看点是 Mempool 与 Policy 相关三项默认费率被大幅调低-blockmintxfee、-minrelaytxfee、-incrementalrelayfee同时针对 TRUC 交易重组场景、洋葱路由入站白名单、Guix 可复现构建等做了若干修正。本文以 doc/release-notes/release-notes-28.3.md 为骨架结合仓库源码剖析每个变更的实现位置与含义帮助你评估升级影响、配置新费率默认值并理解底层行为变化。版本概要升级方式与兼容性28.3 属于补丁级patch发布不引入新的共识规则与网络激活主要内容为 bug 修复、性能改进与翻译更新。二进制的获取以 Bitcoin Core 官方发布渠道为准仓库发布说明中标注的下载入口为 bitcoincore.org 的 bitcoin-core-28.3 目录并建议通过官方公告邮件订阅安全与更新通知。如何升级如果你正在运行旧版本升级流程为关闭节点先停止正在运行的 bitcoind / Bitcoin-Qt 进程等待完全退出在某些情况下完全关闭可能需要数分钟请勿在数据目录尚未安全落盘前强制替换程序替换二进制文件Windows运行新版安装程序macOS覆盖/Applications/Bitcoin-QtLinux覆盖bitcoind/bitcoin-qt可执行文件。发布说明同时指出从已经到达生命周期终点EOL的版本直接升级也是可行的但若数据目录需要迁移可能需要更长时间旧版本钱包格式总体仍然受支持。兼容的操作系统范围官方支持且经充分测试的操作系统为Linux Kernel 3.17 及以上、macOS 11.0 及以上、Windows 7 及以上。Bitcoin Core 也能在大多数其他类 UNIX 系统上运行但测试频率较低不建议在不支持的平台上运行正式节点。核心变更Mempool 与 Policy 的默认费率下探28.3 最重要的行为变化来自 PR #33106policy: lower the default blockmintxfee, incrementalrelayfee, minrelaytxfee——三项默认费率被系统性调低。调整后默认值与含义如下配置参数新默认值等价费率用途默认常量所在源码-blockmintxfee1 satoshi/kvB0.001 sat/vB区块打包挖矿纳入交易的最低费率src/policy/policy.hDEFAULT_BLOCK_MIN_TX_FEE{1}-minrelaytxfee100 satoshis/kvB0.1 sat/vB中继、打包与交易创建的最低费率src/policy/policy.hDEFAULT_MIN_RELAY_TX_FEE{100}-incrementalrelayfee100 satoshis/kvB0.1 sat/vB内存池限额与 RBF 替换策略的最低增量费率src/policy/policy.hDEFAULT_INCREMENTAL_RELAY_FEE{100}单位说明上述参数在配置文件与 RPC 中以 BTC/kvB 计价如FormatMoney(100)即0.00000100。1 sat/kvB 意味着一个 1 000 vB 的交易理论上仅需 1 satoshi 即达到打包门槛。三项参数仍可通过各自的配置选项显式覆盖。发布说明特别提示如果决定自定义覆盖建议将-minrelaytxfee与-incrementalrelayfee成对修改。代码层面也通过编译期断言强制了两者的默认一致// src/node/mempool_args.cpp static_assert(DEFAULT_MIN_RELAY_TX_FEE DEFAULT_INCREMENTAL_RELAY_FEE);参数解析与生效路径在 src/init.cpp 中-minrelaytxfee被声明为 NODE_RELAY 类选项-blockmintxfeesrc/init.cpp属于 BLOCK_CREATION 类。这些默认值最终汇聚到 kernel 层的选项结构体MemPoolOptionssrc/kernel/mempool_options.h其中min_relay_feerate、incremental_relay_feerate、dust_relay_feerate等成员直接以对应默认常量初始化供CTxMemPool构造使用。-minrelaytxfee在 src/node/mempool_args.cpp 中被解析为CFeeRate源码注释“High fee check is done afterward in CWallet::Create()”表明过高的自设值会在钱包创建交易时才做校验。-blockmintxfee则由 src/node/mining_args.cpp 的ReadMiningArgs()读取并填充为block_min_fee_rate。值得注意的细节是 src/node/mining_types.h 中的BlockCreateOptions::block_min_fee_rate为可选值——调用getblocktemplate等挖矿 RPC 的客户端可以在请求中显式提供一个费率来覆盖启动参数。getblocktemplate的结果对象中也会回显当前生效的blockmintxfee单位为 BTC/kvB见 src/rpc/mining.cpp。保持不变的费率边界此次下调是“精准外科手术”发布说明明确下列费率不随默认值调整dust 费率用于界定粉尘输出价值的DUST_RELAY_TX_FEE仍为30003 000 sat/kvB见 src/policy/policy.h费率估算器返回的最小值MIN_BUCKET_FEERATE被硬编码为100见 src/policy/fees/block_policy_estimator.h。源码注释专门说明该值历史上继承自DEFAULT_MIN_RELAY_TX_FEE硬编码是为了避免每次调整都作废已落盘的费率估算文件CURRENT_FEES_FILE_VERSION钱包使用的一揽子费率保持不变钱包侧还通过编译期断言保证自身默认费率不低于节点中继/增量默认值src/wallet/test/wallet_tests.cpp。此外内存池的动态最低费率机制不受影响当网络高吞吐大量交易被淘汰时CTxMemPool会依据滚动半衰期算法临时抬高GetMinFee()。这一点在单元测试 src/test/mempool_tests.cpp 中有非常直观的刻画——被驱逐交易费率越高内存池临时最低费率越高并随半衰期指数衰减最终回落到DEFAULT_INCREMENTAL_RELAY_FEE再继续衰减归零。实操注意低费率交易不保证传播与确认发布说明给出了一条面向网络运营者的重要现实提示除非这些更低的新默认值在整个网络被广泛采纳否则以更低费率创建的交易并不保证能够被传播或确认。对使用钱包创建低费率交易的场景钱包费率并不随本次调整而改变需要先显式设置钱包的-mintxfee才能让钱包按低于原有门槛的费率出账。在bitcoin.conf中显式声明新的低费率默认值便于审计与版本间保持一致示例如下# Bitcoin Core 28.3 中继/打包费率配置示例单位为 BTC/kvB blockmintxfee0.00000001 # 1 sat/kvB0.001 sat/vB区块打包最低费率 minrelaytxfee0.00000100 # 100 sat/kvB0.1 sat/vB交易中继最低费率 incrementalrelayfee0.00000100 # 100 sat/kvBRBF 替换与内存池限额的最低增量费率重组期间不再强制执行 TRUC 规则#33504PR #33504mempool: Do not enforce TRUC checks on reorg修正了重组reorg场景下 TRUC 规则被过度执行的问题。TRUC 背景TRUCTopologically Restricted Until Confirmed即 BIP 431 描述的 v3 交易类型用更严格的拓扑限制换取更稳健的 RBF 能力。依据 src/policy/truc_policy.hversion3的交易即被视为 TRUCTRUC_VERSION{3}未确认状态下只允许 1 父 1 子后代集合与祖先集合上限均为 2TRUC 交易自身 sigop-adjusted 虚拟大小上限 10 000 vB其未确认子交易上限 1 000 vB。为什么重组时需要特殊处理正常情况下内存池接受交易时会执行完整的 TRUC 校验SingleTRUCChecks()与PackageTRUCChecks()在 src/validation.cpp单笔与 src/validation.cpp包式提交中被调用任何违反继承性或拓扑限制的提交都会被拒绝。但重组的语义不同重组发生时原本已确认的交易被回退到“未确认”状态其进入内存池的次序与父子关系由链重组后的历史决定并不受提交者控制。源码在重组淘汰谓词filter_final_and_mature处明确注释src/validation.cppTRUC rules are not applied here, so reorgs may cause violations of TRUC inheritance or topology restrictions.即在重组清理removeForReorg与回退入池的过程中刻意不施加 TRUC 继承性/拓扑限制避免节点因为一次外部重组就把本可正常延续的 v3 交易链从内存池中错误剔除。这是对“规则边界”的一次精细校正——TRUC 限制约束的是新交易如何进入内存池而不是链重组带来的意外状态。P2P 改进白名单权限不再作用于洋葱入站连接#33395PR #33395net: do not apply whitelist permissions to onion inbounds修正了 P2P 层的权限授予问题。节点的-whitelist/-whitebind机制依据网络网段subnet为对端授予一组权限如免限速中继、forcerelay、免惩罚等其权限叠加逻辑实现在CConnman::AddWhitelistPermissionFlags()src/net.cpp即遍历配置的vWhitelistedRangeIncoming当对端地址命中m_subnet.Match(addr)时叠加对应NetPermissionFlags。问题在于洋葱onion入站连接此类连接的对端以洋葱地址形态出现并不具备与白名单网段相匹配的常规地址语义却可能在旧的匹配逻辑下被间接命中而意外获得本不该拥有的白名单权限。28.3 的修正确保白名单权限不再被授予洋葱入站连接从而收紧了对经 Tor 隐藏服务进入的节点的权限边界降低被利用作特权通道的风险。权限模型与默认开关的完整定义可参考 src/net_permissions.h 与 src/net.h 中入站/出站白名单网段的结构。测试、构建、文档与杂项改进Test功能测试健壮性提升本版包含一批功能/单元测试修正目的在于消除偶发flaky失败并增强测试工具能力#32765修复feature_bip68_sequence.py中的列表索引越界错误#33001功能测试在出现未处理异常unhandled exceptions时不再误判为通过#30125改进测试框架的 BDB 解析器支持 internal/overflow 页面与全尺寸页面提高钱包测试对 Berkeley DB 文件的还原与校验能力#30948为测试辅助函数fill_mempool()位于 test/functional/test_framework/mempool_util.py补充缺失的sync_mempools()调用确保多节点场景下各节点内存池状态一致后再断言减少竞态导致的假阴性#30784为交易工具的单测新增BulkTransaction批量构造辅助函数。Build / Guix可复现构建加固Guix 可复现构建体系在 28.3 中有两处 SOURCE_DATE_EPOCH 相关的修正#32678guix-build在检测到环境中已设置SOURCE_DATE_EPOCH时输出警告并中止。这一逻辑位于 contrib/guix/libexec/prelude.bash提示信息说明该环境变量“可能破坏可复现性”并指引先unset SOURCE_DATE_EPOCH再重建guix-build自身随后会用 git 提交时间作为参考时间戳contrib/guix/guix-build#33073guix-codesign代码签名流程同样增加对SOURCE_DATE_EPOCH被设置的警告contrib/guix/guix-codesign。其余构建相关改动包括#32943在 depends 中强制CMAKE_EXPORT_NO_PACKAGE_REGISTRYTRUE避免 CMake 包注册表污染构建环境#33563修复 depends 中 Qt 下载链接#33581在 CI 的DEPENDS_HASH中正确纳入$FILE_ENV。Doc文档勘误与链接修复#32776澄清 taproot 自 v24.0 起始终激活的文档描述#32777修复 Transifex 翻译平台相关的失效链接404#33070修正 doc/zmq.md 中 UNIX socket 路径的示例#33133修正getpeerinfoRPC 中 ping 时延字段的单位说明相关实现见 src/rpc/net.cpp#33236移除一处错误且冗余的 doxygen 标签。Misc其他修正#33340修复基准benchmark框架的 CSV 输出格式#33482修复 macOS 部署脚本在没有翻译文件时的失败问题相关工具链见 contrib/macdeploy。贡献者与升级建议本版发布汇集了社区多位开发者的贡献0xB10C、Ava Chow、fanquake、glozow、Hennadii Stepanov、MarcoFalke、Martin Zumsande、theStack、Vasil Dimov、willcl-ark 等以及 Transifex 平台上大量翻译志愿者的工作。综合来看28.3 对普通全节点运营者的主要影响集中在费率策略建议在升级后确认自己的bitcoin.conf没有残留旧的高费率硬编码并评估是否需要跟随新默认值对运行 v3TRUC交易业务或通过 Tor 提供服务的中继节点本版的重组策略与白名单修正也值得重点关注。以上所有默认值均可随时通过对应配置选项显式覆盖可结合 share/examples/bitcoin.conf 的注释风格组织自己的节点配置。【免费下载链接】bitcoinBitcoin Core integration/staging tree项目地址: https://gitcode.com/GitHub_Trending/bi/bitcoin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考