En este breve tutorial vamos a ver qué es y cómo se usa la sentencia pragma
de Solidity cuando creas un Smart Contract. Para seguir este tutorial no necesitarás conocimientos previos. Eso sí, es recomendable que conozcas el IDE online Remix, que es el que usaremos. Si no conoces Remix, consulta el tutorial de introducción a Remix.
Qué es la sentencia pragma
La sentencia pragma
se usa para indicar al compilador las versiones de Solidity con las que se puede compilar un contrato. Todo contrato debe comenzar con la sentencia pragma
, con el objetivo de asegurarte de que estás usando la versión correcta de Solidity.
Si has indicado al compilador que use una versión de Solidity diferente a la definida en un contrato, se mostrará una advertencia.
Cómo usar la sentencia pragma
La sentencia pragma debería estar al principio de todos los Smart Contracts que crees. Vamos a ver primero el contrato de ejemplo que se incluye en Remix.
Una vez hayas accedido a Remix, accede al directorio /contracts
del ejemplo que se incluye y luego abre por ejemplo el archivo Ballot.sol
. Tal y como ves, en la parte superior puedes ver que se incluye la sentencia pragma solidity
junto con una o más versiones del lenguaje. La sentencia debe terminar con un punto y coma ;
.
Por ejemplo, para indicar que el contrato debe ser compilado con la versión 0.8.0 de Solidity tendrías que introducir esta sentencia:
pragma solidity 0.8.0;
Si por ejemplo quisieses indicar que el contrato puede ser compilado con cualquier versión a partir de una específica, tendrías que anteponer el carácter ^
al número de versión. Por ejemplo, para indicar que el contrato puede ser compilado con cualquier versión a partir de la 0.8.0, tendrías que usar la siguiente sentencia:
pragma solidity ^0.8.0;
Si quieres indicar que el contrato pueda compilarse hasta cierto número de versión de Solidity, tendrás que hacerlo mediante el operador menor <
o menor o igual <=
. En el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity hasta la 0.7.0.
pragma solidity <0.7.0;
Del mismo modo, en el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity hasta la la 0.8.1, incluyendo a esta misma:
pragma solidity <=0.8.1;
Si quieres indicar que el contrato pueda compilarse a partir de un número de versión específico de Solidity, tendrás que hacerlo mediante el operador mayor >
o mayor o igual >=
. En el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity a partir de la 0.7.0.
pragma solidity >0.7.0;
Del mismo modo, en el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity hasta la la 0.8.2, incluyendo a esta misma:
pragma solidity >=0.8.2;
Finalmente, en caso de que quieras indicar que el contrato puede compilarse entre un rango de versiones de Solidity, tendrás que indicar las versiones, tendrás que indicarlo mediante los operadores mayor >
, menor <
, mayor o igual >=
o menor o igual <=
. En el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity entre la 0.7.0 y la 0.9.0.
pragma solidity >=0.7.0 <0.9.0;
Esto ha sido todo.
Si quieres aprender a usar Solidity, puedes consultar la guía definitiva de Solidity.
Si no me equivoco esta sentencia está mal:
«Del mismo modo, en el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity hasta la la 0.8.2, incluyendo a esta misma:»
Debería ser:
«…con cualquier versión de Solidity a partir de la la 0.8.2…»
Y esta también ya que excluye a la propia versión 0.9.0 que no funcionará:
«En el siguiente ejemplo indicamos que el código puede compilarse con cualquier versión de Solidity entre la 0.7.0 y la 0.9.0.»
Saludos.