Solidity ha recorrido un largo camino desde que se propuso por primera vez en 2014 y luego fue desarrollado por el equipo de Solidity de Ethereum. Hay cientos de miles de desarrolladores que utilizan el lenguaje de programación para crear servicios basados en blockchain para un número creciente de casos de uso.
Este artículo explica qué es Solidity y cómo se usa en el ecosistema Ethereum. Este artículo es para usted si está interesado en aprender más sobre el funcionamiento interno de este lenguaje de programación basado en blockchain.
¿Qué es la solidez?
Solidity es un lenguaje de programación de alto nivel orientado a objetos que se utiliza para crear contratos inteligentes que automatizan las transacciones en la cadena de bloques. Después de ser propuesto en 2014, el lenguaje fue desarrollado por colaboradores del proyecto Ethereum. El lenguaje se usa principalmente para crear contratos inteligentes en la cadena de bloques Ethereum y crear contratos inteligentes en otras cadenas de bloques.
Solidity es similar a uno de los lenguajes de programación más comunes, JavaScript. Puede considerarse como un dialecto de JavaScript. Esto significa que si comprende JavaScript, puede ser fácil aprender a utilizar Solidity. Solidity también comparte características similares a los lenguajes de programación C ++ y Python.
Como lenguaje de alto nivel, Solidity elimina la necesidad de escribir código en unos y ceros. Hace que sea mucho más fácil para los humanos escribir programas de formas que les resulten más fáciles de entender, utilizando una combinación de letras y números.
La solidez se escribe estáticamente, con soporte para herencia, bibliotecas y tipos complejos definidos por el usuario. Como Solidity se escribe estáticamente, el usuario especifica cada variable. Los tipos de datos permiten al compilador verificar el uso correcto de las variables. Los tipos de datos de solidez generalmente se clasifican como tipos de valor o tipos de referencia.
La principal diferencia entre los tipos de valor y los tipos de referencia se puede encontrar en cómo se asignan a una variable y se almacenan en la EVM (máquina virtual Ethereum). Si bien cambiar el valor en una variable de un tipo de valor no afecta el valor en otra variable, cualquiera que se refiera a los valores modificados en las variables de tipo de referencia puede obtener valores actualizados.
¿Cómo funciona la solidez?
La belleza del ecosistema Ethereum es que pueden usarlo tantas criptomonedas diferentes y aplicaciones descentralizadas. Los contratos inteligentes hacen posible que se creen tecnologías únicas en Ethereum para todo tipo de empresas y organizaciones.
Cada año, el mundo gasta miles de millones de dólares en soluciones blockchain. Muchas de estas soluciones se crean utilizando Solidity. Los contratos inteligentes creados con Solidity se pueden considerar como una forma de automatizar los procesos comerciales y no comerciales entre diferentes personas. Esto garantiza que las personas que realizan transacciones en la cadena de bloques no tengan que preocuparse por riesgos como el fraude o no poder usar la misma moneda.
Uno de los componentes clave que hace posible la ejecución del código de Solidity es el EVM. El EVM se describe como una computadora virtual en la cadena de bloques que convierte las ideas de las personas en código que ejecuta aplicaciones en la cadena de bloques.
Bajo el capó, Solidity crea código a nivel de máquina que se ejecuta en el EVM. Se utiliza un compilador para descomponer el código legible por humanos de alto nivel, que convierte en instrucciones que lee el procesador. Diferentes plataformas proporcionan compilación gratuita de Solidity, incluido el compilador en línea Remix y un compilador similar a un comando descargado en una PC.
Los contratos inteligentes de EVM tienen algunas limitaciones que deben abordarse. Uno de los más importantes es el acceso limitado a funciones de biblioteca útiles para analizar estructuras JSON o aritmética de punto flotante.
Funciones públicas y privadas
Las funciones públicas son similares a las API a las que puede acceder cualquier persona en el mundo. Cualquiera puede llamarlos en su código. Las funciones públicas están diseñadas, en muchos casos, para procesos compartidos en una plataforma que utilizan todos los usuarios.
Por ejemplo, se podría realizar una función pública para permitir que todos los usuarios de una plataforma verifiquen el saldo de su cuenta. Una de las formas más comunes de explotar los contratos inteligentes es a través de funciones públicas.
Relacionados: ¿Qué es una cadena de bloques y cómo funciona?
Si bien los contratos inteligentes pueden ser fáciles de escribir con Solidity, a menudo es muy difícil escribirlos de forma segura. Por ejemplo, si la función de retiro en un contrato inteligente no es segura, un atacante puede manipular la función vulnerable para drenar una cuenta de fondos.
Un atacante podría recurrir a una función de retiro para enviar dinero a una cuenta diferente, utilizando un bucle que repite repetidamente la función de retiro.
Las funciones privadas solo se pueden llamar desde dentro de los contratos. Contienen instrucciones que solo se pueden ejecutar después de ser invocadas por otras funciones, en una cadena. Esto dificulta la manipulación del código por parte de actores malintencionados.
Estándares y lógica de código
Están surgiendo diferentes estándares que determinan cómo se utilizan los contratos inteligentes de Solidity para crear aplicaciones en Ethereum. Estos estándares se conocen como estándares ERC (Ethereum Request for Comments). Los estándares se basan en un documento que contiene pautas sobre las funciones requeridas y restricciones sobre cómo debe comportarse el código.
Los estándares ERC que determinan cómo funciona Solidity incluyen:
- ERC20
- ERC165
- ERC721
- ERC223
- ERC621
- ERC777
- ERC827
- ERC884
- ERC865
- ERC1155
Hay diferentes formas en que se puede usar Solidity para hacer que los contratos inteligentes interactúen entre sí. Solidity también se puede utilizar para realizar instrucciones específicas sobre cómo se almacenan los datos en el contrato inteligente. La lógica y los datos en los contratos inteligentes se pueden separar usando Solidity. Al utilizar contratos sustitutos, la lógica de un contrato se puede cambiar para permitir esto.
Inmutabilidad
Es imposible cambiar el código de un contrato inteligente después de que se haya escrito y compilado. Esto significa que cada línea de código tiene que funcionar según lo previsto o, de lo contrario, podría haber graves riesgos de explotación del código.
Relacionados: Cómo convertirse en un programador de blockchain y comenzar a ganar mucho dinero
Como la cadena de bloques de Ethereum es inmutable, es imposible cambiar los datos y la lógica que se le escribe. Una forma de evitar esto es utilizar un proxy para señalar otro contrato que contenga lógica empresarial real. Esto permite corregir errores mientras se implementa una nueva versión del contrato.
Costos de gas
Hay costos adicionales que se pagan por usar Solidity en la red principal de Ethereum. Algunos de los costos adicionales se basan en el sistema de gas en Ethereum, que requiere el pago a los mineros por asegurar la red blockchain para que el código pueda ejecutarse de manera segura en ella.
Al redactar contratos inteligentes, es importante recordar que los costos del gas pueden determinar el rendimiento de un contrato inteligente. Como las tarifas de gas se pagan por cada espacio de almacenamiento utilizado, las acciones ejecutadas con el código Solidity cuestan gas. Es poco probable que un contrato inteligente cuya ejecución sea costosa se utilice a largo plazo.
La optimización del gas ayuda a reducir el costo del gas cuando se ejecuta el código Solidity. Algunos de los métodos más populares de optimización de gas incluyen el uso de bibliotecas y el uso de menos funciones. Las bibliotecas se utilizan a menudo para guardar códigos de bytes.
En lugar de agregar un código de bytes innecesario al contrato inteligente, la lógica se puede colocar en bibliotecas. Esto ayuda a mantener pequeño el tamaño del contrato inteligente. Al utilizar menos funciones, se necesita menos código de bytes y también se reduce la dificultad de auditar el código.
¿Cómo se puede utilizar la solidez en Ethereum?
La solidez se utiliza para crear contratos inteligentes para tokens fungibles y no fungibles. Se utilizan diferentes estándares para construir tokens no fungibles y tokens fungibles en el ecosistema Ethereum.
Estos permiten crear diferentes tipos de casos de uso para las personas que usan blockchain. La solidez permite a las personas usar tokens y tokens no fungibles en Ethereum. Desde acuñar tokens no fungibles hasta agregarlos para generar grupos agrícolas para un interés adicional, Ethereum posibilita diferentes tipos de usos para los tokens.
Las Organizaciones Autónomas Descentralizadas (DAO) también son posibles gracias a Solidity. Un DAO, que es un nuevo tipo de estructura organizativa en línea, está escrito principalmente en Solidity. Los DAO permiten que diferentes personas se reúnan como miembros en una plataforma en línea donde votan sobre las decisiones clave del DAO.
Solidity permite automatizar procesos dentro del DAO. Los ejemplos de automatización de procesos en DAO incluyen hacer votos para decisiones clave y asignar reputación a los miembros de DAO por sus contribuciones al grupo.
Definición de estándares para blockchains
Solidity es mucho más que un lenguaje de programación. Está definiendo estándares para el futuro de la tecnología blockchain.
Gracias a la cantidad de desarrolladores de código abierto que trabajan para mejorar la seguridad y el rendimiento de Solidity, miles de aplicaciones en el ecosistema Ethereum continúan dependiendo de él para que sus aplicaciones funcionar. A medida que se creen nuevos estándares para contratos inteligentes en Ethereum, el lenguaje será más seguro de usar.
¿Es posible una Internet verdaderamente descentralizada? ¿Qué significa descentralización y cómo lo mantendrá a salvo?
Leer siguiente
- Tecnología explicada
- Programación
- Ethereum
- Blockchain
Calvin es escritor en MakeUseOf. Cuando no está viendo a Rick y Morty o sus equipos deportivos favoritos, Calvin escribe sobre nuevas empresas, blockchain, ciberseguridad y otros ámbitos de la tecnología.
Suscríbete a nuestro boletín
¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Un paso más…!
Confirme su dirección de correo electrónico en el correo electrónico que le enviamos.