深入学习 Go-Ethereum : 009. CMD 模块 - Geth -config.go

《深入学习 Go-Ethereum : 008. CMD 模块 - Geth - chaincmd.go》中罗列了 chaincmd 主要源码,接下来描述下关于 config.go 中的代码功能

⬇️以下是 cmd/geth 包中其他代码的介绍:

├── accountcmd.go 
├── chaincmd.go 
├── config.go 🔫
├── consolecmd.go
├── dbcmd.go
├── misccmd.go
├── snapshot.go
├── usage.go
└── version_check.go

⬇️ config.go

config 代码主要包含了 1 个子命令(dumpconfig) 及configFileFlag相关描述。

代码结构
代码结构

其中比较重要的代码为dumpconfig及configFileFlag声明,此外定义了两个结构体:gethConfig(主要包含了eth、node、ethstat、metrics)和ethstatsConfig(toml文件路径)。

其他的方法介绍如下:

⬇️ dumpConfig 方法:

dumpConfig 方法的主要作用是对节点配置信息的导出。(导出文件格式 TOML

使用方法 geth dumpconfig filename

⬇️ loadConfig 方法:

根据指定文件路径(一般都是从别的环境中dump出相应的配置信息),进行配置信息的导入。文件格式内容使用TOML进行配置。

loadConfig
loadConfig

查看调用关系,此方法被 config.goaccountcmd.go 使用。

配置文件部分信息示例:

[Eth]
NetworkId = 1
SyncMode = "snap"
EthDiscoveryURLs = ["enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.mainnet.ethdisco.net"]
SnapDiscoveryURLs = ["enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.mainnet.ethdisco.net"]
......

⬇️ makeConfigNode 方法:

此方法的主要功能是加载geth配置信息并创建一个区块节点实例

⬇️ makeFullNode 方法📍:

在geth启动时被调用,根据上下文参数,创建相应的配置信息,并启动eth后端服务。

makeFullNode
makeFullNode

以上是 config.go 代码中比较重要的方法及功能介绍。

Subscribe to OutOfToken
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.