Развертывание контракта с помощью Foundry или Hardhat
Разверните Hello.sol в EVM-сети с помощью Foundry или Hardhat 2, проверьте chain ID, квитанцию транзакции и ответ контракта.
Выбор сети
Следуйте руководству по интеграции целевой сети (доступному через Поддерживаемые сети), чтобы создать network.mjs и экспортировать RPC_URL и CHAIN_ID. Руководства по сетям получают chain ID и политику методов из GET /v1/chains и описывают токен газа, необходимость отдельного RPC для отправки транзакций и специфические настройки развертывания для конкретной сети.
Выберите один из инструментов ниже. Оба варианта развертывают один и тот же небольшой контракт без аргументов конструктора.
Пополните баланс деплоера нативным токеном газа выбранной сети. Надежно сохраните DEPLOYER_PRIVATE_KEY в вашем локальном окружении; никогда не коммитьте его в репозиторий. Следующие команды транслируют транзакцию в сеть и расходуют газ.
Создайте файл Hello.sol без аргументов конструктора:
// 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
В инициализированном проекте Foundry поместите контракт в src/Hello.sol и используйте следующий 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Сохраните хеш транзакции и адрес развернутого контракта. Используйте cast receipt "$TX_HASH" --rpc-url "$RPC_URL", чтобы проверить включение транзакции в блок и ее статус, затем cast call "$CONTRACT_ADDRESS" "hello()(string)" --rpc-url "$RPC_URL", чтобы вызвать контракт на чтение. Задайте эти две переменные из вывода команды развертывания.
Hardhat 2 с ethers 6
В отдельном проекте CommonJS (npm init -y) установите зависимости npm install --save-dev hardhat@2 @nomicfoundation/hardhat-ethers@3 ethers@6. Поместите тот же контракт в contracts/Hello.sol. Сохраните следующую конфигурацию как 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] },
},
};Создайте директорию scripts и сохраните файл 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 сети сверяется с RPC. См. настройки сети Hardhat 2 и настройки Foundry (дата обращения: 2026-10-07).
Чтение событий
Задайте в переменной LOG_ADDRESS адрес развернутого контракта. Следуйте способу чтения событий из руководства по целевой сети (подписка через WebSocket или опрос фрагментами по HTTP, в зависимости от поля ws для сети в /v1/chains), чтобы считывать события Ping после вызова ping().
Последнее обновление:
Выбор RPC-провайдера
Оценивайте стоимость методов RPC, диапазоны логов, бесплатные кредиты, лимиты скорости, покрытие сетей, Push и Data API, аутентификацию и доступ для агентов с помощью тестов нагрузки.
Дневные цены DEX
Запрашивайте дневные цены DEX OHLC и VWAP из Data API, обрабатывайте точные рациональные дроби в TypeScript и Python и эффективно дозагружайте исторические данные.