这个项目能做什么
Go Ethereum(geth)是以太坊协议的 Go 执行层实现。它提供命令行客户端、库包和开发者工具,用于运行节点,并在以太坊主网、测试网络或私有链上构建应用。
## 构建
该项目要求 Go 1.23 或更高版本以及 C 编译器。`make geth` 构建主客户端,而 `make all` 构建完整的工具套件。预构建的二进制文件包发布在 geth.ethereum.org/downloads。
## 可执行文件
仓库在 `cmd` 目录中包含多个命令:
- `geth` – 主要的以太坊 CLI 客户端。它可以作为全节点或归档节点运行,连接主网、测试网或私有网络,并通过 HTTP、WebSocket 和 IPC 暴露 JSON-RPC 端点。
- `devp2p` – 用于在不运行完整区块链的情况下与网络层交互的工具。
- `abigen` – 源代码生成器,将以太坊合约 ABI(以及可选的 Solidity 源码)转换为编译期类型安全的 Go 包。
- `evm` – 以太坊虚拟机的开发者版本,用于在可配置环境中运行字节码片段,适合操作码级调试。
- `rlpdump` – 将二进制 RLP 转储转换为可读层次结构表示的工具。
## 运行 geth
典型用法是 `geth console`,它会启动一个通过快照同步的全节点,并提供交互式 JavaScript 控制台。`--sepolia` 标志使用独立的引导节点、网络 ID、创世状态和数据目录连接到 Sepolia 测试网络。也可以通过 `geth --config` 使用 TOML 文件提供配置,并可用 `dumpconfig` 导出现有设置。
最低硬件建议为 4 个以上 CPU 核心、8GB 内存、至少 2TB 空闲空间的高性能 SSD,以及 8 Mbit/s 下载带宽;为长期增长建议更高的配置。
提供了 Docker 快速启动方式:`docker run -d --name ethereum-node -v /Users/alice/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go`。请注意,来自其他主机的 RPC 访问需要显式设置 `--http.addr 0.0.0.0`。
## 编程访问
geth 支持通过 HTTP、WebSocket 和 IPC 使用 JSON-RPC API。IPC 接口默认启用并暴露所有 API,而 HTTP 和 WS 必须显式启用,并暴露注重安全的子集。常用标志包括 `--http`、`--http.addr`、`--http.port`、`--http.api`、`--http.corsdomain`、`--ws`、`--ws.origins`、`--ipcdisable` 和 `--ipcpath`。README 警告公开暴露 HTTP/WS API 存在安全风险,因为恶意行为者会主动探测暴露的以太坊节点。
## 私有网络
自合并(Merge)以来,运行 geth 节点的私有网络还需要设置相应的信标链。文档列出了三种替代方案:
- Simulated Backend – 用于在 Go CI 中测试智能合约。
- Dev Mode – 用于测试的便捷单节点环境。
- Kurtosis – 用于搭建多节点测试网络。
## 贡献
贡献通过针对 `master` 分支的拉取请求接受。代码必须遵循官方 Go 格式化和注释指南,提交信息应以修改的包作为前缀。更复杂的更改应在 Discord 上与核心开发者讨论。网站贡献面向 `website` 分支。
## 许可证
go-ethereum 库(`cmd` 之外的代码)采用 LGPL v3.0 许可;二进制文件(`cmd` 内的代码)采用 GPL v3.0 许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。