Developers working to create the next iteration of the ethereum blockchain have developed code intended to help client developers boost their testing efforts ahead of the upgrade.
Ethereum 2.0 is by far the biggest upgrade on the agenda of developers said to bring massive improvements to scalability and usability on the now four-year-old blockchain network, which with its $17 billion market capitalization is the world’s second-most valuable blockchain. The work on the 2.0 iteration (also known as Serenity) continues apace, and according to Fredik Harryson, chief technology officer for client developer Parity, code specifications for the initial phased roll-out of the upgrade are about half complete.
As such, while many aspects of the upgrade are still under research and presently being finalized, on April 23 new code was unveiled that, if approved and ultimately implemented, will facilitate the basic communication between nodes that run the ethereum 2.0 software.
The protocol, called Hobbits, was developed in partnership between blockchain performance testing company Whiteblock, ethereum venture capital studio Consensys, and ethereum 2.0 implementer teams Chainsafe and Yeeth.
In a blog post introducing the tech, Trenton Van Epps wrote:
“As Ethereum 2.0 clients get closer to live testnets, they’re going to need a way to pass information back and forth between each client. This occurs over a set of links called the wire protocol.”
The wire protocol gets at the heart of how these distributed networks work, because nodes pass critical information between one another — namely transaction histories — that compose the blockchain itself.
Speaking to CoinDesk back in February, ethereum founder Vitalik Buterin explain that a wire protocol essentially determines “the rules for what messages get sent across the network.”
“For example, if two nodes talk to each other and one node wants to sync to the blockchain or publish a block, then how do you say I want to hear about a block? How do you say I want to hear about transactions? ” Buterin told CoinDesk.
Ethereum 2.0 will be actually be leveraging a wire protocol called “libp2p” developed and maintained by San Francisco-based startup Protocol Labs, the firm behind projects like Filecoin and IPFS. However, until that implementation is fleshed out for all ethereum 2.0 clients, Hobbits is envisioned as a means to establish cross-communication between those clients who don’t have libp2p ready.
Jonny Rhea, a protocol engineer at Consensys who contributed to building Hobbits, explained to CoinDesk:
“We don’t have libp2p yet so we needed to find a minimum wire protocol, sort of like a test wire protocol, just until we can put all the pieces together.”
Every blockchain, Buterin pointed out at the time, has a wire protocol or “mini-language” to define how messages get transmitted and received across the network. For bitcoin and ethereum presently, the wire protocol uses what are called gossip networks.
As Buterin told CoinDesk:
For bitcoin and [ethereum 1.0], they’re both what we call gossip networks. Anything that’s broadcasted eventually reaches everyone but for [ethereum 2.0] we can’t do that because there’s more total messages than any single node can download.”
As such, the new ethereum 2.0 wire protocol – libp2p – will have two major benefits. It will first leverage a new protocol design called “gossipsub” to prevent the network from being flooded and congested every time a node wants to send a message.
“If I have a new block and I’m connected to six of my peers, I’ll randomly send that block to two or three of my peers,” Rhea said. “I propagate that message. Then those nodes have peers, they don’t send it back to me, but they probabilistically pick two more peer to send the message to.”
More generally, the second benefit of using a libp2p wire protocol Rhea adds is modularity.
“The nice thing about libp2p is that it is modular,” Rhea said. “Let’s say you don’t like … how one node finds another node on the Internet. That can be replaced. It can be swapped out.”
At present, according to Van Epps, there are only two implementations of libp2p for ethereum clients written in programming languages Go and Rust.
However, Van Epps notes that “the long path to a ETH 2.0 launch hinges on having proper implementations of libp2p for each client language.”
Rhea told CoinDesk:
“There’s a lot of [research and development] stuff that we want to be able to test. We developed this basic wire protocol so that our team, Chainsafe and any other team that doesn’t have a libp2p implementation in the [programming] language their developing in can all make a [test network] and basically still be able to communicate.”
Wires image via Shutterstock