Estructuras de control principales son: if/else, for y while.
En Solidity, existen cuatro tipos de funciones:
1. Funciones que cambian el estado interno del contrato (function): estas funciones realizan cambios
en el estado interno del contrato, como la actualización de variables de estado o el envío de ether.
2. Funciones que no cambian el estado interno del contrato (view): estas funciones no realizan
cambios en el estado interno del contrato y solo devuelven datos del contrato.
3. Funciones que no consumen gas (pure): estas funciones no cambian el estado interno del contrato
ni acceden a variables de estado y tampoco realizan cálculos que requieran el uso de
almacenamiento de datos. Solo realizan cálculos locales y devuelven datos.
Funciones de pago (payable): estas funciones permiten el envío de ether al contrato.
Existen varias variables predefinidas en Solidity que se utilizan comúnmente en los contratos para obtener
información sobre la transacción o la ejecución de la función. A continuación, se presentan algunas de las
variables más comunes:
[Link]: Contiene la dirección de la cuenta que llamó a la función actual.
[Link]: Contiene el valor en wei enviado con la transacción actual.
[Link]: Contiene la marca de tiempo (en segundos desde el 1 de enero de 1970) del bloque actual.
[Link]: Contiene el número de bloque actual.
[Link]: Contiene la dificultad actual del bloque.
[Link]: Contiene el precio del gas en wei que el remitente está dispuesto a pagar.
Además de estas variables, también hay variables predefinidas para interactuar con otros contratos, como:
this: Hace referencia al contrato actual.
address(this): Devuelve la dirección del contrato actual.
address payable: Tipo de variable que puede recibir ether y enviar ether a otras direcciones.
Funciones predefinidas
keccak256(): Calcula el hash Keccak-256 de una cadena o de un conjunto de valores. Se utiliza para generar
claves hash criptográficas.
[Link](): Concatena los argumentos de entrada y los codifica como una cadena de bytes. Se
utiliza para convertir los argumentos en una cadena de bytes.
address(this): Devuelve la dirección del contrato actual. Se utiliza para obtener la dirección del contrato.
selfdestruct(): Destruye el contrato actual y envía todo el ether restante en el contrato a la dirección
especificada. Se utiliza para destruir contratos una vez que ya no son necesarios.