Archivos solidity

Es un lenguaje de programación que es parecido a Javascript, es estáticamente tipado, es case-sensitive, y es oop orientado a objetos. Aunque algunas características de oop son limitadas, lo que significa que los tipos de variables deben ser conocidas en tiempo de compilación.

las funciones y variables se deben escribir en oop y de también definirse como oop.

Es case-sensitive lo que quiere decir que CAT y cat son diferentes, y todas las variaciones significaran otra cosa.

El carácter que indica la terminación de una sentencia en solidity es: ;

El código de solidity es escrito en archivos con extensión .sol.

Los archivos de solidity están compuestos por 4 principales constructores:

  • Pragma

  • Comments

  • import

  • Contracts/library/interface

Pragma

pragma es generalmente la primera sentencia en un archivo de solidity e indica la version de compilación del lenguaje en el actual archivo.

Solidity es un lenguaje nuevo y está atado a continuas mejoras y nuevas características, por lo tanto no es raro que se lancen nuevas versiones en corto tiempo. un ejemplo de la sentencia pragma es:

pragma solidity ^0.4.19;

Esta sentencia no es obligatoria pero si es una buena practica para los archivos de solidity.

Tenga en cuenta el case-sensitivity, note que la tanto la sentencia pragma y solidity deben estar escritos en minúscula y deben estar seguidos por el numero valido de la versión del lenguaje y terminar la sentencia con punto y coma (;).

El carácter ^ también conocido como caret no es obligatorio pero puede jugar un papel importante decidiendo la versión basado en la siguiente regla:

^ Se refiere a la última versión dentro de una versión principal, por ejemplo escribir ^ 0.4.0 se refiere a la última version de compilación dentro de las versiones 4, dicha versión puede ser 0.4.19.

Una buena practica es compilar solidity con una versión exacta y evitar el ^ carácter , un cambio de una version mas nueva puede depreciar alguna de las funcionalidades escritas. Por ejemplo la sentencia throw es actualmente depreciado mientras sentencias como assert, require y revert son recientemente incluidas (hablando de la version 0.4.19).

Comments

Los lenguajes de programación tienen la propiedad de comentar código y solidity no es la excepción. hay tres maneras de comentarios:

  • Single-line comments: Denotados con //

  • Multiline comments: Denotados con /* any comment */

  • Ethereum Natural Specification (Natspec) : este tipo de comentarios tienen dos formatos: /// para single-line y /** any comment */ para multiline comment. Natspec coments tiene un proposito de documentación que tiene sus propias especificaciones, a continuación un ejemplo:

pragma solidity ^0.4.19;
/// @title A simulator for Bug Bunny, the most famous Rabbit
/// @author Warned Bros
/// @notice You can use this contract for only the most basic simulation
/// @dev All function calls are currently implement without side effects
contract BugsBunny {
    /// @author Bob Clampett
    /// @notice Determine if Bugs will accept (_food) to eat
    /// @dev String comparison may be inefficient
    /// @param _food The name of a food to evaluate (English)
    /// @return true if Bugs will eat it, false otherwise
    function doesEat(string _food) external pure returns (bool) {
        return keccak256(_food) == keccak256("carrot");
    }
}

Ejemplos de las otras maneras de comentarios en solidity:

pragma solidity ^0.4.19;

// this is a single line comment in solidity

/* this is a multi-line comment 
    in solidity. Use this when multiples consecutive lines
    should be commented as a whole */

Sentencia de import

la sentencia import permite importar otro archivo solidity y poder acceder a su código, nos ayuda a escribir módulos con solidity, la sentencia luce así:

import 'commonlibrary.sol';

También podemos importar describiendo una ruta (path) explicita e implícita separando con un / las carpetas y archivos.

El punto (.) es usado para referirse al directorio actual y dos puntos (..) es usado para referirse al directorio padre.

Contracts

Aparte de pragma, import y comentarios también se puede definir contracts, librerías e interfaces en global o parte de arriba del archivo .sol

Dentro de un mismo archivo .sol se pueden declarar varios contratos, librerías e interfaces según se requieran .

Last updated

Was this helpful?