Nowadays, November 24, 2019, marks the formal launch of Bitcoin Core .19., the 19th important release of Bitcoin’s primary program consumer released by Satoshi Nakamoto virtually 11 many years in the past and even now the dominant Bitcoin implementation on the network nowadays. (Although because of to an difficulty that came to light in a late stage of the Bitcoin Main .19. launch system, the version released for down load is basically .19..1.) Overseen by Bitcoin Core lead maintainer Wladimir van der Laan, this most current major release was made by around a hundred contributors above a span of about 6 months.
The final result of 550 merged pull requests, Bitcoin Main .19. incorporates a variety of general performance enhancements, modernizations and bug fixes, as perfectly as other adjustments.
Here’s an overview of some of these variations.
Bech32 Addresses by Default in the GUI
The “bech32” address structure (BIP 173) experienced currently been released in Bitcoin Core .16., launched in early 2018, but is now for the 1st time established as the default choice in the Bitcoin Main wallet Graphical Consumer Interface (GUI).
Bech32 addresses are the addresses beginning with “bc1” (as opposed to addresses starting with a 1 or a 3.) These addresses are also a little bit extended, but use fewer distinctive people than the current deal with structure, as there is no for a longer period a distinction among lowercase and capital letters. (This reduces the probable for human mistakes, for instance, when an tackle is study out loud.) Bech32 addresses are also designed to limit blunders prompted by typos.
In addition, bech32 delivers rewards in the context of SegWit. Some wallets that provide SegWit — together with the Bitcoin Core wallet by default up right until now — do so by “wrapping” it into P2SH outputs (with addresses beginning with a “3”). To invest bitcoin from these an address, consumers have to expose a piece of code — the “redeem script” — to present that the bitcoin were being truly locked up in a SegWit output. With the new bech32 addresses, this phase can be skipped, which means that paying out from a SegWit output will have to have a little significantly less facts to be transmitted above the Bitcoin community and bundled in the blockchain certification. This can make transactions from a bech32 output even less expensive than SegWit transactions from a P2SH output.
Given that not all bitcoin wallets help sending to bech32 addresses nevertheless, Bitcoin Core .19. people will however be equipped to optionally deliver a PS2H obtaining address rather, by means of a toggle in the GUI.
Two Block-Only Outbound Connections Additional by Default
Bitcoin nodes hook up to several other Bitcoin nodes, alongside one another forming the peer-to-peer network. Over this network, the nodes share blocks, transactions and some added transaction data.
But the peer-to-peer community can be topic to attacks, this sort of as “partitioning attacks.” If an attacker controls a massive sufficient number of Bitcoin nodes, it can potentially “cut off” specified elements of the Bitcoin network (or even specific nodes) by intercepting all site visitors to it. The partitioned component of the community could then, for instance, be fooled into accepting a minority chain — not the longest chain — as valid, which could, in convert, open up the door to double-spend assaults.
A partitioning assault is countered if a node in the partitioned component of the community has even just a person connection to an honest node on the major network. It would then acquire and relay all transactions and blocks and would reject the minority chain in favor of the the greater part chain.
A single way to recognize this, and to make partitioning assaults more durable to pull off, is to have nodes create additional connections to a person an additional. Much more connections do arrive with a lot more memory and bandwidth necessities, even so there is a trade-off.
Bitcoin Core .19. increases the default for outgoing connections by two, but — cleverly — these two more connections are only used to relay blocks — they do not relay transactions or more transaction data. This increases the extra bandwidth requirements minimally, although nonetheless earning partitioning assaults tougher to pull off productively.
Bloom Filters Deprecated
Bitcoin Main is a complete node implementation, which indicates that it downloads and verifies all Bitcoin blocks. Although this is optimally protected, it doesn’t make it extremely effectively suited for small-resource computing products, like mobile telephones. Mobile wallets (as very well as some desktop wallets) are, therefore, typically “light clients”: these only down load transactions and (sections of) blocks that worry them exclusively.
A person way to do this is with Bloom Filters, applied by a couple of wallets now. In short, Bloom Filters are a cryptographic trick utilised by light-weight purchasers to ask for pertinent knowledge from much more or a lot less random comprehensive nodes on the community. Sad to say, nevertheless, it has turn out to be obvious in excess of the decades that Bloom Filters are somewhat privacy-unfriendly: They effectively expose all of their addresses to the complete node. On best of that, supporting Bloom Filter requests does arrive at a cost in CPU and disk house for full nodes…