Introducción a Solidity

Escribir un contrato inteligente

Para comenzar con el desarrollo de contratos inteligentes, debemos estar familiarizados en lo que constituye un lenguaje de programación orientado a objetos (POO). El lenguaje utilizado en este tutorial es Solidity (el lenguaje utilizado para crear contratos inteligentes en Ethereum) y se implementa en múltiples cadenas como Binance Smart chain, Polygon o Avalanche.

En esta sección, aprenderás el desarrollo de contratos inteligentes con el lenguaje de programación Solidity trabajando en un proyecto que es de muestra. También aprenderás a conectar los diversos componentes de Solidity (variables, tipos y funciones) para crear una DApp completa.

A partir de dónde estamos construyendo

El requisito previo para este tipo de tutoriales generalmente es que ya tengan una comprensión de los componentes básicos del lenguaje Solidity. Sin embargo, no necesitas preocuparse por eso ahora, porque iremos paso a paso con el código de nuestro poryecto para que lo entiendas fácilmente.

Comenzaremos en nuestro currículum con pequeños fragmentos de código básico e iremos escalando hasta proyectos más avanzados. Para este tutorial, comenzaremos con un proyecto para principiantes. Nuestro primer proyecto es una DApp para almacenar y recuperar datos de la blockchain.

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Pets {
    string public myPet;

    function setPetName(string memory petName) public {
        myPet = petName;

    }
    function getPetName() public view returns(string memory){
        return myPet;
    }
}

La primera línea (SPDX-License-Identifer) nos dice que el código fuente tiene licencia GPL-3.0.

La segunda línea "pragma solidity" es donde especificamos la versión de Solidity en la que está escrito nuestro contrato inteligente. Hacemos esto para asegurarnos de usar el compilador correcto.

Un contrato en Solidity es similar a una clase en los lenguajes de programación orientados a objetos. Es una colección de código compuesta por un constructor, variables y funciones. En este ejemplo, 'Pets' es el nombre del contrato. En nuestro contrato tenemos una variable de estado de tipo string que es pública y le dimos el nombre de 'myPet'.

Definimos dos funciones, a veces llamadas 'getters' y 'setters' en programación. La primera función, setPetName, establece el estado o valor de la variable myPet. La segunda función, 'getPetName' recupera el valor guardado en la variable myPet. La gran mayoría de las funciones que escribirás serán setter o getter.

Anatomía de una función

function functionName(unit x, uint y) public view returns (uint){
    // function body here
}

Cada función debe comenzar con la palabra clave function, seguida de su nombre functionName. Lo que se coloca dentro de los paréntesis (parámetros) son las entradas o los valores que pasará a su función. Public view return indica la visibilidad de la función. En este caso, se define que puede ser accesible a los demás contratos, denotados por la palabra clave public. La función promete no modificar el estado de la blockchain, denotado por la palabra view. Finalmente, returns define que la función devolverá un valor y también define el tipo de datos de esa salida.

Inténtalo tú mismo

Usando Remix, un IDE en línea, crea un contrato inteligente simple que agregue dos números juntos y luego devuelva el valor.

Debe definir dos funciones dentro de su contrato inteligente: una para hacer el cálculo basado en dos números ​​que el usuario nos pasará y otra para devolver el valor de ese cálculo. Escribiremos un getter para recuperar el valor actual de la variable y un setter para sumar los dos números y actualizar el valor de la variable.

Comience agregando un identificador de licencia, seguido de la versión pragma:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

A continuación, defina su contrato y, dentro, defina una variable de tipo uint (entero sin signo) y configúrela en cero.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract AddNumbers{

uint public sum = 0;
}

A continuación, escribe la función para sumar dos números que el usuario nos pase y una función para devolver el valor actual de la variable de suma. Así es como debería verse tu contrato:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract AddNums {
uint public sum = 0;

function addNums(uint x, uint y) public {
    sum = x + y;
}

function getSum() public view returns (uint) {
    return sum;
}

}

La función addNums suma los dos números, pero no devuelve el nuevo valor. Para que podamos verificar que la función está correcta, necesitamos llamar a nuestra función getter. Presiona el botón getSum. Notarás que aparece un nuevo registro. Expande ese registro usando la flecha hacia abajo y desplázate hasta la parte inferior para encontrar un valor llamado "decoded output."


Escritoras: Cami, Fatma, Editoras: Busayo, Sarah Schwartz, Deborah Emeni, Traductoras: Dami, Brenda, Caro Meneses

Last updated