Bitcoin’s best-known proposed code change isn’t the only one that matters.
While the last few bitcoin code versions saw the gradual release of SegWit (a proposal that would alter transactions to boost scalability), developers are quietly improving bitcoin in other ways.
The upcoming release – version 0.14.0 – is composed of performance boosts and long-in-the-making code shuffles that could pave the way for future upgrades. The version will be made available once a trial version successfully withstands testing by developers.
As explained by Chaincode engineer Russell Yanofsky:
“There’s been a lot of performance improvements and there’s been a lot of ongoing improvements on the networking code – making it more maintainable. But [developers] are also laying the groundwork, doing all this clean-up to make it multi-threaded and for more improvements in the future.”
Speeding up downloads
You could argue that running a full node is the best way to take advantage of bitcoin’s unique ability to minimize trust in third parties.
Using the wallet features baked into the node is the most ‘pure’ way to send and receive payments, as well as to ensure better security and privacy of transactions. At least, that’s compared to more popular, mobile-based SPV wallets, which store a smaller slice of block information and, as a result, require more trust in the network’s miners.
However, running a node continues to be a pain point for users, since it requires downloading every transaction sent since bitcoin emerged nearly 10 years ago.
Perhaps the biggest performance improvement in 0.14.0 is that nodes can initially sync up with the network more quickly. Although the overall storage size is the same, in a trial run, 0.14.0 synched 5.7x faster than 0.13.2, the previous version, according to developers.
This is accomplished with ‘assumed valid blocks’, which separate two processes: verifying historical signatures and checkpoints, where old block hashes are hardcoded into the software to prevent denial-of-service attacks.
Further, while users have had the option of ‘pruning’ the blockchain for a while now, 0.14.0 introduces a ‘manual pruning’ option, where users can use a command-line option to cut out block information and, as a result, retain a smaller version of the blockchain.
After that, there’s bumpfee, for which Yanofsky recently “inherited” the role of lead developer, and has been helping to test and complete.
The idea is that bitcoin transactions are sometimes slow to be added to the blockchain, as there’s limited room in each bitcoin block. And, since miners have some choice over which valid transactions are packaged into each block, they’re more likely to include transactions with a higher fee.
With a “conservative” fee, Yanofsky explained, you’re not sure when your transaction will be included in a block. However, you can speed it up by using bumpfee to replace the old transaction with a new one that has a higher fee attached to it.
“Previously you would be kind of stuck because you don’t want to send a new payment. If they both go through then you’d pay twice,” he told CoinDesk.
The functionality is turned off by default, but users can activate it by using the command line, and is a feature that might be particularly useful as blocks are filling up. (This has long been a topic of bitcoin’s scaling debate, which we won’t get into here).
Bumpfee uses opt-in replace-by-fee (RBF) under the hood, a feature that was introduced earlier that allows users to swap unconfirmed transactions with those with a higher fee. Developer James Hilliard spoke to the benefits of the underlying technology more generally – some of them longer-term.
“It’s something important for things like [the] Lightning network as well, which need reliable transaction confirmations,” he said.
Though bumpfee uses a version wherein users can opt-in to replaceable transactions, it’s worth noting that a full version, where every bitcoin transactions uses the feature, was controversial in the past.
There are many other changes, some of which aim to optimize the mining process.
One change improves block processing speeds by reducing the redundancy of verifying signatures in blocks, while the enhanced “high-bandwidth mode” can speed up block propagation across the network in some cases.
“Version 0.14 has plenty of optimizations such as networking-side stuff,” Hilliard added.
Further, Bitcoin developer Cory Fields’ peer-to-peer refactoring finally made it into the 0.14.0 release, after nearly two years of work. The hope is that it will clear the way for future upgrades and help new developers make sense of the codebase faster.
Though, like many of the other miscellaneous changes included in the release, it’s not something that average users are likely to notice — at least not yet.
Image via Shutterstock