Ir al contenido principal

Desplegar en Celo con Truffle

C贸mo desplegar un contrato inteligente en Celo testnet, mainnet o una red local usando Truffle.


Introducci贸n a Truffle

Truffle es un entorno de desarrollo de clase mundial, framework de pruebas y pipeline de activos para blockchains usando la m谩quina virtual Ethereum (EVM). Al crear un proyecto Truffle y editar algunos ajustes de configuraci贸n puedes implementar f谩cilmente tu proyecto en Celo.

consejo

Para obtener m谩s informaci贸n sobre las caracter铆sticas disponibles para ti como desarrollador de contratos inteligentes con Truffle, visita la documentaci贸n de Truffle.

Prerequisitos

Para desplegar en Celo usando Truffle, debes tener Celo configurado en tu entorno local. Si prefieres desplegar sin un entorno local, puedes desplegar usando Remix o Replit.

Si eres nuevo en Truffle, completa las instrucciones de instalaci贸n de Truffle de Celo y completa su Tutorial de inicio r谩pido para familiarizarte con esta herramienta.

Configuraci贸n de proyecto

Configura la carpeta de proyecto

Abre la ventana de tu terminal, crea un directorio de proyecto y navega en ese directorio.

mkdir myDapp && cd myDap

Install hdwallet-provider

Desde el directorio ra铆z del proyecto Truffle, instala truffle/hdwallet-provider. Esto te permite firmar transacciones para direcciones derivadas de un mnem贸nico. Utilizar谩s esto para conectarte a Celo en tu archivo de configuraci贸n Truffle.

npm install @truffle/hdwallet-provider --save

Inicializa Truffle

Al inicializar Truffle se crea el template para tu proyecto.

truffle init

Abrir proyecto

Abre tu proyecto en Visual Studio code o tu IDE preferido.

code .
consejo

Puedes lanzar VS Code desde la l铆nea de comandos instal谩ndolo en tu ruta de shell.

Escribir c贸digo del proyecto

Crear un nuevo contrato inteligente

Crea un archivo llamado HelloCelo.sol en el directorio contrats y rellenalo con el c贸digo de Solidity a continuaci贸n.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;

contract HelloWorld {
string public greet = "Hello Celo!";
}
consejo

Si quieres obtener m谩s informaci贸n sobre Solidity (el lenguaje para desarrollar contratos inteligentes) puedes ver los documentos de Solidity y Solidity a trav茅s de ejemplos.

Migrations File

Crea un archivo llamado 2_deploy_contracts.js en la carpeta ./migrations/ y rellena con el siguiente c贸digo.

var HelloCelo = artifacts.require("HelloCelo");

module.exports = function (deployer) {
deployer.deploy(HelloCelo);
};
consejo

Si creaste un contrato inteligente diferente, actualiza el nombre de la variable, el requisito del archivo y el despliegue para que coincida con tu nuevo contrato.

Mnem贸nico .env

Si a煤n no tienes un mnem贸nico o no est谩 seguro de c贸mo crear uno, consulta Configurar una billetera de desarrollo para m谩s detalles. Cuando est茅s listo, crea un archivo .env en tu directorio ra铆z y rellenalo con tu mnem贸nico de la billetera de desarrollo (ejemplo a continuaci贸n).

MNEMONIC="turtle cash neutral drift brisk young swallow raw payment drill mail wear penalty vibrant entire adjust near chapter mistake size angry planet slam demand"

Este mnemonic es utilizado por HDWalletProvider en el archivo truffle.config para verificar los fondos de suministro de la cuenta durante el despliegue del contrato. (Ver l铆neas 21 & 69.)

Crear archivo .gitignore

Es importante ocultar tus mnem贸nicos y otros archivos importantes mientras se desarrollan aplicaciones de Celo. Al usar Git o GitHub, puede rellenar un archivo .gitignore con el siguiente c贸digo para asegurarse de que no publiques estos archivos accidentalmente.

Crea un archivo .gitignore en tu directorio ra铆z y rell茅nalo con el siguiente c贸digo.

# dependencias
/node_modules

# usuarios Mac
.DS_Store

# archivos ocultos
.env
consejo

Mira ignorando archivos para m谩s informaci贸n.

Configurar ajustes de despliegue

El archivo truffle.config.js contiene por defecto conexiones necesarias para desplegar en las redes Ethereum, importa HDWalletProvidery conecta al mnem贸nico en tu archivo .env. Para desplegar a una red de Celo, necesitas actualizar este archivo de configuraci贸n para apuntar hacia las diferentes redes de Celo y a帽adir algunos detalles espec铆ficos a las mejores pr谩cticas de Celo.

Puedes ver un repositorio de ejemplo aqu铆.

Actualizar el archivo truffle-config.js

Abre truffle-config.js en un editor de texto y reemplaza su contenido con este c贸digo de configuraci贸n de Celo. Este c贸digo es similar a la configuraci贸n de Truffle con algunas actualizaciones de configuraci贸n necesarias para desplegar en una red de Celo.

Conectarse a una Red de Desarrollo

Usando Celo Ganache CLI creas cuentas de prueba en el localhost en el puerto 7545. La configuraci贸n de red privada se conecta a tu localhost en este puerto y te da acceso a tus cuentas en ganache-cli.

local: {
host: "127.0.0.1",
port: 7545,
network_id: "*"
}
consejo

Si eliges configurar una cadena de desarrollo local, tu blockchain tambi茅n ser谩 alojada en una red privada en localhost. Esta misma configuraci贸n se puede utilizar para conectarse a la cadena de desarrollo local.

Conectarse a Testnet usando Forno

Usar Forno te permite conectarte al blockchain de prueba de Celo sin ejecutar un nodo local. La configuraci贸n de testnet utiliza Forno para conectarse al Celo Testnet (Alfajores) usando HDWalletProvider y el mnem贸nico almacenado en tu archivo .env.

testnet: {
provider: function() {
return new HDWalletProvider(process.env.MNEMONIC, "https://alfajores-forno.celo-testnet.org")
},
network_id: 44787,
gas: 20000000
}

Conectar a Mainnet usando Forno

Usar Forno te permite conectarte al blockchain principal de Celo sin ejecutar un nodo local. La configuraci贸n de mainnet utiliza Forno para conectarse al Celo Mainnet usando HDWalletProvider y el mnem贸nico almacenado en tu archivo .env.

mainnet: {
provider: function() {
return new HDWalletProvider(process.env.MNEMONIC, "https://forno.celo.org")
},
network_id: 42220,
gas: 4000000
}
consejo

Forno es un servicio de nodo alojado en cLabs para interactuar con la red de Celo. Este te permite conectarte al blockchain Celo sin tener que ejecutar tu propio nodo.

Desplegar contrato inteligente

Compilar y migrar

Compilar contrato

Compila el c贸digo de Solidity en bytecode de Ethereum antes de desplegar el contrato. El siguiente comando truffle compilar谩 cualquier contrato nuevo o actualizado (.sol) encontrado en ./contracts.

truffle compile
consejo

Obt茅n m谩s informaci贸n sobre la compilaci贸n de contratos con Truffle aqu铆.

Migrar contrato

Las migraciones son archivos JavaScript que te ayudan a implementar contratos en la red Ethereum. Para ejecutar tus migraciones, ejecuta lo siguiente:

truffle migrate
consejo

Obt茅n m谩s informaci贸n sobre la migraci贸n de contratos con Truffle aqu铆.

Desplegar contrato

Despliega a la red de Celo seleccionada ejecutando uno de los siguientes comandos.

truffle deploy --network alfajores
truffle deploy --network celo
truffle deploy --network local

Desplegar con --reset

Utiliza la bandera ---reset para redesplegar contratos con una nueva direcci贸n de contrato si no has realizado ning煤n cambio de c贸digo.

truffle deploy --network NETWORK --reset
truffle migrate --network NETWORK --reset
consejo

Guardar las direcciones de los contratos para referencias futuras. Si los pierdes, procede al explorador de bloques para revisar las transacciones de tu cartera para la creaci贸n de contratos y su respuesta. Truffle guarda informaci贸n de despliegue como hash de transacciones y direcciones del contrato, en archivos JSON en ./build/contracts/.

Ver despliegue del contrato

Copia tu direcci贸n de contrato desde la terminal y ve al explorador de bloques para buscar tu contrato desplegado. Cambia entre redes para encontrar tu contrato usando el men煤 desplegable de la barra de b煤squeda.

Ver contrato desplegado

Ve a BlockScout y selecciona la red de tu contrato desplegado.

  • Pega tu direcci贸n de contrato desde la ventana de terminal y b煤scalo en BlockExplorer.
consejo

Obt茅n m谩s informaci贸n sobre c贸mo explorar la red de Celo y los detalles del contrato inteligente en BlockScout aqu铆.

Verificar contratos en Celo