Lately, developer Piper Merriam has been thinking about PyEthereum. He doesn't like everything he sees. In a blog post, Merriam calls the complex code originally authored by Vitalik Buterin to implement the Ethereum Virtual Machine in Python "a bit of a mess."
That's not to say Merriam is hypercritical of the work Buterin has done to create PyEthereum. He said PyEthereum was written quickly and skillfully, and that it has an amazing library. He acknowledged the utility of address generation through private keys, and said the test EVM has been key to most Python developers working on the Ethereum platform to make their applications.
But there are things PyEthereum doesn't have. Things it needs. Merriam talks about the solid foundation necessary for various applications, and he breaks it down into four key areas.
According to Merriam, it’s wholly necessary for documentation to be narrative in style so that it "holds your hand and walks you through the various architecture and abstractions." He related that it should read as a simple to follow guidebook, covering every morsel of information someone needs to know when using the library.
It should be clear, and easy to distinguish between public and private APIs.
A sense of security comes with knowing the API is a foundation. Changing it suddenly is akin to pulling the rug out from under someone. Those maintaining libraries need to know which API's can be changed and which need a deprecation process prior to implementing changes.
Modularity and Extensibility
Merriam doesn't believe it's necessary for opcodes to require core code changes. "We need an EVM implementation that not only allows, but encourages extensibility and modularity as first class features."
Merriam lays out some criticism of PyEthereum's current state:
Merriam said the obvious solution is to simply fix PyEthereum. But, due to the sheer multitude of changes necessary to get that done, Merriam said the timeframe would be simply unreasonable, meaning the changes would not be backwards-compatible. The counterpoint to this solution is based on the disruption that backwards-incompatible changes would cause.
In lieu of simply fixing PyEthereum, Merriam favors the option to start fresh. Merriam provides his reasoning behind building a new library.
"[The library] can take cues from the existing implementation but start with a clean slate. This library can be developed in parallel to PyEthereum without causing any disruption to existing users."
Merriam said Py-EVM is just that, a new implementation for the Ethereum Virtual Machine, also written in Python. He thanks Buterin and the PyEthereum codebase from which he was inspired to implement designs. Merriam aims to have Py-EVM integrated with a well-defined API, and expects it will become the de facto Python implementation.
The alpha release will come in the next few months, if not weeks, according to Merriam. After the basic design meets the right criteria, Py-EVM will undergo a cycle of beta releases, during which time an adapter and documentation will be available for those switching over from PyEthereum.
Once stable on mainnet and public test networks, Py-EVM will be slated for a 1.0 release. Interested users may follow ongoing developments on GitHub.