Bitcoin Core 28.0 版本现已发布:

  • bitcoin
  • 发布于 2024-10-05 23:11
  • 阅读 23

Bitcoin Core 28.0 版本已经发布,该版本包括新功能,各种错误修复和性能改进,以及更新的翻译。此版本更新包括:Testnet4/BIP94 支持、Windows 数据目录变更、JSON-RPC 2.0 支持、移除 libbitcoinconsensus、P2P 和网络变更、Mempool 策略变更等。

Bitcoin Core 28.0 版本现已发布:

<https://bitcoincore.org/bin/bitcoin-core-28.0/>

此版本包括新功能、各种错误修复和性能改进,以及更新的翻译。

请使用 GitHub 上的 issue tracker 报告错误:

<https://github.com/bitcoin/bitcoin/issues>

要接收安全和更新通知,请订阅:

<https://bitcoincore.org/en/list/announcements/join/>

如何升级

如果你运行的是旧版本,请将其关闭。 等待它完全关闭(在某些情况下可能需要几分钟),然后运行安装程序(在 Windows 上)或者直接复制 /Applications/Bitcoin-Qt (在 macOS 上) 或 bitcoind/bitcoin-qt (在 Linux 上)。

可以直接从已达到 EOL 的 Bitcoin Core 版本升级,但如果需要迁移数据目录,则可能需要一些时间。通常支持旧版本的 Bitcoin Core 钱包。

在 macOS 上运行 Bitcoin Core 二进制文件需要 self signing。

cd /path/to/bitcoin-28.0/bin
xattr -d com.apple.quarantine bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin
codesign -s - bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin

兼容性

Bitcoin Core 在使用 Linux Kernel 3.17+、macOS 11.0+ 和 Windows 7 及更高版本的操作系统上受支持并经过广泛测试。 Bitcoin Core 也应该可以在大多数其他类 UNIX 系统上运行,但在这些系统上测试的频率不高。 不建议在不支持的系统上使用 Bitcoin Core。

值得注意的变化

Testnet4/BIP94 支持

增加了对 BIP94 中指定的 Testnet4 的支持。 可以使用 -testnet4 选项选择网络,并且 section header 也命名为 [testnet4]

虽然目的是在即将发布的版本中逐步淘汰对 Testnet3 的支持,但在此版本中仍然可以通过已知选项获得支持。 (#29775)

Windows 数据目录

Windows 上的默认数据目录已从 C:\Users\Username\AppData\Roaming\Bitcoin 移动到 C:\Users\Username\AppData\Local\Bitcoin。 Bitcoin Core 将首先检查旧目录是否存在,如果存在,则继续使用该目录以实现向后兼容。 (#27064)

JSON-RPC 2.0 支持

JSON-RPC 服务器现在可以识别 JSON-RPC 2.0 请求,并严格按照规范进行响应。 有关详细信息,请参阅 JSON-RPC-interface.md。 (#27101)

可能需要更新 JSON-RPC 客户端才能与 JSON-RPC 服务器兼容。 如果发现任何兼容性问题,请在 GitHub 上打开一个 issue。

libbitcoinconsensus 移除

libbitcoin-consensus 库已在 27.0 中弃用,现在已完全删除。 (#29648)

P2P 和网络变更

  • 之前,如果 Bitcoin Core 正在监听 P2P 连接,无论是使用默认设置还是通过 bind=addr:port,它总是也会绑定到 127.0.0.1:8334 以监听 Tor 连接。 即使节点不使用 Tor,也无法关闭此功能。 这种情况已更改,现在 bind=addr:port 仅导致绑定到 addr:port。 绑定到 0.0.0.0:8333127.0.0.1:8334 的默认行为没有改变。

    如果你使用的是不带 bind=...=onionbind=... 配置,并且依赖于以前的隐含行为来接受 127.0.0.1:8334 上的传入 Tor 连接,你现在需要使用 bind=... bind=127.0.0.1:8334=onion 显式地指定此行为。 (#22729)

  • 如果任何 P2P 绑定失败,Bitcoin Core 现在将无法启动,而不是之前的行为,即只有在所有 P2P 绑定都失败时才会中止启动。 (#22729)

  • UNIX 域套接字现在可以用于代理连接。 使用前缀 unix:-onion-proxy 设置为本地套接字路径(例如 -onion=unix:/home/me/torsocket)。 (#27375)

  • 现在接受 -zmqpubrawblock-zmqpubrawtx 的 UNIX 套接字路径,格式为 -zmqpubrawtx=unix:/path/to/file (#27679)

  • 已将额外的“in”和“out”flag 添加到 -whitelist,以控制权限是否适用于入站连接和/或手动连接(默认:仅入站)。 (#27114)

  • 交易费用率过低的交易将有机会与其子交易配对并作为package提交,从而使节点能够使用现有的交易中继协议下载 1 父交易-1 子交易package。 结合其他 mempool 策略,此更改允许有限的“package中继”,当父交易低于 mempool 最小费用率时。 拓扑限制直到确认 (TRUC) 父交易另外允许低于最低中继费用率(即支付 0 费用)。 使用 submitpackage RPC 将package直接提交到节点。 警告:此 P2P 功能受到限制(与 submitpackage 接口不同,不支持具有多个未确认父交易的子交易),并且在对抗条件下尚不可靠。 (#28970)

Mempool 策略变更

  • 版本号设置为 3 的交易现在被视为所有网络上的标准交易 (#29496),但须遵守选择加入的拓扑限制直到确认 (TRUC) 交易策略,如 BIP 431 中所述。 该策略包括对花费未确认输出的限制 (#28948),如果提交了更多激励兼容的输出则驱逐先前的后代 (#29306),以及 10,000vB 的最大交易大小 (#29873)。 这些限制简化了对接受或替换 TRUC 交易的激励兼容性的评估,从而确保任何替换对于节点来说都更有利可图,并使费用提升更加可靠。

  • Pay To Anchor (P2A) 是一种新的标准见证输出类型,用于花费,是一种新识别的输出模板。 这允许无密钥锚定输出,具有紧凑的花费条件,除了等效的 sh(OP_TRUE) 输出之外,还具有额外的效率,以及花费交易的 txid 稳定性。 注意:在此输出花费在网络上的传播将受到限制,直到网络上有足够数量的节点采用此升级。 (#30352)

  • 现在启用了有限的package RBF,其中提议的冲突package将导致 mempool 中大小为 2 的连接组件,也称为集群。 所有被冲突的集群的大小必须为 2 或更小。 (#28984)

  • -mempoolfullrbf 配置选项的默认值已从 0 更改为 1,即 mempoolfullrbf=1。 (#30493)

更新的 RPC

  • dumptxoutset RPC 现在以一种新的和改进的格式返回 UTXO 集转储。 相应地,loadtxoutset RPC 现在期望在其尝试加载的转储中使用这种新格式。 不再支持旧格式的转储,需要使用新格式重新创建才能使用。 (#29612)

  • 已添加高度 840,000 的 AssumeUTXO mainnet 参数。 这意味着 loadtxoutset RPC 现在可以在 mainnet 上使用来自该高度的匹配 UTXO 集。 (#28553)

  • getblockchaininfogetmininginfogetnetworkinfo 中的 warnings 字段现在将所有活动的节点警告作为字符串数组返回,而不是单个警告。 可以通过使用配置选项 -deprecatedrpc=warnings 运行 Bitcoin Core 来暂时恢复当前行为。 (#29845)

  • 之前,当使用 sendrawtransaction RPC 并指定 UTXO 集中已存在的输出时,响应中会返回 RPC 错误代码 -27,消息为“Transaction already in block chain”。 错误消息已更改为“Transaction outputs already in utxo set”,以更准确地描述问题的来源。 (#30212)

  • estimatesmartfee RPC 的默认模式已从 conservative 更新为 economical,预计这将减少许多用户的过度估计,特别是如果 Replace-by-Fee 是一种选择。 对于需要对其费用估算具有高可信度但可能过度估计的用户,conservative 模式仍然可用。 (#30275)

  • RPC scantxoutset 现在在 "unspents" JSON 数组中返回 2 个新字段:blockhashconfirmations。 有关详细信息,请参阅 scantxoutset 帮助。 (#30515)

  • RPC submitpackage 现在允许传递 2 个新参数:maxfeeratemaxburnamount。 有关详细信息,请参阅 subtmitpackage 帮助。 (#28950)

与钱包相关的 RPC 的更改可以在下面的钱包部分找到。

更新的 REST API

  • 通过引发 HTTP_BAD_REQUEST“Parse error”,拒绝截断或过大的 txid 和格式错误的 outpoint 索引,从而改进了 /rest/getutxos 的参数验证。 这些请求以前是静默处理的。 (#30482, #30444)

构建系统

  • 现在需要 GCC 11.1 或更高版本,或 Clang 16.0 或更高版本,才能编译 Bitcoin Core。 (#29091, #30263)

  • 运行 Bitcoin Core 的最低 glibc 要求现在是 2.31。 这意味着不再支持 RHEL 8 和 Ubuntu 18.04 (Bionic)。 (#29987)

  • 鉴于 lcov 版本 1 和 2 之间的不兼容性,已删除 --enable-lcov-branch-coverage。 应使用 LCOV_OPTS 来设置任何选项。 (#30192)

更新的设置

  • 使用 -alertnotify 运行时,现在可以多次引发警报,而不仅仅是一次。 以前,仅当激活未知的新共识规则时才会引发警报。 现在的范围已扩大到包括所有内核警告。 具体来说,当检测到具有大量工作的无效链时,也会引发警报。 将来可能会添加其他警告。 (#30058)

GUI 或与钱包相关的设置的更改可以在下面的 GUI 或钱包部分找到。

钱包

  • 钱包现在可以检测钱包交易何时与 mempool 冲突。 可以在 gettransaction"mempoolconflicts" 字段中看到与 mempool 冲突的交易。 现在可以重新花费与 mempool 冲突的交易的输入,而无需在从 mempool 中删除父交易时手动放弃交易,这可能会导致钱包余额看起来更高。 (#27307)

  • fundrawtransactionwalletcreatefundedpsbtsend RPC 中添加了一个新的 max_tx_weight 选项。 它指定了最大交易权重。 如果资金超过限额,则不会构建交易。 默认值为 4,000,000 WU。 (#29523)

  • 新的 createwalletdescriptor RPC 允许用户向其钱包添加新的自动生成的描述符。 这可用于升级在新标准描述符(例如 taproot)引入之前创建的钱包。 (#29130)

  • 新的 RPC gethdkeys 列出了钱包中所有描述符使用的所有 BIP32 HD 密钥。 这些密钥可以与 createwalletdescriptor 结合使用,为钱包已经知道的特定密钥创建和添加单密钥描述符到钱包。 (#29130)

  • sendall RPC 现在可以花费未确认的找零,并将包括额外的费用,以使交易的费用率提高到指定的费用率。 (#28979)

  • 在 RPC bumpfee 中,如果指定了 fee_rate,则费用率不再限于遵循钱包 5 sat/vb 的增量费用率。 费用率仍然必须至少是原始费用和 mempool 增量费用率的总和。 (#27969)

GUI 更改

  • “迁移钱包”菜单允许用户迁移其钱包目录中的任何旧钱包,而不管加载了哪些钱包。 (gui#824)

  • “信息”窗口现在显示最大 mempool 大小以及 mempool 用量。 (gui#825)

底层变更

测试

  • BIP94 时空扭曲攻击缓解现在在 regtest 网络上处于活动状态。 (#30681)

  • test_bitcoin 添加了一个新的 -testdatadir 选项,以允许指定单元测试数据目录的位置。 (#26564)

Blockstorage

  • 默认情况下,块文件现在使用存储在 blocksdir 中的密钥进行 XOR 运算。 先前版本的 Bitcoin Core 或先前的外部软件将无法读取具有非零 XOR 密钥的 blocksdir。 有关更多详细信息,请参阅 -blocksxor 帮助。 (#28052)

Chainstate

  • 当修剪块时发生的链状态数据库刷新将不再清空数据库缓存。 缓存将保持填充状态更长时间,这大大减少了完成初始块下载的时间。 (#28280)

依赖项

  • 对 Boost.Process 的依赖已替换为 cpp-subprocess,该 subprocess 包含在源代码中。 构建器不再需要 Boost.Process 即可构建外部签名者支持。 (#28981)

贡献者

感谢所有为此版本做出直接贡献的人:

  • 0xb10c
  • Alfonso Roman Zubeldia
  • Andrew Toth
  • AngusP
  • Anthony Towns
  • Antoine Poinsot
  • Anton A
  • Ava Chow
  • Ayush Singh
  • Ben Westgate
  • Brandon Odiwuor
  • brunoerg
  • bstin
  • Charlie
  • Christopher Bergqvist
  • Cory Fields
  • crazeteam
  • Daniela Brozzoni
  • David Gumberg
  • dergoegge
  • Edil Medeiros
  • Epic Curious
  • Fabian Jahr
  • fanquake
  • furszy
  • glozow
  • Greg Sanders
  • hanmz
  • Hennadii Stepanov
  • Hernan Marino
  • Hodlinator
  • ishaanam
  • ismaelsadeeq
  • Jadi
  • Jon Atack
  • josibake
  • jrakibi
  • kevkevin
  • kevkevinpal
  • Konstantin Akimov
  • laanwj
  • Larry Ruane
  • Lőrinc
  • Luis Schwab
  • Luke Dashjr
  • MarcoFalke
  • marcofleon
  • Marnix
  • Martin Saposnic
  • Martin Zumsande
  • Matt Corallo
  • Matthew Zipkin
  • Matt Whitlock
  • Max Edwards
  • Michael Dietz
  • Murch
  • nanlour
  • pablomartin4btc
  • Peter Todd
  • Pieter Wuille
  • @RandyMcMillan
  • RoboSchmied
  • Roman Zeyde
  • Ryan Ofsky
  • Sebastian Falbesoner
  • Sergi Delgado Segura
  • Sjors Provoost
  • spicyzboss
  • StevenMia
  • stickies-v
  • stratospher
  • Suhas Daftuar
  • sunerok
  • tdb3
  • TheCharlatan
  • umiumi
  • Vasil Dimov
  • virtu
  • willcl-ark

以及所有在 Transifex 上帮助翻译的人。

  • 原文链接: github.com/bitcoin/bitco...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
bitcoin
bitcoin
江湖只有他的大名,没有他的介绍。