En este tutorial vamos a ver cómo puedes usar Remix para crear Smart Contracts con Solidity. Veremos únicamente una sencilla introducción a su interfaz y componentes. Puedes acceder a Remix desde aquí.
Contenidos
Qué es Remix
Remix es un IDE online con el que podrás crear contratos con Solidity, Vyper o Cairo entre otros lenguajese. Las últimas versiones también soportan los protocolos UMA o Quorum además de Ethereum o la red de Tron, entre otras. Del mismo modo que otros IDE como VS code, Remix incluye un explorador de archivos y el resaltado de sintaxis que necesitarás para crear un proyecto con cualquier versión de los lenguajes soportados.
La interfaz de Solidity
En la página principal de Remix encontrarás una lista de Plugins que podrás usar para crear contratos con diferentes herramientas. Si quieres crear un proyecto con Solidity, entonces tendrás que hacer clic en Solidity.
En el menú de la izquierda encontrarás el explorador de archivos, en donde podrás ver tus Smart Contracts:
Debajo, podrás acceder al compilador haciendo clic en el icono con el símbolo de Solidity:
Mediante el menú desplegable podrás seleccionar la versión de Solidity con la que deseas compilar los Smart Contracts. En general, se recomienda usar la última versión estable. Podrás compilar los contratos manualmente haciendo clic en Compile, aunque se recomienda seleccionar la opción Autocompile para que los contratos se compilen automáticamente cada vez que realices un cambio. En general solamente accederás a esta opción al inicio del proyecto.
Mediante el menú inferior, el que tiene el icono de Ethereum, podrás acceder a las opciones de despliegue de los contratos. Desde este panel también podrás crear transacciones que interactúen con tus contratos:
Los contratos se desplegarán por defecto en la blockchain local de Ethereum de Remix. Este panel es el más importante, ya que esto junto con la blockchain integrada con Remix te permiten desarrollar contratos sin la necesidad de configurar una red de Ethereum.
El resto de menús es mejor dejarlos para cuando ya tengas algo de experiencia con Solidity. Sin embargo, vale la pena pararse en el que tiene el icono de un enchufe, en donde podrás encontrar un gestor de Plugins con el que configurar la apariencia y al funcionalidad de Remix:
Si por ejemplo quieres desplegar un contracto, necesitarás tener activo el contract deployer. Si quieres probar tu código, quizás quieras tener activado el debugger.
El explorador de archivos
Vamos a echar un vistazo al explorador de archivos. Aquí podrás encontrar tus contratos. Por defecto se incluye a modo de ejemplo el contrato Ballot.sol
. La extensión .sol
es la extensión que usan los archivos de Solidity.
Si haces click en el archivo Ballot.sol
podrás editar el contrato, que se mostrará en el panel de la derecha. Se incluye un porción del contrato a modo de ejemplo, ya que no entraremos en el uso de Solidity en este tutorial:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implementa el proceso de votación junto con la delegación de votos
*/
contract Ballot {
struct Voter {
uint weight;
bool voted;
address delegate;
uint vote;
}
struct Proposal {
bytes32 name;
uint voteCount;
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/* ... */
}
Compilación de contratos
Si has activado la opción de autocompilado, los contratos se compilarán automáticamente con cada cambio. Si hay algún error, el editor mostrará la línea en donde está el error, al inicio de la misma. Si haces clic en el icono del error podrás obtener más información acerca del mismo.
Crea contratos con Solidity
Para crear un nuevo contrato con Remix. Accede primero a Remix y luego haz clic derecho en contracts y luego en New File. Luego introduce por ejemplo MiContrato.sol
como nombre del contrato. El contrato estará inicialmente vacío.
El objetivo de este tutorial no es el de aprender Solidity, sino únicamente obtener una vista previa de Remix. Si quieres aprender Solidity y conocer cuál es la estructura de un contrato, consulta la guía definitiva de Solidity.