Ejercicio: Implementación en la red de prueba Ropsten
Ahora tiene un contrato inteligente. Se ha implementado correctamente en la red de desarrollo. A continuación, se centrará en la implementación de la red de prueba Ropsten.
Información general del ejercicio
En este tutorial, se realizará la implementación en Ropsten mediante MetaMask con ether de prueba. Para el proceso de implementación es necesario configurar una cuenta de Infura a fin de conectarse a la red de prueba Ropsten y realizar la implementación en ella. Después de la implementación, se puede usar Ropsten Testnet Explorer para inspeccionar los bloques que se han implementado en la red de prueba.
Configuración del ejercicio
Para configurar el ejercicio, siga estos pasos:
- Instale y configure MetaMask.
- Obtenga ether de prueba.
- Instale HDWallet-Provider y fs.
- Instale Infura y vincule los puntos de conexión a la red de prueba Ropsten.
Configuración de MetaMask
Si todavía no lo ha hecho, instale y configure MetaMask. Después, inicie sesión en la cuenta en el explorador.
Adición de ether a la red de prueba Ropsten de MetaMask
Use la cuenta de MetaMask para conectarse a la red de prueba Ropsten. Para empezar, obtenga ether de prueba de Ropsten Test Faucet:
Abra MetaMask.
Conéctese a Ropsten.
Copie la dirección de la cuenta.
Abra una pestaña o ventana del explorador y vaya al grifo de Ropsten.
Para solicitar ether, escriba la dirección de la cuenta de la red de prueba y, después, seleccione Send me test Ether (Enviarme ether de prueba).
En MetaMask, compruebe que ahora tiene ether en la cuenta.
Instalación de HDWallet-Provider y fs
A continuación, necesitará HDWallet-Provider. Este proveedor de Web3 habilitado para carteras crea el mnemotécnico secreto y la dirección de red de conexión. También necesitará fs para leer desde el sistema de archivos.
Para instalar las dos herramientas, vuelva al proyecto todolist en Visual Studio Code. Abra el panel de terminal y ejecute los comandos siguiente:
npm init
npm install fs
npm install @truffle/hdwallet-provider
Espere a que finalicen las instalaciones de fs y HDWallet-Provider. Es posible que vea varias advertencias. Siempre que estas advertencias no sean errores, puede omitirlas.
Configuración de Infura y vinculación de los puntos de conexión a la red de prueba Ropsten
El conjunto de desarrollo Infura proporciona acceso de API instantáneo y escalable a las redes Ethereum. Infura es un clúster de nodos de Ethereum hospedado que ofrece a los usuarios la capacidad de ejecutar una aplicación en una red pública. Use Infura para implementar e interactuar con redes públicas.
Para configurar una cuenta, vaya al sitio web de Infura y siga estos pasos:
- Configure una cuenta y confirme la dirección de correo electrónico.
- Seleccione Ethereum>Create new project (Crear proyecto). Asigne el nombre TodoList al proyecto.
- En Keys (Claves), cambie el punto de conexión a Ropsten.
La vista debería ser similar al siguiente proyecto de prueba:
Conexión a Ropsten
Vuelva a la carpeta del proyecto todolist en Visual Studio Code.
En el archivo de configuración de Truffle, ./truffle-config.js, quite las marcas de comentario de las líneas de
hdwallet-provider
,infuraKey
,fs
ymnemonic
:const HDWalletProvider = require('@truffle/hdwallet-provider'); const infuraKey = "fj4jll3k....."; const fs = require('fs'); const mnemonic = fs.readFileSync(".secret").toString().trim();
Vaya a la cuenta de Infura para obtener el valor de
infuraKey
. En Infura, se denomina Project ID (Id. de proyecto). Está visible en el punto de conexión de Ropsten:Junto a Project ID, seleccione el icono del Portapapeles para copiar el id. Vuelva a ./truffle-config.js para pegar el valor
infuraKey
.En la imagen siguiente se muestra un ejemplo de lo que debe pegar. Aunque la clave de ejemplo se puede usar como marcador de posición, la clave será diferente a la que ve aquí y debe usar su propia infuraKey.
const infuraKey = "f6bfe21890a84b9fa27def74bafb0b1b";
Cree un archivo con el nombre .secret. Copie el mnemotécnico en el nuevo archivo.
Para obtener el mnemotécnico, en MetaMask, vaya a Settings>Security & Privacy (Configuración>Seguridad y privacidad). Seleccione Reveal Seed Phrase (Mostrar la frase de inicialización). Escriba la contraseña de MetaMask para verificar su identidad. Después, seleccione Copy to clipboard (Copiar en el Portapapeles).
Importante
No comparta el mnemotécnico con nadie o podrían acceder a su cuenta. Si usa Git, asegúrese de incluir .secret en el archivo .gitignore.
Use el código siguiente para leer la frase de inicialización del archivo .secret y recortar todos los espacios en blanco:
const mnemonic = fs.readFileSync(".secret").toString().trim();
Para definir la red, quite la marca de comentario de la configuración de red de Ropsten en truffle-config.js. Asegúrese de que la configuración es similar a este código:
ropsten: { provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/${infuraKey}`), network_id: 3, // Ropsten's id gas: 5500000, // Ropsten has a lower block limit than mainnet confirmations: 2, // # of confs to wait between deployments. (default: 0) timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) skipDryRun: true // Skip dry run before migrations? (default: false for public nets ) },
Implementación en Ropsten
Para realizar la implementación en Ropsten, ejecute el comando siguiente desde el terminal de Visual Studio Code:
truffle migrate --network ropsten
Si la conexión se realiza correctamente, verá la salida siguiente:
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
Warning: Both truffle-config.js and truffle.js were found. Using truffle-config.js.
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
Starting migrations...
======================
> Network name: 'ropsten'
> Network id: 3
> Block gas limit: 8000029 (0x7a121d)
1_initial_migration.js
======================
Deploying 'Migrations'
----------------------
> transaction hash: 0x2f456acc5f842ddf0eb151742e47dd6e8ec5e48d73b1f150e2908cb56e0bf174
> Blocks: 1 Seconds: 29
> contract address: 0x789101d0B0Ffa4f8f87E67AF8ff8F84bD519752D
> block number: 9398701
> block timestamp: 1609784599
> account: 0x896587D82C895F30433cade401068C2791A6936F
> balance: 0.99616138
> gas used: 191931 (0x2edbb)
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00383862 ETH
Pausing for 2 confirmations...
------------------------------
> confirmation number: 1 (block: 9398702)
> confirmation number: 2 (block: 9398703)
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00383862 ETH
2_deploy_contracts.js
=====================
Deploying 'TodoList'
--------------------
> transaction hash: 0xad8066308e9cc8503400c86a43674d856a71e02696e2c21b3e55f566df5afc36
> Blocks: 0 Seconds: 8
> contract address: 0x48112BE8d0E6e7bA892aFa2d4Ab58e9c43dd37De
> block number: 9398706
> block timestamp: 1609784870
> account: 0x896587D82C895F30433cade401068C2791A6936F
> balance: 0.98513544
> gas used: 508959 (0x7c41f)
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.01017918 ETH
Pausing for 2 confirmations...
------------------------------
> confirmation number: 1 (block: 9398707)
> confirmation number: 2 (block: 9398708)
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.01017918 ETH
Summary
=======
> Total deployments: 2
> Final cost: 0.0140178 ETH
Comprobación de la implementación del contrato
Siga los pasos de las secciones siguientes para comprobar que el contrato se ha implementado.
Comprobación en MetaMask
Compruebe en MetaMask si se ha usado ether para implementar el contrato.
Comprobación en Ropsten Etherscan
En Ropsten Etherscan, escriba la dirección del contrato. Después, inspeccione el contrato.
También puede comprobar la implementación si abre una nueva ventana de terminal en Visual Studio Code. Puede interactuar con el contrato mediante la consola de Truffle como lo hace en la cadena de bloques de desarrollo Ganache.