WEB3DEV Español

Cover image for Construye un dApp de Messenger Básico con Contratos Inteligentes en el Blockchain
Hector
Hector

Posted on

Construye un dApp de Messenger Básico con Contratos Inteligentes en el Blockchain

Este artículo es una traducción de Essam Aldeen, hecha por Héctor Botero. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_eshttps://twitter.com/web3dev_es en Twitter.

Image description

Una guía paso a paso para construir una dApp messenger en los contratos inteligentes en el blockchain. Y una introducción a las variables de Solidity usando Remix IDE, ¡sin necesidad de tener experiencia previa codeando!

En este artículo, nos sumergiremos los contratos inteligentes en la blockchain y construiremos un ejemplo, el cual será la dApp messenger en el idioma de programación Solidity. En este proyecto usaremos remix, el cual será explicado, así que, ¡trae tu café y empecemos!

¿Qué son los contratos inteligentes en el blockchain?

Los contratos inteligentes en la blockchain, son programas que se ejecutan cuando ciertos criterios se cumplen y son registrados en las redes de la blockchain. La red del contrato inteligente del blockchain más famoso es Ethereum, el cual usa un lenguaje de programación llamado Solidity, para construir contratos inteligentes, el cual es considerado el desarrollo backend para los proyectos de la blockchain.

Los contratos inteligentes en el blockchain son usados, la mayoría del tiempo, para automatizar la implementación de condiciones para que todos los participantes tengan la confianza de la conclusión instantáneamente, sin la participación de un intermediario o tiempo perdido. También, pueden automatizar un flujo de trabajo, activando automáticamente la siguiente actividad cuando se cumplen ciertas circunstancias.

Algunos puntos que necesitas saber antes de comenzar los contratos inteligentes en el blockchain son:

  • Los contratos inteligentes en el blockchain se ejecutan muy rápido, así que son eficientes.
  • Son Inmutables, lo que quiere decir que ¡no pueden ser alterados!
  • Son Permanentes, estos contratos no pueden ser cambiados si hay algún error, así que tienes que volver a desplegarlos.
  • No todas las redes de blockchain soportan contratos inteligentes.

¿Qué es Remix IDE?

Remix IDE, es una herramienta online que puedes usar para escribir y depurar código de Solidity y desplegarlos en diferentes redes de Ethereum.

Remix puede ser una gran herramienta en el desarrollo de la Web3 y del desarrollo de contratos inteligentes en el blockchain. Usaremos Remix como nuestro IDE principal para escribir, aprender y desplegar nuestra dApp messenger en la red Ethereum.

¿Pero, qué necesitas saber antes de construir la dApp messenger con Solidity?

Puedes leer mi artículo anterior: DevOps vs Agile: ¿Cuál gana?

Variables en el lenguaje de programación Solidity

Si alguien no sabe lo que las variables significan, en términos simples, son un placeholder para cualquier tipo de datos como cadenas o un número. Las variables permiten al usuario obtener y modificar datos almacenados.

Hay un gran tipo de variables en Solidity, pero tomaremos un par de ellos y los usaremos para poder construir la dApp messenger.

Booleans:

Entre todos, es el más fácil de entender. Booleans son sólo tipos de datos que toman dos tipos de datos: Verdadero o Falso (SI/NO, ON/OFF). Se define como un bool, veamos un ejemplo:

bool isCodingFun==true;
bool goingToGym==false;
Enter fullscreen mode Exit fullscreen mode

Números enteros sin firmar

La siguiente cosa de la que hablaremos será sobre los números enteros Firmados/Sin firmar, el cual es otro tipo de variable que son, números enteros. La diferencia entre los números enteros Firmados y los números enteros Sin Firmar es que los firmados pueden ir a valores negativos, mientras que los Sin Firmar, son valores positivos (desde cero a algo realmente grande). Son definidos por uint, por ejemplo:

uint myUint=2023; // El rango es desde 0 - (2²⁵⁶)
uint8 mySmallerNumber = 2; // Otro tipo de unidad para números pequeños
uint goodNumber=-7; // Valores negativos
Enter fullscreen mode Exit fullscreen mode

Cadenas y Bytes:

Las cadenas son arrays y, si esto suena muy complicado, déjame desglosarlo para ti. En términos simples, es una secuencia de caracteres que puede contener cualquier texto. Por ejemplo:

String myText="I'll like this article xD"; // Puede mantener cualquier tipo de texto
Enter fullscreen mode Exit fullscreen mode

El lenguaje de programación de Solidity para el desarrollo de contratos inteligentes en el blockchain, soporta doble comillas (“”) y una comilla (‘) para la variable de tipos de la Cadena. Pero, de alguna forma, es algo único de Solidity, no hay muchas funciones de manipulación de la cadena, como otros lenguajes de programación. Si vienes de lenguajes populares como Python o JavaScript, sabrás a lo que me refiero.

Excepto de una que, puedes concatenar cadenas, puedes colocarlas y unirlas todas pero, de forma nativa, no hay funciones de manipulación de la cadena. Una de las razones por la cual es que las cadenas son muy costosas de almacenar en las redes de las blockchains.

Tipo de Dirección

Es tipo de variable muy específico de Solidity, puede mantener la dirección de tu cartera (20 bytes) el cual, es la dirección de Ethereum (tu cuenta en la blockchain). Por ejemplo:

address myAccount= 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C; // Este hash es una cuenta en la red de Ethereum
Enter fullscreen mode Exit fullscreen mode

El tipo de dirección también puede tomar la cuenta directamente desde el usuario, pero deberíamos usar un nuevo método el cual es:

address myAccount=msg.sender;
Enter fullscreen mode Exit fullscreen mode

Pero debería ser pública para que puedas ver cuándo lo desplegaste en remix, así que le añadiremos:

address public myAccount=msg.sender; // público quiere decir que llamarás desde la ventana cuando lo hayas desplegado.
Enter fullscreen mode Exit fullscreen mode

La dirección también tiene un balance de nombres de propiedad de los miembros y, con esa propiedad, puedes acceder al balance de la cuenta, por ejemplo:

address public myAccount=msg.sender;
uint256 public accountBlanace=myAccount.balance;
Enter fullscreen mode Exit fullscreen mode

El Objeto Msg.

Esta sección es la parte más importante del desarrollo de Solidity. Hay muchas cosas en el objeto msg pero, en general, usaremos msg,sender el cual contiene la dirección de la persona que la está interactuando con el contrato inteligente en el blockchain, por ejemplo:

address public myAddress;
function updateMyAddress() public{
myAddress = msg.sender; // Puedes usarlo, el cual contiene un par de propiedades y uno de ellos es .sender.
}
Enter fullscreen mode Exit fullscreen mode

Como puedes ver, si desplegamos este contrato en remix, encontraremos dos botones. El primero es myAddress el cual es 0, pero cuando cliqueamos en updateMyAddress, veremos que myAddress será actualizado basado en mi dirección.

Puedes leer mi artículo anterior: Mi camino con DevOps: Parte 1 - Enamorándome con DevOps

Funciones en Solidity

Yo sé que debería cubrir esto primero, pero quería hablar sobre esto luego porque, es un tópico muy importante en todos los campos tecnológicos, no solo en el desarrollo de contratos inteligentes en el blockchain.

Para los principiantes, las funciones son simplemente como “pedazos” de código que puedes reusar, en vez de escribirlo varias veces como código.

Los programadores pueden usar funciones para dividir los problemas o secciones de código en partes pequeñas las cuales, cada una, realizan un propósito en específico.

Pero en Solidity hay algunas diferencias y hablaremos sobre las funciones de vista y las funciones pura. La sintaxis de la función básica en Solidity es como esta:

function nameOfTheFunction(parameters) scope returns() {
// el código
}
For example:
function getSum() public view returns(uint){
uint a = 1;
uint b = 2;
uint sum = a + b;
return sum;
}
Enter fullscreen mode Exit fullscreen mode

Ahora, las funciones con el tipo de vista solo pueden ser leídas, lo que quiere decir que las variables de estado no pueden ser cambiadas una vez que son invocadas. La función de Vista Simple declara que ningún estado será cambiado, pero la Función Pura declara que ningún estado variable será cambiado o leído. Por Ejemplo:

uint public x = 1;
// La promesa de no modificar el estado.
function increaseX(uint y) public view returns (uint) {
return x + y;
}
// La promesa de no modificar o leer desde el estado.
function increase(uint i, uint j) public pure returns (uint) {
return i + j;
}
Enter fullscreen mode Exit fullscreen mode

Image description

El messenger de contratos inteligentes en el Blockchain

Ok, ahora podemos juntar todo lo que hemos aprendido en un proyecto pequeño el cual es, simplemente, almacenar la cadena en el contrato inteligente del blockchain que debería ser legible para todos, pero que puede ser escrito sólo por la persona que desplegó el contrato inteligente en la blockchain.

También queremos saber cuántas veces el mensaje fue actualizado en el contrato inteligente para que podamos contarlo.

Ahora, vamos al IDE de remix y abramos un nuevo contrato, nómbralo como quieras .sol y luego de eso, coloca el código dentro del contrato:

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract nameOfTheContract{
// El código va aquí
}
Enter fullscreen mode Exit fullscreen mode

La línea SPDX se refiere a la licencia, la cual debería estar en todos los contratos inteligentes. Mientras que la palabra clave pragma es usada para habilitar ciertas características o versiones compiladas así que, estas dos líneas de código deberían estar en todos los códigos del contrato inteligente

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract learn{
uint public counter;
address public owner=msg.sender; // El dueño de la dirección
string public message;
function updateMessage(string memory _newMessage) public{
   if(msg.sender==owner){ 
       message=_newMessage;
       counter++;
   }
}
}
Enter fullscreen mode Exit fullscreen mode

La línea de fondo de los contratos inteligentes en el blockchain

Desarrollar una dApp básica de blockchain en Solidity, es una excelente manera de aprender el desarrollo de contratos inteligentes en la blockchain.
Con el aumento de soluciones de web3 y del blockchain, la demanda de desarrolladores de contratos inteligentes está subiendo y, aprender a construir dApps básicas en Solidity y Ethereum puede ser un gran paso.

https://youtu.be/k3ojbD2EBRk

Discussion (0)