Bitcoin Core Wallet 0.19.0.1 Is Released With A New Default Address Format
The new major version of the Bitcoin Core wallet software for the digital currency Bitcoin/BTC has one very visible change in it's graphical user interface: Addresses are now shown in the bech32 format by default. There are also a few new configuration options and some new RPC calls and a whole lot of changed RPC calls in the new version. Those using it as part of their back-end may want to look over that long list of RPC changes to see if they are compatible with the rest of the deployment. Checking if everything works with bech32 addresses is also a good idea. Version 0.19.1 is, apart from BTC addresses having a completely different format, essentially the same as previous versions from an average end-users perspective.
published 2019-11-24 - last edited 2019-11-24
Bitcoin Core version 0.19.0.1 is the first version of the 0.19 series. There was no 0.19.0 release. It was tagged and meant to be released but that didn't happen. The entire change-log for that version - which one can find by doing a close-up inspection of the source code tree - is a short note admitting that:
"Due to a last-minute issue (#17449), 0.19.0, although it was tagged, was never released."
Issue #17449 has the title
fix uninitialized variable nMinerConfirmationWindow #17449 and a post by bitcoinVBR detailing that It (nMinerConfirmationWindow) is used for the computation of BIP9WarningHeight, and by that time it isn't initialized.. The kick-ass hacker practicalswift, who has a long history of revealing embarrassing security issues in the Bitcoin Core software, had this to say about the blunder:
"Really fascinating that this 1.) wasn't caught automatically by our static and dynamic analysis, 2.) wasn't caught by our review process and 3.) was unnoticed in master for over a month. Room for improvement! :)"
Some changes were made to address this and 0.19.0.1 was released in 0.19.0's place twelve days later - on November 24th, 2019.
bech32: New BTC Address Format
Bitcoin addresses used look like
1J6xr1f42keDRJq8Wnp1e3Yx2xpwsqzZA6 - a 34 byte string starting with 1 for regular wallets and 3 for multi-signature wallets. The new
bech32 format used by Bitcoin Core 0.19 by default is different. Addresses now have a
bc prefix and they are much longer. The new payment addresses look like
bc1qgk0pfqll4wtjwqs3e5xat2e8vd8dsx55ms9tvl and they are native to segregated witness. The old and new address formats are practically the same from a functional perspective. However, it is worth noting that while bech32 is an almost 2 year old format which is widely adopted by software and services it is not supported by all wallets and services in the Bitcoin ecosystem. There are services which will either not let you withdraw to the new segwit address type or in the worst-case misinterpret the address and send your funds into a black hole. Use the old-style format to request a payment if you are unsure and you find no information confirming that the service you are using supports withdrawing to
bech32 style addresses.
Bitcoin Core's GUI does have a handy little
[x] Generate native segwit (Bech32) address check-box in it's
Receive tab. This is checked by default as of Bitcoin Core 0.19. Generating a traditional old-style address is a simple matter of unchecking that box before clicking
Create new receiving address.
The new address format is the only major change end-users will notice when going from Bitcoin Core 0.18.x to 0.19.x. Developers, on the other hand, have a lot of changes to tackle on their plate.
New And Changed RPCs For Developers
Web applications or other software can talk to a Bitcoin Core client running as a system daemon using RPC calls. There are three new RPCs in 0.19:
getblockfilter. There's also a very long list of changes to existing RPCs. This should not be a problem but it may be depending on the sanity of the software which is talking to Bitcoin Core. As a silly example:
getdescriptorinfo will now return an additional
checksum field and
getwalletinfo will now include a
scanning field in it's results. Production back-end software which is unable to handle something like an extra field being returned should not exist - but things are not always as they should be and one should not blindly assume that they are when dealing with potentially large amounts of digital money.
The complete list of changes in Bitcoin Core 0.19.0.1 is really long and much of it is taken up by descriptions of changes to RPC calls. Developers who are responsible for back-end software interfacing with as Bitcoin Core Wallet should probably take a close look at it.
Bitcoin's Are Not Included
The Bitcoin Core software does not come with any actual Bitcoin (BTC) currency. You would have to get that or buy that separately. You may want to hedge such a purchase on an exchange which supports shorting (which locks in a price at 1:1 leverage) such as Bitmex or Bitfinex since BTC is a very volatile currency. Bitmex supports up to 100x leverage; going all-in 100x on a highly volatile digital currency is essentially the same as gambling at a casino.
Acquiring The New Bitcoin Core Version 0.19.0.1
The new version can be downloaded from bitcoincore.org/bin/bitcoin-core-0.19.0.1/. There is also a magnet link for those who prefer to download using a bittorrent client. Binaries are available for GNU/Linux on ARM, Risc-V and x86-64 as well as Mac OS X and Windows. The tarballs are only around 30 MB so there isn't much of a gain to be had by using BitTorrent to download it. Those who prefer the git development branch can
git checkout https://github.com/bitcoin/bitcoin.git
Upgrading to the new version may be a good idea since the Bitcoin developers are known to quietly fix and then keep serious vulnerabilities secret for years before they are publicly disclosed.