Geth搭建私链(最新)

Geth搭建私链

puppeth 是 Geth 中一个非常有用的命令,它允许您使用一个交互式的命令行界面来创建、配置和管理您的私有链。但是在最新版本的Geth中已经删除了用于以动开发的库和puppeth工具,这也就给我们搭建私链增加了负担。

前提条件

1、Geth正确安装,并且配置了环境变量等
2、Go安装正确,并且环境变量等配置正确
3、有时候注意有些文件的执行普通cmd没有用,需要以管理员启动cmd。
大家可以使用命令:geth version查看自己的配置信息是否正确,一下是我的配置信息。

C:UsersHAO>geth version
Geth
Version: 1.11.5-unstable
Architecture: amd64
Go Version: go1.20.1
Operating System: windows
GOPATH=D:GoApiTool
GOROOT=E:SoftWareGo

1、创建geth.json

直接创建一个json文件,名字自己定,在json内写入:

{
    "config": {
          "chainId": 1234,
          "homesteadBlock": 0,
          "eip150Block": 0,
          "eip155Block": 0,
          "eip158Block": 0
      },
    "alloc"      : {},
    "coinbase"   : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x20000",
    "extraData"  : "",
    "gasLimit"   : "0x2fefd8",
    "nonce"      : "0x0000000000000042",
    "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp"  : "0x00"
  }

chainId可以选择一个相对来说大一点的数字。

2、创建一个nodedata文件夹

在geth.json文件的同级目录下创建一个nodedata文件夹,用于存放keystore等文件。
nodedata文件

3、指定json生成keystore

使用命令:geth --datadir nodedata --networkid 776211 --rpc init ./geth.json生成keystore等文件,networkid自己设置,避免节点碰撞即可。
成功以后就会在指定的文件中生成相关文件,geth是用于存放数据的,keystore是用于存放私钥的
生成geth和keystore

4、创建账号

执行命令: geth --datadir “nodedata” account new生成账号,这时候需要输入密码。请一定要记住这个密码,不要弄错了,后面马上用的上。这时候就会在keystore里面生成一个UTC开头的文件,文件不大。
在这里插入图片描述

5、创建passwd文件

注意先打开文件扩展名可见,具体打开方式可见下图:
显示文件扩展名
在geth.json文件的同级目录下创建一个passwd文件,不需要任何后缀,并且对这个文件进行编辑,输入自己创建账号时设置的密码,千万别输入错误了。(这个文件名和文件格式不是强制的,可以自己定义,后面要用,请记住文件名称)
创建passwd文件

6、创建nodestart一键启动文件

在json文件中创建一个nodestart.bat文件,是一个太坊 Geth 客户端的启动命令,用于启动一个具有完整同步模式的私有区块链,并在 HTTP 和 WebSocket 协议上开启 API。里面的具体内容是:

geth  --ethash.cachedir "D:BlockChainEthash" --ethash.dagdir  "D:BlockChainEthash"  --allow-insecure-unlock  --unlock=0  --password  ./passwd  --networkid  776211  --datadir  "nodedata"  --http --http.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net" --http.corsdomain="*" --http.port=8545 --http.addr="0.0.0.0"  --ws --ws.addr "0.0.0.0" --ws.port=8546 --ws.origins "*" --ws.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net" --syncmode full console

参数说明:
1、--ethash.cachedir "D:BlockChainEthash":指定 Ethash 缓存目录的路径。
2、--ethash.dagdir "D:BlockChainEthash":指定 Ethash DAG 目录的路径。
3、--allow-insecure-unlock:允许不安全的账户解锁方式。
4、--unlock=0:解锁账户的索引,这里是解锁第一个账户。
5、--password ./passwd:指定解锁账户的密码文件路径,这里是使用了名为 passwd 的文件。
6、--networkid 776211:指定节点所在的网络 ID。
7、--datadir "nodedata":指定节点数据存储目录的路径。
8、--http:启用 HTTP-RPC 服务。
9、--http.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net":指定 HTTP-RPC 服务要开放的 API。
10、--http.corsdomain="*":允许所有的来源访问 HTTP-RPC 服务。
11、--http.port=8545:指定 HTTP-RPC 服务的端口号。
12、--http.addr="0.0.0.0":指定 HTTP-RPC 服务绑定的 IP 地址。
13、--ws:启用 WebSocket-RPC 服务。
14、--ws.addr "0.0.0.0":指定 WebSocket-RPC 服务绑定的 IP 地址。
15、--ws.port=8546:指定 WebSocket-RPC 服务的端口号。
16、--ws.origins "*":允许所有来源访问 WebSocket-RPC 服务。
17、--ws.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net":指定 WebSocket-RPC 服务要开放的 API。
18、--syncmode full:指定节点同步模式为完整模式,即下载所有区块。
19、console:启动控制台模式,可以在控制台中输入 Geth 命令与节点进行交互。
上述参数大家也可以据自己的需求和环境来适当地修改这些参数和选项,确保节点的启动和运行是正确的和安全的。

注意:上述代码之间的间隔,一定给要小心,如果在下一步双击启动的时候,直接闪过就说明可能是存在应该有空格的位置没有空格情况。

到这就基本完成了,这时候双击nodestart.bat文件进行初始化,第一次启动可能需要稍微久一点,会在刚才指定的Ethash 缓存目录中加载缓存,好像文件还挺大的,有个几个G。

补充:关于ChatGPT

创世纪块json文件我们可以通过百度,谷歌等浏览器进行搜索,反正还是挺多的,我们也可以借助最近超火的ChatGPT,让它生成一个创世纪json文件。

问题回答说明: 请将 <address> 替换为您想要设置为预先分配的地址,可以有多个地址,每个地址的初始余额也可以不同。这里给出的创世纪 JSON 文件包含了一些基本的参数设置,您可以根据需要进行修改。另外,需要注意的是,如果您选择的网络 ID 与公共以太坊网络的网络 ID 相同,那么您在启动私有链时需要加上 --networkid <your_network_id> 参数来指定您的私有链网络 ID。