Día 3: Explorando Funciones en Solidity

Tabla de contenidos

Hoy es el tercer día en nuestro emocionante viaje hacia el desarrollo de Smart Contracts en Solidity, nos adentraremos en las Funciones en Solidity. Una función es básicamente un grupo de código que puede ser reutilizado en cualquier parte del programa. En Solidity, una función es un conjunto de instrucciones que pueden ser ejecutadas y llamadas por otras partes del contrato o por contratos o cuentas externas. Las funciones en Solidity son similares a las funciones en otros lenguajes de programación; pueden recibir entradas, realizar cálculos y devolver resultados.

A continuación, mostramos un ejemplo de una función simple en Solidity:

En este ejemplo, la función setNumero toma un parámetro de entrada _numero de tipo uint y establece el valor de la variable de estado pública miNumero con ese valor de entrada. La función está marcada como pública, lo que significa que puede ser llamada por cualquier cuenta o contrato externo.

Otro ejemplo básico de una función en el archivo Function.sol es una función que suma dos números. Recibe dos parámetros de entrada y devuelve la suma.

Visibilidad de Funciones

 

La visibilidad de una variable, función o contrato describe hasta dónde se puede acceder desde más allá de la sección del código donde fue definido. Según la documentación de Solidity, hay dos tipos de llamadas de función: externas, que crean una llamada de mensaje real en el EVM, e internas, que no lo hacen. Además, las funciones internas pueden hacerse inaccesibles para contratos derivados. Esto da lugar a cuatro tipos de visibilidad para las funciones: external, public, internal y private.

  • external: Las funciones externas forman parte de la interfaz del contrato, lo que significa que pueden ser llamadas desde otros contratos y mediante transacciones. Una función externa f no puede ser llamada internamente (es decir, f() no funciona, pero this.f() sí). Las funciones marcadas como external solo pueden ser llamadas desde fuera del contrato. No pueden ser llamadas por otras funciones dentro del mismo contrato ni por contratos derivados.
  • public: Las funciones públicas también forman parte de la interfaz del contrato y pueden ser llamadas tanto internamente como mediante llamadas de mensaje. Las funciones marcadas como “public” pueden ser llamadas desde cualquier lugar, tanto dentro como fuera del contrato. Son parte de la interfaz externa del contrato y pueden ser llamadas por otros contratos o por cuentas externas a la blockchain.
  • internal: Las funciones internas solo pueden ser accedidas desde el contrato actual o desde contratos derivados de él. No pueden ser accedidas externamente. Dado que no se exponen al exterior a través de la ABI del contrato, pueden tomar parámetros de tipos internos como mappings o referencias de almacenamiento.
  • private: Las funciones privadas son similares a las internas, pero no son visibles en contratos derivados.

A continuación, mostramos un ejemplo de visibilidad de funciones y cómo se utiliza en el código:

Funciones Pure y View

 

En Solidity, las funciones pueden ser marcadas como “view” o “pure” para indicar que no modifican el estado del contrato. Una función “view” puede ser llamada internamente por otras funciones o externamente por cuentas o contratos externos, y no requiere gas para su ejecución cuando es llamada externamente. Las funciones “view” pueden leer datos de la blockchain, mientras que las funciones “pure” no leen nada de la blockchain. Las funciones “pure” no modifican ni escriben nada en la blockchain, solo realizan cálculos locales.

El siguiente código muestra ejemplos de funciones “pure” y “view”:

Modificador de Funciones

 

Un modificador es un fragmento de código que se puede ejecutar automáticamente antes o después de ejecutar la función principal si el modificador se aplica a la función. Los modificadores se pueden utilizar para cambiar el comportamiento de las funciones de manera declarativa. Por ejemplo, se puede usar un modificador para verificar automáticamente una condición antes de ejecutar la función. Proporcionan una forma de agregar funcionalidad o restricciones adicionales a las funciones sin duplicar el código.

A continuación, presentamos un ejemplo de un modificador de función y cómo se utiliza en el código:

Los modificadores son propiedades heredables de los contratos y pueden ser anulados por contratos derivados, pero solo si están marcados como “virtual”.

Los modificadores de funciones pueden anularse entre sí. Esto funciona de la misma manera que la anulación de funciones (excepto que no hay sobrecarga de modificadores). Se debe usar la palabra clave “virtual” en el modificador anulado y la palabra clave “override” en el modificador que lo anula. Los modificadores también pueden ser heredados de contratos padre. En general, se usan como una forma de evitar repetir el código, extrayendo funcionalidades comunes y colocándolas en un modificador que se puede reutilizar en todo el código base.

“¡Continuamos nuestro emocionante viaje de aprendizaje en Solidity! Exploraremos las funciones y su visibilidad, las funciones pure y view, y cómo utilizar modificadores para agregar funcionalidades adicionales a nuestras funciones sin duplicar código. Te recomiendo probar cada uno de los fragmentos que hemos visto hasta ahora en Remix, para que experimentes de primera mano su funcionamiento. Además, te sugiero que agregues nuevas variables y modifiques la funcionalidad del código proporcionado, ya que así es como realmente se aprende a programar.

¡Acompáñanos en esta fascinante experiencia hacia el desarrollo de Smart Contracts en Ethereum!”

Ver Video Completo

Más sobre Blockchain & Web3

You cannot copy content of this page

Scroll al inicio

Aplica para el proceso de admisión del programa master emprendimiento blockchain architecture & networks programming

¿Estas preparado para ver como tu carrera profesional se acelera más que nunca? Envíanos tus datos y agendamos tu entrevista. ¡Las plazas son muy limitadas!

Aplica para el proceso de admisión del programa MASTER INGENIERO BLOCKCHAIN FROM WEB2 TO WEB3

¿Estas preparado para ver como tu carrera profesional se acelera más que nunca? Envíanos tus datos y agendamos tu entrevista. ¡Las plazas son muy limitadas!

Próxima Promoción: Abril 2023