Como principiante en el desarrollo web3, desarrollar y desplegar tu propio token es una de las formas más populares de comenzar a crear software on-chain, mejorar tus habilidades en Solidity y comprender el ciclo de vida del desarrollo web3.
En Ethereum, existen diversos estándares de tokens, que son el conjunto predefinido de reglas que los tokens deben seguir para garantizar la compatibilidad, el cumplimiento y la interoperabilidad con la red Ethereum y otras dapps.
Estos estándares incluyen ERC-20 para tokens fungibles, ERC-721 para tokens no fungibles (NFTs), ERC-1155 para múltiples tipos de tokens, ERC-777 para funcionalidades avanzadas de tokens, ERC-1400 para security tokens y ERC-4626 para vaults tokenizados.
En este blog, desarrollaremos un token ERC-20 aprovechando OpenZeppelin, una librería que proporciona implementaciones seguras y probadas de plantillas estándar de smart contracts. Te guiaremos a través de la configuración de tu entorno de desarrollo, la escritura del contrato del token y su despliegue en la red layer 2 de Linea.
Paso 1: Configura tu entorno de desarrollo con Hardhat
Antes de comenzar a desarrollar tu token de Ethereum, deberás configurar tu entorno de desarrollo. En este blog, utilizaremos Hardhat. Sigue los pasos a continuación:
Instala Node.js y npm: Node.js es un entorno de ejecución de JavaScript y npm es su gestor de paquetes. Descárgalos e instálalos desde el sitio web oficial de Node.js.
Crea un nuevo proyecto de Hardhat: Abre tu terminal, crea un nuevo directorio para tu proyecto y navega hasta él. Luego, ejecuta:
mkdir my-token
cd my-token
npm init -y
npm install --save-dev hardhat
npx hardhat
Instala los plugins necesarios de Hardhat y los contratos de OpenZeppelin:
npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
Paso 2: Crea tu token de Ethereum
Sigue estos pasos para crear un token ERC-20 sencillo:
Crea un contrato de token: En tu proyecto de Hardhat, navega al directorio de contratos y crea un nuevo archivo llamado MyToken.sol. Abre este archivo y define tu contrato de token:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
Este smart contract crea un token ERC-20 llamado "MyToken" con el símbolo "MTK" utilizando la librería de OpenZeppelin. Al desplegarse, acuña un suministro inicial de tokens especificado por el deployer y los asigna a su dirección.
Escribe un script de despliegue: En el directorio de scripts, crea un nuevo archivo llamado deploy.js y añade el siguiente código para desplegar tu contrato:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy(1000000);
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
El script anterior despliega el smart contract "MyToken" utilizando Hardhat y ethers.js, inicializándolo con un suministro de 1.000.000 de tokens. Recupera la dirección del deployer y despliega el contrato.
Compila y despliega tu contrato localmente: En tu terminal, compila y despliega tu contrato en una blockchain local proporcionada por Hardhat:
npx hardhat compile
npx hardhat run scripts/deploy.js --network localhost
Paso 3: Despliega tu contrato de token en la testnet de Linea
Ahora que hemos desarrollado y desplegado nuestro token ERC-20 localmente, es momento de desplegarlo en la testnet de Linea utilizando Infura y MetaMask. Sigue estos pasos para poner tu token en funcionamiento en la testnet de Linea.
Configura una cuenta de Infura: Infura proporciona acceso sencillo a las distintas redes blockchain y sus testnets. Crea un nuevo proyecto, selecciona la testnet Linea Sepolia en el menú de redes compatibles y copia el ID del proyecto.
Configura MetaMask: Abre tu wallet de MetaMask y navega a la sección de redes. En el menú desplegable, asegúrate de que la opción "mostrar redes de prueba" esté activada. Luego selecciona la testnet Linea Sepolia.
Obtén ETH de Linea Sepolia: Al desplegar tu contrato, necesitarás ETH de Linea Sepolia para pagar las comisiones de gas. Puedes obtener ETH de Linea visitando el faucet oficial de Linea Sepolia.
Actualiza la configuración de Hardhat: En tu proyecto de Hardhat, actualiza tu hardhat.config.js para incluir la configuración de la testnet de Linea:
require("@nomiclabs/hardhat-ethers");
require("dotenv").config();
module.exports = {
solidity: "0.8.0",
networks: {
lineaTestnet: {
url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
accounts: [`0x${process.env.PRIVATE_KEY}`],
chainId: 59141
}
}
};
Asegúrate de que tu archivo .env contenga las variables de entorno necesarias:
INFURA_PROJECT_ID=your_infura_project_id
PRIVATE_KEY=your_private_key
Despliega tu contrato en la testnet Linea Sepolia
Ahora, para desplegar tu contrato de token en la testnet de Linea, ejecuta este comando:
npx hardhat compile
npx hardhat run scripts/deploy.js --network lineaTestnet
Este script desplegará tu contrato de token ERC-20 en la testnet de Linea utilizando la cuenta conectada a MetaMask.
Impulsa el desarrollo de tu dapp web3 con MetaMask Developer
Al dominar los fundamentos del desarrollo de tokens en Ethereum, configurar tu entorno de desarrollo y seguir las mejores prácticas, podrás desarrollar y desplegar con éxito tu propio token de Ethereum. Ya sea creando una nueva criptomoneda o tokenizando un activo, Ethereum ofrece las herramientas y el ecosistema necesarios para dar vida a tus ideas.
Visita el portal de MetaMask Developer para necesidades de desarrollo más avanzadas, como Sign-in-with-Ethereum (SIWE), soporte para EIP-6963 e integración fluida con MetaMask a través de Snaps. Ofrece un conjunto completo de herramientas, APIs y SDKs diseñados para simplificar el onboarding de usuarios y permitir a los desarrolladores crear conexiones de wallet únicas y sin permisos, así como experiencias dentro de la dapp adaptadas para los usuarios de MetaMask.