Bitcoin Core 30.0 Unveiled: Fee Policies Revamped, Legacy Wallet Support Ends

Bitcoin Core, the backbone of the Bitcoin network, just released its 30.0 version. This major update brings a host of changes aimed at improving security, efficiency, and the overall network health. Think of it as a significant upgrade under the hood, touching everything from how transactions are handled to the tools developers use.

This new version, Bitcoin Core v30.0, is ready for download. You can find the necessary files at https://bitcoincore.org/bin/bitcoin-core-30.0/. Security alerts are also detailed in the release notes. For the technical folks, the source code lives in the project’s official repository.

A key takeaway for users: older versions, specifically 27.x and earlier, will no longer get updates. This means they’ve reached their end-of-maintenance period. It’s time to upgrade. The project also noted that five low-severity vulnerabilities were fixed in this 30.0 release. Bitcoin Core plans to share more details about these fixes in two weeks. No medium or high-severity flaws were found in version 28.0.

For those new to the space, Bitcoin Core is like the primary software that keeps the Bitcoin network running. It’s the standard for how Bitcoin works. Major updates like this one affect how transactions are verified, the mempool (where unconfirmed transactions wait), remote procedure calls (RPC), your wallet, and mining tools. This is why careful review is needed before putting these changes live on active nodes.

Updating and System Needs

Upgrading to Bitcoin Core 30.0 is straightforward. First, close your current Bitcoin Core software. Then, on Windows, run the installer. For macOS, simply copy the new application. Linux users will replace the bitcoind or bitcoin-qt files. Be aware that the full shutdown process can take a few minutes for some systems.

You can upgrade directly from older, unsupported versions. This might take longer if the data directory needs to be moved or changed. Tools and RPCs are still available to help old wallets transition smoothly.

Bitcoin Core 30.0 works well and is tested on Linux kernel 3.17+, macOS 13+, and Windows 10+. While it might run on other Unix-like systems, using it outside these officially supported platforms isn’t recommended.

Before upgrading, node operators should double-check their custom settings. Some options might be outdated. For example, the -maxorphantx setting no longer does anything and should be removed. Leaving it in could cause problems with future versions.

It’s always a good idea to back up your data directory and wallets before updating. Also, look at the list of changes for indexes and logs. Some updates might require a full re-sync or cleaning out old directories manually.

Transaction Policies, Fees, and the Mempool

One big change impacts how many signature operations a single standard transaction can have. This new limit is 2,500. This count includes operations from all previous output scripts, input scripts, and P2SH redemption scripts if they exist. Bitcoin Core says this limit shouldn’t affect most typical transactions. It was put in place to get ready for a possible BIP54 rollout.

The -datacarriersize option is now set to 100,000 by default. This change pretty much removes the old practical limit. The maximum transaction size will now be the main constraint. If you want the old behavior back, you can set -datacarriersize=83.

Good news for data-heavy transactions: you can now have multiple data carrier outputs (OP_RETURN) in a single transaction. This applies to both relaying and mining, as long as it stays within the -datacarriersize limit.

Minimum fees are also changing. The minimum block fee, -blockmintxfee, is now 0.001 satoshis per virtual byte (vB). The minimum relay fees, -minrelaytxfee and -incrementalrelayfee, are set to 0.1 satoshis per vB by default. Bitcoin Core warns that transactions made with these lower fees might not spread or confirm across the network unless these lower values become widely accepted. Your wallet’s default fees remain the same. If you want to create transactions with lower fees using your wallet, you’ll need to adjust -mintxfee.

The mempool and package relay system also got some tweaks. The "1 parent – 1 child" opportunistic relay now handles situations better where parents are unconfirmed or when there are more complex transaction structures. The orphan transaction zone, which holds transactions whose parents haven’t arrived yet, got stronger protections against denial-of-service attacks. Limits are now based on the number and weight of unique entries, with caps like 3,000 entries and 404,000 weight units (Wu) per pair. This replaces the older -maxorphantx setting.

New Tools, Mining Communication, and Logging

There’s a new command-line tool called bitcoin. It acts as a wrapper to call other programs. For instance, "bitcoin node" does what bitcoind does, "bitcoin gui" runs bitcoin-qt, and "bitcoin rpc" works like bitcoin-cli -named. This new command makes it easier to find functions without replacing the old tools.

The bitcoin tool also brings an experimental mining IPC (Inter-Process Communication) interface. If you start your node with bitcoin -m node -ipcbind=unix, it will listen on a Unix socket. This lets IPC clients (like Stratum v2) ask for block templates and send mined blocks. This feature adds some dependencies, but you can turn it off during compilation with -DENABLE_IPC=OFF. Right now, the -m option starts a new internal bitcoin-node program and is required, though it might become optional later.

During installation, several test and support programs now go into libexec/ instead of bin/. You can call them using the new bitcoin command. On Windows, the installer no longer adds "(64-bit)" to the Start menu. It also cleans up old files during updates.

The coinstatsindex implementation was changed to fix a reported overflow error. The new version of this index needs to re-sync from scratch and will be stored in /indexes/coinstatsindex/. The old version stays in place to allow for downgrades, but you can remove it manually if you don’t plan to go back.

When it comes to logging, automatic disk logging is now limited to 1 MiB per hour per source location. If -logsourcelocations is on, the log output shows the full function signature instead of just the short name. Suppressed logs will have a [*] prefix when appropriate.

RPCs, Wallet, and Interface Changes

Bitcoin Core 30.0 will remove the -paytxfee startup option and the settxfee RPC in version 31.0. The project suggests using fee estimation or specifying fee_rate per transaction in RPCs like fundrawtransaction, sendtoaddress, send, sendall, and sendmany instead.

Many changes hit the RPCs. Descriptors with spaces in public keys will now trigger an error. submitpackage no longer demands all unconfirmed parents be present. waitfornewblock now takes an optional current_tip argument and is no longer hidden. Plus, psbtbumpfee and bumpfee allow for full replace-by-fee (RBF) even without BIP-125 signaling.

Script validation responses now use block-script-verify-flag-failed and mempool-script-verify-flag-failed as prefixes. This helps tell block errors from mempool errors apart. getmininginfo now reports blockmintxfee, and getmempoolinfo includes permitbaremultisig and maxdatacarriersize to show relevant settings.

For wallets, old BDB wallets cannot be created or loaded anymore. They must be moved to the descriptor format using the migratewallet RPC. This change allowed for the removal of redundant bitcoin-wallet options and a long list of legacy-only RPCs. These include addmultisigaddress, dumpprivkey, dumpwallet, importaddress, importmulti, importprivkey, importpubkey, importwallet, newkeypool, sethdseed, and upgradewallet.

The wallet also added support for spending and creating TRUC transactions. This means applying TRUC policy rules and keeping TRUC UTXOs separate from other UTXO versions. Parameters and fields related to watch-only wallets are gone. This includes include_watchonly and iswatchonly in RPCs. getwalletinfo no longer has balance, immature_balance, and unconfirmed_balance fields. getunconfirmedbalance was removed. Users should check getbalances for unconfirmed amounts instead.

On the graphical interface side, the move to Qt 6 brings dark mode support to Windows. macOS users now benefit from the Metal backend. As a small usability detail, some custom column widths in the Transactions tab reset after the removal of legacy wallets.

Lastly, the new version adds a REST endpoint: /rest/spenttxouts/BLOCKHASH. This helps get spent outputs efficiently using block undo data. It also limits startup parameters like -maxmempool and -dbcache on 32-bit systems to 500MB and 1GiB, respectively.

What This Means for Operators and Users

These updates have many consequences. Node operators must decide if they need to re-sync indexes like coinstatsindex. They should also review their settings for any outdated options. Miners and pools adopting the experimental IPC can integrate Stratum v2 or other client software. However, they need to plan for changes in how they compile if they don’t need IPC.

Infrastructure administrators should pay close attention to the new default minimum fee rates. They should also note the advice to use fee_rate per transaction if they plan to pay less than the wallet’s default fees. Whether transactions with lower fees reliably spread across the network will depend on how widely these new values are adopted.

Developers and application managers using RPCs face required updates to their integrations due to deprecations and signature changes. They must also check that descriptors and parameters do not contain unintended spaces. Changes in error names and new fields in responses mean they need to update their error handling logic.

The release notes thank a long list of contributors for their direct work on this version. Among those mentioned are 0xb10c, amisha, Andrew Toth, Anthony Towns, Antoine Poinsot, Ava Chow, benthecarman, Brandon Odiwuor, brunoerg, Bue-von-hon, Bufo, Chandra Pratap, Chris Stewart, Cory Fields, Daniel Pfeifer, Daniela Brozzoni, David Gumberg, deadmanoz, dennsikl, dergoegge, enoch, Ethan Heilman, Eugene Siegel, Eunovo, Eval EXEC, Fabian Jahr, fanquake, Florian Schmaus, fuder.eth, furszy, glozow, Greg Sanders, Hao Xu, Haoran Peng, Haowen Liu, Hennadii Stepanov, Hodlinator, hoffman, ishaanam, ismaelsadeeq, Jameson Lopp, janb84, Jiri Jakes, John Bampton, Jon Atack, josibake, jurraca, kevkevin, kevkevinpal, kilavvy, Kristaps Kaupe, l0rinc, laanwj, leopardracer, Lőrinc, Luis Schwab, Luke Dashjr, MarcoFalke, marcofleon, Martin Zumsande, Matt Corallo, Matthew Zipkin, Max Edwards, monlovesmango, Murch, nai­yoma, nervana21, Nicola Leonardo Susca, Novo, pablomartin4btc, Peter Todd, Pieter Wuille, Pol Espinasa, Prabhat Verma, rkrux, Roman Zeyde, Ryan Ofsky, Saikiran, Salvatore Ingala, Sebastian Falbesoner, Sergi Delgado Segura, Shunsuke Shimizu, Sjors Provoost, stickies-v, stratospher, stringintech, strmfos, stutxo, tdb3, TheCharlatan, Tomás Andróil, UdjinM6, Vasil Dimov, VolodymyrBg, w0xlt, will, willcl-ark, William Casarin, woltx, yancy, and zaidmstrr. All the translation contributors on Transifex are also recognized.

In short, Bitcoin Core 30.0 delivers many improvements and structural shifts. It requires a careful read of the release notes and testing in controlled environments before deploying it on live production nodes.

Recent Articles

Related News

Leave A Reply

Please enter your comment!
Please enter your name here