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.
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.
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.
¿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: