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" --broadcastGuarde 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 targetEl 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:
Elegir un proveedor RPC
Evalúe costes de métodos RPC, rangos de logs, créditos gratuitos, límites de tasa, cobertura de cadenas, APIs de Push y datos, autenticación y acceso de agentes mediante pruebas de su carga de trabajo.
Precios diarios de DEX
Consulta precios OHLC y VWAP diarios de DEX en la Data API, maneja fracciones racionales exactas en TypeScript y Python y carga datos históricos de forma eficiente.