
Este blog explora cómo web3 transforma el desarrollo con redes descentralizadas y smart contracts, ofreciendo información y herramientas esenciales para comenzar en Ethereum.

Imagina un mundo donde las interacciones en línea están impulsadas por una red descentralizada que garantiza transparencia, seguridad y control del usuario: esto es lo que promete web3, potenciado por la tecnología blockchain. En este artículo, exploraremos los conceptos fundamentales y las herramientas necesarias para entender el desarrollo en la blockchain de Ethereum.
Para explicar cómo funciona la arquitectura cliente-servidor en web2, se suele utilizar "la analogía de la cocina". En esta analogía, el servidor es como una cocina, y el cliente (usuario) envía una solicitud, similar a hacer un pedido de comida. El servidor procesa esta solicitud y devuelve los datos, como si sirviera un plato cocinado. La API actúa como el mesero, llevando tu pedido a la cocina y trayendo tu comida de vuelta, facilitando la comunicación entre el cliente y el servidor, incluso si no hablan el mismo idioma.
Podemos extender esta analogía de la cocina para explicar web3, con algunas diferencias clave: existen múltiples cocinas idénticas (nodos), una de las cuales se elige al azar, y debes pagar una tarifa de cocción por adelantado antes de recibir tu comida.
Usemos estas analogías para entender qué ocurre entre bastidores cuando un usuario interactúa con una dapp. Aunque las analogías son imperfectas, pueden ayudar a crear un modelo mental para comenzar tu camino de desarrollo en Ethereum.
En el mundo descentralizado, no existen "servidores" tradicionales. En cambio, los nodos descentralizados están distribuidos por todo el mundo, trabajando juntos para lograr resultados increíbles. Estos nodos mantienen colectivamente un registro compartido e inmutable llamado blockchain, que garantiza que cada transacción sea segura y transparente. Cualquier nodo puede procesar tu transacción o ejecutar el código de tu smart contract.
Un nodo de blockchain es cualquier computadora que ejecuta el software de un protocolo blockchain y se conecta a su red. Estos nodos son la columna vertebral de una red descentralizada, actuando como partes clave que mantienen la infraestructura de la blockchain. Funcionan como puntos de almacenamiento, de modo que cuando un usuario accede a datos en la blockchain, está interactuando con un nodo. Los nodos son transparentes y accesibles para cualquier persona en la red.
Dado que las blockchains operan sin una autoridad central, el control se distribuye entre una red de nodos que gestionan colectivamente tareas como la validación de transacciones y la ejecución de protocolos de gobernanza. Todos los tokens y smart contracts en una blockchain residen dentro de los nodos, lo que los hace esenciales para la funcionalidad de la blockchain. Sin nodos, la estructura fundamental de las blockchains no existiría.
Un smart contract es un programa autoejectable que se ejecuta en la blockchain, con los términos del acuerdo directamente codificados en él. Cuando se cumplen ciertas condiciones, el contrato aplica y ejecuta automáticamente los términos acordados, eliminando la necesidad de intermediarios.
Sin embargo, un desafío importante en esta red descentralizada es garantizar que los nodos actúen de manera honesta y procesen correctamente las solicitudes de los usuarios, dada la ausencia de una autoridad centralizada. Aquí es donde entra en juego el concepto de "consenso".
Los mecanismos de consenso garantizan que todas las transacciones sean verificadas y acordadas por los nodos, previniendo el fraude y el doble gasto, mientras mantienen la integridad de la blockchain. Para extender nuestra analogía de la cocina: después de que la cocina elegida prepara tu pedido, comparte el plato terminado y la receta con las demás cocinas. Estas cocinas siguen la misma receta, comparan los resultados y confirman colectivamente que el pedido fue preparado correctamente, garantizando consistencia y precisión en toda la red.
A diferencia de web2, donde necesitas gestionar la infraestructura para desplegar servidores, web3 traslada gran parte de la lógica del backend a smart contracts en la blockchain. A continuación, se presentan algunos entornos de desarrollo que optimizan todo el ciclo de vida del desarrollo de smart contracts:
Hardhat: Un entorno de desarrollo integral que incluye componentes para editar, compilar, depurar y desplegar smart contracts y aplicaciones. Es ideal si tienes dominio de JavaScript y necesitas una amplia integración con tecnologías web.
Foundry: Una opción rápida y eficiente que mantiene todo dentro del ecosistema de Solidity, mejorando la productividad gracias a su velocidad y soporte nativo para Solidity.
Para una comparación detallada de Hardhat y Foundry, consulta nuestra guía, Choosing the Right Ethereum Development Tool.
Remix: Un IDE en línea con plugins precargados para operaciones esenciales, perfecto para probar código rápidamente sin necesidad de instalar nada localmente.
Los desarrolladores pueden usar varios lenguajes de programación de alto nivel para escribir smart contracts, que luego se compilan en bytecode de bajo nivel. Los dos lenguajes más populares son:
Solidity: Conocido por su sintaxis similar a JavaScript, lo que lo hace accesible para muchos desarrolladores.
Vyper: Diseñado para mayor seguridad y legibilidad, con una sintaxis similar a Python.
Otros lenguajes incluyen Yul, Cairo y Rust, ofreciendo opciones adicionales según tus necesidades de desarrollo.
¿Cómo llega tu pedido de tu mesa a la cocina, y cómo regresa el pedido completado a tu mesa? ¡A través de los meseros, por supuesto!
En web2, las REST APIs actúan como los "meseros", facilitando la comunicación entre tu aplicación y el servidor backend donde reside la lógica de negocio. Para interactuar con este backend, necesitas una URL y endpoints específicos para diversas operaciones.
En web3, la interacción con el nodo de blockchain ocurre a través de una JSON-RPC API. Esta API permite que múltiples dapps interactúen con la misma URL especificando el contrato que contiene la lógica de negocio dentro del cuerpo de la llamada JSON-RPC. Aunque puede que estés menos familiarizado con las JSON-RPC APIs, funcionan de manera similar a las solicitudes HTTP típicas, como se muestra aquí:
Observa detenidamente lo que contiene el objeto de datos del cuerpo de la solicitud:
{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}Incluye la versión JSON-RPC, un método para la acción deseada (por ejemplo, recuperar el número del último bloque), parámetros opcionales y un ID para rastrear la solicitud. Este formato estandariza la comunicación con los nodos de Ethereum, ya sea para recuperar datos o ejecutar acciones en la blockchain.
La URL en la solicitud apunta a Infura, un proveedor de nodos que nos evita la complejidad y los recursos necesarios para configurar y mantener nuestro propio nodo de Ethereum. Esta URL sirve como puerta de acceso a la blockchain.
¿Recuerdas el punto anterior sobre pagar una tarifa de cocción por adelantado? En web3, ejecutar transacciones conlleva un costo conocido como "Gas fee", que depende de la complejidad de la transacción y la congestión de la red en ese momento. Sin embargo, leer datos de la blockchain es gratuito.
Para garantizar que tu transacción sea comprendida y ejecutada correctamente, se necesita una forma estandarizada de describirla. Aquí es donde entra en juego el ABI (Application Binary Interface): actúa como un menú, definiendo cómo interactuar con las funciones del smart contract, especificando los parámetros requeridos y cómo debe ejecutarse la función.
Entonces, ¿cómo se comunica tu dapp con los smart contracts desplegados? Como hemos comentado, esto requiere usar la JSON-RPC API, pero para simplificar este proceso, varias bibliotecas pueden ayudar. En JavaScript, las opciones incluyen Ethers.js o Viem, y para frontends basados en React, wagmi —una biblioteca de React Hooks para Ethereum— es especialmente útil. Estas bibliotecas envuelven tus llamadas JSON-RPC, haciendo que las interacciones con la blockchain y tus contratos desplegados sean más manejables.
Viem, y por extensión Wagmi (que usa viem internamente), proporciona APIs con tipado estricto, mejorando la experiencia del desarrollador con autocompletado, inferencia de tipos y validación estática. Al proporcionar un ABI, viem ofrece autocompletado y detecta errores de tipo antes de que afecten a los usuarios.
¿No sabes si elegir ethers.js o viem? Consulta esta Comparación Detallada para Desarrolladores Web3.
Hay múltiples formas de interactuar con los smart contracts, pero exploremos el método más popular: a través de una dapp, que es una aplicación web o móvil descentralizada diseñada para interactuar con la blockchain.
Entonces, ¿qué diferencia a una dapp de una aplicación web típica? Visualmente, a menudo no hay una diferencia significativa. Los desarrolladores pueden usar frameworks web familiares de web2 en web3, como React, Next.js o incluso JavaScript puro, y desplegar dapps de manera muy similar. Sin embargo, existen soluciones de almacenamiento descentralizado como IPFS (InterPlanetary File System) o SWARM que se usan comúnmente en web3.
Una característica distintiva en la mayoría de las aplicaciones web3 es la funcionalidad "Conectar Wallet". Cuando haces clic en "Conectar Wallet" en una dapp, estás autorizando a la aplicación a interactuar con tu wallet, permitiéndole leer tu dirección pública y solicitar transacciones en tu nombre. Las transacciones deben autenticarse para verificar que el usuario tiene derecho a realizar la acción. Esto se logra mediante la firma, un proceso que utiliza tu clave privada —un identificador único que prueba tu propiedad de una cuenta de Ethereum, almacenada de forma segura en tu wallet.
Profundicemos en las wallets: las wallets existen en diversas formas, incluyendo extensiones de navegador, aplicaciones móviles e incluso dispositivos físicos, siendo MetaMask una de las más populares. Al igual que los restaurantes del mundo real aceptan múltiples métodos de pago, es posible que necesites admitir múltiples wallets en tu dapp.
Para implementar fácilmente la función de conectar wallet y admitir varios tipos de wallets, considera usar herramientas como:
Estas herramientas pueden agilizar el proceso de integración, garantizando una conexión fluida entre tu dapp y la wallet del usuario.
El desarrollo en web3 cambia la forma en que funcionan las aplicaciones al utilizar smart contracts en la blockchain, haciéndolas permanentes y trasladando las tareas del backend fuera de los servidores centralizados. Este cambio requiere que los desarrolladores se familiaricen con aspectos como la firma de transacciones, la gestión de las Gas fees y el uso de JSON-RPC APIs, lo que lo diferencia del desarrollo web2 tradicional. Aunque esto puede ser un desafío, también abre posibilidades nuevas y emocionantes.
Para aprender más sobre el desarrollo web3 y mantenerte actualizado sobre las últimas herramientas y mejores prácticas, visita el blog de MetaMask para obtener guías e información enfocada en desarrolladores.
Traducido por IA. Puede contener errores. Por favor, verifique siempre la información.