Déployer un contrat avec Foundry ou Hardhat

Déployez Hello.sol sur un réseau EVM avec Foundry ou Hardhat 2, vérifiez le Chain ID, et inspectez le reçu de transaction et la réponse du contrat.

Sélectionner le réseau

Suivez le guide d'intégration de la chaîne cible (accessible via les Chaînes prises en charge) pour créer network.mjs et exporter RPC_URL et CHAIN_ID. Les guides par chaîne lisent le Chain ID et la politique des méthodes depuis GET /v1/chains et expliquent le gas token, si un RPC de diffusion séparé est requis, ainsi que les paramètres de déploiement spécifiques à la chaîne.

Choisissez l'un des outils ci-dessous. Tous deux déploient le même petit contrat sans arguments de constructeur.

Approvisionnez l'adresse de déploiement avec le gas token natif du réseau sélectionné. Définissez DEPLOYER_PRIVATE_KEY de manière sécurisée dans votre environnement local ; ne la commitez jamais. Les commandes suivantes diffusent une transaction et dépensent du gas.

Créez Hello.sol sans arguments de constructeur :

// 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

Dans un projet Foundry initialisé, placez le contrat sous src/Hello.sol et utilisez ce fichier 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

Conservez le hash de transaction et l'adresse déployée. Utilisez cast receipt "$TX_HASH" --rpc-url "$RPC_URL" pour inspecter l'inclusion et le statut, puis cast call "$CONTRACT_ADDRESS" "hello()(string)" --rpc-url "$RPC_URL" pour lire le contrat. Définissez ces deux variables à partir de la sortie du déploiement.

Hardhat 2 avec ethers 6

Dans un projet CommonJS distinct (npm init -y), installez npm install --save-dev hardhat@2 @nomicfoundation/hardhat-ethers@3 ethers@6. Placez le même contrat sous contracts/Hello.sol. Enregistrez ceci sous 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] },
  },
};

Créez le répertoire scripts et enregistrez sous 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

Le chainId du réseau est vérifié auprès du RPC. Consultez les paramètres de réseau Hardhat 2 et les paramètres Foundry (consulté le : 2026-10-07).

Lire les événements

Définissez LOG_ADDRESS avec l'adresse déployée. Suivez la méthode de lecture des événements indiquée dans le guide de la chaîne cible (abonnement WebSocket ou interrogation HTTP par segments, selon le champ ws de la chaîne dans /v1/chains) pour lire les événements Ping après avoir appelé ping().

Dernière mise à jour :

Sur cette page