Engineering Undergrads Building Fundamentals of New Peer-to-Peer Technology
Rather than relying on centralized servers to manage the flow of information, new programs and devices, ranging from thermostats to flying robots, often communicate to each other directly.
This type of peer-to-peer, or p2p, communication has enabled everyday applications, like sharing photos between phones via Bluetooth, but also sophisticated, decentralized networks of computers that support nascent technologies, including blockchains that serve as the basis of cryptocurrencies like Bitcoin.
A team of four engineering undergraduates is developing an important piece of this distributed puzzle.
Alexander Haynes and Robert Zajac, seniors in Computer and Information Science, and Aspyn Palatnick and Zixuan (ZX) Zhang, seniors in the Networked and Social Systems Engineering program, are building a library of modular networking protocols for the popular, open-source Python programming language. Once completed, this library will offer Python programmers out-of-the-box solutions to a ubiquitous problem: how to get their app, or robot, or self-driving car, to talk to its peers, whatever or wherever they may be.
Their work is being recognized by the Ethereum Foundation, a non-profit organization that supports and facilitates the development of a global blockchain-based computing platform. The Foundation has provided the team with a grant of $40,000 to support their work.
Ethereum’s system of “smart contracts” enables the exchange of monetary value and creation of applications without the need for a central server, thus bringing privacy, security and robustness advantages. Imagine a decentralized version of iTunes where artists could sell music directly to their fans, instead of giving Apple a cut in exchange for hosting the files and facilitating the transaction.
But because the apps that work on Ethereum need to communicate between devices that have, in many cases, never talked to one another before, there is a fundamental need for robust networking protocols. These are the bits of code that let a program running on one computer talk to a program running on another computer, whether that computer is a desktop, cellphone, smartwatch or robot potentially thousands of miles away. They work by translating a program’s output, like the rendering of a web page, into a common language that is then transmitted over the Internet. Getting these protocols right is a challenge for any networked application, let alone a p2p one.
Every app needs networking protocols specific to its native programing language, and Python is particularly popular among researchers and open-source enthusiasts likely to use Ethereum. With a new major network upgrade on the horizon — Ethereum 2.0 — having a library of these protocols for Python was a high priority for the Foundation.
“The Ethereum Foundation holds most of their meetings live on the Internet and allows anyone to tune in as an observer.” Zhang says, “From sitting in these meetings, we learned that most of Ethereum’s protocol research and prototyping took place in Python but no one was working on the networking layer in Python.”
As seniors interested in distributed systems and decentralized networks, Haynes, Zajac, Palatnick and Zhang saw their academic and personal interests align with this opportunity, and decided to form a Senior Design team around the project, now known as py-libp2p. Knowing that Ethereum regularly provides funding support to teams working on innovative and foundational technologies, the team later applied for the grant they ultimately received from the Foundation.
“We thought it was an interesting technical challenge,” Zajac says. “And with four of us and a six-to-nine-month development window, we thought it would be a perfect fit for a Senior Design project.”
“We said, let’s build something cool, something new, something that’s meaningful and impactful,” Palatnick adds.
Physically networking with members of the Ethereum and Python communities at workshops and conferences has given the team technical insights and the confidence to deliver on this promise. Working under advisor Boon Thau Loo, professor in the Department of Computer and Information Science, they presented their progress at the CIS Senior Design Competition, where they received an Honorable Mention.
While Ethereum has a need for Python networking protocols for its basic functions, they could be a boon to any programmer working in the language, especially ones focused on the Internet of Things or other distributed hardware networks. The team has its eye on applying their project to swarms of flying robots.
“Let’s say that there’s a swarm of drones monitoring an orchard, and then another drone is sent out to join,” Haynes says. “The new one needs a way to find the other drones that are already out there, connect to them and be able to talk to them. This kind of ‘peer discovery’ is part of our library, as well as the ability to simply send messages between the drones. They could all speak the same language.”
The principles of community and openness, writ large, were one of the motivating factors for the py-libp2p team. Their open-source technology, in collaboration with Ethereum, will allow a global network of computers to coordinate on an unprecedented scale.
“Ethereum enables open and transparent exchange of value,” Zajac says. “Its technologies and development efforts are all open source as a reflection of this. It’s a good fit, because Penn Engineering’s curriculum enables us to make impact in spaces that aren’t purely for profit, and we truly believe that we are making a lasting impact with py-libp2p.”