Seguimos hablando sobre Blockchain y Smart contracts. Una de las herramientas más importantes de este “mundillo” es Solidity, un lenguaje de alto nivel orientado a objetos para implementar contratos inteligentes.

En el artículo de hoy miraremos la estructura básica de un fichero fuente de Solidity.

Identificador de licencia SPDX

Si alguna vez te preguntan “¿qué es lo primero que debes especificar en un archivo de Solidity”?, el identificador de licencia SPDX tendrá que ser tu respuesta.

Hacer que el código fuente esté disponible plantea problemas legales, por eso el compilador de Solidity fomenta el uso de identificadores de licencia SPDX legibles por máquina. Por tanto, tu fichero fuente debe empezar con un comentario que indica la licencia:

// SPDX-License-Identifier: MIT

Si tu código no es open-source, o no quieres especificar la licencia, debes usar un valor especial, UNLICENSED.

La recomendación es que se coloque el comentario en la parte superior del fichero, pero el compilador lo reconoce  desde cualquier parte.

Pragmas

pragma es una palabra clave que se usa para habilitar funciones o comprobaciones del compilador. Si deseas habilitar el pragma en todo tu proyecto, debes agregarlo a todos tus ficheros, pues el pragma es local para un fichero fuente. El pragma de un fichero no se aplica a un fichero de importación.

Versió pragma

Para rechazar la complicación con futuras versiones del compilador, deberías anotar tus ficheros fuente con una versión pragma. Esto es importante porque las nuevas versiones del compilador pueden introducir cambios incompatibles.

La versión pragma se utiliza de la siguiente manera: pragma solidity ^0.4.2; Esto significa, por ejemplo, que este fichero fuente no se compila con un compilador anterior a la versión 0.4.2, y no funciona en un compilador a partir de la versión 0.5.0.

Las reglas para la versión del compilador siguen la misma sintaxis utilizada por npm.

Pragma del codificador ABI

Usando pragma abicoder v1 o pragma abicoder v2 puedes seleccionar entre las dos implementaciones del codificador y decodificador ABI.

Pragma Experimental

El pragma experimental es el segundo pragma. Se usa para habilitar funciones del compilador que aún no están habilitadas de forma predeterminada.

Importación de otros ficheros fuente

Sintaxis y Semántica

Tal como en JavaScript, Solidity admite declaraciones de importación para que puedas modular tu código.

A nivel global, puedes usar simplemente import “nombredelfichero”, pero es recomendable importar símbolos específicos explícitamente. Por ejemplo: import * as nombreDelSimbolo from “nombredelfichero”.

Rutas de importación

En Solidity, las rutas de importación no se refieren directamente a los ficheros en el sistema de ficheros del host. El compilador mantiene una base de datos interna, llamada VFS, donde a cada unidad fuente se le asigna un nombre de unidad fuente que es un identificador (opaco y no estructurado).

Comentarios

En un fichero fuente de Solidity, son posibles los comentarios de una sola línea (//) y comentarios de varias líneas (/*...*/).

Otro tipo de comentario disponible son los NatSpec. Estos se escriben con una triple barra inclinada (///) o un bloque de doble asterisco (/** … */). Se usan directamente en cima de las declaraciones de función.

Ejemplo "Hello World" en Solidity

Conclusión

Y esto es todo. Si quieres que tus ficheros fuente y tu código funcionen correctamente, deberías seguir estas especificaciones de Solidity. Sobre todo, recuerda que tu fichero fuente debe empezar con un comentario que indica la licencia.

Fuente:
· Solidity

Compartir es construir