?Qué es Solidity?
Solidity es un lenguaje de programación de alto nivel orientado a objetos y dise?ado específicamente para crear e implementar contratos inteligentes en varias plataformas de blockchain.
Estas plataformas incluyen principalmente Ethereum, pero Solidity también se ha utilizado en otras, como Polkadot.
?Cómo funciona Solidity?
La sintaxis de Solidity se inspira en lenguajes influyentes como C++, R, Python y JavaScript, lo que le da un aire de familiaridad para los desarrolladores versados en estos lenguajes.
Los contratos inteligentes, la aplicación central de Solidity, son contratos autoejecutables cuyos términos se escriben directamente en el código.
Permiten realizar transacciones y acuerdos de confianza sin necesidad de una autoridad central, un sistema legal o mecanismos de aplicación externos.
Solidity da vida a estos contratos, proporcionando un sólido conjunto de características, como variables miembro complejas, esquemas de herencia y funciones de tipo seguro, para crear aplicaciones de blockchain complejas y seguras.
Ejecutándose en la Máquina Virtual Ethereum (“Ethereum Virtual Machine” o “EVM“) o en máquinas virtuales compatibles con EVM, los programas Solidity aprovechan el poder de la tecnología blockchain, jugando un papel crucial en el desarrollo y operación de aplicaciones descentralizadas (dApps).
?Cómo se creó Solidity?
En agosto de 2014, Gavin Wood, cofundador de Ethereum, propuso Solidity, un lenguaje de programación orientado a objetos y dise?ado para permitir el desarrollo y la implementación de contratos inteligentes en varias plataformas blockchain.
Bajo la dirección del desarrollador principal, Christian Reitwiessner, un equipo de antiguos colaboradores del núcleo de Ethereum, incluido Alex Beregszaszi, crearon Solidity.
El lenguaje se asocia principalmente con la blockchain Ethereum, pero también funciona sin problemas con otras máquinas virtuales compatibles con EVM.
La creación de Solidity coincidió con el aumento de popularidad de la blockchain orientada a empresas de Ethereum, Hyperledger Fabric, y también de las cadenas de bloques privadas.
Se identificaron amplias aplicaciones para ello. Por ejemplo, SWIFT aprovechó sus capacidades en una prueba de concepto ejecutada en Hyperledger Fabric.
Ventajas y desventajas de Solidity
Ventajas de Solidity
- Capacidades robustas: La adopción de Solidity para crear aplicaciones blockchain se debe en gran medida a la solidez de sus capacidades
- Desarrollo de contratos inteligentes: Solidity permite el desarrollo de contratos inteligentes que son seguros, confiables y tienen el potencial de mejorar la eficiencia operativa, reducir los costos y minimizar la dependencia de terceros.
- Sintaxis familiar: La sintaxis de Solidity, inspirada en C++, Python y JavaScript, lo convierte en un terreno familiar para los desarrolladores familiarizados con estos lenguajes. Solidity utiliza en gran medida variables, funciones, operaciones aritméticas y otros conceptos de programación conocidos.
- Abundante documentación y casos de uso: Una gran cantidad de documentación de código abierto y casos de uso para las cadenas Ethereum y EVM hacen que la tarea de construir aplicaciones complejas sea menos abrumadora.
- Funcionalidades innovadoras: Incluso en situaciones que requieren funcionalidades innovadoras como el farming de liquidez y los préstamos, uno puede simplemente bifurcar el código fuente de intercambios descentralizados populares como Uniswap.
Desventajas de Solidity
Como cualquier lenguaje, Solidity tiene sus desventajas.
- Inmutabilidad de los contratos inteligentes: La inmutabilidad de los contratos inteligentes en Solidity, aunque beneficiosa en muchos casos, puede plantear problemas. Una vez que se despliega un contrato, no se puede alterar ni mejorar, lo que puede resultar problemático en entornos dinámicos.
- Limitaciones en la recopilación y actualización de información: Solidity, al igual que otros sistemas basados en blockchain, no puede recopilar y actualizar información en su sistema de forma autónoma. Esto se convierte en un problema crítico cuando se manejan datos volátiles como los pares de divisas (forex).
- La relativa escasez de bibliotecas y recursos: En comparación con lenguajes maduros como C o Java, Solidity aún se encuentra en su infancia. A pesar de su creciente popularidad, la relativa escasez de bibliotecas y recursos puede convertir el aprendizaje de Solidity en una tarea difícil para los principiantes.
Ejemplo de Solidity
// SPDX-Licencia-Identificador: GPL-3.0
pragma solidity ^0.8.4;
contrato Moneda {
// La palabra clave “público” hace que las variables
// accesibles desde otros contratos
dirección público acu?ador;
mapeo(dirección => uint) saldos públicos;
// Los eventos permiten a los clientes reaccionar a
// cambios específicos en el contrato
evento Enviado(dirección desde, dirección hasta, cantidad uint);
// El código del constructor sólo se ejecuta cuando el contrato
// se crea
constructor() {
acu?ador = msg. remitente;
}
// Envía una cantidad de monedas recién creadas a una dirección
// Sólo puede ser ejecutada por el creador del contrato
función acu?ar(dirección receptor, cantidad uint) público {
requiere(msg. remitente == acu?ador);
saldos[receptor] += cantidad;
}
// Los errores permiten proporcionar información sobre
// por qué ha fallado una operación. Se devuelven
// a la persona que ejecuta la función.
error SaldoInsuficiente(uint solicitado, uint disponible);
// Envía una cantidad de monedas existentes
// de cualquier emisor a una dirección
función enviar(dirección receptor, uint importe) público {
si (importe > saldos[msg.remitente])
revierte SaldoInsuficiente({
solicitado: importe,
disponible: saldos[msg. remitente]
});
saldos[msg.remitente] -= importe;
saldos[receptor] += importe;
emite Enviado(msg.remitente, receptor, importe);
}
}
En resumen
A pesar de la plétora de desafíos que presenta por ser un lenguaje de programación nuevo y emergente, Solidity se ha hecho un hueco importante en el panorama de la programación debido a su papel decisivo en el impulso de los contratos inteligentes de Ethereum.
Como cualquier herramienta, su eficacia depende de cómo se utilice, lo que exige que los desarrolladores sean conscientes tanto de sus puntos fuertes como de sus limitaciones para aprovechar al máximo su potencial.
A medida que crezca el papel de los contratos inteligentes en el futuro de los ecosistemas financieros, cabe esperar que también crezca el papel de Solidity.