Desplegar un contrato con Foundry o Hardhat

Despliega Hello.sol en una red EVM con Foundry o Hardhat 2, verifica el chain ID y comprueba el recibo de la transacción y la respuesta del contrato.

Seleccionar la red

Siga la guía de integración de la cadena de destino (disponible en Cadenas admitidas) para crear network.mjs y exportar RPC_URL y CHAIN_ID. Las guías de cadenas leen el chain ID y la política de métodos de GET /v1/chains y explican el token de gas, si se requiere un RPC independiente para transmitir transacciones y los ajustes de despliegue específicos de cada cadena.

Elija una de las herramientas siguientes. Ambas despliegan el mismo contrato pequeño sin argumentos de constructor.

Proporcione al desplegador fondos en el token de gas nativo de la red seleccionada. Defina DEPLOYER_PRIVATE_KEY de forma segura en su entorno local; nunca la incluya en un commit. Los comandos siguientes transmiten una transacción y consumen gas.

Cree Hello.sol sin argumentos de constructor:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract Hello {
    event Ping(address indexed sender);
    function ping() external { emit Ping(msg.sender); }
    function hello() external pure returns (string memory) {
        return "hello";
    }
}

Foundry

En un proyecto Foundry inicializado, coloque el contrato en src/Hello.sol y use este foundry.toml:

[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc_version = "0.8.24"
evm_version = "paris"

[rpc_endpoints]
target = "${RPC_URL}"
: "${RPC_URL:?Set RPC_URL}" "${CHAIN_ID:?Set CHAIN_ID}" "${DEPLOYER_PRIVATE_KEY:?Set deployer key}"
test "$(cast chain-id --rpc-url "$RPC_URL")" = "$CHAIN_ID" || exit 1
forge build
forge create src/Hello.sol:Hello --rpc-url target \
  --chain "$CHAIN_ID" --private-key "$DEPLOYER_PRIVATE_KEY" --broadcast

Guarde el hash de la transacción y la dirección desplegada. Use cast receipt "$TX_HASH" --rpc-url "$RPC_URL" para comprobar la inclusión y el estado, y después cast call "$CONTRACT_ADDRESS" "hello()(string)" --rpc-url "$RPC_URL" para leer el contrato. Defina estas dos variables a partir de la salida del despliegue.

Hardhat 2 con ethers 6

En un proyecto CommonJS independiente (npm init -y), instale npm install --save-dev hardhat@2 @nomicfoundation/hardhat-ethers@3 ethers@6. Coloque el mismo contrato en contracts/Hello.sol. Guarde lo siguiente como hardhat.config.cjs:

require('@nomicfoundation/hardhat-ethers');
const { RPC_URL, CHAIN_ID, DEPLOYER_PRIVATE_KEY } = process.env;
if (!RPC_URL || !/^[1-9][0-9]*$/.test(CHAIN_ID ?? '') || !DEPLOYER_PRIVATE_KEY) {
  throw new Error('Set RPC_URL, CHAIN_ID and DEPLOYER_PRIVATE_KEY');
}
module.exports = {
  solidity: { version: '0.8.24', settings: { evmVersion: 'paris' } },
  networks: {
    target: { url: RPC_URL, chainId: Number(CHAIN_ID), accounts: [DEPLOYER_PRIVATE_KEY] },
  },
};

Cree el directorio scripts y guarde lo siguiente como scripts/deploy.cjs:

const { ethers } = require('hardhat');
async function main() {
  const contract = await ethers.deployContract('Hello');
  console.log(contract.deploymentTransaction().hash);
  await contract.waitForDeployment();
  console.log(await contract.getAddress());
}
main().catch(error => { console.error(error); process.exitCode = 1; });
npx hardhat compile
npx hardhat run scripts/deploy.cjs --network target

El chainId de la red se comprueba frente al RPC. Consulte los ajustes de red de Hardhat 2 y los ajustes de Foundry (consultado el 2026-10-07).

Leer eventos

Defina LOG_ADDRESS con la dirección desplegada. Siga el método de lectura de eventos de la guía de la cadena de destino (suscripción WebSocket o sondeo HTTP por segmentos, según el campo ws de la cadena en /v1/chains) para leer los eventos Ping después de llamar a ping().

Última actualización:

En esta página