Solidity, el lenguaje de programación más usado para crear Smart Contracts
Solidity, el lenguaje de programación más usado para crear Smart Contracts
La tecnología blockchain está cada día más cerca de nuestras vidas, poco a poco está saliendo del nicho de los early adopters tecnológicos para hacerse presente en nuestro día a día. Hace unos cuantos años Ethereum rompió el mercado con la aparición de los smart contracts (contratos inteligentes) que agregaron nuevas funcionalidades a la cadena de bloques, para programarlos se utiliza Solidity.
Solidity es un lenguaje de programación orientado a objetos para escribir contratos inteligentes. A día de hoy se utiliza para implementar contratos inteligentes en varias plataformas blockchain, pero nació para Ethereum. Su primera versión fue desarrollada por por Christian Reitwiessner y Alex Beregszaszi entre otros de los padres fundadores de Ethereum. El objetivo de este lenguaje es la escritura de contratos inteligentes en plataformas blockchain. Los programas compilados por Solidity se ejecutan en la Ethereum Virtual Machine.
En la actualidad, además de usarse para crear contratos inteligentes en la red Ethereum se utiliza en otras cadenas de bloques privadas que se ejecutan en plataformas que compiten con Ethereum, como Monax o BSC (Binance Smart Contrats). Solidity es un lenguaje de programación de tipado estático diseñado para desarrollar contratos inteligentes que se ejecutan en la máquina virtual Ethereum, también conocida como EVM.
Está diseñado utilizando la sintaxis de ECMAScript para que resulte muy accesible para los desarrolladores web, con la particularidad de que su tipado es estático y sus tipos de retorno son variadic (da respuestas con un número variable de argumentos). Permite el uso de variables miembro complejas para contratos, incluidas estructuras y asignaciones jerárquicas arbitrarias. Los contratos admiten la herencia, incluida la herencia múltiple con linealización C3. También se introdujo una interfaz binaria de aplicación (ABI) que facilita múltiples funciones de seguridad de tipos dentro de un solo contrato.
Os mostramos aquí un ejemplo muy básico de Solidity:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract Counter {
uint public count;
// Function to get the current count
function get() public view returns (uint) {
return count;
}
// Function to increment count by 1
function inc() public {
count += 1;
}
// Function to decrement count by 1
function dec() public {
count -= 1;
}
}
Los entornos más habituales para desarrollar en Solidity son Remix, un entorno online que proporciona la red Ethereum (https://remix.ethereum.org/), y Microsoft Visual Studio Code que dispone de plugins especializados. Para poder probar los contratos se utilizan redes de test como Ropster, Kovan o Rinkeby. Para realizar despliegues en la red desde Javascript la librería más utilizada es web3.js (https://web3js.readthedocs.io/)
Crear contratos inteligentes a día de hoy requiere conocimientos de programación, pero con el tiempo la tecnología irá evolucionando así que esperamos con los años que sea posible redactarlos para cualquier persona que no sepa programar.