以太坊作为全球领先的区块链平台之一,其底层节点软件Geth(Go-Ethereum)是开发者和技术爱好者与以太坊网络交互的重要工具,虽然Geth本身是跨平台的,但在Windows系统下使用命令行进行操作,对于许多用户来说可能需要一个熟悉和适应的过程,本文将详细介绍在Windows系统下如何安装、配置和使用Geth命令,帮助你快速入门并掌握基本操作。
Geth是用Go语言编写的以太坊客户端,它实现了以太坊的协议规范,允许用户连接到以太坊网络,进行挖矿、转账、智能合约交互、构建DApp等多种操作,在Windows下,Geth主要通过命令行界面(CMD或PowerShell)进行操作。
环境准备:

在Windows上安装Geth主要有两种方式:
下载预编译二进制文件(推荐)
geth-windows-amd64-版本号.zip的文件(例如geth-windows-amd64-1.13.6-20231027.zip),这是Windows 64位的预编译版本。C:\geth。geth命令,可以将geth.exe所在的路径(例如C:\geth)添加到系统的PATH环境变量中。
Path变量,点击“编辑”,新建”,将你的Geth解压路径添加进去。使用Go工具安装(需要已安装Go)
如果你已经安装了Go语言环境,可以通过以下命令安装Geth:
go get -v github.com/ethereum/go-ethereum@latest
安装完成后,geth.exe通常位于%GOPATH%\bin目录下,同样可以将其添加到PATH环境变量。
安装完成后,你就可以在Windows的CMD或PowerShell中使用Geth命令了,以下是一些最常用的命令:
初始化节点(创世块)
在第一次运行Geth之前,你需要创建一个创世区块文件(genesis.json),这定义了你的私有链或测试链的初始规则。
genesis.json文件: 用文本编辑器(如记事本、VS Code)创建一个名为genesis.json的文件,内容如下(这是一个简单的示例):{
"config": {
"chainId": 15, // 链ID,用于区分不同的以太坊链
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {}, // 预分配的地址和余额
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
geth.exe所在的目录(或已添加PATH后),执行以下命令:geth --datadir "your_data_directory" init genesis.json
your_data_directory是用来存储区块链数据的文件夹路径,例如C:\geth_data,执行成功后,该目录下会生成geth和keystore等文件夹。
启动Geth节点

启动Geth节点有多种模式,以下是常用的一些:
geth --datadir "your_data_directory" console
这会启动Geth并直接进入JavaScript控制台(>提示符),你可以在这里输入交互式命令。--datadir指定数据目录。
geth --datadir "your_data_directory" --testnet console
geth --datadir "your_data_directory" --networkid "your_network_id" console
your_network_id是一个自定义的网络ID,用于区分主网和测试网。
geth --datadir "your_data_directory" --rpc --rpcaddr "0.0.0.0" --rpcport "8545" --rpcapi "eth,net,web3,personal"
--rpc: 启动HTTP-RPC服务。
--rpcaddr "0.0.0.0": 允许任何IP连接RPC服务。
--rpcport "8545": 指定RPC端口,默认是8545。
--rpcapi: 指定暴露的API接口,如eth(以太坊核心API),net(网络API),web3(Web3.js API),personal(账户管理API)。
启动节点并启用挖矿(测试网或私有链):
geth --datadir "your_data_directory" --mine --miner.threads=1 console
--mine: 启动挖矿。--miner.threads=1: 指定挖矿使用的CPU线程数,私有链或测试网通常1-2个足够。控制台(Console)常用交互命令
启动Geth时带上console参数,会进入JavaScript交互环境,可以执行以下命令:

查看账户:
eth.accounts
创建新账户:
personal.newAccount("your_password") 记住返回的账户地址和密码,密码需要妥善保管。
查看余额:
eth.getBalance("account_address")
// eth.getBalance(eth.accounts[0]) 解锁账户:
personal.unlockAccount(eth.accounts[0], "your_password")
发送交易:
personal.sendTransaction({from: eth.accounts[0], to: "recipient_address", value: web3.toWei(1, "ether")}, "your_password") 查看区块信息:
eth.getBlock(0) // 查看创世区块 eth.blockNumber // 查看当前区块号
查看交易信息:
eth.getTransaction("transaction_hash") 退出控制台:
exit
其他常用命令行参数
--identity "YourNodeName": 设置节点的身份名称。--maxpeers 25: 设置最大连接的对等节点数。--port 30303: 设置监听端口,默认30303。--verbosity 5: 设置日志详细程度(0-6,数字越大越详细)。--cache 4096: 设置内存缓存大小(MB)。