ink! 3.0: El Lenguaje Basado en Rust de Parity para WASM Smart Contracts Obtiene Una Actualización

ink!, el lenguaje de programación basado en Rust de Parity para escribir contratos inteligentes (smart contracts) en Web Assembly (Wasm), acaba de lanzar su mayor actualización hasta la fecha. ink! es utilizado por los desarrolladores en el ecosistema de Polkadot y Substrate para crear contratos inteligentes (smart contracts) eficientes y de alto rendimiento y aplicaciones descentralizadas para máquinas virtuales Wasm, que representan una alternativa a los sistemas de contratos inteligentes basados en Ethereum (EVM/Solidity).

Substrate, el framework para crear blockchains personalizadas compatibles con Polkadot y "independientes", contiene bloques de construcción modulares para componentes típicos de blockchains que hacen que sea más fácil y rápido para los desarrolladores construir una blockchain. Estos bloques de construcción se conocen como pallets. La biblioteca de pallets de Substrate incluye el pallet "Contratos" o en ingles "Contracts", que permite a los desarrolladores incorporar la funcionalidad de contratos inteligentes basados en Wasm en su blockchain. ink!, una extensión del lenguaje de programación Rust, es lo que permite a los desarrolladores escribir contratos inteligentes para blockchains que utilizan el pallet de Contracts.

Esta última versión de ink! involucró la reescritura de todos los componentes principales que componían su predecesor, ink! 2.0. Durante este tiempo, muchos equipos crearon contratos inteligentes en Wasm usando ink y, en parte, gracias a sus contribuciones y comentarios, el proyecto ha evolucionado significativamente más que en versiones anteriores.

Además de soltar ink! 3.0, también hemos mejorado el pallet de Contracts para aumentar el rendimiento de la parachains y hemos agregado algunas características nuevas para mejorar las llamadas de los contratos cruzados y el rendimiento, lo que facilita mucho a los desarrolladores escribir una lógica más compleja. Finalmente, también hay algunos cambios en las herramientas del desarrollador con el lanzamiento de cargo-contract 1.0.

¿Por qué Rust and Wasm?

En Parity somos grandes admiradores de Rust y lo hemos usado para escribir la implementación inicial de Polkadot. Rust es un lenguaje de programación avanzado y altamente eficiente que prioriza la corrección y ayuda a prevenir errores de software, con una sólida comunidad a su alrededor y el apoyo de importantes empresas como Mozilla, Google, Microsoft y Amazon.

¡Usando Rust como base para ink! nos brinda las garantías de corrección del estricto compilador de Rust y nos permite aprovechar todas las mejoras que ocurren en el ecosistema de Rust de forma gratuita. Estas mejoras pueden ir desde mejores optimizaciones en el compilador hasta útiles bibliotecas de terceros. Obtenga más información sobre por qué Rust es ideal para contratos inteligentes aquí.

Wasm es otra tecnología que juega un papel clave en el diseño de Polkadot por varias razones. Wasm es rápido, seguro, liviano, de alto rendimiento y eficiente de ejecutar, y está construido lo más cerca posible del código de máquina. Es ejecutable en navegadores web, lo que facilita la innovación en aplicaciones descentralizadas diseñadas para la experiencia del usuario y la adopción generalizada. Wasm nos permite aprovechar su adopción generalizada, ya que también disfruta de un alto nivel de uso por parte de las principales empresas y tiene una gran comunidad de desarrolladores. Esto también nos permite aprovechar todos los beneficios de las mejoras del compilador y todo un ecosistema de herramientas que solo crecerá con el tiempo.

Wasm amplía la cantidad de idiomas en los que se pueden escribir contratos inteligentes, incluidos Go, C/C++ y, por supuesto, Rust. Por todos los beneficios que brinda, creemos que Wasm representa el futuro de la infraestructura y las aplicaciones de contratos inteligentes y representa una mejora con respecto a los sistemas de generaciones anteriores.

Obtenga más información sobre por qué Wasm es ideal para contratos inteligentes aquí.

ink! 3.0

¡La idea principal detrás de ink! 3.0 es que se ve y se siente como Rust. La sintaxis de ink! ha cambiado ligeramente para mejorar el mapa de ink! al código Rust generado. Lo que ven los usuarios es principalmente lo que generará ink!. Ahora, la sintaxis es prácticamente idéntica al lenguaje de programación Rust. Esto tiene la ventaja de que todas las herramientas que los desarrolladores de Rust conocen y aman, como rust-analyzer y Clippy, funcionan de forma inmediata.

Además de sentirse como Rust, echemos un vistazo a los cambios más significativos que llegaron a Ink! con la versión 3.0.

  • Compatibilidad con Rasgos: Una de las características más esperadas de Ink! 3.0 es su soporte de rasgo de Rust que se describe mejor como una experiencia de desarrollo más Rust. A través de la nueva macro de procedimiento #[ink::trait_definition], ahora es posible definir sus propias definiciones de rasgos que luego se pueden implementar con smart contracts (contratos inteligentes) ink! Esto permite definir interfaces de contrato inteligente compartidas para diferentes implementaciones concretas. Esto puede ser útil para definir estándares de contrato definidos por la comunidad. Tenga en cuenta que la definición de rasgos de ink! se puede definir en cualquier lugar, ¡incluso en otra caja!

  • Tamaños de contrato reducidos: Los tamaños de contrato más pequeños significan un mejor rendimiento y menos costos de gas. El ink! anterior. Los contratos inteligentes generados eran grandes en tamaño de código Wasm, lo que lleva a que el rendimiento de las transacciones de parachain esté limitado por el ancho de banda (bandwidth) en lugar de la complejidad computacional. Entre las muchas soluciones consideradas para reducir el tamaño de los contratos inteligentes estaba reducir el tamaño de los contratos compilados.

  • Llamada delegada: La adición de delegate_call permite que los contratos reenvíen una llamada que recibieron a otro contrato. Un caso de uso para esto es implementar un patrón de actualización de proxy para contratos inteligentes.

  • Extensiones de cadena: Esta función permite a los desarrolladores llamar directamente a las pallets de Substrate desde sus contratos, lo que les permite aprovechar el rico ecosistema de desarrollo de Substrate.

cargo-contract 1.0

Junto al lanzamiento de ink! 3.0 también estamos lanzando cargo-contract 1.0. cargo-contract es una práctica herramienta de desarrollo para crear, probar e implementar contratos ink! Algunas actualizaciones notables en esta versión incluyen:

  • Nuevos comandos CLI para interactuar con contratos en cadena (on-chain): cargar, instanciar y llamar.

Esto significa que ya no es necesario que los usuarios hagan clic en la interfaz de usuario del navegador para interactuar con su contrato en una cadena, ahora también pueden usar la línea de comandos. Esto también allana el camino para las secuencias de comandos y las integraciones en entornos de integración continua.

  • ¡Reglas de pelusa para los contratos inteligentes ink! A través de la verificación automática del código fuente en busca de errores programáticos y estilísticos, los desarrolladores de ink! reciben advertencias sobre errores comunes. En el futuro, queremos construir sucesivamente la colección de reglas de pelusa para los contratos ink! Las cosas que tenemos en mente son las reglas que lo guían para reducir los costos de gas, hacia pequeños contratos, patrones correctos de uso de API y señalar fallas de seguridad.

El Substrate Contracts Pallet

El pallet de Contracts es el entorno de ejecución de Substrate para los contratos inteligentes de Wasm. Puede ejecutar contratos inteligentes en cualquier lenguaje de programación que se compile hasta Wasm, siempre que se implemente la API del pallet de Contracts. ink! es un idioma que hace esto para Rust.

Las versiones anteriores del pallet usaban la renta estatal como mecanismo para hacer frente a la inflación estatal. En la última iteración, la renta estatal fue reemplazada por el cobro automático de depósitos. Anteriormente, un contrato necesitaba asegurarse de tener siempre saldo suficiente para pagar su almacenamiento. De lo contrario, se puso en un estado deshabilitado hasta que alguien lo reviviera. Esto agregó mucho trabajo adicional y consideración al proceso de redacción del contrato.

Bajo el régimen que llamamos “recaudación automática de depósitos”, este costo lo paga automáticamente quien llama a un contrato y no el contrato en sí. Una persona que llama de un contrato paga un depósito a cada contrato en el que se creó un nuevo almacenamiento como resultado de la llamada ejecutada. De manera similar, una persona que llama recibe un reembolso de todos los contratos de los que la llamada eliminó el almacenamiento.

Este nuevo sistema elimina por completo la posibilidad de que los contratos se establezcan en un estado inactivo. Sin embargo, los autores del contrato todavía quieren usar la menor cantidad de almacenamiento posible y crear formas de eliminar el almacenamiento cuando ya no se necesita para mantener bajos los costos de usar el contrato.

Gracias a la comunidad de ink!

Durante muchos años y varios lanzamientos, ink! ha evolucionado para alcanzar el objetivo de verse y sentirse como Rust. En esta etapa, tiene todas las características que los programadores de Rust reconocen y necesitan para mejorar aún más su capacidad de escribir, actualizar y razonar sobre contratos inteligentes complejos. Mientras ink! es ahora un lenguaje integral, todavía es un lenguaje en desarrollo y, sobre todo, un proyecto centrado en la comunidad.

Gracias a la entrada de la comunidad hacia ink!, ink! se ha desarrollado para convertirse en un lenguaje que satisface las necesidades de nuestro futuro compartido.

Sigue lo que está pasando

¿Entonces, Qué esperas? Mira lo que está pasando y mira lo que te gusta de ink!

Para los desarrolladores interesados en obtener más información sobre la creación de contratos inteligentes de Wasm, consulte la primera conferencia de contratos inteligentes de Wasm, que tendrá lugar el 31 de mayo de 2022 y será organizada por la comunidad.

Puede encontrar actualizaciones periódicas bajo el paraguas de Parity Smart Contracts aquí, y ver el repo de ink! aquí. También puedes ver un tutorial guiado para primeros pasos con ink!, mira la documentación profunda de ink! y vea algunas presentaciones en vivo sobre ink!. (vídeo 1, vídeo 2).

0
Sebastian CriptoPost author

L∉şs Ŧℛµşτ, 𝔐øℛє ŦℛµτĦ ✨Not your keys, not your cryptos 🔑 #Web3 / Substrate Ecosystem & Multi-Chain Vision / Researcher - Educator.

Comunidad Hispana de Polkadot.

Este es un centro educativo para aprender sobre Polkadot, Kusama y Substrate en Español.

0 comments

Comunidad Hispana de Polkadot. Este es un centro educativo para aprender sobre Polkadot, Kusama y Substrate en Español.