Geth常用操作命令(Windows)

422 阅读5分钟

 一、什么是Geth?

Geth(Go Ethereum)是以太坊的一个开源客户端,用Go语言编写。它可以用来运行以太坊节点、参与开发和部署智能合约。Geth允许用户连接到以太坊网络,验证交易和区块链状态,是开发者和用户与以太坊区块链交互的主要工具之一。

二、常用操作命令

 1. 创建账户

1.1 打开命令提示符(CMD),按下 Win + R,输入 cmd,然后按下回车。

1.2 导航到解压后的 Geth 目录。例如:  

cd C:\Geth

1.3 使用 clef 工具创建一个新账户。选择一个目录来存储你的账户文件(keystore),例如:

clef newaccount --keystore C:\Geth\keystore

1.4 系统会提示你输入一个密码。这个密码用于加密你的账户文件。输入后按下回车(注意,密码不会在屏幕上显示)。然后会显示账户地址,如: Address: {0x1234567890abcdef1234567890abcdef12345678}

1.5 记录下生成的地址和密码,并妥善保管。

 2. 打印默认创世块信息

2.1 为了生成一个定制的创世块配置,可以先查看默认的配置。运行以下命令:

geth --dev dumpgenesis > genesis.json

2.2 这将在当前目录下生成一个 genesis.json 文件,包含默认的创世块配置。

 3. 配置创世块

3.1 使用文本编辑器(如 Notepad++)打开 genesis.json 文件。根据需要修改内容,特别是alloc 部分,用于设置预分配账户的余额。替换coinbase地址为生成的账户地址,示例如下:

{
    "config": {
        "chainId": 1337,
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0,
        "byzantiumBlock": 0,
        "constantinopleBlock": 0,
        "petersburgBlock": 0,
        "istanbulBlock": 0,
        "muirGlacierBlock": 0,
        "berlinBlock": 0,
        "londonBlock": 0,
        "arrowGlacierBlock": 0,
        "grayGlacierBlock": 0,
        "shanghaiTime": 0,
        "terminalTotalDifficulty": 0,
        "terminalTotalDifficultyPassed": true
    },
    "nonce": "0x0",
    "timestamp": "0x0",
    "extraData": "0x",
    "gasLimit": "0xaf79e0",
    "difficulty": "0x1",
    "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x1234567890abcdef1234567890abcdef12345678",
    "alloc": {"0x1234567890abcdef1234567890abcdef12345678": { "balance": "100000000000000000000000" }},
    "number": "0x0",
    "gasUsed": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "baseFeePerGas": "0x3b9aca00",
    "excessBlobGas": null,
    "blobGasUsed": null
}

  • 这些字段共同定义了区块链的初始状态及其行为规则,确保网络在不同节点上统一运行。

3.2将修改后的 genesis.json 保存。

 4. 初始化创世块

4.1 运行以下命令初始化区块链数据目录:

geth --datadir . init .\genesis.json

这将会在当前目录下创建 gethkeystore 文件夹,其中 geth 文件夹包含区块链数据,keystore 文件夹用于存储账户文件。

 5. 导入账户文件

5.1 将之前创建的账户文件(位于 C:\Geth\keystore 目录)复制到 .\keystore 文件夹中。

 6. 启动 Geth 节点

6.1 使用以下命令启动 Geth 节点,设置 HTTP 接口、CORS 规则等:

geth --datadir "." --dev --dev.period 2 --http --http.api eth,web3,net --http.corsdomain "http://remix.ethereum.org" --password password.txt --http.port 8888

6.2 参数解释: --datadir ".": 指定数据目录为当前目录。 --dev: 使用开发模式,自动生成区块。 --dev.period 2: 每2秒生成一个区块。 --http: 启用 HTTP-RPC 接口。 --http.api eth,web3,net: 启用的 API。 --http.corsdomain "http://remix.ethereum.org": 设置允许的跨域资源共享(CORS)域。 --password password.txt: 指定密码文件。 --http.port 8888: 设置 HTTP-RPC 的端口。

 7. 打开控制台

7.1 在启动 Geth 的同一目录下,打开一个新的命令提示符窗口。

7.2 运行以下命令连接到 Geth 控制台:

geth attach \.\pipe\geth.ipc

 8. 一些其他常用控制台命令(Geth 控制台上操作)

8.1 查看账户:

eth.accounts

8.2 查询账户余额:

eth.getBalance(eth.accounts[0])/1e18

这是以太坊中最小单位的转换(wei 转为 ether)。

8.3 解锁账户:

personal.unlockAccount(eth.accounts[0], "your-password", 600)

解锁时间为600秒。

8.4 转账:

eth.sendTransaction({from: eth.accounts[0], to: "0x0000000000000000000", value: web3.toWei(1, "ether")})

此命令将 1 ether 从 eth.accounts[0] 发送到 0x00000000000000000000

8.5 查看区块信息:

eth.getBlock(1)

8.6 查看当前区块号:

eth.blockNumber

8.7 启动:

miner.start() // 默认启动
miner.start(1)  // 启动一个挖矿线程
miner.stop()    // 停止挖矿

8.8 查询交易信息

eth.getTransaction("0xb9d8523f18f878822d48762aa58a63e86e4889147a4e20e12a77d620553faae3")

9. 终止 Geth 节点

9.1 在命令提示符中按下 Ctrl + C 可以停止运行中的 Geth 节点。