Saltar al contenido

Actualización sobre el compilador de Vyper

La idea detrás del Proyecto Vyper era desarrollar algo diseñado a nivel de lenguaje para exhibir naturalmente un alto grado de seguridad. El proyecto fue originalmente creado por Vitalik como un reemplazo de prueba de concepto para Serpent, su predecesor, pero poco después de su creación, Vyper se encontró sin un mantenedor dedicado. Afortunadamente, hubo miembros entusiastas de la comunidad que tomaron la antorcha y continuaron el desarrollo del proyecto, y nosotros (el equipo EF Python) nos volvimos a involucrar en el proyecto durante algún tiempo a principios de este año.

Este otoño, el equipo de Consensys Diligence realizó una auditoría de seguridad preliminar en el compilador Vyper basado en Python. Puedes leer los resultados por ti mismo aquí.

Le recomendamos que lea el informe, sin embargo, hay dos puntos principales.

  1. Hay varios errores graves en el compilador de Vyper.
  2. La base de código tiene un alto nivel de deuda técnica que hará que abordar estos problemas sea complejo.

Dado que la implementación actual de Vyper basada en Python aún no está lista para la producción, se ha trasladado de la organización ethereum github a su propia organización: vyperlang. Los mantenedores existentes planean abordar los problemas de forma independiente una vez más, pero continuaremos siguiendo de cerca el proyecto aquí:> https://github.com/vyperlang/vyper

Mientras tanto, nuestro equipo continúa trabajando en un compilador basado en Rust en conjunto. Más sobre eso a continuación, pero primero, aquí hay un poco más sobre cómo llegamos a donde estamos hoy.

En el transcurso de este año, trabajamos con los encargados del mantenimiento del proyecto para centrarnos en mejorar la calidad del código y la arquitectura del proyecto. Después de unos meses de trabajo, estábamos escépticos de que la base de código de Python probablemente cumpliera con la idea que Vyper prometió. La base de código contenía una cantidad significativa de deuda técnica y arquitectónica, y desde nuestra perspectiva, no parecía que los mantenedores existentes estuvieran enfocados en solucionar esto.

Explorando el óxido

A principios de este año, en agosto, exploramos la producción de una versión del compilador Vyper basada en una arquitectura fundamentalmente diferente. El objetivo era escribir un compilador en Rust que aproveche el trabajo existente del equipo de Solidity y use la representación intermedia de YUL para permitirnos apuntar a EVM o EWASM durante la compilación. Un compilador basado en Rust puede compilarse fácilmente en WASM, haciendo que el compilador sea mucho más portátil que uno basado en Python. Al construir sobre YUL obtendríamos la compilación EVM y EWASM de forma gratuita, solo requiriendo que el compilador maneje la transformación de un AST Vyper a YUL.
Estábamos lo suficientemente lejos de nuestro compilador Vyper basado en Rust cuando se lanzó la auditoría Python Vyper, y teníamos confianza en la dirección. La auditoría confirmó muchas preocupaciones sobre la base de código de Python y ayudó a validar la dirección que hemos tomado.

El trabajo continua

Dicho esto, los mantenedores de la base de código Python Vyper tienen la intención de continuar con el proyecto. Si bien no planeamos tener una participación continua en la base de código de Python, les deseamos suerte, pero también queríamos tomar nota de los eventos recientes para evitar señalar inadvertidamente que el proyecto era seguro de usar.

Por lo tanto, actualmente hay dos compiladores "Vyper": el trabajo apoyado por EF para construir un compilador escrito en Rust para entregar la idea original de Vyper, y el esfuerzo de Python que trabajará de manera independiente hacia los mismos objetivos en la base de código de Python. Tenemos la esperanza de que podamos continuar trabajando juntos hacia un solo "Vyper" con múltiples implementaciones, y mantendremos a todos al día a medida que el proyecto avance.

Fuente: https://blog.ethereum.org/2020/01/08/update-on-the-vyper-compiler/