-
En la nueva versión es posible utilizar la sentencia catch panic para el manejo de errores.
-
Esta nueva versión corrigió un error introducido en la versión anterior 0.8.
El 27 de enero del presente año, fue lanzada la versión más reciente del lenguaje de programación de la red de Ethereum que facilita la creación de contratos inteligentes Solidity. Esta nueva versión si bien trajo consigo cantidad de mejoras un tanto menores, con respecto a la versión 0.8 lanzada en diciembre, ofrece ajustes de optimización tanto dentro del compilador como del lenguaje.
La nueva versión de Solidity se dio a conocer dentro del Blog oficial del lenguaje de programación. En dicho artículo, se enlistaban los cambios, correcciones y nuevas sentencias que entrarían en funcionamiento a partir de la versión 0.8.1.
Los cambios en el lenguaje requieren que aquellos usuarios que deseen utilizarla actualicen su compilador a la nueva versión 0.8.1.
Cambios destacables en Solidity 0.8.1
El blog de Solidity establece tres cambios destacables para el lenguaje:
Mejora en la compilación SMTChecker la cual permite encontrar errores dentro del contrato inteligente al momento de ser compilado. Funciona verificando el código con una lista predeterminada de errores para comprobar si hay alguno presente. Con la nueva optimización, se pueden definir qué errores específicos se desean probar, evitando una sobre carga y optimizando el uso de memoria.
Otro cambio a nivel de compilador fue la mejora del generador de código de direcciones, que reduce el uso de memoria.
Con respecto al uso del lenguaje de programación, en la nueva version de Solidity ahora es posible usar la sentencia Catch panic (unit code). Esta función busca mejorar un error introducido en la versión anterior (0.8) permitiendo controlar los errores que hacen que la ejecución de un contrato se detenga de forma abrupta.
Por qué se optimiza un lenguaje de programación como Solidity
En el desarrollo de software es normal que cada día se encuentren nuevos errores, y salgan actualizaciones que los corrijan, como ocurrió con esta nueva versión de Solidity. Sin embargo, el objetivo que busca la optimización de los lenguajes de programación es la administración adecuada de los recursos.
En un software de PC, cuando hablamos de recursos, nos referimos a disco duro, memoria ram, memoria de video, procesador. Todo el hardware encargado de hacer que el software se ejecute correctamente. Una aplicación optimizada correctamente utiliza de forma adecuada todos estos recursos, permitiendo que otros programes funcionan paralelamente, incluido el sistema operativo.
Ahora, cuando hablamos de recursos dentro de un contrato inteligente, esto se refiere al poder de minado. Dado que cada contrato se haya dentro de la red de Ethereum, se pagan comisiones por minería para poder ejecutar las instrucciones bien sea de una transacción o de un contrato inteligente.
En un lenguaje mal optimizado dentro de una red de criptomonedas, las comisiones aumentan, dado que, al no haber una buena administración de recursos, se requiere mayor poder de cómputo para ejecutar las transacciones.
De igual forma, tal como informó CriptoNoticias, además de Solidity existen alternativas para desarrollar dentro del ecosistema de Ethereum. Una de ellas es Fe, basado en Rust, que se presenta como una opción más simple para contratos inteligentes
Importancia de las estructuras de control en Solidity
Se podría asumir que en algún momento de tu vida se te ha cerrado alguna aplicación, sea en tu pc o teléfono móvil. Esto suele ocurrir por errores no previsto por los programadores.
Dentro del mundo de la programación existen las sentencias de estructuras de control, que básicamente permiten controlar el comportamiento del sistema según el usuario vaya interactuando con este.
Entre estas sentencias podemos encontrar las de tipo try/catch. Estas permiten administrar los errores esperados de la siguiente manera:
- Try (intenta): Se establece las instrucciones que deberían ejecutarse.
- Catch (captura): En caso de algún error imprevisto al ejecutar las sentencias dentro del Try este ejecutará las sentencias dentro del Catch.
Dentro de los tipos de Try/Catch se encuentran los catch panic, que permiten administrar los errores no anticipados por los programadores. Este tipo de errores suelen suscitarse por la interacción entre usuario y software, como por ejemplo una división entre cero. Esta sentencia permite capturar y depurar errores que estén fuera de lo previsto por el programador, evitando cierres abruptos del contrato inteligente.
Un caso en que suelen utilizarse este tipo de sentencias es cuando hay solicitudes de conexión externa. Por ejemplo, cuando un contrato solicita información a un oráculo (que es otro contrato inteligente) de algún resultado. El código para establecer dicha conexión se realiza dentro de un try/catch. En caso de que la conexión falle, el primer catch capturaría el error, pero, en caso de que haya un problema mucho mayor no previsto, el catch panic capturaría el error y permitiría manejarlo.