Bitcoin Core 0.10 Gives Developers Simplified Access to Network Consensus

Feb 17, 2015 at 20:55 UTC
Updated Feb 18, 2015 at 17:50 UTC
NEWS

The latest version of Bitcoin Core was released yesterday, with key changes that address the declining number of nodes, how transaction fees are set for the Bitcoin Core wallet and simplifying the process for developers to get involved with bitcoin projects.

It’s perhaps the latter point that will have the biggest impact on how developers work with Bitcoin Core. The latest version of it includes a consensus library, which gives programmers easy access to the rules governing consensus on the bitcoin network, without having to run a full node.

“We’re splitting it out into a standalone library that does absolutely nothing but validates data,” said Peter Todd, a core contributor.

Consensus library

One developer who has been awaiting the consensus library’s release is Tamas Blummer of Bits of Proof. Blummer said the library means that developers like him can create more secure wallets because it will ensure that all transactions are fully validated by the network.

“If you are out of consensus with the majority – which can happen if you’re not using the same rules – it means you might think that a bitcoin is there, but in reality it is no longer there. You might accept a transaction that the majority [of the network] doesn’t accept,” Blummer said.

Put another way, if a developer isn’t totally certain that a particular implementation of the consensus rules matches the majority of the network, it could result in disastrous errors, Todd pointed out. The core contributor went so far as to compare it to the challenges of designing flight avionics software:

“It’s a very complex thing [the code governing bitcoin consensus]. It’s got a lot of code and it’s just an incredible challenge. In flight avionics software, for example, if two planes don’t have the exact same autopilot, that’s okay. It doesn’t matter if one turns 10 degrees less than the other – it’s no big deal. But that’s not the case in bitcoin.”

So-called “thin clients” currently rely on something called simplified payment verification (SPV). This means a client doesn’t require a complete copy of the entire blockchain to verify a transaction.

Instead, SPV allows the thin clients, which include wallets like Electrum, to verify transactions with help from some other source. In Electrum’s case, the client checks transactions against blockchain information obtained by its own servers which do the heavy lifting.

The risk that thin clients run is that the version of the blockchain received by the client is out of sync with the rest of the network.

“[Clients using SPV] are not able to make the decision [to accept a transaction] entirely on its own […] it’s relying on the consensus of the network as represented by a miner,” Blummer said.

The consensus library now combines the benefits of thin clients like doing away with downloading the entire blockchain with the security of a full node. A developer can be confident that transactions to a wallet are in full agreement with the rest of the network.

“The new consensus library enables us to build services that fully validate Bitcoin transactions, are guaranteed to remain in sync with the majority of the network and add new features not available in the core,” Blummer said. “The library will spark pent-up innovation.”

Transaction fees

The latest update to Bitcoin Core will also contain a new way for its wallet to deal with transaction fees. These “floating fees”, as outlined by Bitcoin Foundation chief scientist Gavin Andresen, will give users of the Core wallet an estimate of how much in fees to pay in order to get quick confirmations.

The updated Core does this by watching the network for confirmation times and fee estimates to find the sweet spot. One of the key benefits of the new system is shortening confirmation times for free, high-priority transactions, Andresen wrote in July.

But the new fee system isn’t going to cause sweeping changes in the bitcoin economy. For starters, the wallet’s estimates are only a best guess based on historic transaction data. A spike in transactions, for example, would render the wallet’s estimate inaccurate, Todd said.

Mike Hearn, another core contributor, noted that the estimator could only suggest optimal fees, but it would have little effect on confirmation times if senders ignored the estimates.

“Plenty of people are attaching much lower fees than the estimator is suggesting and things still work for them … it seems like lots of market participants are sort of ignoring the issue right now. So it’s unclear what will happen with fees now [that] 0.10 has launched,” he said.

Todd also pointed out that the new system would only kick in for Bitcoin Core wallets:

“[The new system] doesn’t affect other wallets, it doesn’t affect how the network works. It’s just local to a Bitcoin Core wallet.”

Headers-first syncing

Another innocuous but important addition in the latest version is ‘headers-first synchronisation’, when a node first downloads parts of a block before proceeding to download the entire blockchain.

This method speeds up communications between nodes and as a result may make running a full node a more attractive prospect even as there are fears over a declining number of nodes in operation, Todd observed.

“It just makes things more convenient. The number of nodes has been dropping, unfortunately, over the long run, so this helps fight against that,” he said.

The last major Bitcoin Core release happened nearly a year ago, when version 0.9.0 was released on 18th March. The 0.9 series has had a number of stability and security fixes since its initial release, according to Cory Fields, another core contributor.

Image via Shutterstock