# 深入学习 Go-Ethereum : 009. CMD 模块 - Geth -config.go **Published by:** [OutOfToken](https://paragraph.com/@lua/) **Published on:** 2022-07-01 **URL:** https://paragraph.com/@lua/go-ethereum-009-cmd-geth-config-go ## Content 《深入学习 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.goconfig 代码主要包含了 1 个子命令(dumpconfig) 及configFileFlag相关描述。代码结构其中比较重要的代码为dumpconfig及configFileFlag声明,此外定义了两个结构体:gethConfig(主要包含了eth、node、ethstat、metrics)和ethstatsConfig(toml文件路径)。 其他的方法介绍如下:⬇️ dumpConfig 方法:dumpConfig 方法的主要作用是对节点配置信息的导出。(导出文件格式 TOML)使用方法 geth dumpconfig filename 。⬇️ loadConfig 方法:根据指定文件路径(一般都是从别的环境中dump出相应的配置信息),进行配置信息的导入。文件格式内容使用TOML进行配置。loadConfig查看调用关系,此方法被 config.go 和 accountcmd.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以上是 config.go 代码中比较重要的方法及功能介绍。 ## Publication Information - [OutOfToken](https://paragraph.com/@lua/): Publication homepage - [All Posts](https://paragraph.com/@lua/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@lua): Subscribe to updates - [Twitter](https://twitter.com/HetaoFei): Follow on Twitter