Introducción a la Abstracción de Gas para Desarrolladores, edición Foundry
El gas es una gran carga en la adopción Web3 para empresas
Para desplegar contratos inteligentes, los desarrolladores usualmente necesitan gas en su cuenta en forma de ETH o la moneda nativa de la blockchain específica en la que desean desplegar.
Obtener gas o monedas nativas implica comprar criptomonedas en exchanges o casas de cambio como Coinbase u otros on-ramps, lo cual es un obstáculo para algunas empresas que no quieren lidiar con la tenencia de criptomonedas debido a la volatilidad que añaden a los balances de la empresa y la carga contable que genera.
Existen algunas alternativas como EIP-4337 para pagar en tokens ERC20, pero la adopción de este EIP para herramientas de desarrollo es mínima ya que requiere cambios de código en sus scripts de despliegue y está más destinado a aplicaciones de consumo.
¿Y si los desarrolladores solo quieren construir?
Introducción a la Abstracción de Gas para Desarrolladores
Catapulta desarrolló una solución para ofrecer despliegues sin gas para desarrolladores y empresas que solo quieren enfocarse en el código, sin depender de proveedores, compatible con todos los scripts de despliegue y los desarrolladores pueden seguir usando la misma dirección de despliegue, ya sea un EOA, Ledger o una cuenta de Amazon KMS.
Ahora puedes desplegar contratos inteligentes con Euros, Dólares o stablecoins, y ser capaz de desplegar en más de +20 redes EVM sin preocuparte por el gas, o tener ETH o tokens nativos en tu billetera y en cada cadena.
Catapulta soporta scripts de Foundry
Foundry es una herramienta muy robusta y apreciada por la comunidad de desarrolladores de Solidity, debido a su runtime EVM en Rust extremadamente rápido, que permite desarrollar, probar, depurar y desplegar contratos inteligentes utilizando solo Solidity.
Catapulta soporta scripts de Solidity en Foundry, una forma de orquestar despliegues de Solidity usando el mismo lenguaje, junto con trucos como vm.startBroadcast()
y vm.envUint("PRIVATE_KEY")
.
Despliega contratos inteligentes sin gas con scripts de Foundry y Catapulta CLI
Para este tutorial, desplegaremos una serie de contratos inteligentes, utilizando el repositorio de Catapulta Foundry template como referencia para desplegar contratos inteligentes en la red EVM de Sepolia, una testnet de Ethereum.
Foundry te permite desplegar contratos inteligentes con Scripts de Solidity, vamos a revisar los detalles del archivo scripts/Deploy.s.sol
:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {Script} from "forge-std/Script.sol";
import {BatteringRam} from "../src/BatteringRam.sol";
import {Catapult} from "../src/Catapult.sol";
import {Trebuchet} from "../src/Trebuchet.sol";
contract DeploySiege is Script {
function run() public {
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
new BatteringRam(50);
new Catapult(100);
new Trebuchet(200);
vm.stopBroadcast();
}
}
Vemos que el script cargará una PRIVATE_KEY
desde la variable de entorno y transmitirá con vm.startBroadcast
los siguientes despliegues: contratos inteligentes BatteringRam
, Catapult
y Trebuchet
.
Como nota, BatteringRam
es un factory que realiza despliegues anidados de contratos Champion
dentro del constructor.
Vamos a desplegar este Script de despliegue en Solidity con la siguiente guía paso a paso:
- Instala Catapulta CLI con Node.js o Bun
npm i -g catapulta
2.Clona el repositorio de demostración y entra en el directorio del repositorio:
git clone https://github.com/catapulta-sh/catapulta-foundry-template
cd catapulta-foundry-template
- Instala las dependencias y bibliotecas de forge.
forge install
- Genera una nueva clave privada con Catapulta CLI, que se almacenará en tu archivo .env, o agrega la tuya propia como PRIVATE_KEY en el archivo .env almacenado en la raíz del proyecto
catapulta wallet
# Output:
# Dirección de Wallet: 0x6B193d5604e09f1737E33cFc4B06fb3f2C7fC3CE
# Clave privada añadida a tu archivo .env.
Regístrate en Catapulta, sigue la configuración rápida para crear un proyecto y generar una `CATAPULTA_API_KEY` gratuita que debe ser almacenada en tu archivo .env.
- Despliega con Catapulta CLI a la red Sepolia, usando el flag --sponsor para un despliegue sin gas.
catapulta script scripts/Deploy.s.sol --network sepolia --sponsor
# Output:
Catapulta.sh 🏏 Despliegue de script Forge (0.4.1)
================================================
Nombre del proyecto: Despliegues Fantasma
URL del proyecto: https://catapulta.sh/project/6106272a59b37a3a4a7afb55
UUID del Despliegue: 592a91ad-57c8-42c6-b371-2af0e170f31a
📀 Construyendo artefactos...
🗜 Comprimiendo artefactos...
📤 Subiendo artefactos a la base de datos de Catapulta...
✅ Artefactos subidos exitosamente.
📡 Transmitiendo despliegues a Catapulta Gateway RPC:
📜 Ejecutando script de Foundry: forge script scripts/DeployBasic.sol --rpc-url "https://catapulta.sh/api/run/add/chain/11125111/5922a91ad2-57228242c6-b37e-2af0e170f31a/gNd4vq8ApnRWhxwPJiMS" --broadcast --chain-id 11155111
[...]
==========================
EJECUCIÓN ONCHAIN COMPLETA Y EXITOSA.
Total Pagado: 0.000852774003979612 ETH (284258 gas * avg 3.000000014 gwei)
✅ Despliegue transmitido exitosamente
- Solicitud de verificación en Etherscan enviada. Revisa el tablero para hacer un seguimiento de las verificaciones. Si los contratos no se verifican en 10 minutos, contacta al soporte en Discord.
💾 Artefactos almacenados en:
- https://users-artifacts.s3.eu-west-1.amazonaws.com/51195a911d-57c8-42c6-b37e-2af0e170f31a-deployment-artifacts/artifacts.zip
📸 Revisa tu informe de despliegue en:
- https://catapulta.sh/project/6416272a5119b37a3a4a7afbd5/op/595f91ad-57c8-4112c6-b37e-2af0e170f31a
¡Listo! Tu despliegue ha sido transmitido, sin tener gas inicialmente o ir a un faucet. Haz clic en la URL del Informe de Despliegue para ver todos tus contratos inteligentes desplegados en el Tablero de Catapulta.
¿Dónde se almacenan las configuraciones de RPC o las claves API de Etherscan?
Catapulta se encarga de resolver el nombre de la red y enrutar las transacciones de tu script de despliegue a diferentes proveedores de RPC, sin necesidad de gestionar los nodos.
El Catapulta RPC Relay también detecta si tu transacción contiene instrucciones CREATE
o CREATE2
, y automáticamente envía solicitudes de verificación a Etherscan o la API REST del explorador de bloques de la red, para simplificar y automatizar la verificación de contratos inteligentes en despliegues anidados.
Conclusión
Catapulta CLI te permite desplegar y verificar contratos inteligentes usando Foundry a más de +20 redes sin gas, configuraciones RPC o claves API de Etherscan, y genera automáticamente informes de despliegue, resultando en una mejor experiencia de despliegue con menos código boilerplate.
Regístrate en Catapulta hoy de forma gratuita y disfruta de una mejor experiencia de desarrollo en Solidity, con despliegues sin configuración, verificaciones automáticas en exploradores de bloques e informes de despliegue que puedes compartir con tu equipo, clientes o usuarios.
¡Me encantaría ver qué construyes con Catapulta!
Autor: David Canillas Racero