Tipos de Visibilidad de las Funciones en SOLIDITY (Public vs External)

Utilizar correctamente la visibilidad en las funciones y variables en Solidity es vital para garantizar la seguridad y el buen funcionamiento de los smart contracts.

Hay que tener en cuenta que estamos en una blockchain pública, por lo tanto, todos los datos son accesibles de algún modo. Podemos restringir desde dónde se pueden utilizar ciertas funciones o variables, pero no podemos restringir su lectura.

En Solidity existen 4 tipos de visibilidad para las funciones y las variables de estado.

  1. public: variable o función completamente accesible, sea cual sea el origen.
  2. private: variable o función a las que sólo se puede acceder desde el smart contract en el que se declaran.
  3. internal: variable o función a las que sólo se puede acceder desde el smart contract en el que se declaran y los que derivan de él (herencia).
  4. external: funciones que son parte de la interfaz del contrato, lo que significa que pueden llamarse desde otros contratos y vía transacciones, pero no pueden llamarse internamente.

En el siguiente esquema, aparecen representados todos los tipos de visibilidad. De esta forma, de un simple vistazo puedes reconocerlos todos.


Al principio, es habitual confundir la visibilidad public con la visibilidad external.


Funciones public vs external en Solidity?

La visibilidad public permite que la función o variable que la llevan asignada, es accesible desde cualquier parte: dentro del propio contrato, en contratos heredados y fuera del contrato también.

En cambio, las funciones con visibilidad external sólo son accesibles desde fuera del contrato. Lo cual quiere decir que no pueden llamarse internamente (o sea, dentro del propio contrato)

Como ha sabéis, en Solidity es MUY importante ser metódicos para escribir un código ediciente y gastar la menor cantidad de gas posible, así que en términos de gas, la visibilidad external puede ser algo más eficiente que public.

¿Y por qué? Pues porque cuando se utiliza public, se asigna automáticamente un espacio de almacenamiento para esa función, por lo tanto se genera un coste adicional en gas.

No obstante, hay que elegir la visibilidad de las funciones obedeciendo a los requerimientos que tenga nuestro contrato, sobretodo hablando en términos de seguridad.

Bonus: Las oportunidad del desarrollo blockchain

¿Quieres formarte en programación blockchain?

¿Sabes que es considerada programación del futuro y la que tiene los salarios más altos?

Accede a la masterclass gratis sobre desarrollo blockchain y descúbrelo, pulsando aquí.


Vídeo del artículo:

El programa de Desarrollo Blockchain más vendido del mercado

Descubre el Máster en Desarrollo Blockchain de Conquer Blocks

Descubre el Máster en Desarrollo Blockchain de Conquer Blocks