Einen Vertrag mit Foundry oder Hardhat deployen

Deployen Sie Hello.sol in einem EVM-Netzwerk mit Foundry oder Hardhat 2, verifizieren Sie die Chain ID und prüfen Sie die Transaktionsquittung sowie die Vertragsantwort.

Netzwerk auswählen

Folgen Sie der Integrationsanleitung der Ziel-Chain (erreichbar über Unterstützte Chains), um network.mjs zu erstellen und RPC_URL sowie CHAIN_ID zu exportieren. Chain-Anleitungen lesen die Chain ID und die Methodenrichtlinie aus GET /v1/chains und erläutern den Gas-Token, ob ein separater Broadcasting-RPC erforderlich ist sowie chain-spezifische Bereitstellungseinstellungen.

Wählen Sie unten eines der Tools aus. Beide stellen denselben kleinen Vertrag ohne Konstruktorargumente bereit.

Statten Sie den Deployer mit dem nativen Gas-Token des ausgewählten Netzwerks aus. Setzen Sie DEPLOYER_PRIVATE_KEY sicher in Ihrer lokalen Umgebung; checken Sie ihn niemals ein. Die folgenden Befehle senden eine Transaktion (Broadcast) und verbrauchen Gas.

Erstellen Sie Hello.sol ohne Konstruktorargumente:

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

Platzieren Sie in einem initialisierten Foundry-Projekt den Vertrag unter src/Hello.sol und verwenden Sie diese 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

Behalten Sie den Transaktions-Hash und die bereitgestellte Adresse. Verwenden Sie cast receipt "$TX_HASH" --rpc-url "$RPC_URL", um Inklusion und Status zu prüfen, und anschließend cast call "$CONTRACT_ADDRESS" "hello()(string)" --rpc-url "$RPC_URL", um den Vertrag auszulesen. Setzen Sie diese beiden Variablen aus der Deployment-Ausgabe.

Hardhat 2 mit ethers 6

Installieren Sie in einem separaten CommonJS-Projekt (npm init -y) die Abhängigkeiten mit npm install --save-dev hardhat@2 @nomicfoundation/hardhat-ethers@3 ethers@6. Platzieren Sie denselben Vertrag unter contracts/Hello.sol. Speichern Sie Folgendes als 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] },
  },
};

Erstellen Sie das Verzeichnis scripts und speichern Sie Folgendes als 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

Die chainId des Netzwerks wird mit dem RPC abgeglichen. Siehe die Hardhat 2-Netzwerkeinstellungen und Foundry-Einstellungen (Stand: 2026-10-07).

Ereignisse auslesen

Setzen Sie LOG_ADDRESS auf die bereitgestellte Adresse. Folgen Sie der Methode zum Lesen von Ereignissen in der Anleitung der Ziel-Chain (WebSocket-Abonnement oder HTTP-Chunked-Polling, abhängig vom ws-Feld der Chain in /v1/chains), um Ping-Ereignisse nach dem Aufruf von ping() auszulesen.

Zuletzt aktualisiert:

Auf dieser Seite