The latest Bitcoin Core v29.0 release introduces a range of critical improvements, from enhanced network protocols to updated developer tooling. This guide breaks down the key updates, performance optimizations, and practical steps for node operators and developers looking to upgrade.
Key Changes in Bitcoin Core v29.0
This version focuses on improving network reliability, optimizing memory and transaction handling, and modernizing the build process. It is the recommended upgrade for all users due to its performance enhancements and security fixes.
Supported platforms include Linux (kernel 3.17+), macOS 13+, and Windows 10+. Before upgrading, ensure that you fully shut down your previous node and back up your data directory. Wallet files remain compatible, making the transition straightforward.
Network and Port Management Updates
Removal of UPnP Support
Due to security and compatibility concerns, UPnP support has been discontinued. Users are encouraged to use the -natpmp option instead. The client now includes built-in support for PCP and NAT-PMP protocols, improving IPv4 and IPv6 port mapping.
Onion Service Port Allocation
Previously, using the -port parameter fixed the Onion service port to 8334, which could cause conflicts in multi-node setups. Version 29.0 dynamically assigns the Onion port as the specified -port value plus one. For example, setting -port=5555 assigns port 5556 for Onion traffic.
If you manually configured Tor settings, update your configuration to reflect the new port assignment logic or use the -bind parameter for explicit control.
Improved Orphan Transaction Handling
Nodes now request parent transactions from all peers announcing orphan transactions. This increases bandwidth usage but significantly improves transaction propagation and mempool stability.
Mempool and Mining Policy Enhancements
Ephemeral Dust Outputs
A new "ephemeral dust" policy allows transaction packages to include one dust output if the transaction itself has zero fees. Spending such an output requires including the dust output in the same transaction. This supports more efficient transaction chain operations.
Reserved Block Weight Adjustments
The previous default reserved weight of 8,000 weight units (WU) limited maximum block size. The new -blockreservedweight parameter allows customization of this value. Be cautious: setting it too low may result in invalid blocks.
New and Updated RPC Interfaces
testmempoolaccept Enhancements
The testmempoolaccept method now includes a reject-details field, offering clearer feedback when transactions are rejected.
submitblock Persistence
Duplicate submitblock calls now persist data even for pruned blocks, aligning with getblockfrompeer behavior.
getmininginfo Additions
The getmininginfo command returns additional chain data, including current target difficulty and details about the next block.
Consistency in Blockchain Data
Both getblockchaininfo and getchainstates include a target field for improved data transparency.
getblocktemplate Time Adjustment
The updated getblocktemplate method includes time-warp fixes to prevent invalid block generation after softfork activation.
New RPC: getdescriptoractivity
This method retrieves sending and receiving activity for descriptors within a block range, reducing reliance on external indexing tools.
REST API Improvements
Block and block header JSON responses now include a target field, ensuring consistency with other data interfaces.
Configuration and Default Behavior Changes
dbcache Limit Removed
The previous 16 GB limit for -dbcache has been removed, allowing larger memory allocations for UTXO set caching and improved validation speed.
Unified Command-Line Negation
Negation parameters like -noseednode and -nobind now reset to default behavior without triggering complex exceptions.
Full RBF by Default
Replace-by-fee (RBF) is now the default and only mempool policy, making the -mempoolfullrbf parameter obsolete.
upnp Parameter Deprecation
Using -upnp now triggers a warning and automatically switches to -natpmp.
blockreservedweight Safety Limits
Values below 2,000 WU or above 4 million WU will cause startup failure to prevent operational issues.
Improved RPC Performance
Default values for -rpcthreads and -rpcworkqueue have been increased to 16 and 64, respectively, improving handling of heavy RPC loads.
Build System Migration to CMake
Bitcoin Core 29.0 replaces Autotools with CMake as the default build system. Key changes include:
- CMake minimum version 3.22 is required
- In-source builds are disabled; use a dedicated build directory
- New CMake variables like
-DWITH_ZMQ=ONenable optional features - The default build type is "RelWithDebInfo" for balanced performance and debug support
- Component-based installation allows customization of targets like
bitcoindorbitcoin-qt - Environment variables like
CPPFLAGSshould be replaced with CMake equivalents
Refer to the official Bitcoin documentation for platform-specific build guidance.
Low-Level Tools and Testing Updates
A new Python tool, utxo_to_sqlite.py, converts compact UTXO snapshots into SQLite databases for analysis and backup.
The test framework has removed BIP94 time-warp attack protections from regtest environments to simplify local testing.
Compatibility and Dependency Changes
Dependencies on MiniUPnPc and libnatpmp have been removed in favor of built-in PCP and NAT-PMP support, enhancing security and cross-platform compatibility.
Frequently Asked Questions
What are the system requirements for Bitcoin Core v29.0?
The client supports Linux kernels 3.17+, macOS 13+, and Windows 10+. Ensure your system meets these requirements before upgrading.
How do I upgrade my node without losing data?
Shut down your existing node completely, back up your data directory, and install the new version. Your wallet and chain data will remain intact.
What should I do if I used UPnP before?
Switch to the -natpmp option for port mapping. The client will guide you with a warning if you attempt to use UPnP.
Why was the reserved block weight setting changed?
The update allows more flexible block size configuration and prevents unintentional constraints. Adjust the -blockreservedweight parameter carefully to avoid invalid blocks.
How does the new Onion port assignment work?
The Onion port is now dynamically set to your main port plus one. Update Tor configurations or use -bind to specify ports manually.
Where can I learn about CMake build options?
👉 Explore the official build documentation for detailed examples and parameters.
Conclusion and Recommendations
Bitcoin Core v29.0 delivers significant improvements in security, performance, and usability. Node operators and developers should prioritize upgrading to benefit from better network policies, enhanced RPC capabilities, and a modernized build system.
Remember to:
- Shut down old nodes completely and back up data
- Review Onion service port settings
- Adjust
-blockreservedweightappropriately - Update RPC calls for new parameters
- Migrate build environments to CMake
For further guidance, 👉 review the latest developer resources.