Foundry veya Hardhat ile bir sözleşme dağıtın

Foundry veya Hardhat 2 ile bir EVM ağında Hello.sol dağıtın, zincir kimliğini doğrulayın, işlem makbuzunu ve sözleşme yanıtını kontrol edin.

Ağı seçin

Hedef zincirin entegrasyon rehberini takip ederek (Desteklenen Zincirler üzerinden erişilir) network.mjs dosyasını oluşturun ve RPC_URL ile CHAIN_ID değişkenlerini dışa aktarın. Zincir rehberleri zincir kimliğini ve yöntem politikasını GET /v1/chains üzerinden okur ve gas token'ını, ayrı bir yayınlama RPC'sinin gerekip gerekmediğini ve zincire özel dağıtım ayarlarını açıklar.

Aşağıdaki araçlardan birini seçin. Her ikisi de constructor argümanı olmadan aynı küçük sözleşmeyi dağıtır.

Dağıtıcıyı seçilen ağın yerel gas token'ı ile fonlayın. DEPLOYER_PRIVATE_KEY değerini yerel ortamınızda güvenli bir şekilde ayarlayın; asla commit etmeyin. Aşağıdaki komutlar bir işlemi yayınlar ve gas harcar.

Constructor argümanı olmayan Hello.sol dosyasını oluşturun:

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

Başlatılmış bir Foundry projesinde, sözleşmeyi src/Hello.sol konumuna yerleştirin ve şu foundry.toml dosyasını kullanın:

[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

İşlem karmasını ve dağıtılan adresi saklayın. Dahil edilme ve durumu incelemek için cast receipt "$TX_HASH" --rpc-url "$RPC_URL" kullanın, ardından sözleşmeyi okumak için cast call "$CONTRACT_ADDRESS" "hello()(string)" --rpc-url "$RPC_URL" çalıştırın. Bu iki değişkeni dağıtım çıktısından ayarlayın.

Hardhat 2 ile ethers 6

Ayrı bir CommonJS projesinde (npm init -y), npm install --save-dev hardhat@2 @nomicfoundation/hardhat-ethers@3 ethers@6 komutunu çalıştırın. Aynı sözleşmeyi contracts/Hello.sol konumuna yerleştirin. Bunu hardhat.config.cjs olarak kaydedin:

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] },
  },
};

scripts dizinini oluşturun ve scripts/deploy.cjs olarak kaydedin:

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

Ağın chainId değeri RPC'ye karşı kontrol edilir. Hardhat 2 ağ ayarlarına ve Foundry ayarlarına bakın (erişim tarihi: 2026-10-07).

Olayları okuyun

LOG_ADDRESS değişkenini dağıtılan adrese ayarlayın. ping() çağrısından sonra Ping olaylarını okumak için hedef zincirin rehberindeki olay okuma yöntemini takip edin (/v1/chains içindeki zincirin ws alanına bağlı olarak WebSocket aboneliği veya HTTP parçalı yoklama).

Son güncelleme:

Bu sayfada