¿Cuáles son las mejoras en la nueva versión del lenguaje de contratos inteligentes Solidity?

Autor: Adam Boudjemaa

Compilador: Sr. Huai, Director del Departamento de Investigación de Inversiones del Club Web3 de la Universidad de Wuhan

Introducción

Después de un extenso análisis de información como el repositorio de Github de Solidity, la hoja de ruta de Solidity, las conversaciones de la comunidad en Twitter, las solicitudes de incorporación de cambios activas y los problemas, este artículo profundiza en hacia dónde se dirige el futuro de Solidity.

El lenguaje de programación de contratos inteligentes líder está a punto de ser lanzado con actualizaciones 0.9.0 y 1.0.0, que introducirán varias mejoras muy esperadas.

El propósito de este artículo es presentar a los lectores los últimos desarrollos y mejoras en Solidity, que se basan en los aportes de la comunidad y los debates en curso. Si bien la información pertinente proporcionada no es concluyente, revela posibles direcciones para el avance tecnológico.

1. Integración revolucionaria de require() con Custom Error

Método actual (0.8.x):

详解智能合约语言Solidity新版本有哪些改进?

Se espera que ocurra en 0.9.0 o 1.0.0:

详解智能合约语言Solidity新版本有哪些改进?

En lugar de usar una gran cantidad de condiciones if para lanzar un error con información de cadena o un error personalizado, el uso de una combinación de require() y error personalizado hará que el programa sea más claro y ahorrará gas.

2. Optimización de la representación interna (IR): eficiencia de la liberación

El proceso de representación interna (IR) en Solidity desempeña un papel clave en la conversión del código fuente del contrato inteligente en instrucciones ejecutables para la máquina virtual ETH (EVM).

La representación interna agiliza y estandariza el código complejo, lo que hace que el proceso de conversión de código en lenguaje de máquina sea más eficiente. Las próximas mejoras de Solidity a la versión 0.9.0 están diseñadas para hacer que este proceso de compilación sea más rápido y eficiente, lo que en última instancia reduce los costos y aumenta la productividad de los desarrolladores.

3. Manejo de errores mejorado: Aclaración y simplificación del código

Se espera que las actualizaciones futuras mejoren el manejo de errores en Solidity, lo que dará como resultado mensajes de error más sencillos y una depuración más fácil.

Esta mejora es especialmente útil para los desarrolladores que trabajan con contratos complejos, ahorrando tiempo y minimizando posibles errores.

4. Aritmética de punto fijo: alta precisión y alto rendimiento

[Nota del traductor: Un número de punto fijo es un tipo de datos utilizado por las computadoras para representar números decimales correspondientes a números de punto flotante, y sus dígitos enteros y decimales son valores fijos, por lo que son más seguros que los números de punto flotante.] En la actualidad, Solidity no tiene ningún tipo de datos incorporado que represente decimales, y los desarrolladores a menudo necesitan multiplicar los datos originales por un gran número para reservar manualmente los decimales y vigilar el problema del punto decimal en las operaciones posteriores, lo cual es bastante problemático. 】

En esta etapa, las bibliotecas externas como ABDKMath64x64 y DSMath utilizan Solidity para implementar números de punto fijo.

Se espera que la actualización 0.9.0 integre aritmética nativa de punto fijo y ya no requiera bibliotecas externas. Esto hará que los cálculos decimales sean mucho más simplificados.

5. Formato de objeto EVM (EOF): Cree código de bytes de contrato inteligente

La próxima actualización de EOF de Solidity se prepara para introducir el código de bytes estructurado y versionado para los contratos inteligentes.

Se espera que esta mejora facilite la implementación de futuras actualizaciones de contratos, mantenga la compatibilidad con versiones anteriores y permita un análisis más eficiente durante la fase de compilación.

Si bien esto no cambiará la experiencia de codificación directa para los desarrolladores de contratos inteligentes, la salida del compilador será más eficiente en cuanto al gas.

6. Almacenamiento transitorio: Procesamiento de datos ad-hoc y eficiente

La nueva función de Solidity, Transient Storage, propone una forma de guardar temporalmente los datos durante la ejecución del contrato sin registrarlos permanentemente en la cadena de bloques. Se espera que este enfoque sea más eficiente en términos de consumo de gas.

Es probable que el almacenamiento transitorio similar al código siguiente se encuentre en Solidity 0.9.0 o Solidity 1.0.0.

详解智能合约语言Solidity新版本有哪些改进?

7. Protección de reentrada integrada de forma nativa

Antes de la versión 0.8.0, la biblioteca SafeMath era una herramienta común utilizada por los desarrolladores para operaciones aritméticas con el fin de evitar problemas de desbordamiento y desbordamiento de límite inferior. Con el lanzamiento de Solidity 0.8.0, estas comprobaciones de seguridad se integran directamente en el lenguaje.

Del mismo modo, se espera que la versión 0.9.0 o 1.0.0 de Solidity integre de forma nativa la protección de reentrada. Esta función está diseñada para simplificar el proceso de implementación de protocolos de seguridad para evitar ataques de reentrada.

Verás algo como esto:

详解智能合约语言Solidity新版本有哪些改进?

8. Diseños de herencia y almacenamiento refactorizados

En Solidity, la herencia crea un nuevo contrato que adopta las propiedades y la funcionalidad de un contrato existente. La actualización prevista tiene como objetivo mejorar la linealización de los diseños de herencia y almacenamiento, mejorando así la previsibilidad y la organización de la arquitectura del contrato. Esto puede mejorar la eficiencia del uso del almacenamiento y reducir la confusión en escenarios de herencia múltiple.

Por ejemplo, un contrato secundario que hereda de ParentA y ParentB tendrá un diseño de almacenamiento optimizado y un almacenamiento variable continuo, lo que reducirá el costo de las operaciones de almacenamiento.

9. Indicadores de compilación y opciones de configuración mejorados

El desarrollo de Solidity incluye la ampliación del alcance de los indicadores de compilación y los ajustes de configuración, proporcionando a los desarrolladores un alto grado de control sobre el proceso de compilación. Estas mejoras pueden dar lugar a implementaciones de contratos más personalizadas con un control detallado sobre la optimización del gas, las comprobaciones de seguridad y las capacidades de depuración.

Las nuevas marcas de compilación pueden permitir a los desarrolladores alternar optimizaciones específicas o comprobaciones de seguridad:

Por ejemplo, una nueva marca de compilación, --enable-loop-optimization, se centrará en la optimización de bucles para mejorar la eficiencia del gas, y una nueva marca de compilación, --strict-security-checks, introducirá un análisis de seguridad severo durante la compilación

10. Herramientas de depuración y mensajes de error mejorados

La herramienta de depuración mejorada tiene mensajes de error más detallados y puede simplificar significativamente el proceso de desarrollo, especialmente para estructuras contractuales complejas. Los mensajes de error mejorados pueden ayudar a los desarrolladores a comprender mejor los problemas de su código, y las herramientas de depuración avanzadas pueden ayudar a los desarrolladores a encontrar y solucionar problemas de forma más eficaz.

11. Compatibilidad con estructuras y tipos de datos avanzados

La introducción de tipos de datos y estructuras complejas en Solidity puede inspirar nuevas posibilidades funcionales y de diseño de contratos. Esto puede incluir la compatibilidad con tipos numéricos más complejos, estructuras de datos mejoradas o métodos mejorados para manejar grandes conjuntos de datos en contratos.

Solidity puede introducir una nueva estructura de datos, como TreeMap, que organiza los datos de forma ordenada para una recuperación eficiente. Esto puede ser útil en contratos en los que los datos necesitan ser ordenados u ordenados, como en los sistemas de votación. [Nota del traductor: Similar al árbol rojo y negro.] Otro avance podría ser admitir tipos de números más complejos, como los números de punto fijo, que pueden realizar operaciones matemáticas precisas directamente en el contrato.

12. Presentación de genéricos y plantillas

Los genéricos y las plantillas en Solidity harán posible un código más adaptable y reutilizable. Por ejemplo, puede crear una función genérica para manejar diferentes tipos de activos (como tokens ERC20, NFT, etc.) de forma estandarizada sin tener que reescribir la función para cada tipo de activo específico. Esto mejorará la eficiencia del diseño y desarrollo de contratos, ya que se puede aplicar una sola función a una variedad de escenarios.

详解智能合约语言Solidity新版本有哪些改进?

Perspectivas de futuro: el camino hacia la solidez 1.0.0

En varias plataformas como Github, Twitter, Ethresearch y Reddit, hay mucha discusión dentro de la comunidad de Solidity sobre el desarrollo de la versión 0.9.0.

Un punto focal de debate es la revelación:

¿Es una transición sencilla y cautelosa a Solidity 1.0.0 para declarar la madurez completa del lenguaje, o es una progresión gradual a una versión más avanzada con la versión 0.9.0 primero?

Influenciado por los comentarios de la comunidad y las ideas creativas, es probable que el esperado debut de Solidity 1.0.0 coincida con una actualización importante para ETH Workshop, lo que refleja el crecimiento y la estabilidad del ecosistema en su conjunto.

  1. La evolución de los sistemas tipo: mejora de la flexibilidad y la seguridad. Se espera que exista un sistema de tipo actualización que se inspire en lenguajes de programación funcionales como Haskell o Scala. Esta evolución tiene como objetivo aumentar la seguridad y la flexibilidad del desarrollo de contratos.

  2. Soporte nativo integrado de Oracle: Simplifique las interacciones de datos externos. Los planes incluyen la integración de soporte integrado para oráculos descentralizados en Solidity, lo que facilita interacciones más seguras y directas con fuentes de datos externas.

  3. Mejorar la gestión del estado: Mejorar la interacción de la cadena de bloques. Se están discutiendo mejoras en las capacidades de gestión de estados, y elementos como canales de estado o cadenas laterales pueden introducirse como estructuras integradas diseñadas para optimizar las interacciones en la cadena de bloques y reducir las tarifas de gas.

  4. Enfoque modular para el diseño de contratos: mejorar la reutilización. Se está contemplando un cambio hacia una arquitectura de contrato modular, que permita el uso de componentes reemplazables. Esto simplifica significativamente el proceso de desarrollo y mejora la operatividad del código.

  5. Integrar herramientas formales de verificación: garantizar la fiabilidad de los contratos. Se espera que las herramientas de verificación formales se integren directamente en Solidity, una medida que tiene como objetivo garantizar que los contratos cumplan con estándares y comportamientos específicos, reduciendo así la probabilidad de errores y vulnerabilidades.

  6. Desarrollar capacidades entre cadenas: Lograr la interoperabilidad entre cadenas de bloques. Las actualizaciones futuras pueden introducir características nativas de compatibilidad entre cadenas, lo que permite que los contratos de Solidity se ejecuten sin problemas en una variedad de protocolos de blockchain.

  7. Implemente medidas de privacidad avanzadas: Mejore la seguridad de los datos. Hay planes en marcha para integrar herramientas de privacidad avanzadas, como pruebas de conocimiento cero o cifrado homomórfico, directamente en el lenguaje para mejorar la seguridad de los datos y la privacidad del usuario.

  8. Criptografía resistente a la cuántica: preparación para los desafíos futuros. Dadas las capacidades emergentes de computación cuántica, la gente está considerando implementar métodos de criptografía resistentes a la cuántica para proteger los contratos de ETH de posibles amenazas futuras.

Conclusión

A medida que exploras posibles caminos hacia Solidity, este artículo combina las perspectivas de la comunidad y los desarrollos actuales con las proyecciones de la comunidad para brindarte una comprensión integral del tema. Si bien hemos profundizado en las posibilidades de las versiones 0.9.0 y 1.0.0, la trayectoria real y el conjunto de características están sujetos a cambios a medida que Solidity continúa su viaje de desarrollo. Estén atentos para ver cómo estas conversaciones y conceptos cobran vida en el mundo en constante evolución de la programación de contratos inteligentes.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado

Opera con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)