The thought behind the Vyper Mission was to develop one thing that was designed on the language stage to naturally exhibit a excessive diploma of security. The venture was initially authored by Vitalik as a proof-of-concept substitute for Serpent, its predecessor, however shortly after its creation Vyper discovered itself with out a devoted maintainer. Fortunately, there have been enthusiastic neighborhood members that took up the torch and continued improvement of the venture, and we (the EF Python Staff) turned re-involved within the venture for a while earlier this yr.
This fall, a preliminary safety audit was carried out by the Consensys Diligence group on the Python-based Vyper compiler. You can read the results for yourself here.
We encourage you to learn the report, nonetheless, there are two foremost take-aways.
- There are a number of critical bugs within the Vyper compiler.
- The codebase has a excessive stage of technical debt which is able to make addressing these points advanced.
Because the current Python-based Vyper implementation will not be but manufacturing prepared, it has been moved out of the ethereum github group into its personal group: vyperlang. The prevailing maintainers are planning to handle the problems independently as soon as once more, however we’ll proceed to observe the venture intently right here: > https://github.com/vyperlang/vyper
In the meantime, our group continues work on a Rust-based compiler in tandem. Extra on that beneath, however first, right here’s a bit extra on how we obtained to the place we’re at this time.
Over the course of this yr we labored with the venture maintainers to concentrate on bettering the code high quality and structure of the venture. After a couple of months of labor we have been skeptical that the python codebase was more likely to ship on the concept that Vyper promised. The codebase contained a big quantity of technical and architectural debt, and from our perspective it did not appear to be the present maintainers have been centered on fixing this.
Earlier this yr in August, we explored producing a model of the Vyper compiler constructed on essentially totally different structure. The purpose was to put in writing a compiler in Rust that leverages the present work by the Solidity group and makes use of the YUL intermediate illustration to permit us to focus on EVM or EWASM throughout compilation. A Rust primarily based compiler will be simply compiled to WASM, making the compiler far more moveable than one primarily based in Python. By constructing on prime of YUL we might get the EVM and EWASM compilation at no cost, solely requiring the compiler to deal with the transformation from a Vyper AST to YUL.
We have been sufficiently far together with our Rust primarily based Vyper compiler when the Python Vyper audit was launched, and have been assured within the directionl. The audit confirmed many issues across the python codebase and helped to validate the path we have taken.
The work continues
That stated, the maintainers of the Python Vyper codebase do intend to proceed with the venture. Whereas we don’t plan to have continued involvement within the python codebase, we want them luck but additionally needed to make word of current occasions to keep away from inadvertently signalling that the venture was protected to make use of.
So at current there are at the moment two “Vyper” compilers: The EF-supported work in direction of constructing a compiler written in Rust to ship on the unique thought of Vyper, and the Python effort which is able to work independently towards the identical targets within the Python codebase. We’re hopeful that we will proceed working collectively in direction of a single “Vyper” with a number of implementations, and we’ll hold everybody updated because the venture strikes ahead.