SOLIDITY parte 3: Hacer deploy y testing

Serie: Construye tu DApp en Aurora.

NEAR_ES
6 min readNov 28, 2022

Autor: Juan Peña. Publicado 28/ Sep /2022

Esta es la tercera guía acerca de cómo desarrollar con Solidity en Aurora, en la que veremos como hacer el deploy a nuestro contrato, y probar su buen funcionamiento.

Te invitamos a leer las demás partes de esta serie de Solidity en nuestro Medium Aurora Venezuela, además de todas las otras guías y anuncios igual de interesantes.

Parte I

Parte II

Usaremos el código que creamos en la guía anterior:

Visita la parte II de nuestra serie Construye tu DApp en Aurora

En caso de tener los contratos predeterminados, los borramos, al igual que la carpeta “tests”, quedándonos con un solo contrato, llamado “1_Venezuela.sol”.

Lo primero que haremos será verificar que tengamos Metamask en la Red Aurora Testnet:

Activamos la extensión “SOLIDITY UNIT TESTING” en el botón con forma de conexión eléctrica, lo podemos elegir de la lista o buscarlo escribiendo “test”, daremos clic en “ACTIVATE” y se agregará un botón a la barra de navegación de la izquierda.

Si hacemos clic en dicho botón nos mostrará una pestaña nueva, allí encontramos varios botones, el botón que nos interesa es “Generate”, después de darle clic veremos que se ha creado un archivo llamado “1_Venezuela_test.sol”:

Botón de interés es “Generate”

De dicho archivo solo nos sirven las primeras líneas, dichas líneas importan lo necesario para que Remix pueda hacer los tests, incluyendo un archivo con unas cuentas de prueba y nuestro contrato, así que borremos todo lo que no nos sirve:

Tenemos 4 funciones especiales para el testing (No podemos cambiarles el nombre):

  • beforeAll(): Esta función se ejecutará una sola vez al iniciar la ronda de pruebas.
  • beforeEach(): Esta función se ejecutará antes de cada función de la ronda, tantas veces como funciones hayas creado.
  • afterAll(): Esta función se ejecutará después de cada función de la ronda, tantas veces como funciones hayas creado.
  • afterEach(): Esta función se ejecutará una sola vez al finalizar la ronda de pruebas, no la usaremos seguido.

Entonces comenzamos creando el archivo de pruebas, el contrato lo llamaremos “testVenezuela”, la instancia de nuestro contrato “Venezuela” será pública y con nombre “venezuela” (nota que no está capitalizado el nombre), creamos una función beforeAll() que declarará a la variable “venezuela” como una NUEVA instancia de “Venezuela”.

Declaramos una función llamada “probarSaldoTotal”, no recibe ningún parámetro, simplemente pregunta al contrato si “venezuela.obtenerTotalResguardadoEnElContrato()” es igual a “0”, si es correcto devuelve “Passed”, en caso contrario devuelve “Failed” y el motivo escrito por nosotros mismos: “El balance debería ser 0 al iniciar”.

Creamos otra función para probar ahora la función de cambiar el propietario a la primera dirección que tengamos en el archivo “remix_accounts.sol”, hacemos clic en “command o ctrl + clic izquierdo” para ir al archivo, copiamos la primera dirección y usamos esa:

Imagen del archivo creado automáticamente por el plugin:

Dicha función debe tratar de cambiar el propietario y después preguntar si el nuevo propietario es igual a (la misma cuenta), si el cambio se realizó correctamente nos devolverá “Passed”, en caso contrario “Failed” y el motivo: “El propietario debería ser la nueva address”:

Una última función para pruebas usando una funcionalidad que nos ofrece Remix, cambiar la cuenta que realiza la transacción solamente para pruebas “ /// #sender: account-0”.

Llamaremos a la función “probarCambiarCuentaQueFirma”, preguntaremos si la cuenta que firma es igual a la cuenta de la función anterior, y después volvemos a preguntar si “venezuela.obtenerPropietario()” es igual a la misma cuenta de la función anterior, ¿Para qué hacemos esto?, para que veas que el estado del contrato se ha mantenido entre las diferentes funciones de la misma ronda de tests.

Ahora haz clic en el botón azul que dice “Run”, si todo sale bien en menos de dos segundos nos mostrará lo siguiente:

¿Qué tal si desplegamos el contrato a Aurora Testnet?

Seguramente ya se habrá compilado el contrato después de hacer los tests; sin embargo, mejor asegurarnos, ve a la pestaña con el logo de la “S”, si solo tienes este contrato le darás clic al botón azul tal como está.

Vamos a la pestaña de abajo, con el logo de Ethereum, cambiamos el “Environment” a “Injected Provider — MetaMask”, y en “Account” nos dará nuestra dirección de MetaMask:

Si hacemos clic en “Deploy” nos abrirá MetaMask para firmar la transacción del despliegue, después nos mostrará las funciones de nuestro contrato:

Vamos a probar todas las funciones públicas que no requieren modificar el estado del contrato:

Ahora vamos a depositar “100000” Gwei (0.0001 ETH), puedes agregarle otro cero si no tienes suficiente ETH de prueba.

Para hacer esto vamos a la parte de arriba, en donde está el botón de “Deploy”, pero no vamos a presionarlo, vamos a presionar el botón rojo “depositar”, nos pedirá firmar con MetaMask:

Transacción correcta:

Pidamos nuevamente el resultado de las funciones azules (View — Que no modifican el estado de la blockchain) y veremos que han cambiado de manera correcta:

Prueba a retirar si gustas:

O a autodestruir al contrato:

Aprende a crear tu primer Smart Contract con el paso a paso en nuestra serie sobre Solidity.

¿Tienes alguna pregunta? Deja tus dudas en los mensajes y te ayudamos.

Sobre el Autor.

Juan Enrique (jeph) es desarrollador de Blockchain y de Apps Móvil.

Síguelo en:

Medium:

Juan Enrique (jeph)

Sigue los canales más importantes para estar informado sobre Aurora:

Twitter oficial de Aurora: @auroraisnear

Twitter Aurora Venezuela: @venezuelaaurora

Telegram Aurora Venezuela: @venezuelaaurora

--

--

NEAR_ES
NEAR_ES

Written by NEAR_ES

Espacio informativo y educativo sobre NEAR Protocol, Aurora, web3 y blockchain en Español para toda la comunidad

No responses yet