Deploy kontrak dengan Foundry atau Hardhat

Deploy Hello.sol di jaringan EVM dengan Foundry atau Hardhat 2, verifikasi chain ID, lalu periksa receipt transaksi dan respons kontrak.

Pilih jaringan

Ikuti panduan integrasi rantai tujuan (diakses melalui Rantai yang Didukung) untuk membuat network.mjs dan mengekspor RPC_URL serta CHAIN_ID. Panduan rantai membaca chain ID dan kebijakan metode dari GET /v1/chains serta menjelaskan token gas, apakah RPC terpisah untuk menyiarkan transaksi diperlukan, dan pengaturan deployment khusus rantai.

Pilih salah satu tool di bawah. Keduanya men-deploy kontrak kecil yang sama tanpa argumen constructor.

Isi saldo deployer dengan token gas native jaringan yang dipilih. Atur DEPLOYER_PRIVATE_KEY dengan aman di lingkungan lokal Anda; jangan pernah memasukkannya ke commit. Perintah berikut menyiarkan transaksi dan menggunakan gas.

Buat Hello.sol tanpa argumen 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

Dalam proyek Foundry yang sudah diinisialisasi, letakkan kontrak di src/Hello.sol dan gunakan foundry.toml berikut:

[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

Simpan hash transaksi dan alamat hasil deployment. Gunakan cast receipt "$TX_HASH" --rpc-url "$RPC_URL" untuk memeriksa apakah transaksi telah masuk blok dan statusnya, lalu cast call "$CONTRACT_ADDRESS" "hello()(string)" --rpc-url "$RPC_URL" untuk membaca kontrak. Atur kedua variabel ini dari output deployment.

Hardhat 2 dengan ethers 6

Dalam proyek CommonJS terpisah (npm init -y), instal npm install --save-dev hardhat@2 @nomicfoundation/hardhat-ethers@3 ethers@6. Letakkan kontrak yang sama di contracts/Hello.sol. Simpan konfigurasi berikut sebagai 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] },
  },
};

Buat direktori scripts dan simpan sebagai 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

chainId jaringan diperiksa terhadap RPC. Lihat pengaturan jaringan Hardhat 2 dan pengaturan Foundry (diakses: 2026-10-07).

Baca peristiwa

Atur LOG_ADDRESS ke alamat hasil deployment. Ikuti metode pembacaan peristiwa dalam panduan rantai tujuan (langganan WebSocket atau polling HTTP secara bertahap, tergantung bidang ws rantai di /v1/chains) untuk membaca peristiwa Ping setelah memanggil ping().

Terakhir diperbarui:

Di halaman ini