Los contratos inteligentes juegan un papel crucial en la aparición de dApps (aplicaciones descentralizadas). Específicamente, los contratos inteligentes son una pieza fundamental de tecnología que permite a los desarrolladores crear soluciones innovadoras para industrias como DeFi (finanzas descentralizadas). Sin embargo, a pesar de que son un aspecto tan esencial del desarrollo Web3 , no todo el mundo sabe cómo crear contratos inteligentes. Por esta razón, tomaremos este artículo para examinar el proceso de desarrollo de contratos inteligentes y ejemplificarlo creando nuestro propio contrato.
Repasaremos los fundamentos de los contratos inteligentes, el lenguaje de programación Solidity y el proceso de creación de un contrato inteligente simple con Remix.
Indice
¿Qué son los contratos inteligentes?
En pocas palabras, un contrato inteligente es un programa que se ejecuta en una cadena de bloques, como Ethereum. Los contratos inteligentes constan de dos partes diferentes; una colección de código y algunos datos. El código son las funciones de los contratos; mientras tanto, los datos se consideran el estado. Estos dos componentes de cada contrato inteligente residen en una dirección específica en una cadena de bloques.
Para Ethereum, todos los contratos inteligentes son un tipo de cuenta. Como tal, los contratos inteligentes tienen la capacidad de realizar transacciones y mantener un saldo. Sin embargo, se diferencian de las cuentas normales en el aspecto de que no hay ningún usuario al mando. En cambio, el contrato/cuenta inteligente es administrado por el código dentro del propio contrato.
Como los contratos se consideran cuentas, también es posible que nosotros, como usuarios de blockchain, interactuemos con todos los contratos inteligentes. Por ejemplo, podemos enviar una transacción y, como resultado, el contrato ejecutará las funciones en el código. Básicamente, esto significa que los contactos proporcionan un conjunto de reglas y luego las hacen cumplir a través del código escrito por los programadores del contrato.
Para ejemplificar, un contrato inteligente a menudo se conoce como una máquina expendedora digital. Esta es una analogía bastante precisa ya que adquirimos la salida deseada a través de la entrada requerida, como una máquina expendedora tradicional.
Cualquiera puede desarrollar e implementar contratos inteligentes; todo lo que se requiere son las habilidades adecuadas. El lenguaje de programación más utilizado es Solidity, que veremos más de cerca en la siguiente sección.
¿Qué es Solidity?
Como mencionamos en la sección anterior, el lenguaje de programación de referencia para el desarrollo de contratos inteligentes es Solidity. Entonces, ¿qué es exactamente Solidity y por qué se usa mucho el lenguaje al programar contratos inteligentes?
Solidity es un lenguaje de programación orientado a objetos de alto nivel que se utiliza para escribir contratos inteligentes compatibles con EVM (Ethereum Virtual Machine). Solidity es un lenguaje de claves con influencias sustanciales de lenguajes de programación bien construidos como JavaScript y C++. Esto significa que el conocimiento previo de, por ejemplo, JavaScript le da a cualquier programador una ventaja al aprender Solidity.
Con características similares a JavaScript, Solidity es muy compatible con la forma en que los humanos expresamos instrucciones. Entonces, en lugar de números/códigos binarios, el uso programado de letras y números para codificar los contratos inteligentes para el mundo de la cadena de bloques.
Además, una vez que se completan los contratos inteligentes escritos con Solidity, se compilan en el código de bytes de EVM. La razón de esto es hacer que estos programas sean compatibles con cualquier cadena de bloques EVM.
Además, hemos mencionado algunas similitudes con otros idiomas, pero ¿en qué se diferencia este idioma de los demás? Solidity se considera el primer lenguaje orientado al contrato. Esto significa que está altamente adaptado para desarrollar contratos inteligentes. Como tal, el lenguaje viene con comandos integrados para permitir una experiencia de desarrollo de blockchain más accesible. Como ejemplo, esto significa que los programadores pueden acceder fácilmente a una dirección o marca de tiempo de un bloque en particular.
¿Qué es Remix?
Remix es una aplicación web y de escritorio de código abierto que es un IDE o un entorno de desarrollo integrado que se especializa en el desarrollo de Ethereum. Esto convierte a Remix en una excelente herramienta para desarrollar contratos inteligentes con el lenguaje de programación Solidity. El entorno de desarrollo presenta un ciclo de desarrollo rápido con un amplio conjunto de complementos útiles. Remix IDE no solo es excelente para desarrollar contratos inteligentes, sino que también es una plataforma de aprendizaje.
Como Remix IDE se especializa en Ethereum y desarrollo de contratos inteligentes, el entorno presenta varias herramientas valiosas para utilizar durante todo el proceso de desarrollo. Un ejemplo es un compilador integrado que te permite compilar tus contratos directamente en el entorno de desarrollo. También es posible implementar los contratos a través de Remix y probarlos directamente. Además, también puedes personalizar su IDE con complementos para satisfacer tus necesidades específicas.
Además, usaremos Remix IDE cuando analicemos más de cerca cómo crear contratos inteligentes. Esto significa que descubriremos algunas de las principales características de los entornos de desarrollo. Entre otras cosas, veamos cómo podemos compilar e implementar nuestros contratos directamente a través del IDE de Remix.
Entonces, si esto te parece interesante, ¡sigue adelante mientras observamos más de cerca el proceso de creación de un contrato inteligente desde cero con Remix!
Cómo crear contratos inteligentes
Ahora que nos hemos encontrado con conceptos como los contratos inteligentes, Solidity y Remix, podemos pasar a crear nuestro primer contrato inteligente. Lo primero que haremos será abrir nuestro navegador y ejecutar la aplicación web de Remix. No es necesario crear una cuenta con Remix y podemos comenzar a desarrollar de inmediato. Sin embargo, antes de comenzar a desarrollar, exploremos Remix.
Al abrir la aplicación Remix, tenemos algunas opciones diferentes. Lo primero que notamos son los complementos destacados en la página de inicio. Entre estos complementos, tenemos Solidity, Optimism, LearnETH, etc. Sin embargo, también podemos hacer clic en el botón «Más» para descubrir complementos adicionales. Estos son geniales ya que pueden ayudar durante el proceso de desarrollo. Además, algunos de estos complementos también se crean para enseñar a los nuevos desarrolladores sobre la programación de Ethereum. Entonces, si estás interesado en aprender más sobre el desarrollo de ETH, siéntete libre de explorar más complementos.
Debajo de los complementos, encontramos botones para crear, importar o cargar archivos desde, por ejemplo, GitHub. También podemos encontrar botones para recursos adicionales como documentación.
Además, también tenemos el menú del explorador de archivos a la izquierda, donde podemos ver un espacio de trabajo ya predeterminado. Este espacio de trabajo contiene carpetas para contratos, guiones y pruebas. Puedes, por ejemplo, echar un vistazo más de cerca a los contratos predeterminados para tener una idea de cómo se ve un contrato inteligente. Además de este menú, también tenemos una barra de navegación con pestañas para compilar, implementar, etc.
Crear un archivo de contrato inteligente con Remix
Ahora que nos hemos fortalecido con Remix, podemos pasar a crear nuestro primer contrato. El primer paso es crear un espacio de trabajo completamente nuevo haciendo clic en el botón «+» que puedes encontrar arriba del espacio de trabajo predeterminado a la izquierda.
Al crear un nuevo espacio de trabajo, Remix proporciona una estructura de carpetas que, por ejemplo, contiene los mismos contratos del espacio de trabajo predeterminado. Sin embargo, no los necesitamos, y podemos seguir adelante y eliminarlos.
El siguiente paso es crear un nuevo archivo de contrato, lo que podemos hacer haciendo clic derecho en la carpeta de contratos y agregando un nuevo archivo. El contrato inteligente que vamos a crear aquí es un contrato muy simple para almacenar datos, y como tal, llamaremos a este archivo «1_Simple_Storage.sol».
Ahora, lo primero que haremos será declarar qué versión de Solidity vamos a utilizar. Para esto, necesitamos agregar una línea pragma.
La palabra clave aquí es «pragma», y luego establecemos un rango de versiones de Solidity entre las cuales elegirá el compilador. El elegido será el que llegue primero con la versión más alta. Y así, hemos declarado nuestra versión de Solidity que vamos a utilizar.
Crear contratos inteligentes
Con la versión Solidity declarada a través de la línea pragma, podemos crear nuestro propio contrato inteligente. Para crear un contrato, necesitamos usar la palabra clave «contrato» y declarar un nombre. En este ejemplo, llamamos al contrato «SimpleStorage» y terminamos agregando corchetes al final.
Los contratos funcionan de manera similar a las clases regulares en cualquier otro lenguaje de programación orientado a objetos con el que esté más mejorado. Como tal, estamos entre corchetes para declarar cualquier variable y función a la que necesitemos acceder fuera/dentro del contrato.
Lo primero que haremos en este ejemplo es declarar una variable. Vamos a llamar a esta variable ”storedData”, y será de tipo de dato ”uint”. ”uint” es una abreviatura de entero indefinido y, en este caso, se refiere a un entero mayor que cero. El propósito de la variable «storedData» será simplemente almacenar datos.
Crear funciones para nuestros contratos inteligentes
A continuación, vamos a crear dos funciones. La primera función que crearemos se utilizará para asignar un valor a nuestra variable «datos almacenados». Por esta razón, llamaremos a esta función ”set”, y esta función tomará un argumento en forma de ”uint” para coincidir con el tipo de la variable ”storedData”. Llamaremos al argumento «x» y luego terminaremos con corchetes.
Dentro de los corchetes, simplemente cambiamos el valor de la variable «datos almacenados» al valor de «x». Además, también agregaremos la palabra clave «público» para declarar que la función se puede llamar externamente.
Junto con una función para establecer el valor, también crearemos una función para adquirir el valor de «datos almacenados». Llamaremos a esta función «get», y esta función no requiere ningún argumento ya que solo estamos devolviendo el valor de «storedData». También haremos pública esta función, ya que nos gustaría acceder a esta función desde fuera del contrato.
Sin embargo, como se trata de una función de obtención, debemos declarar el valor que devolverá la función. Esto se define con la palabra clave «devoluciones» seguida del tipo de variable entre paréntesis, que en este caso es un «uint». Dentro de los corchetes, solo necesitamos escribir «devolver datos almacenados» para que la función devuelva el valor de la variable «datos almacenados». Por último, también podemos agregar la palabra clave «ver» antes de «devoluciones», ya que esta función no cambiará el estado del contrato de ninguna manera.
Eso es todo lo que se necesita para hacer un contrato inteligente sencillo para almacenar datos.
Compilación e implementación de contratos inteligentes
Con nuestro primer contrato completo, podemos pasar a compilar nuestro contrato. Para hacerlo, podemos navegar hasta el extremo izquierdo de nuestra interfaz Remix y elegir la pestaña del compilador Solidity. Esto nos proporciona un menú para compilar nuestro contrato, y con el contrato seleccionado, podemos simplemente presionar el botón «Compilar 1_Simple_Storage.sol» para compilar el contrato.
Después de esto, podemos pasar a la pestaña de implementación, que se encuentra justo debajo de la pestaña del compilador de Solidity. Todo lo que debemos hacer aquí es asegurarnos de que el entorno está configurado en JavaScript VM, elegir la cuenta que queremos usar y luego presionar el botón de implementación.
Una vez que se implemente el contrato, el menú recibirá un cambio menor ya que el contrato aparecerá debajo de «Contratos implementados». Si hacemos clic en la flecha al lado del contrato en cuestión, podemos probar nuestros contratos con relativa facilidad.
Podemos establecer el valor de la variable de contrato con la función «establecer» y adquirir el valor con la función «obtener». Si tratamos de obtener el valor antes de establecer un valor, el contrato devolverá cero por defecto. Sin embargo, si ingresamos «5» en el cuadro además del botón «establecer», también recibiremos «5» como resultado de presionar el botón «obtener».
Esta es una de las muchas funciones excelentes de Remix, ya que es muy fácil probar nuestros contratos. Como tal, Remix IDE es excelente para principiantes, ya que proporciona una visualización clara de lo que se supone que debe hacer el contrato y puede demostrar si el contrato funciona como debería.
Importancia para las empresas
Algunos empresarios pueden objetar que los acuerdos digitales de nueva generación son excelentes en teoría, pero no hay necesidad de apresurarse. Pero una buena regla general es innovar mientras los competidores dudan. Esa es una forma segura de obtener una ventaja competitiva en 2022 y más allá.
Aquí hay algunos puntos que confirmarán que podría ser una buena idea crear un contrato inteligente en 2022.
Perspectivas brillantes
Cualquier tecnología basada en Blockchain está destinada a convertirse en una nueva sensación en el mercado en 2022 y 2023. Las empresas están dispuestas a invertir en innovaciones prometedoras. Se espera que el tamaño del mercado de contratos inteligentes alcance más de 770 millones de euros para 2028. Esto significa que la cantidad de emprendedores dispuestos a crear un contrato inteligente en Ethereum (u otra plataforma) crecerá exponencialmente en los próximos años.
Amplia variedad de casos de uso
Los acuerdos basados en blockchain se pueden aprovechar en varios nichos comerciales, ya que la cantidad de beneficios que brinda esta tecnología es realmente impresionante. Es una forma innovadora de mejorar los procesos comerciales en el cuidado de la salud, la industria financiera, el sector de seguros, bienes raíces, juegos y muchas otras industrias. ¡Incluso puedes crear un mercado NFT y darle una ventaja competitiva al introducir este método de liquidación de pagos!
Multifuncionalidad
Otro aspecto que estimula a los empresarios a desarrollar proyectos basados en contratos inteligentes es la versatilidad de la tecnología. ¡Dichos acuerdos se pueden usar para confirmar la propiedad y los derechos de autor digitales, crear productos/plataformas (juegos, mercados) basados en Blockchain, transacciones P2P seguras y mucho más!
La descentralización garantiza un mejor control
Cualquier empresario sabe cómo la centralidad extrema puede convertir cualquier documento legal en un compromiso desigual. Tomemos como ejemplo un contrato bancario o una obligación de seguro. Si sucede algo injusto, por ejemplo, de repente aparecen cargos adicionales, una persona se ve obligada a luchar literalmente por sus derechos, amenazar con «llevarlo a los tribunales» y proponer varios planes alternativos si las cosas no funcionan.
Al ser descentralizados, los acuerdos basados en Blockchain no se pueden manipular tan fácilmente como los documentos legales tradicionales. Si se cumplen los términos discutidos, el resultado acordado de antemano entra en pleno vigor y efecto en todo momento.
Rentabilidad
El fenómeno de los acuerdos digitales inteligentes gana popularidad no solo porque es innovador. Este tipo de compromiso trae múltiples ventajas desde la perspectiva empresarial.
Beneficios
La cantidad de activos que una empresa puede obtener al aprovechar los acuerdos basados en Blockchain es bastante larga. Todos los propietarios de negocios optan por un acuerdo descentralizado debido a los beneficios que consideran cruciales. Las ventajas más comunes son las siguientes.
Transparencia
Una de las mejores cosas de las aplicaciones Blockchain es el 100 % de transparencia. Cualquier información puesta en el sistema simplemente no se puede modificar sin que se registren los cambios necesarios. Por lo tanto, el dueño de un negocio puede hacer un contrato inteligente sin temor a que se cambie clandestinamente.
Rentabilidad
Varios procesos manuales tradicionalmente asociados con el establecimiento del pacto serán realizados automáticamente por el sistema. En consecuencia, un empresario no tiene que gastar dinero en intermediarios involucrados constantemente en el proceso: abogados, bancos, corredores, etc.
Seguridad
Al igual que las criptomonedas, los acuerdos inteligentes son conocidos por utilizar la protección de datos y el grado más alto de encriptación actualmente disponible en el mercado de TI. Este hecho hace que los acuerdos basados en Blockchain sean una de las formas más seguras de redactar un acuerdo en la actualidad.
Ahorro de tiempo y autonomía
Lleva bastante tiempo establecer un documento legal tradicional, discutir y finalizar los términos y formalizar todo después. Ningún papeleo es esencial si un emprendedor desea construir un contrato inteligente, por lo que el ahorro de tiempo es significativo. Además de eso, la ejecución de cualquier acuerdo basado en Blockchain es gestionada y controlada por la red, por la tecnología, por lo que las partes no tienen que depender de una tercera fuerza para llevar a cabo el proceso.
Mayor confianza
El factor humano es expulsado durante la ejecución del contrato inteligente. Esto ayuda a generar confianza entre las partes y desarrollar relaciones comerciales sólidas y duraderas. El mayor nivel de confianza también aumenta la lealtad a la marca.
Prevención del fraude
La tecnología basada en Blockchain elimina la posibilidad de actividades no autorizadas, lo que cierra los agujeros para el fraude. Y, aunque el público en general aún considera que la ejecución de los contratos es una de las áreas clave que requieren modificación, a medida que la tecnología moderna sigue evolucionando, el nivel de sospecha disminuirá.
Almacenamiento seguro y copia de seguridad firme
La pérdida de datos es un revés importante para cualquier negocio. Las copias de seguridad son cruciales. Sin embargo, muchas veces no se realizan como deberían. Si un emprendedor decide crear un contrato inteligente, garantiza la seguridad de los datos. La clave aquí es la tecnología Blockchain. Todos los detalles utilizados en un pacto se almacenan de forma segura y permanente y están disponibles para futuros registros.
Conclusión
El valor de los contratos inteligentes es sin duda alto, ya que son esenciales para el desarrollo de dApp. Son una parte importante de habilitar una web descentralizada llena de aplicaciones útiles y revolucionarias. Sin embargo, incluso con un componente de tanta importancia, no todo el mundo sabe cómo crear contratos inteligentes. Esta es la razón por la que hemos tomado este artículo para analizar los fundamentos del desarrollo de contratos inteligentes.
El contrato que creamos a lo largo de este artículo es sin duda simple, y se puede argumentar la usabilidad de este contrato inteligente simple. Una cosa es segura, y es que el contrato viene con sus limitaciones. Sin embargo, este tutorial solo cubre los conceptos básicos del desarrollo de contratos inteligentes y, a medida que aprendemos a hacerlos más complejos, también veremos un aumento en los casos de uso.
Además, a medida que aumenta la complejidad de nuestros contratos, también necesitaremos herramientas más valiosas que nos ayuden en el proceso de desarrollo.
Se necesitan habilidades de codificación y experiencia para desarrollar un contrato inteligente. Dado que cualquier contrato implementado se vuelve inmutable, es vital ser extremadamente cuidadoso y atento durante cada etapa de desarrollo. Pero, al mismo tiempo, no significa que las empresas modernas no puedan beneficiarse de la utilización de contratos inteligentes. Todo lo que se necesita para disfrutar de las ventajas es un equipo de desarrollo altamente calificado que tenga una buena cartera y comentarios positivos.