The concept behind the Vyper challenge was to develop one thing designed on the language degree to point out a excessive diploma of security naturally. The challenge was initially created by Vitalik as a proof-of-concept substitute for its predecessor, the Serpent, however shortly after creation he realized that Vyper did not have a devoted maintainer. Fortunately, an enthusiastic group member of his took the challenge torch and continued growth, so we (the EF Python crew) grew to become re-involved with the challenge for some time earlier this yr. I used to be.
A preliminary safety audit of the Python-based Vyper compiler was carried out this fall by the Consensys Diligence crew. You’ll be able to learn the outcomes your self right here.
I like to recommend studying this report, however there are two details.
- The Vyper compiler has a number of critical bugs.
- Codebases have a excessive diploma of technical debt, which complicates coping with these points.
The present Python-based Vyper implementation just isn’t but production-ready, so it has been moved from the Ethereum github org to its personal org, vyperlang. Present maintainers plan to deal with the difficulty independently once more, however we’ll proceed to comply with the challenge intently: > https://github.com/vyperlang/vyper
Within the meantime, our crew continues to work on a Rust-based compiler in parallel. We’ll discuss extra about this under, however first, let’s discuss somewhat bit extra about how we obtained to the place we are actually.
This yr now we have been working with the challenge maintainers to give attention to enhancing the code high quality and structure of the challenge. After months of labor, I used to be skeptical that the Python codebase was more likely to ship on the concepts his Vyper promised. The codebase comprises a good quantity of technical and architectural debt, and from our perspective, present maintainers did not appear targeted on fixing this.
In August of this yr, we thought of making a model of the Vyper compiler constructed on a radically totally different structure. The purpose was to leverage present work by the Solidity crew and create a compiler in Rust that makes use of the YUL intermediate illustration in order that she will goal her EVM or EWASM throughout compilation. Rust-based compilers are way more transportable than Python-based compilers, as he compiles simply to WASM. By constructing on prime of YUL, you get EVM and EWASM compilation without cost, and all you want is the compiler to deal with her Vyper AST to YUL conversion. When Python Vyper Audit was launched, we have been working nicely with the Rust-based Vyper compiler and have been assured in our course. The audit recognized many issues concerning the python codebase and helped validate the course we took.
That mentioned, the maintainers of the Python Vyper codebase intend to proceed the challenge. I do not plan on persevering with to be concerned within the Python codebase, however I want them the perfect of luck, however I would like to notice latest occasions to keep away from misrepresenting that the challenge is protected to make use of. .
So there are at the moment two “Vyper” compilers. An EF-supported effort in the direction of constructing a compiler written in Rust to offer the unique thought for Vyper, and a Python effort working independently in the direction of the identical purpose within the Python codebase. We look ahead to persevering with to work collectively in the direction of a single ‘Vyper’ with a number of implementations, and can maintain everybody up to date because the challenge strikes ahead.