WEB3DEV Español

Cover image for ¿Por qué VyperLang?
Banana Labs
Banana Labs

Posted on

¿Por qué VyperLang?

La alternativa Eth-lingo

portada

VyperLang es conocido como el lenguaje alternativo de contratos inteligentes de Ethereum y es, por lejos, el segundo lenguaje más popular para construir contratos inteligentes en la red Ethereum.

Es un lenguaje de programación tipeado y orientado a contratos, que tiene como objetivo la Ethereum Virtual Machine (EVM) y fue construido para parecerse a Python.

Grandes empresas de tecnología, como: UniswapV1, CurveFi y muchas otras, prefieren usarlo, en lugar de Solidity, para contratos inteligentes.

Bueno, ¿cuál es la emoción con Vyper?

Vyper promete un conjunto único de características. Estas características incluyen:

  1. Verificación de límites y desbordamiento (overflow). Debido a sus arrays dinámicos fijos, Vyper es capaz de ahorrar más gas en las llamadas a funciones, ya que, el compilador ya conoce los límites de estos arrays dinámicos.
  2. Soporte para números enteros con signo y números decimales de punto fijo.
  3. Decidibilidad: Con Vyper, es posible calcular un límite superior preciso para el consumo de gas de cualquier llamada a función.
  4. Tipeado fuerte: Al igual que Java, Solidity y Python, Vyper requiere una especificación clara de los tipos de datos.
  5. El código de compilación es pequeño y comprensible.
  6. Soporte limitado para funciones puras: Cualquier cosa marcada como constante no tiene permiso para cambiar el estado.
  7. Código mínimo legible: Los contratos inteligentes de Vyper se escriben de la manera más minimalista posible para permitir una mejor auditoría y legibilidad para los no desarrolladores.

Lee más sobre las características únicas de Vyper aquí.

Un consenso realizado el 30 de noviembre de 2021 por DefiLlama muestra que, en un récord histórico, Solidity había asegurado más de $186.57 mil millones de valores bloqueados en contratos inteligentes, lo que representaba hasta el 85 % del valor total bloqueado en contratos inteligentes en ese momento pero, detrás de Solidity, estaba Vyper, con un total de $27.02 mil millones, lo que representó el 10 %.

DefiLlama
Estadísticas de DefiLlama

Esto es una evidencia que, aunque VyperLang sigue siendo una especie de lenguaje de programación de contrato inteligente con poca visibilidad, hay empresas de tecnología que están construyendo activamente con él y utilizando sus contratos seguros para sus transacciones operacionales diarias.

Aunque es altamente considerada como el segundo lenguaje más popular en la blockchain de Ethereum, sus desarrolladores anunciaron en el pasado que no fue creado para competir con Solidity, que es más dominante.

Esto puede ser respaldado por el hecho que, aunque Vyper ha sido hecho para mejorar la creación de contratos inteligentes a su manera, no permite el uso de algunas cosas, ya que, desafortunadamente, algunas de estas cosas hacen de Solidity un gran lenguaje orientado a contratos.

Por ejemplo:

  1. Modificadores: Una de las características que no continúan en este lenguaje alternativo de programación de contrato inteligente, son los modificadores de control de acceso que impiden llamadas externas e internas de llamadas no deseadas.
contract SolidityModifier {
... 
 address payable owner;
...
 modifier onlyOwner {
   require(owner = msg.sender, "error: not owner");
   _;
 }

 function sendEth(uint amount) public payable onlyOwner {
 ...
 }
}
Enter fullscreen mode Exit fullscreen mode

El modificador onlyOwner, en Solidity, puede ser utilizado para restringir el acceso del usuario a la función sendEth(), de esta manera, solo el usuario (msg.sender) definido como owner (propietario) puede llamar a la función.

También puedes verificar más características no ofrecidas por VyperLang en su documentación oficial aquí.

Construyendo Contratos Inteligentes con Vyper

Vyper es estáticamente tipeado, como la mayoría de los lenguajes de máquina orientados a objetos y, con un poco de conocimiento en Solidity y Python, puedes aprenderlo y ser bueno en él en tan solo un año de desarrollo constante.

Al final de este artículo, hay varios recursos excelentes para que comiences a trabajar correctamente. Siéntete libre de consultarlos e iniciar tu viaje.

Un ejemplo de contrato:

# Este es un ejemplo de contrato inteligente
# Crea un archivo y guárdalo como HelloWorld.vy en un editor de código
# Copia y pega el siguiente código a continuación en el editor

# @version ^0.2.0

# Crea una variable de cadena que puede contener un máximo de 100 caracteres

greet: public(String[100])

@external
def __init__():
 self.greet = "Hello World"
Enter fullscreen mode Exit fullscreen mode

Este es un contrato inteligente minimalista de Vyper que devuelve el saludo "Hello World" cuando llamas a la función de saludo.

Pragma

Vyper soporta una versión de pragma para asegurar que un contrato se compile solo para la versión esperada, o las versiones definidas esperadas.

El contrato HelloWorld.vy de arriba, está actualmente ejecutándose en la versión 2.0.

Comentarios en línea

Debajo de la declaración de versión, hay una nota escrita con el hashtag '#', que es el equivalente al comentario en línea o las barras inclinadas usadas en Solidity '//' para dejar un comentario o nota, ya sea para detallar una función o explicar variables. Básicamente, escribe el código que quieres que sea ignorado por el compilador.

Declaraciones de variables

Las variables de estado son valores almacenados permanentemente en el contrato. Se declaran fuera de cualquier función como en Solidity y, generalmente, contienen el valor predeterminado para su tipo.

La cadena (string) greet es una variable de estado con visibilidad definida como pública y declarada para contener un máximo de 100 caracteres, aunque, en este caso, solo se utilizan 10 de ese espacio disponible.

Este es un excelente ejemplo de 'La Verificación de Overflow de Límites', ya que la variable 'greet' nunca será capaz de superar sus límites previstos.

Las variables de estado pueden, entonces, ser accedidas usando el objeto self.

Funciones

Por último, las funciones son unidades ejecutables de código en un contrato. Esto no es ninguna novedad, ya que se aplica a todos los lenguajes orientados a objetos.

En Vyper, las funciones se asignan con @externo o @interno, de acuerdo a su visibilidad y accesibilidad.

En Solidity, la visibilidad de las funciones es más diversificada, variando de:

  • Privada.
  • Interna.
  • Externa.
  • Pública.

En Vyper solo existen dos tipos de visibilidad para las funciones;

  • Interna.
  • Externa.

Estas funciones también pueden aceptar argumentos y devolver variables para pasar valor dentro de ellas.

El contrato del ejemplo anterior tiene visibilidad externa y, por lo tanto, también puede ser llamado desde fuera del contrato.

Puedes practicar la llamada a la función en el IDE de Remix, que es un editor de código en línea muy potente y de rápido crecimiento para contratos inteligentes en la blockchain de Ethereum.

Comenzando

  1. Abre Remix IDE en remix.ethereum.org.
  2. Activa el plugin del compilador Vyper. Si aún no sabes bien dónde está el plugin... escribí esta guía aquí.
  3. A continuación, recrea el archivo HelloWorld.vy y pega el código de ejemplo en él. Compila el contrato (de nuevo, si tienes problemas para encontrar el plugin Vyper en Remix, consulta este enlace).
  4. Despliega el contrato inteligente e interactúa con la función de saludo.

Instalando Vyper localmente

La mejor manera de instalar Vyper, en tu editor de código local, es seguir las orientaciones de los documentos oficiales aquí.

Los Mejores recursos y repositorios de Github

Estos son algunos sitios de documentación y repositorios increíbles que te ayudarán a entender cómo es construir contratos inteligentes en Vyper y cómo construirlos de la manera correcta, con ejemplos.

  1. docs.vyperlang.org: La documentación oficial de Vyper. Todo desarrollador que es bueno en lo que hace, sabe la importancia de sentarse con la documentación oficial lanzada por los desarrolladores. No es diferente para VyperLang. La documentación es el mejor lugar para aprender las mejores prácticas y mantenerse al día sobre cambios y actualizaciones.

  2. vyper-by-example.org: Este es una mina de oro de ejemplos de contratos Vyper con explicación en video en YouTube.

  3. Repositorios de Github: Analizar otros contratos en Github te ayudará a descubrir nuevos códigos, nuevas formas de escribir de manera más limpia y formas de escribir códigos más eficientes, en términos de consumo de gas.

  4. Los contratos de CurveFi.

  5. Vyper/vyper.fun.

  6. Juego de guerra Vyper.

Si te gustó o encontraste útil este artículo, sígueme para recibir más artículos sobre el nuevo desarrollo web. También puedes enviarme un mensaje en Twitter.

Me encantaría recibir tus comentarios.



Este artículo es una traducción realizada por @bananlabs. Puedes encontrar el artículo original aquí

Discussion (0)