Blockchain Blog Sol

Crea tu primer smart contract en RSK usando Remix y la billetera Metamask

Configura una billetera usando Metamask, conéctate con Remix, compila e implementa un contrato inteligente en RSK testnet.

Title

La implementación de la máquina virtual de RSK es compatible con Ethereum EVM, entonces podemos usar muchas de las herramientas de desarrollo de Ethereum.

En este tutorial, te voy a mostrar paso a paso cómo usar Remix y Metamask, que son herramientas que fueron creadas originalmente para Ethereum, para crear e implementar un contrato inteligente simple en Testnet de RSK.

Resumen

A continuación se muestra un resumen de los pasos que vamos a seguir para crear tu primer smart contract en RSK usando Remix y la billetera Metamask:

  1. Conexión de Metamask con RSK testnet;
  2. Solicitar testnet R-BTCs en faucet;
  3. Conexión de Remix con RSK testnet;
  4. Crear un smart contract;
  5. Compilar un contrato inteligente;
  6. Deploy de un contrato inteligente en RSK testnet usando Remix;
  7. Conocer RSK Explorer;
  8. Interactuar con el smart contract en Remix;
  9. Guardar la dirección del contrato inteligente;
  10. Mirar las transacciones en Metamask;

Requisitos

  • Metamask - extensión de google chrome
  • Remix - herramienta web, online

Metamask

Metamask es una especie de billetera web que facilita las transacciones con sus cuentas. También se puede utilizar con redes RSK. Tiene versiones para varios navegadores, como Chrome, Firefox, Opera y Brave.

Ve a metamask.io e instálalo.

Crea una cuenta.

Escribe tu frase inicial, seed phrase, mnemonic o frase de respaldo (todos estos términos significan lo mismo), con 12 palabras. Se utiliza para recuperar tu cuenta, en caso de que pierdas tu contraseña.

¡La seed phrase es lo más importante en una billetera / cuenta!

Remix

Remix es una herramienta web online. Es un IDE (Integrated Development Environment = Entorno de Desarrollo Integrado) que se utiliza para escribir, compilar, implementar y depurar código Solidity. Puede conectarse con Metamask y usarse para implementar contratos inteligentes tanto en RSK Testnet como en Mainnet.

Se puede acceder en:

http://remix.ethereum.org/

Conexión de Metamask con RSK testnet

  • Ve a networks
  • Selecciona Custom RPC

networks - custom RPC

  • Network Name

RSK Testnet

  • New RPC URL

https://public-node.testnet.rsk.co

  • ChainID (optional)

31

  • Symbol (optional)

tR-BTC

  • Block Explorer URL (optional)

https://explorer.testnet.rsk.co

RSK Testnet configuration

Después de configurarlo, cierre la ventana de configuración y selecciona RSK Tesnet.

TestNet Faucet

Puedes solicitar Testnet R-BTC en

faucet.testnet.rsk.co

Copia tu address de Metamask

Copy address from Metamask

Ingresa el address de tu billetera y completa el CAPTCHA.

Espera unos segundos ...

Wait a few seconds

Received some R-BTCs

Puedes ver el hash de la transacción, como este ejemplo:

https://explorer.testnet.rsk.co/tx/0xf63c45dabd52e0b44f4cf15825985e9ddfe790b4323a88a3531f762a417f9011

¡Ahora tengo 0.05 tR-BTC!

R-BTCs at Metamask wallet

¡Puedes usar el faucet solo una vez al día!

Faucet once a day

Remix

Ve a

http://remix.ethereum.org/

remix.ethereum.org

En la página de inicio / bienvenida (home / welcome), elige environment Solidity

Remix environment Solidity

Terminal

En Remix, en la parte de abajo, a la derecha, hay una terminal con algunas bibliotecas disponibles.

Puedes enviar comandos y transacciones aquí. Esta área también presenta el resultado de transacciones y / o llamadas a funciones de contrato inteligente.

¡Esta zona de retorno es muy importante para mirar los resultados!

remix terminal

Compilador Solidity

En el tercer botón en el lado izquierdo, haz clic en Solidity compiler

remix solidity compiler

Es útil habilitar la compilación automática (auto-compile), para compilar contratos inteligentes automáticamente al editar en Remix.

auto-compile

Conexión de Remix con RSK testnet

Con la red RSK testnet seleccionada en Metamask ...

En Remix, en el lado izquierdo, ubica el botón Deploy and run transactions (Implementar y ejecutar transacciones).

Por ahora es el cuarto botón

Deploy and run transactions

En Environment, elige

Injected Web3

Injected Web3

Injected Web3 conecta Remix con una cuenta activa en Metamask

Se abrirá una ventana popup de Metamask para autorizar la conexión.

Primero seleccione la cuenta y haz clic en botón Next. Probablemente solo tengas una.

Metamask select accounts

Después haz clic en botón Connect.

Metamask connect

En Remix, en Deploy and run transactions, mira el Custom Network

Injected Web3 - ChainID 31

ChainID 31 se definió en la red personalizada RSK Testnet en Metamask.

Crea un smart contract

Crea un archivo nuevo

Haz clic en el segundo botón en el lado izquierdo - file explorer

file explorer

Haz clic en + para crear un archivo nuevo

create a new file

File name: Register.sol

filename Register.sol

Copia este ejemplo:

https://raw.githubusercontent.com/solangegueiros/dapp-register-rsk/master/register-rsk-web3-injected/register.sol

pragma solidity 0.5.4;

contract Register {
    string private info;

    function setInfo(string memory _info) public {
        info = _info;
    }    

    function getInfo() public view returns (string memory) {
        return info;
    }
}

Y pégalo aquí:

Paste Register.sol

Register.sol

Este contrato inteligente tiene:

  • Una variable info para almacenar una string
  • Una función getInfo() para devolver la string almacenada en la variable info
  • Una función setInfo() para cambiar la string almacenada en la variable info

Compila un contrato inteligente

Si habilitó la compilación automática (auto-compile), el contrato inteligente ya está compilado y aparecerá una luz verde junto al tercer botón de la izquierda: Solidity compiler.

Si no lo ha habilitado:

  • Haz clic en el tercer botón de la izquierda: Solidity compiler
  • Haz clic en el botón Compilar Register.sol
  • Verifica el letrero verde en el tercer botón con el mensaje: compilation successful

compilation successful

Deploy de un contrato inteligente en RSK testnet

En el panel lateral izquierdo, ve al botón Deploy and run transactions.

Por ahora es el cuarto botón.

Deploy and run transactions

En este momento solo tenemos un contrato inteligente, por lo que se selecciona automáticamente en el dropbox

Select Register.sol

Haz clic en el botón Deploy

Se abrirá una ventana popup de Metamask para confirmar la transacción para crear el contrato inteligente Register.sol

Deploy

Haz clic en confirm

En la parte inferior derecha, podemos ver el mensaje.

creation of Register pending...

creation of SimpleStorage pending

transaction confirmed

Una vez confirmado lo podemos comprobar.

xxx

Haz clic en la línea de transacción o el botón debug (en el lado derecho) para ver más detalles de la transacción.

Copia el hash de la transacción para verificarlo en el Blockchain explorer

Por ejemplo, el hash de la transacción es

0x419c4b17ec0bf59568d9b5f5c7f0e4678039f52b9c644c2914ccd0bd2bb331da

RSK Explorer

El RSK explorer es el explorador de blockchain para transacciones RSK.

Vamos a usar el explorador de testnet:

https://explorer.testnet.rsk.co/

explorer

Pega el hash de la transacción en el campo de búsqueda (search), en la parte superior de la pantalla

search

search transaction

Este es el resultado:

explorer transaction result

Puedes verificar mi ejemplo en este link:

https://explorer.testnet.rsk.co/tx/0x419c4b17ec0bf59568d9b5f5c7f0e4678039f52b9c644c2914ccd0bd2bb331da

Interactuar con el contrato inteligente

Cuando se implementa un contrato inteligente con Remix, podemos verlo en el panel izquierdo en deploy and run transactions:

deployed contracts

Haz clic en > para expandir Register:

Deployed register

register functions

¡Estas son las mismas funciones que creamos en nuestro contrato inteligente!

Los botones naranjas son funciones que cambian cierta información almacenada en Blockchain. A estas modificaciones las llamamos cambios de estado. Este tipo de función gasta gas cuando se usa.

Los botones azules son funciones sólolo de lectura y no cambian nada almacenado en Blockchain. No necesitamos gastar gas al usarlos.

GetInfo

En primer lugar, vamos a consultar el valor almacenado en la implementación.

Haz clic en el botón getInfo

get

No tenemos ningún valor almacenado, porque no definimos nada en el momento en que hicimos deploy.

En la parte inferior derecha, podemos comprobar el mensaje:

transaction get

SetInfo

Pon una información en el campo a la derecha del botón setInfo y haz clic en el botón

value to set

Se abrirá una ventana emergente de Metamask, para confirmar la transacción que va a almacenar la información.

Haz clic en confirmar (confirm)

En la parte inferior derecha, podemos ver el mensaje.

transaction setInfo status

Después de unos segundos, ¡Metamask mostrará cuando la transacción está confirmada!

transaction mined

transaction details

En la parte inferior derecha, tenemos los detalles de la transacción.

También puedes copiar el hash de la transacción y verificarlo en RSK Explorer:

https://explorer.testnet.rsk.co/tx/0xb9f4d73e7555d2b3cdf516f2d3044daa58669f7324cb957f2b83da21a6c89b4b

transaction setInfo explorer

GetInfo (de nuevo)

Ahora tenemos la información RSK guardada y podemos comprobarla.

Haz clic en el botón getInfo

get again

¡Y la información es correcta!

Dirección del contrato inteligente

Haz clic en el botón Copiar que se encuentra en el lado derecho del contrato inteligente para copiar su dirección.

Se puede utilizar en el frontend u otras formas de interacción.

register address

En mi publicación, la dirección es 0xb5a9b7dA0ffcD59fDE4987Ff361eFB981Bb819F7.

Transacciones en Metamask

Es posible verificar todas las transacciones en metamask

Metamask transactions 1

Metamask transactions 2

Consideraciones finales

¿Pensaste que sería tan fácil usar Remix y Metamask para crear un contrato inteligente que se pueda usar en las redes Ethereum o RSK?

Te mostré cómo podemos usar algunas herramientas de desarrollo de Ethereum, y es genial darse cuenta de que también se pueden usar en la red RSK.

Nuestro objetivo es unir fuerzas y dar opciones a las personas que creen en los contratos inteligentes basados en Ethereum, y también creen en el poder de Bitcoin, a través de RSK.

Espero que este tutorial haya sido útil y agradezco tus comentarios. Compártelo si te gusta :)

© 2020, Solange Gueiros