For the complete documentation index, see llms.txt. This page is also available as Markdown.

使用智能合约

以太坊智能合约开发通常不再直接使用 Geth 控制台、旧式内置 JS 对象或 PoW 私链挖矿流程。自 The Merge 之后,Geth 是执行层客户端,完整节点需要配合共识层客户端;旧教程中的本地挖矿和 JS 控制台部署流程不适合当前开发。

本节采用 Hardhat 本地开发网络演示合约编写、编译、部署和调用。它更接近当前 DApp 开发流程,也便于切换到 Sepolia 等测试网。

初始化项目

先安装 Node.js 22 或更高版本,然后创建 Hardhat 项目。

mkdir hardhat-example
cd hardhat-example
npx hardhat --init
npx hardhat test

按默认模板创建项目即可。默认项目会包含 contracts/、test/、ignition/modules/ 和 hardhat.config.ts 等文件。

创建合约

新建 contracts/TestContract.sol。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

contract TestContract {
    function multiply(uint256 a) public pure returns (uint256) {
        return a * 7;
    }
}

编译合约。

Hardhat 会根据项目配置管理 Solidity 编译器,不需要手工把 solc --bin 和 solc --abi 输出复制到控制台。

本地部署

使用 Hardhat Ignition 描述部署过程。新建 ignition/modules/TestContract.ts。

如果只想在一次性模拟网络中验证部署,直接运行:

如果需要一个持续运行的本地 JSON-RPC 节点,在第一个终端运行:

在第二个终端部署到该本地节点:

输出中会给出合约地址。切换到 Sepolia 等测试网时,应在 hardhat.config.ts 中配置 RPC URL 和部署账户,并把私钥放在环境变量或 Hardhat 配置变量中,不要写入代码仓库。

调用合约

调试阶段可以用 Hardhat 控制台在本地模拟网络中部署并调用。

如果已经部署到本地节点或测试网,可使用前端、脚本或命令行工具通过合约地址和 ABI 调用。Foundry 的 cast 也常用于快速读写合约。

使用 Geth 私有网络的场景

如果目标是测试多节点执行层/共识层行为,而不是普通合约开发,应参考 Geth 官方的 Kurtosis 私有网络文档。当前 Geth 私网需要同时启动执行客户端和共识客户端,不应再按旧版挖矿或 PoA 单客户端教程搭建。

最后更新于